|
GRASS 8 Programmer's Manual 8.6.0dev(2026)-1d1e47ad9d
|
OGSF library - loading and manipulating surfaces (lower level functions) More...
#include <stdlib.h>#include <stdio.h>#include <grass/ogsf.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. | |
| geosurf * | gs_get_surf (int id) |
| Get geosurf struct. | |
| geosurf * | gs_get_prev_surface (int id) |
| Get previous geosurf struct. | |
| int | gs_getall_surfaces (geosurf **gsurfs) |
| Get array of geosurf structs. | |
| int | gs_num_surfaces (void) |
| Get number of surfaces. | |
| int | gs_att_is_set (geosurf *surf, unsigned int att) |
| Check if attribute is set. | |
| geosurf * | gs_get_last_surface (void) |
| Get last allocated geosurf struct from list. | |
| geosurf * | gs_get_new_surface (void) |
| Allocate new geosurf struct. | |
| int | gs_init_surf (geosurf *gs, double ox, double oy, int rows, int cols, double xres, double yres) |
| Initialize allocated geosurf struct. | |
| int | gs_init_normbuff (geosurf *gs) |
| Init geosurf normbuff. | |
| void | print_frto (float(*ft)[4]) |
| Debugging, print 'from/to' model coordinates to stderr. | |
| void | print_realto (float *rt) |
| Debugging, print 'to' real coordinates to stderr. | |
| void | print_256lookup (int *buff) |
| Debugging, 256 integer values from buffer. | |
| void | print_surf_fields (geosurf *s) |
| Debugging, print geosurf fields to stderr. | |
| void | print_view_fields (geoview *gv) |
| Debugging, print geoview fields to stderr. | |
| void | gs_set_defaults (geosurf *gs, float *defs, float *null_defs) |
| Set default attribute values. | |
| void | gs_delete_surf (int id) |
| Remove geosurf struct from list. | |
| int | gs_free_surf (geosurf *fs) |
| Free geosurf struct. | |
| void | gs_free_unshared_buffs (geosurf *fs) |
| Free unshared buffers of geosurf struct. | |
| int | gs_num_datah_reused (int dh) |
| Get number of reused values. | |
| int | gs_get_att_type (geosurf *gs, int desc) |
| Get attribute type. | |
| int | gs_get_att_src (geosurf *gs, int desc) |
| Get attribute source. | |
| typbuff * | gs_get_att_typbuff (geosurf *gs, int desc, int to_write) |
| Get attribute data buffer. | |
| size_t | gs_malloc_att_buff (geosurf *gs, int desc, int type) |
| Allocate attribute buffer. | |
| int | gs_malloc_lookup (geosurf *gs, int desc) |
| Allocate attribute lookup. | |
| int | gs_set_att_type (geosurf *gs, int desc, int type) |
| Set attribute type. | |
| int | gs_set_att_src (geosurf *gs, int desc, int src) |
| Set attribute source. | |
| int | gs_set_att_const (geosurf *gs, int desc, float constant) |
| Set attribute constant value. | |
| void | gs_set_maskmode (int invert) |
| Set geosurf mask mode. | |
| int | gs_mask_defined (geosurf *gs) |
| Check if mask is defined. | |
| int | gs_masked (typbuff *tb, int col, int row, int offset) |
| Should only be called when setting up the current mask (gs_bm.c) | |
| int | gs_mapcolor (typbuff *cobuff, gsurf_att *coloratt, int offset) |
| Call this one when you already know att_src is MAP_ATT. | |
| int | gs_get_zextents (geosurf *gs, float *min, float *max, float *mid) |
| Get z-extent values. | |
| int | gs_get_xextents (geosurf *gs, float *min, float *max) |
| Get x-extent values. | |
| int | gs_get_yextents (geosurf *gs, float *min, float *max) |
| Get y-extent values. | |
| int | gs_get_zrange0 (float *min, float *max) |
| Get z-range. | |
| int | gs_get_zrange (float *min, float *max) |
| Get z-range. | |
| int | gs_get_xrange (float *min, float *max) |
| Get x-range. | |
| int | gs_get_yrange (float *min, float *max) |
| Get y-range. | |
| int | gs_get_data_avg_zmax (float *azmax) |
| Get average z-max value. | |
| int | gs_get_datacenter (float *cen) |
| Get data center point. | |
| int | gs_setall_norm_needupdate (void) |
| Set for geosurf need-to-update mark. | |
| int | gs_point_is_masked (geosurf *gs, float *pt) |
| Check if point is masked. | |
| int | gs_distance_onsurf (geosurf *gs, float *p1, float *p2, float *dist, int use_exag) |
| Calculate distance on surface. | |
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.
Check if attribute is set.
| surf | pointer to gsurf or NULL to look at all geosurfs |
| att | attribute id |
Definition at line 150 of file gs.c.
References NOTSET_ATT.
Remove geosurf struct from list.
| id | surface id |
Definition at line 463 of file gs.c.
References 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 | distance |
| use_exag | use exag for calculation |
Definition at line 1414 of file gs.c.
References GS_distance(), GS_global_exag(), gsdrape_get_segments(), in_vregion(), NULL, and Z.
Referenced by GS_get_distance_alongsurf().
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().
Free unshared buffers of geosurf struct.
fs has already been taken out of the list
This function is fairly revealing about how shared datasets work
| fs | pointer to geosurf struct |
Definition at line 557 of file gs.c.
References G_debug(), gsds_free_datah(), and MAX_ATTS.
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(), and LEGAL_ATT.
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 ATT_TOPO, 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().
Get attribute type.
| gs | pointer to geosurf struct |
| desc | attribute id |
Definition at line 630 of file gs.c.
References G_debug(), LEGAL_ATT, and NOTSET_ATT.
Get average z-max value.
Useful for setting position of cplane, lighting ball, etc.
| [out] | azmax | average z-max value |
Definition at line 1201 of file gs.c.
Referenced by GS_get_modelposition1().
Get data center point.
| [out] | cen | center (array X,Y,Z) |
Definition at line 1230 of file gs.c.
Referenced by GS_get_modelposition1(), and gsd_set_view().
Get last allocated geosurf struct from list.
Definition at line 173 of file gs.c.
References G_debug(), and NULL.
Referenced by gs_get_new_surface().
Allocate new geosurf struct.
Definition at line 194 of file gs.c.
References FIRST_SURF_ID, G_debug(), G_malloc, gs_get_last_surface(), g_surf::gsurf_id, g_surf::next, and NULL.
Referenced by GS_new_surface().
Get geosurf struct.
| id | surface id |
Definition at line 63 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().
Get x-extent values.
| gs | pointer to geosurf struct | |
| [out] | min | x-min value |
| [out] | max | x-max value |
Definition at line 1015 of file gs.c.
Referenced by gs_get_xrange().
Get x-range.
| [out] | min | x-min value |
| [out] | max | x-max value |
Definition at line 1124 of file gs.c.
References gs_get_xextents(), max, and min.
Referenced by gs_get_databounds_planes().
Get y-extent values.
| gs | pointer to geosurf struct | |
| [out] | min | y-min value |
| [out] | max | y-max value |
Definition at line 1032 of file gs.c.
Referenced by gs_get_yrange().
Get y-range.
| [out] | min | y-min value |
| [out] | max | y-max value |
Definition at line 1162 of file gs.c.
References gs_get_yextents(), max, and min.
Referenced by gs_get_databounds_planes().
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 997 of file gs.c.
Referenced by GS_get_zextents(), and gs_get_zrange().
Get z-range.
| [out] | min | z-min value |
| [out] | max | z-max value |
Definition at line 1086 of file gs.c.
References gs_get_zextents(), max, and min.
Referenced by GS_get_zrange(), and gvd_vect().
Get array of geosurf structs.
| gsurfs | pointer to array |
Definition at line 109 of file gs.c.
References G_debug().
Referenced by GS_draw_cplane(), and gsd_wall().
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 48 of file gs.c.
References NULL.
Referenced by GS_libinit().
Init geosurf normbuff.
| gs | pointer to geosurf struct |
Definition at line 308 of file gs.c.
References G_free(), and G_malloc.
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 234 of file gs.c.
References ATTY_INT, DM_GOURAUD, FIRST_SURF_ID, G_debug(), gs_get_prev_surface(), MAX_ATTS, NOTSET_ATT, NULL, and ps.
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 ATTY_CHAR, ATTY_SHORT, G_debug(), G_free(), G_malloc, G_warning(), and NULL.
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 968 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().
Check if mask is defined.
| gs | pointer to geosurf struct |
Definition at line 914 of file gs.c.
References ATT_MASK, and NOTSET_ATT.
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 932 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(), and MAX_ATTS.
Referenced by gs_set_att_src().
Get number of surfaces.
Definition at line 128 of file gs.c.
References G_debug().
Referenced by GS_draw_cplane(), and GS_num_surfs().
Check if point is masked.
| gs | pointer to geosurf struct | |
| [in] | pt | point coordinates (X,Y,Z) |
Definition at line 1314 of file gs.c.
References BM_get(), MASK_BL, MASK_BR, MASK_TL, MASK_TR, 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 871 of file gs.c.
References ATT_MASK, CONST_ATT, 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 826 of file gs.c.
References ATT_TOPO, G_debug(), G_free(), gs_get_att_src(), gs_num_datah_reused(), gsds_free_datah(), LEGAL_SRC, MAP_ATT, 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 802 of file gs.c.
References G_debug(), and LEGAL_TYPE.
Referenced by GS_load_att_map(), and gs_malloc_att_buff().
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(), MAX_ATTS, NOTSET_ATT, and NULL.
Referenced by GS_new_surface().
Set geosurf mask mode.
| invert | invert mask |
Definition at line 899 of file gs.c.
Referenced by gs_update_curmask().
Debugging, print geosurf fields to stderr.
| s | pointer to geosurf struct |
Definition at line 393 of file gs.c.
References g_surf::cols, g_surf::draw_mode, g_surf::gsurf_id, g_surf::ox, g_surf::oy, g_surf::rows, g_surf::wire_color, g_surf::x_mod, g_surf::x_modw, g_surf::x_trans, g_surf::xmax, g_surf::xmin, g_surf::xres, g_surf::y_mod, g_surf::y_modw, g_surf::y_trans, g_surf::ymax, g_surf::ymin, g_surf::yres, g_surf::z_exag, g_surf::z_trans, g_surf::zmax, and g_surf::zmin.