GRASS Programmer's Manual
6.5.svn(2014)-r66266
|
OGSF library - loading and manipulating surfaces (lower level functions) More...
#include <stdlib.h>
#include <stdio.h>
#include <grass/gstypes.h>
#include <grass/glocale.h>
#include "gsget.h"
#include "rowcol.h"
Go to the source code of this file.
Macros | |
#define | FIRST_SURF_ID 110658 |
Functions | |
void | gs_err (const char *msg) |
void | gs_init (void) |
Initialize library. More... | |
geosurf * | gs_get_surf (int id) |
Get geosurf struct. More... | |
geosurf * | gs_get_prev_surface (int id) |
Get previous geosurf struct. More... | |
int | gs_getall_surfaces (geosurf **gsurfs) |
Get array of geosurf structs. More... | |
int | gs_num_surfaces (void) |
Get number of surfaces. More... | |
int | gs_att_is_set (geosurf *surf, IFLAG att) |
Check if attribute is set. More... | |
geosurf * | gs_get_last_surface (void) |
Get last allocated geosurf struct from list. More... | |
geosurf * | gs_get_new_surface (void) |
Allocate new geosurf struct. More... | |
int | gs_init_surf (geosurf *gs, double ox, double oy, int rows, int cols, double xres, double yres) |
Initialize allocated geosurf struct. More... | |
int | gs_init_normbuff (geosurf *gs) |
Init geosurf normbuff. More... | |
void | print_frto (float(*ft)[4]) |
Debugging, print 'from/to' model coordinates to stderr. More... | |
void | print_realto (float *rt) |
Debugging, print 'to' real coordinates to stderr. More... | |
void | print_256lookup (int *buff) |
Debugging, 256 interger values from buffer. More... | |
void | print_surf_fields (geosurf *s) |
Debugging, print geosurf fields to stderr. More... | |
void | print_view_fields (geoview *gv) |
Debugging, print geoview fields to stderr. More... | |
void | gs_set_defaults (geosurf *gs, float *defs, float *null_defs) |
Set default attribute values. More... | |
void | gs_delete_surf (int id) |
Remove geosurf struct from list. More... | |
int | gs_free_surf (geosurf *fs) |
Free geosurf struct. More... | |
void | gs_free_unshared_buffs (geosurf *fs) |
Free unshared buffers of geosurf struct. More... | |
int | gs_num_datah_reused (int dh) |
Get number of reused values. More... | |
int | gs_get_att_type (geosurf *gs, int desc) |
Get attribute type. More... | |
int | gs_get_att_src (geosurf *gs, int desc) |
Get attribute source. More... | |
typbuff * | gs_get_att_typbuff (geosurf *gs, int desc, int to_write) |
Get attribute data buffer. More... | |
int | gs_malloc_att_buff (geosurf *gs, int desc, int type) |
Allocate attribute buffer. More... | |
int | gs_malloc_lookup (geosurf *gs, int desc) |
Allocate attribute lookup. More... | |
int | gs_set_att_type (geosurf *gs, int desc, int type) |
Set attribute type. More... | |
int | gs_set_att_src (geosurf *gs, int desc, int src) |
Set attribute source. More... | |
int | gs_set_att_const (geosurf *gs, int desc, float constant) |
Set attribute constant value. More... | |
void | gs_set_maskmode (int invert) |
Set geosurf mask mode. More... | |
int | gs_mask_defined (geosurf *gs) |
Check if mask is defined. More... | |
int | gs_masked (typbuff *tb, int col, int row, int offset) |
Should only be called when setting up the current mask (gs_bm.c) More... | |
int | gs_mapcolor (typbuff *cobuff, gsurf_att *coloratt, int offset) |
Call this one when you already know att_src is MAP_ATT. More... | |
int | gs_get_zextents (geosurf *gs, float *min, float *max, float *mid) |
Get z-extent values. More... | |
int | gs_get_xextents (geosurf *gs, float *min, float *max) |
Get x-extent values. More... | |
int | gs_get_yextents (geosurf *gs, float *min, float *max) |
Get y-extent values. More... | |
int | gs_get_zrange0 (float *min, float *max) |
Get z-range. More... | |
int | gs_get_zrange (float *min, float *max) |
Get z-range. More... | |
int | gs_get_xrange (float *min, float *max) |
Get x-range. More... | |
int | gs_get_yrange (float *min, float *max) |
Get y-range. More... | |
int | gs_get_data_avg_zmax (float *azmax) |
Get average z-max value. More... | |
int | gs_get_datacenter (float *cen) |
Get data center point. More... | |
int | gs_setall_norm_needupdate (void) |
Set for geosurf need-to-update mark. More... | |
int | gs_point_is_masked (geosurf *gs, float *pt) |
Check if point is masked. More... | |
int | gs_distance_onsurf (geosurf *gs, float *p1, float *p2, float *dist, int use_exag) |
Calculate distance on surface. More... | |
OGSF library - loading and manipulating 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.
Definition in file gs.c.
#define FIRST_SURF_ID 110658 |
Definition at line 28 of file gs.c.
Referenced by gs_get_new_surface(), and gs_init_surf().
int gs_att_is_set | ( | geosurf * | surf, |
IFLAG | att | ||
) |
Check if attribute is set.
surf | pointer to gsurf or NULL to look at all geosurfs |
att | attribute id |
Definition at line 149 of file gs.c.
Referenced by GS_transp_is_set().
void gs_delete_surf | ( | int | id | ) |
Remove geosurf struct from list.
id | surface id |
Definition at line 463 of file gs.c.
References dialogs::fs, G_debug(), gs_free_surf(), and gs_get_surf().
Referenced by GS_delete_surface().
Calculate distance on surface.
gs | pointer to geosurf struct | |
p1 | from point | |
p2 | to point | |
[out] | dist | distnace |
use_exag | use exag for calculation |
Definition at line 1417 of file gs.c.
References GS_distance(), GS_global_exag(), gsdrape_get_segments(), in_vregion(), and NULL.
Referenced by GS_get_distance_alongsurf().
void gs_err | ( | const char * | msg | ) |
Definition at line 34 of file gs.c.
References G_warning().
int gs_free_surf | ( | geosurf * | fs | ) |
Free geosurf struct.
fs | pointer to geosurf struct |
Definition at line 487 of file gs.c.
References G_debug(), G_free(), gs_free_unshared_buffs(), and NULL.
Referenced by gs_delete_surf().
void gs_free_unshared_buffs | ( | geosurf * | fs | ) |
Free unshared buffers of geosurf struct.
fs has already been taken out of the list
This function is fairly revealing about how shared datsets work
fs | pointer to geosurf struct |
Definition at line 557 of file gs.c.
References G_debug(), and gsds_free_datah().
Referenced by gs_free_surf().
Get attribute source.
gs | pointer to geosurf struct |
desc | attribute id (descriptor) |
Definition at line 656 of file gs.c.
References G_debug().
Referenced by gpd_2dsite(), GS_draw_X(), GS_get_att(), GS_get_cat_at_xy(), GS_get_exag_guess(), GS_get_val_at_xy(), gs_set_att_src(), Gs_update_attrange(), gsd_surf(), gsd_wire_surf(), gsdrape_get_allsegments(), gsdrape_get_segments(), gvd_vect(), and viewcell_tri_interp().
Get attribute data buffer.
gs | pointer to geosurf struct |
desc | attribute id (descriptor) |
to_write | non-zero value for 'write' |
Definition at line 681 of file gs.c.
References G_debug(), gsdiff_do_SD(), gsdiff_get_SDref(), gsds_get_typbuff(), and NULL.
Referenced by _viewcell_tri_interp(), gpd_2dsite(), GS_get_cat_at_xy(), GS_get_val_at_xy(), GS_load_att_map(), gs_los_intersect(), gs_los_intersect1(), gs_update_curmask(), gsd_coarse_surf_map(), gsd_fringe_horiz_line(), gsd_fringe_horiz_line2(), gsd_fringe_horiz_poly(), gsd_fringe_vert_line(), gsd_fringe_vert_poly(), gsd_norm_arrows(), gsd_ortho_wall(), gsd_surf_const(), gsd_surf_map(), gsd_surf_map_old(), gsd_triangulated_wall(), gsd_wire_arrows(), gsd_wire_surf_const(), gsd_wire_surf_map(), gsdiff_set_SDref(), gsdrape_set_surface(), and init_vars().
int gs_get_data_avg_zmax | ( | float * | azmax | ) |
Get average z-max value.
Useful for setting position of cplane, lighting ball, etc.
[out] | azmax | average z-max value |
Definition at line 1203 of file gs.c.
Referenced by GS_get_modelposition1().
int gs_get_datacenter | ( | float * | cen | ) |
Get data center point.
[out] | center | (array X,Y,Z) |
Definition at line 1232 of file gs.c.
References X, xmax, xmin, Y, ymax, and ymin.
Referenced by GS_get_modelposition1(), and gsd_set_view().
geosurf* gs_get_last_surface | ( | void | ) |
Get last allocated geosurf struct from list.
Definition at line 172 of file gs.c.
References G_debug(), and NULL.
Referenced by gs_get_new_surface().
geosurf* gs_get_new_surface | ( | void | ) |
Allocate new geosurf struct.
Definition at line 193 of file gs.c.
References FIRST_SURF_ID, G_debug(), gs_get_last_surface(), and NULL.
Referenced by GS_new_surface().
geosurf* gs_get_prev_surface | ( | int | id | ) |
Get previous geosurf struct.
id | current surface id |
Definition at line 86 of file gs.c.
References G_debug(), and NULL.
Referenced by gs_init_surf().
geosurf* gs_get_surf | ( | int | id | ) |
Get geosurf struct.
id | surface id |
Definition at line 62 of file gs.c.
References G_debug(), and NULL.
Referenced by GP_draw_site(), gp_update_drapesurfs(), GS_alldraw_wire(), gs_delete_surf(), GS_draw_cplane_fence(), GS_draw_flowline_at_xy(), GS_draw_fringe(), GS_draw_line_onsurf(), GS_draw_nline_onsurf(), GS_draw_surf(), GS_draw_wire(), GS_draw_X(), GS_get_att(), GS_get_cat_at_xy(), GS_Get_ClientData(), GS_get_dims(), GS_get_distance_alongsurf(), GS_get_drawmode(), GS_get_drawres(), GS_get_exag_guess(), GS_get_maskmode(), GS_get_norm_at_xy(), GS_get_nozero(), GS_get_selected_point_on_surface(), GS_get_trans(), GS_get_val_at_xy(), GS_get_wire_color(), GS_get_zextents(), GS_get_zrange_nz(), GS_is_masked(), GS_load_3dview(), GS_load_att_map(), GS_look_here(), gs_los_intersect(), gs_los_intersect1(), GS_save_3dview(), GS_set_att_const(), GS_Set_ClientData(), GS_set_drawmode(), GS_set_drawres(), GS_set_exag(), GS_set_focus_center_map(), GS_set_maskmode(), GS_set_Narrow(), GS_set_nozero(), GS_set_SDsurf(), GS_set_trans(), GS_set_wire_color(), GS_surf_exists(), GS_unset_att(), GS_update_curmask(), GS_update_normals(), GV_draw_fastvect(), GV_draw_vect(), gv_update_drapesurfs(), and Nviz_set_cplane_here().
int gs_get_xextents | ( | geosurf * | gs, |
float * | min, | ||
float * | max | ||
) |
Get x-extent values.
gs | pointer to geosurf struct | |
[out] | min | x-min value |
[out] | max | x-max value |
Definition at line 1016 of file gs.c.
Referenced by gs_get_xrange().
int gs_get_xrange | ( | float * | min, |
float * | max | ||
) |
Get x-range.
[out] | min | x-min value |
[out] | max | x-max value |
Definition at line 1126 of file gs.c.
References gs_get_xextents().
Referenced by gs_get_databounds_planes().
int gs_get_yextents | ( | geosurf * | gs, |
float * | min, | ||
float * | max | ||
) |
Get y-extent values.
gs | pointer to geosurf struct | |
[out] | min | y-min value |
[out] | max | y-max value |
Definition at line 1033 of file gs.c.
Referenced by gs_get_yrange().
int gs_get_yrange | ( | float * | min, |
float * | max | ||
) |
Get y-range.
[out] | min | y-min value |
[out] | max | y-max value |
Definition at line 1164 of file gs.c.
References gs_get_yextents().
Referenced by gs_get_databounds_planes().
int gs_get_zextents | ( | geosurf * | gs, |
float * | min, | ||
float * | max, | ||
float * | mid | ||
) |
Get z-extent values.
gs | pointer to geosurf struct | |
[out] | min | z-min value |
[out] | max | z-max value |
[out] | mid | z-middle value |
Definition at line 998 of file gs.c.
References min.
Referenced by GS_get_zextents(), and gs_get_zrange().
int gs_get_zrange | ( | float * | min, |
float * | max | ||
) |
Get z-range.
[out] | min | z-min value |
[out] | max | z-max value |
Definition at line 1088 of file gs.c.
References gs_get_zextents().
Referenced by GS_get_zrange(), and gvd_vect().
int gs_get_zrange0 | ( | float * | min, |
float * | max | ||
) |
int gs_getall_surfaces | ( | geosurf ** | gsurfs | ) |
Get array of geosurf structs.
gsurfs | pointer to array |
Definition at line 108 of file gs.c.
References G_debug().
Referenced by GS_draw_cplane(), and gsd_wall().
void gs_init | ( | void | ) |
Initialize library.
Still need to take care of library initialization, probably want to define a Surf_top of constant value (i.e., 0)
Definition at line 47 of file gs.c.
References NULL.
Referenced by GS_libinit().
int gs_init_normbuff | ( | geosurf * | gs | ) |
Init geosurf normbuff.
gs | pointer to geosurf struct |
Definition at line 306 of file gs.c.
References G_free(), and tools::size.
Referenced by GS_load_att_map().
int gs_init_surf | ( | geosurf * | gs, |
double | ox, | ||
double | oy, | ||
int | rows, | ||
int | cols, | ||
double | xres, | ||
double | yres | ||
) |
Initialize allocated geosurf struct.
gs | pointer to geosurf struct |
ox,oy | x/y origin coordinates |
rows | number of rows |
cols | number of cols |
xres,yres | x/y resolution value |
Definition at line 232 of file gs.c.
References dialogs::cols, FIRST_SURF_ID, G_debug(), gs_get_prev_surface(), and NULL.
Referenced by GS_new_surface().
Allocate attribute buffer.
gs | pointer to geosurf struct |
desc | attribute id (descriptor) |
type | buffer type (based on raster map type) |
Definition at line 717 of file gs.c.
References G_debug(), gs_set_att_type(), and gsds_alloc_typbuff().
Referenced by GS_load_att_map().
Allocate attribute lookup.
gs | pointer to geosurf struct |
desc | attribute id |
Definition at line 746 of file gs.c.
References G_debug(), G_free(), G_warning(), int, NULL, and tools::size.
Referenced by GS_load_att_map().
Call this one when you already know att_src is MAP_ATT.
cobuff | |
coloratt | color attribute |
offset | offset value |
Definition at line 969 of file gs.c.
Referenced by GS_get_val_at_xy(), gs_update_curmask(), gsd_coarse_surf_map(), gsd_norm_arrows(), gsd_surf_const(), gsd_surf_map(), gsd_surf_map_old(), gsd_triangulated_wall(), gsd_wire_arrows(), gsd_wire_surf_const(), and gsd_wire_surf_map().
int gs_mask_defined | ( | geosurf * | gs | ) |
Check if mask is defined.
gs | pointer to geosurf struct |
Definition at line 915 of file gs.c.
Referenced by gs_update_curmask().
Should only be called when setting up the current mask (gs_bm.c)
tb | pointer to typbuff |
col | number of cols |
row | number of rows |
offset | offset value |
Definition at line 933 of file gs.c.
References BM_get().
Referenced by gs_update_curmask().
Get number of reused values.
dh | value |
Definition at line 597 of file gs.c.
References G_debug().
Referenced by gs_set_att_src().
int gs_num_surfaces | ( | void | ) |
Get number of surfaces.
Definition at line 127 of file gs.c.
References G_debug().
Referenced by GS_draw_cplane(), and GS_num_surfs().
int gs_point_is_masked | ( | geosurf * | gs, |
float * | pt | ||
) |
Check if point is masked.
gs | pointer to geosurf struct |
pt | point coordinates (X,Y,Z) |
Definition at line 1317 of file gs.c.
References BM_get(), VCOL2DCOL, VCOL2X, VCOLS, VROW2DROW, VROW2Y, VROWS, VXRES, VYRES, X, X2VCOL, Y, and Y2VROW.
Referenced by gpd_2dsite(), GS_get_cat_at_xy(), GS_get_norm_at_xy(), GS_get_selected_point_on_surface(), GS_get_val_at_xy(), GS_is_masked(), gvd_draw_lineonsurf(), gvd_vect(), and viewcell_tri_interp().
Set attribute constant value.
gs | pointer to geosurf struct |
desc | attribute id |
constant | constant value |
Definition at line 872 of file gs.c.
References G_debug(), gs_set_att_src(), and Gs_update_attrange().
Referenced by GS_set_att_const().
Set attribute source.
gs | pointer to geosurf struct |
desc | attribute id (descriptor) |
src | source id |
Definition at line 827 of file gs.c.
References G_debug(), G_free(), gs_get_att_src(), gs_num_datah_reused(), gsds_free_datah(), and NULL.
Referenced by GS_load_att_map(), GS_new_surface(), gs_set_att_const(), and GS_unset_att().
Set attribute type.
gs | pointer to geosurf struct |
desc | attribute id |
type | attribute type |
Definition at line 803 of file gs.c.
References G_debug(), and dialogs::type.
Referenced by GS_load_att_map(), and gs_malloc_att_buff().
void gs_set_defaults | ( | geosurf * | gs, |
float * | defs, | ||
float * | null_defs | ||
) |
Set default attribute values.
gs | pointer to geosurf struct |
defs | array of default values (dim MAX_ATTRS) |
null_defs | array of null default values (dim MAX_ATTRS) |
Definition at line 441 of file gs.c.
References G_debug(), and NULL.
Referenced by GS_new_surface().
void gs_set_maskmode | ( | int | invert | ) |
Set geosurf mask mode.
invert | invert mask |
Definition at line 900 of file gs.c.
Referenced by gs_update_curmask().
int gs_setall_norm_needupdate | ( | void | ) |
void print_256lookup | ( | int * | buff | ) |
void print_frto | ( | float(*) | ft[4] | ) |
void print_realto | ( | float * | rt | ) |
void print_surf_fields | ( | geosurf * | s | ) |