~ubuntu-branches/ubuntu/vivid/grass/vivid-proposed

« back to all changes in this revision

Viewing changes to raster/wildfire/r.spreadpath/path_finder.c

  • Committer: Package Import Robot
  • Author(s): Bas Couwenberg
  • Date: 2015-02-20 23:12:08 UTC
  • mfrom: (8.2.6 experimental)
  • Revision ID: package-import@ubuntu.com-20150220231208-1u6qvqm84v430b10
Tags: 7.0.0-1~exp1
* New upstream release.
* Update python-ctypes-ternary.patch to use if/else instead of and/or.
* Drop check4dev patch, rely on upstream check.
* Add build dependency on libpq-dev to grass-dev for libpq-fe.h.
* Drop patches applied upstream, refresh remaining patches.
* Update symlinks for images switched from jpg to png.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
/****** path_finder.c ***********************************************
3
 
        
4
 
        This recursive function traces the least cost path backwards
5
 
        to cells from which the cumulative cost was determined 
6
 
 
7
 
*********************************************************************/
8
 
#include <grass/segment.h>
9
 
#include "local_proto.h"
10
 
 
11
 
 
12
 
void path_finder(int row, int col, int backrow, int backcol)
13
 
{
14
 
    int data, new_backrow, new_backcol;
15
 
    extern char *value;
16
 
    extern int nrows, ncols;
17
 
    extern SEGMENT in_row_seg, in_col_seg, out_seg;
18
 
 
19
 
    if (row < 0 || row >= nrows || col < 0 || col >= ncols)
20
 
        return;                 /* outside the window */
21
 
 
22
 
    /* if the pt has already been traversed, return */
23
 
    value = (char *)&data;
24
 
    segment_get(&out_seg, value, row, col);
25
 
    if (data == 1)
26
 
        return;                 /* already traversed */
27
 
 
28
 
    /* otherwise, draw a line on output */
29
 
    drawline(row, col, backrow, backcol);
30
 
    /*DEBUG
31
 
       printf("\nrow=%d, col=%d, backrow=%d, backcol=%d", row, col, backrow, backcol);
32
 
     */
33
 
    /* update path position */
34
 
    if (row == backrow && col == backcol) {
35
 
        printf("\n");
36
 
        return;
37
 
    }                           /* reach an origin */
38
 
 
39
 
    value = (char *)&new_backrow;
40
 
    segment_get(&in_row_seg, value, backrow, backcol);
41
 
    value = (char *)&new_backcol;
42
 
    segment_get(&in_col_seg, value, backrow, backcol);
43
 
 
44
 
    path_finder(backrow, backcol, new_backrow, new_backcol);
45
 
    return;
46
 
}