GRASS GIS 7 Programmer's Manual  7.7.svn(2018)-r73786
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gs3.c File Reference

OGSF library - loading surfaces (lower level functions) More...

#include <stdlib.h>
#include <string.h>
#include <grass/gis.h>
#include <grass/raster.h>
#include <grass/glocale.h>
#include <grass/bitmap.h>
#include <grass/ogsf.h>
#include "gsget.h"
Include dependency graph for gs3.c:

Go to the source code of this file.

Macros

#define INIT_MINMAX(p, nm, size, min, max, found)
 Used in the function Gs_update_attrange() More...
 
#define SET_MINMAX(p, nm, size, min, max)
 Used in the function Gs_update_attrange() More...
 
#define NO_DATA_COL   0xffffff
 

Typedefs

typedef int FILEDESC
 

Functions

double Gs_distance (double *from, double *to)
 Calculates distance in METERS between two points in current projection (2D) More...
 
int Gs_loadmap_as_float (struct Cell_head *wind, const char *map_name, float *buff, struct BM *nullmap, int *has_null)
 Load raster map as floating point map. More...
 
int Gs_loadmap_as_int (struct Cell_head *wind, const char *map_name, int *buff, struct BM *nullmap, int *has_null)
 Load raster map as integer map. More...
 
int Gs_numtype (const char *filename, int *negflag)
 Get map data type. More...
 
int Gs_loadmap_as_short (struct Cell_head *wind, const char *map_name, short *buff, struct BM *nullmap, int *has_null)
 Load raster map as integer map. More...
 
int Gs_loadmap_as_char (struct Cell_head *wind, const char *map_name, unsigned char *buff, struct BM *nullmap, int *has_null)
 Load raster map as integer map. More...
 
int Gs_loadmap_as_bitmap (struct Cell_head *wind, const char *map_name, struct BM *buff)
 Load raster map as integer map. More...
 
int Gs_build_256lookup (const char *filename, int *buff)
 Build color table (256) More...
 
void Gs_pack_colors (const char *filename, int *buff, int rows, int cols)
 Pack color table. More...
 
void Gs_pack_colors_float (const char *filename, float *fbuf, int *ibuf, int rows, int cols)
 Pack color table (floating-point map) More...
 
int Gs_get_cat_label (const char *filename, int drow, int dcol, char *catstr)
 Get categories/labels. More...
 
int Gs_save_3dview (const char *vname, geoview *gv, geodisplay *gd, struct Cell_head *w, geosurf *defsurf)
 Save 3dview. More...
 
int Gs_load_3dview (const char *vname, geoview *gv, geodisplay *gd, struct Cell_head *w, geosurf *defsurf)
 Load 3dview. More...
 
int Gs_update_attrange (geosurf *gs, int desc)
 Update no_zero ranges for attribute (actually no_null now) More...
 

Detailed Description

OGSF library - loading surfaces (lower level functions)

GRASS OpenGL gsurf OGSF Library

(C) 1999-2008 by the GRASS Development Team

This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.

Author
Bill Brown USACERL, GMSL/University of Illinois (January 1993)
Doxygenized by Martin Landa <landa.martin gmail.com> (May 2008)

Definition in file gs3.c.

Macro Definition Documentation

#define INIT_MINMAX (   p,
  nm,
  size,
  min,
  max,
  found 
)
Value:
found = 0; \
p+=(size-1); \
while (size--) \
{ \
if (!BM_GET_BYOFFSET(nm, size)) \
{ \
min = max = *p; \
found = 1; \
break; \
} \
p--; \
}
if(!YY_CURRENT_BUFFER)
Definition: sqlp.yy.c:803
#define min(x, y)
Definition: draw2.c:31
#define max(x, y)
Definition: draw2.c:32
#define BM_GET_BYOFFSET(bm, off)
Definition: gsget.h:29

Used in the function Gs_update_attrange()

Definition at line 35 of file gs3.c.

Referenced by Gs_update_attrange().

#define NO_DATA_COL   0xffffff

Definition at line 72 of file gs3.c.

Referenced by Gs_build_256lookup(), Gs_pack_colors(), and Gs_pack_colors_float().

#define SET_MINMAX (   p,
  nm,
  size,
  min,
  max 
)
Value:
p+=(size-1); \
while(size--) \
{ \
if (!BM_GET_BYOFFSET(nm, size)) \
{ \
if (*p < min) \
{ \
min = *p; \
} \
else if (*p > max) \
{ \
max = *p; \
} \
} \
p--; \
}
if(!YY_CURRENT_BUFFER)
Definition: sqlp.yy.c:803
#define min(x, y)
Definition: draw2.c:31
#define max(x, y)
Definition: draw2.c:32
else
Definition: shpopen.c:1421
#define BM_GET_BYOFFSET(bm, off)
Definition: gsget.h:29

Used in the function Gs_update_attrange()

Definition at line 52 of file gs3.c.

Referenced by Gs_update_attrange().

Typedef Documentation

typedef int FILEDESC

Definition at line 70 of file gs3.c.

Function Documentation

int Gs_build_256lookup ( const char *  filename,
int buff 
)

Build color table (256)

Calling function must have already allocated space in buff for range of data (256 for now) - simply calls get_color for each cat in color range

Parameters
filenameraster map name
[out]buffdata buffer
Returns
1 on success
0 on failure

Definition at line 576 of file gs3.c.

References _, b, g, G_debug(), G_find_raster2(), G_warning(), G_zero(), max, min, NO_DATA_COL, r, Rast_get_c_color_range(), Rast_lookup_c_colors(), and Rast_read_colors().

Referenced by GS_load_att_map().

double Gs_distance ( double *  from,
double *  to 
)

Calculates distance in METERS between two points in current projection (2D)

Uses G_distance().

Parameters
from'from' point (X, Y)
to'to' point (X, Y)
Returns
distance

Definition at line 84 of file gs3.c.

References G_begin_distance_calculations(), and G_distance().

Referenced by GS_geodistance().

int Gs_get_cat_label ( const char *  filename,
int  drow,
int  dcol,
char *  catstr 
)

Get categories/labels.

Formats label as in d.what.rast -> (catval) catlabel

Parameters
filenameraster map name
drow
dcol
catstrcategory string
Returns
1 on success
0 on failure

Definition at line 776 of file gs3.c.

References _, CELL_TYPE, fd, G_find_raster2(), G_free(), G_warning(), NULL, Rast_allocate_c_buf(), Rast_allocate_d_buf(), Rast_close(), Rast_free_cats(), Rast_get_c_cat(), Rast_get_c_row(), Rast_get_d_cat(), Rast_get_d_row(), Rast_get_map_type(), Rast_is_c_null_value(), Rast_is_d_null_value(), Rast_open_old(), and Rast_read_cats().

Referenced by GS_get_cat_at_xy().

int Gs_loadmap_as_bitmap ( struct Cell_head wind,
const char *  map_name,
struct BM buff 
)

Load raster map as integer map.

Calling function must have already allocated space in buff for struct BM of wind->rows & wind->cols.

This routine simply loads the map into the bitmap by repetitve calls to get_map_row. Any value other than 0 in the map will set the bitmap. (may want to change later to allow specific value to set)

Changed to use null.

Parameters
windcurrent window
map_nameraster map name
[out]buffdata buffer
Returns
1 on success
-1 on failure

Definition at line 517 of file gs3.c.

References _, BM_set(), Cell_head::cols, G_debug(), G_find_raster2(), G_free(), G_fully_qualified_name(), G_message(), G_warning(), Rast_close(), Rast_get_c_row(), Rast_is_c_null_value(), Rast_open_old(), and Cell_head::rows.

Referenced by GS_load_att_map().

int Gs_loadmap_as_char ( struct Cell_head wind,
const char *  map_name,
unsigned char *  buff,
struct BM nullmap,
int has_null 
)

Load raster map as integer map.

Calling function must have already allocated space in buff for wind->rows * wind->cols unsigned chars.

This routine simply loads the map into a 2d array by repetitve calls to get_map_row.

Since signs of chars can be tricky, we only load positive chars between 0-255.

Todo:
fn body Gs_loadmap_as_float()
Parameters
windcurrent window
map_nameraster map name
[out]buffdata buffer
[out]nullmapnull map buffer
[out]has_nullindicates if raster map contains null-data
Returns
1 on success
-1 on failure
-2 if read ok, but 1 or more values were too large (small) to fit into an unsigned char. (in which case the max (min) char is used)

Definition at line 417 of file gs3.c.

References _, BM_set(), Cell_head::cols, G_debug(), G_find_raster2(), G_free(), G_fully_qualified_name(), G_message(), G_percent(), G_warning(), Rast_close(), Rast_get_c_row(), Rast_is_c_null_value(), Rast_open_old(), and Cell_head::rows.

Referenced by GS_load_att_map().

int Gs_loadmap_as_float ( struct Cell_head wind,
const char *  map_name,
float *  buff,
struct BM nullmap,
int has_null 
)

Load raster map as floating point map.

Calling function must have already allocated space in buff for wind->rows * wind->cols floats.

This routine simply loads the map into a 2d array by repetitve calls to get_f_raster_row.

Parameters
windcurrent window
map_nameraster map name
[out]buffdata buffer
[out]nullmapnull map buffer
[out]has_nullindicates if raster map contains null-data
Returns
1 on success
0 on failure

Definition at line 114 of file gs3.c.

References _, BM_set(), Cell_head::cols, G_debug(), G_find_raster2(), G_fully_qualified_name(), G_message(), G_percent(), G_warning(), Rast_close(), Rast_get_f_row(), Rast_is_f_null_value(), Rast_open_old(), and Cell_head::rows.

Referenced by GS_load_att_map().

int Gs_loadmap_as_int ( struct Cell_head wind,
const char *  map_name,
int buff,
struct BM nullmap,
int has_null 
)

Load raster map as integer map.

Calling function must have already allocated space in buff for wind->rows * wind->cols floats.

This routine simply loads the map into a 2d array by repetitve calls to get_f_raster_row.

Todo:
fn body of Gs_loadmap_as_float()
Parameters
windcurrent window
map_nameraster map name
[out]buffdata buffer
[out]nullmapnull map buffer
[out]has_nullindicates if raster map contains null-data
Returns
1 on success
0 on failure

Definition at line 178 of file gs3.c.

References _, BM_set(), Cell_head::cols, G_debug(), G_find_raster2(), G_fully_qualified_name(), G_message(), G_percent(), G_warning(), Rast_close(), Rast_get_c_row(), Rast_is_f_null_value(), Rast_open_old(), and Cell_head::rows.

Referenced by GS_load_att_map().

int Gs_loadmap_as_short ( struct Cell_head wind,
const char *  map_name,
short *  buff,
struct BM nullmap,
int has_null 
)

Load raster map as integer map.

Calling function must have already allocated space in buff for wind->rows * wind->cols shorts.

This routine simply loads the map into a 2d array by repetitve calls to get_map_row.

Parameters
windcurrent window
map_nameraster map name
[out]buffdata buffer
[out]nullmapnull map buffer
[out]has_nullindicates if raster map contains null-data
Returns
1 on success
-1 on failure,
-2 if read ok, but 1 or more values were too large (small) to fit into a short (in which case the max (min) short is used)

Definition at line 312 of file gs3.c.

References _, BM_set(), Cell_head::cols, G_debug(), G_find_raster2(), G_free(), G_fully_qualified_name(), G_message(), G_percent(), G_warning(), Rast_close(), Rast_get_c_row(), Rast_is_c_null_value(), Rast_open_old(), and Cell_head::rows.

Referenced by GS_load_att_map().

int Gs_numtype ( const char *  filename,
int negflag 
)

Get map data type.

Parameters
filenameraster map name
negflag
Returns
-1 if map is integer and Rast_read_range() fails
data type (ARRY_*)

Definition at line 230 of file gs3.c.

References _, ATTY_CHAR, ATTY_FLOAT, ATTY_INT, ATTY_SHORT, G_debug(), G_find_raster2(), G_warning(), max, min, Rast_get_range_min_max(), Rast_map_is_fp(), and Rast_read_range().

Referenced by GS_load_att_map().

void Gs_pack_colors ( const char *  filename,
int buff,
int  rows,
int  cols 
)

Pack color table.

Passed an array of 32 bit ints that is converted from cell values to packed colors (0xbbggrr)

Parameters
filenameraster map name
buff
rowsnumber of rows
colsnumber of cols

Definition at line 636 of file gs3.c.

References _, b, buff, g, G_find_raster2(), G_free(), G_fully_qualified_name(), G_message(), G_percent(), G_warning(), NO_DATA_COL, r, Rast_free_colors(), Rast_lookup_c_colors(), and Rast_read_colors().

Referenced by GS_load_att_map().

void Gs_pack_colors_float ( const char *  filename,
float *  fbuf,
int ibuf,
int  rows,
int  cols 
)

Pack color table (floating-point map)

Passed a array of floats that will be converted from cell values to packed colors (0xbbggrr) and float to int Floating point data not freed here, use: gsds_free_data_buff(id, ATTY_FLOAT)

Parameters
filenameraster map name
fbuf
ibuf
rowsnumber of rows
colsnumber of cols

Definition at line 705 of file gs3.c.

References _, b, g, G_find_raster2(), G_free(), G_fully_qualified_name(), G_message(), G_percent(), G_warning(), NO_DATA_COL, r, Rast_free_colors(), Rast_lookup_f_colors(), and Rast_read_colors().

Referenced by GS_load_att_map().

int Gs_update_attrange ( geosurf gs,
int  desc 
)