/**************************************************************************** * * MODULE: r.terraflow * * COPYRIGHT (C) 2007 Laura Toma * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * *****************************************************************************/ #ifndef __FILL_DEPR_H #define __FILL_DEPR_H #include #include "types.h" #include "water.h" /************************************************************/ /* INPUT: edgelist of watershed adjacency graph E={(u,v,h)}, 1 \le u,v \le W; the maximum number of watersheds h is the smallest height on the boundary between watershed u and watershed v; E contains the edges between the watersheds on the boundary and the outside face; the outside face is assumed to be watershed number W+1 E is sorted increasingly by (h,u,v) OUTPUT: an array raise[1..W], raise[i] is the height to which the watershed i must be raised in order to have a valid flow path to the outside watershed; */ /************************************************************/ elevation_type* fill_depression(AMI_STREAM*boundaryStr, cclabel_type maxWatersheds); elevation_type* inmemory_fill_depression(AMI_STREAM*boundaryStr, cclabel_type maxWatersheds); elevation_type* ext_fill_depression(AMI_STREAM*boundaryStr, cclabel_type maxWatersheds); /************************************************************/ /* returns the amount of mmemory allocated by inmemory_fill_depression() */ /************************************************************/ size_t inmemory_fill_depression_mmusage(cclabel_type maxWatersheds); /************************************************************/ /* produce a new stream where each elevation e inside watershed i is replaced with max(raise[i], e) */ /************************************************************/ void commit_fill(AMI_STREAM* labeledGrid, elevation_type* raise, cclabel_type maxWatersheds, AMI_STREAM* filledGrid); #endif