GRASS GIS 8 Programmer's Manual 8.3.2(2024)-exported
Loading...
Searching...
No Matches
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()
 
#define SET_MINMAX(p, nm, size, min, max)
 Used in the function Gs_update_attrange()
 
#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)
 
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.
 
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.
 
int Gs_numtype (const char *filename, int *negflag)
 Get map data type.
 
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.
 
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.
 
int Gs_loadmap_as_bitmap (struct Cell_head *wind, const char *map_name, struct BM *buff)
 Load raster map as integer map.
 
int Gs_build_256lookup (const char *filename, int *buff)
 Build color table (256)
 
void Gs_pack_colors (const char *filename, int *buff, int rows, int cols)
 Pack color table.
 
void Gs_pack_colors_float (const char *filename, float *fbuf, int *ibuf, int rows, int cols)
 Pack color table (floating-point map)
 
int Gs_get_cat_label (const char *filename, int drow, int dcol, char *catstr)
 Get categories/labels.
 
int Gs_save_3dview (const char *vname, geoview *gv, geodisplay *gd UNUSED, struct Cell_head *w, geosurf *defsurf)
 Save 3dview.
 
int Gs_load_3dview (const char *vname, geoview *gv, geodisplay *gd UNUSED, struct Cell_head *w, const geosurf *defsurf)
 Load 3dview.
 
int Gs_update_attrange (geosurf *gs, int desc)
 Update no_zero ranges for attribute (actually no_null now)
 

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

◆ INIT_MINMAX

#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--; \
}
#define BM_GET_BYOFFSET(bm, off)
Definition gsget.h:31
#define min(a, b)
#define max(a, b)

Used in the function Gs_update_attrange()

Definition at line 35 of file gs3.c.

Referenced by Gs_update_attrange().

◆ NO_DATA_COL

#define NO_DATA_COL   0xffffff

Definition at line 66 of file gs3.c.

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

◆ SET_MINMAX

#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--; \
}

Used in the function Gs_update_attrange()

Definition at line 50 of file gs3.c.

Referenced by Gs_update_attrange().

Typedef Documentation

◆ FILEDESC

typedef int FILEDESC

Definition at line 64 of file gs3.c.

Function Documentation

◆ Gs_build_256lookup()

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 571 of file gs3.c.

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

Referenced by GS_load_att_map().

◆ Gs_distance()

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 79 of file gs3.c.

References G_begin_distance_calculations(), and G_distance().

Referenced by GS_geodistance().

◆ Gs_get_cat_label()

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 770 of file gs3.c.

References G_find_raster2(), G_free(), G_warning(), and NULL.

Referenced by GS_get_cat_at_xy().

◆ Gs_load_3dview()

int Gs_load_3dview ( const char * vname,
geoview * gv,
geodisplay *gd UNUSED,
struct Cell_head * w,
const geosurf * defsurf )

Load 3dview.

Parameters
vnameview name
gvpointer to geoview struct
gdpointer to geodisplay struct (unused)
wcurrent window
defsurfdefault geosurf struct
Returns
1

Definition at line 945 of file gs3.c.

References G_find_file2(), G_get_3dview(), G_warning(), GS_alldraw_wire(), GS_moveto_real(), GS_set_focus(), GS_set_fov(), GS_set_global_exag(), GS_set_twist(), GS_setall_drawmode(), GS_setall_drawres(), NULL, X, and Y.

Referenced by GS_load_3dview().

◆ Gs_loadmap_as_bitmap()

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 512 of file gs3.c.

References BM_set(), G_debug(), G_find_raster2(), G_free(), G_fully_qualified_name(), G_message(), and G_warning().

Referenced by GS_load_att_map().

◆ Gs_loadmap_as_char()

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 412 of file gs3.c.

References BM_set(), G_debug(), G_find_raster2(), G_free(), G_fully_qualified_name(), G_message(), G_percent(), and G_warning().

Referenced by GS_load_att_map().

◆ Gs_loadmap_as_float()

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 109 of file gs3.c.

References BM_set(), G_debug(), G_find_raster2(), G_fully_qualified_name(), G_message(), G_percent(), and G_warning().

Referenced by GS_load_att_map().

◆ Gs_loadmap_as_int()

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 173 of file gs3.c.

References BM_set(), G_debug(), G_find_raster2(), G_fully_qualified_name(), G_message(), G_percent(), and G_warning().

Referenced by GS_load_att_map().

◆ Gs_loadmap_as_short()

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 307 of file gs3.c.

References BM_set(), G_debug(), G_find_raster2(), G_free(), G_fully_qualified_name(), G_message(), G_percent(), and G_warning().

Referenced by GS_load_att_map().

◆ Gs_numtype()

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 225 of file gs3.c.

References G_debug(), G_find_raster2(), G_warning(), max, and min.

Referenced by GS_load_att_map().

◆ Gs_pack_colors()

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 632 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, and r.

Referenced by GS_load_att_map().

◆ Gs_pack_colors_float()

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 700 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, and r.

Referenced by GS_load_att_map().

◆ Gs_save_3dview()

int Gs_save_3dview ( const char * vname,
geoview * gv,
geodisplay *gd UNUSED,
struct Cell_head * w,
geosurf * defsurf )

Save 3dview.

Parameters
vnameview name
gvpointer to geoview struct
gdpointer to geodisplay struct (unused)
wcurrent window
defsurfdefault geosurf struct
Returns
-1 on error
?

Definition at line 846 of file gs3.c.

References G_get_3dview_defaults(), G_mapset(), G_put_3dview(), GS_get_zrange(), GS_v3eq(), GS_v3mult(), gsd_model2real(), NULL, X, and Y.

Referenced by GS_save_3dview().

◆ Gs_update_attrange()

int Gs_update_attrange ( geosurf * gs,
int desc )

Update no_zero ranges for attribute (actually no_null now)

Parameters
gspointer to geosurf struct
descattribute id (descriptor)
Returns
-1 on error
1 on success

Definition at line 1078 of file gs3.c.

References G_debug(), gs_get_att_src(), gsds_get_changed(), gsds_get_typbuff(), INIT_MINMAX, max, min, NULL, and SET_MINMAX.

Referenced by GS_load_att_map(), GS_set_att_const(), and gs_set_att_const().