GRASS Programmer's Manual  6.5.svn(2014)-r66266
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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/glocale.h>
#include <grass/bitmap.h>
#include <grass/gsurf.h>
#include <grass/gstypes.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--) \
{ \
{ \
min = max = *p; \
found = 1; \
break; \
} \
p--; \
}
#define min(x, y)
Definition: draw2.c:68
#define max(x, y)
Definition: draw2.c:69
tuple size
value.Bind(wx.EVT_TEXT, self.OnVolumeIsosurfMap)
Definition: tools.py:2334
#define BM_GET_BYOFFSET(bm, off)
Definition: gsget.h:29
if(!YY_CURRENT_BUFFER)
Definition: lex.yy.c:799

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 (*p < min) \
{ \
min = *p; \
} \
else if (*p > max) \
{ \
max = *p; \
} \
} \
p--; \
}
#define min(x, y)
Definition: draw2.c:68
#define max(x, y)
Definition: draw2.c:69
tuple size
value.Bind(wx.EVT_TEXT, self.OnVolumeIsosurfMap)
Definition: tools.py:2334
else
Definition: shpopen.c:1030
#define BM_GET_BYOFFSET(bm, off)
Definition: gsget.h:29
if(!YY_CURRENT_BUFFER)
Definition: lex.yy.c:799

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 627 of file Gs3.c.

References b, g, G_debug(), G_find_cell2(), G_get_color_range(), G_lookup_colors(), G_read_colors(), G_warning(), G_zero(), max, min, NO_DATA_COL, r, and main::set.

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 first, 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 827 of file Gs3.c.

References buf, fd, G_allocate_c_raster_buf(), G_allocate_d_raster_buf(), G_close_cell(), G_find_cell2(), G_free(), G_free_cats(), G_get_c_raster_cat(), G_get_c_raster_row(), G_get_d_raster_cat(), G_get_d_raster_row(), G_get_raster_map_type(), G_is_c_null_value(), G_is_d_null_value(), G_open_cell_old(), G_read_cats(), G_warning(), NULL, and sprintf().

Referenced by GS_get_cat_at_xy().

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

Load 3dview.

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

Definition at line 1004 of file Gs3.c.

References FROM, 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(), int, NULL, X, and Y.

Referenced by GS_load_3dview().

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 559 of file Gs3.c.

References BM_set(), G_allocate_null_buf(), G_close_cell(), G_debug(), G_fatal_error(), G_find_cell2(), G_free(), G_fully_qualified_name(), G_get_null_value_row(), G_message(), G_open_cell_old(), and G_warning().

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 449 of file Gs3.c.

References BM_set(), G_allocate_null_buf(), G_close_cell(), G_debug(), G_fatal_error(), G_find_cell2(), G_free(), G_fully_qualified_name(), G_get_c_raster_row(), G_get_null_value_row(), G_message(), G_open_cell_old(), G_percent(), and G_warning().

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(), G_allocate_null_buf(), G_close_cell(), G_debug(), G_fatal_error(), G_find_cell2(), G_free(), G_fully_qualified_name(), G_get_f_raster_row(), G_get_null_value_row(), G_is_f_null_value(), G_message(), G_open_cell_old(), G_percent(), and G_warning().

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 189 of file Gs3.c.

References BM_set(), G_allocate_null_buf(), G_close_cell(), G_debug(), G_fatal_error(), G_find_cell2(), G_free(), G_fully_qualified_name(), G_get_c_raster_row(), G_get_null_value_row(), G_message(), G_open_cell_old(), G_percent(), and G_warning().

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 334 of file Gs3.c.

References BM_set(), G_allocate_null_buf(), G_close_cell(), G_debug(), G_fatal_error(), G_find_cell2(), G_free(), G_fully_qualified_name(), G_get_c_raster_row(), G_get_null_value_row(), G_message(), G_open_cell_old(), G_percent(), and G_warning().

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 G_read_range() fails
data type (ARRY_*)

Definition at line 252 of file Gs3.c.

References first, G_debug(), G_find_cell2(), G_get_range_min_max(), G_raster_map_is_fp(), G_read_range(), G_warning(), max, and min.

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 687 of file Gs3.c.

References b, buff, dialogs::cols, g, G_find_cell2(), G_free(), G_free_colors(), G_fully_qualified_name(), G_lookup_colors(), G_message(), G_percent(), G_read_colors(), G_warning(), NO_DATA_COL, r, and main::set.

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 756 of file Gs3.c.

References b, dialogs::cols, g, G_find_cell2(), G_free(), G_free_colors(), G_fully_qualified_name(), G_lookup_f_raster_colors(), G_message(), G_percent(), G_read_colors(), G_warning(), NO_DATA_COL, r, and main::set.

Referenced by GS_load_att_map().

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

Save 3dview.

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

Definition at line 906 of file Gs3.c.

References FROM, 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().

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 1140 of file Gs3.c.

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

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