GRASS GIS 8 Programmer's Manual  8.5.0dev(2024)-77aab223bc
gvl2.c File Reference

OGSF library - loading and manipulating volumes. More...

#include <string.h>
#include <grass/gis.h>
#include <grass/raster3d.h>
#include <grass/ogsf.h>
#include <grass/glocale.h>
#include "gsget.h"
Include dependency graph for gvl2.c:

Go to the source code of this file.

Functions

void GVL_libinit (void)
 Library initialization for volumes. More...
 
void GVL_init_region (void)
 Initialize 3D region. More...
 
int GVL_get_region (float *n, float *s, float *w, float *e, float *t, float *b)
 Get region extent settings. More...
 
void * GVL_get_window (void)
 Get window. More...
 
int GVL_vol_exists (int id)
 Check if volume set exists. More...
 
int GVL_new_vol (void)
 Create new volume set. More...
 
int GVL_num_vols (void)
 Get number of loaded volume sets. More...
 
int * GVL_get_vol_list (int *numvols)
 Get list of loaded volume sets. More...
 
int GVL_delete_vol (int id)
 Delete volume set from list. More...
 
int GVL_load_vol (int id, const char *filename)
 Load 3d raster map to volume set. More...
 
int GVL_get_volname (int id, char *filename)
 Get volume set name. More...
 
void GVL_get_dims (int id, int *rows, int *cols, int *depths)
 Get volume dimensions. More...
 
void GVL_set_trans (int id, float xtrans, float ytrans, float ztrans)
 Set trans ? More...
 
int GVL_get_trans (int id, float *xtrans, float *ytrans, float *ztrans)
 Get trans ? More...
 
void GVL_set_draw_wire (int id, int draw_wire)
 Set drawing wire box. More...
 
void GVL_draw_vol (int vid)
 Draw volume set. More...
 
void GVL_draw_wire (int id)
 Draw volume in wire mode. More...
 
void GVL_alldraw_vol (void)
 Draw all volume sets. More...
 
void GVL_alldraw_wire (void)
 Draw all volume sets in wire mode. More...
 
int GVL_Set_ClientData (int id, void *clientd)
 Set client data for volume set. More...
 
void * GVL_Get_ClientData (int id)
 Get client data. More...
 
void GVL_set_focus_center_map (int id)
 Set focus on map center. More...
 
void GVL_isosurf_get_drawres (int id, int *xres, int *yres, int *zres)
 Get draw resolution for isosurface. More...
 
int GVL_isosurf_set_drawres (int id, int xres, int yres, int zres)
 Set isosurface draw resolution. More...
 
int GVL_isosurf_get_drawmode (int id, int *mode)
 Get isosurface draw mode. More...
 
int GVL_isosurf_set_drawmode (int id, int mode)
 Set isosurface draw mode. More...
 
int GVL_isosurf_add (int id)
 Add isosurface. More...
 
int GVL_isosurf_del (int id, int isosurf_id)
 Delete isosurface. More...
 
int GVL_isosurf_move_up (int id, int isosurf_id)
 Move up isosurface in list. More...
 
int GVL_isosurf_move_down (int id, int isosurf_id)
 Move down isosurface in list. More...
 
int GVL_isosurf_get_att (int id, int isosurf_id, int att, int *set, float *constant, char *mapname)
 Get isosurface attributes. More...
 
int GVL_isosurf_unset_att (int id, int isosurf_id, int att)
 Unset isosurface attributes. More...
 
int GVL_isosurf_set_att_const (int id, int isosurf_id, int att, float constant)
 Set constant isosurface attribute. More...
 
int GVL_isosurf_set_att_map (int id, int isosurf_id, int att, const char *filename)
 Set isosurface map attribute. More...
 
int GVL_isosurf_get_flags (int id, int isosurf_id, int *inout)
 Get isosurface flags. More...
 
int GVL_isosurf_set_flags (int id, int isosurf_id, int inout)
 Set isosurface flags. More...
 
int GVL_isosurf_num_isosurfs (int id)
 Get number of available isosurfaces. More...
 
int GVL_isosurf_set_maskmode (int id, int isosurf_id, int mode)
 Set mask attribute mode. More...
 
int GVL_isosurf_get_maskmode (int id, int isosurf_id, int *mode)
 Get isosurface mask mode. More...
 
void GVL_slice_get_drawres (int id, int *xres, int *yres, int *zres)
 Get draw resolution of slice. More...
 
int GVL_slice_set_drawres (int id, int xres, int yres, int zres)
 Set slice draw resolution. More...
 
int GVL_slice_get_drawmode (int id, int *mode)
 Get slice draw mode. More...
 
int GVL_slice_set_drawmode (int id, int mode)
 Set slice draw mode. More...
 
int GVL_slice_add (int id)
 Add slice. More...
 
int GVL_slice_del (int id, int slice_id)
 Delete slice. More...
 
int GVL_slice_move_up (int id, int slice_id)
 Move up slice. More...
 
int GVL_slice_move_down (int id, int slice_id)
 Move down slice. More...
 
int GVL_slice_num_slices (int id)
 Get number or slices. More...
 
int GVL_slice_get_pos (int id, int slice_id, float *x1, float *x2, float *y1, float *y2, float *z1, float *z2, int *dir)
 Get slice position. More...
 
int GVL_slice_set_pos (int id, int slice_id, float x1, float x2, float y1, float y2, float z1, float z2, int dir)
 Get slice position. More...
 
int GVL_slice_get_transp (int id, int slice_id, int *transp)
 Get slice trans ? More...
 
int GVL_slice_set_transp (int id, int slice_id, int transp)
 Set slice trans ? More...
 

Detailed Description

OGSF library - loading and manipulating volumes.

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 UI-GMSL (May 1997) Tomas Paudits (February 2004)

Definition in file gvl2.c.

Function Documentation

◆ GVL_alldraw_vol()

void GVL_alldraw_vol ( void  )

Draw all volume sets.

Definition at line 447 of file gvl2.c.

◆ GVL_alldraw_wire()

void GVL_alldraw_wire ( void  )

Draw all volume sets in wire mode.

Definition at line 461 of file gvl2.c.

◆ GVL_delete_vol()

int GVL_delete_vol ( int  id)

Delete volume set from list.

Parameters
idvolume set id
Returns
1 on success
-1 on error (invalid volume set id)

Definition at line 210 of file gvl2.c.

References G_debug(), gvl_delete_vol(), GVL_isosurf_del(), GVL_isosurf_num_isosurfs(), GVL_slice_del(), GVL_slice_num_slices(), and GVL_vol_exists().

◆ GVL_draw_vol()

void GVL_draw_vol ( int  vid)

Draw volume set.

Parameters
vidvolume set id

Definition at line 408 of file gvl2.c.

References g_vol::draw_wire, gvl_get_vol(), gvld_vol(), and gvld_wind3_box().

Referenced by Nviz_draw_all_vol().

◆ GVL_draw_wire()

void GVL_draw_wire ( int  id)

Draw volume in wire mode.

Parameters
idvolume set id

Definition at line 429 of file gvl2.c.

References G_debug(), gvl_get_vol(), and gvld_wire_vol().

◆ GVL_Get_ClientData()

void* GVL_Get_ClientData ( int  id)

Get client data.

Parameters
idvolume set id
Returns
pointer to client data
NULL on error

Definition at line 504 of file gvl2.c.

References g_vol::clientdata, gvl_get_vol(), and NULL.

◆ GVL_get_dims()

void GVL_get_dims ( int  id,
int *  rows,
int *  cols,
int *  depths 
)

Get volume dimensions.

Parameters
idvolume set id
[out]rows,cols,depthsnumber of rows, cols, depths

Definition at line 309 of file gvl2.c.

References g_vol::cols, g_vol::depths, G_debug(), gvl_get_vol(), g_vol::gvol_id, and g_vol::rows.

Referenced by Nviz_set_volume_attr_default().

◆ GVL_get_region()

int GVL_get_region ( float *  n,
float *  s,
float *  w,
float *  e,
float *  t,
float *  b 
)

Get region extent settings.

Parameters
[out]n,s,w,enorth, south, west, east
[out]t,btop, bottom
Returns
1

Definition at line 79 of file gvl2.c.

◆ GVL_get_trans()

int GVL_get_trans ( int  id,
float *  xtrans,
float *  ytrans,
float *  ztrans 
)

Get trans ?

Parameters
idvolume set id
[out]xtrans,ytrans,ztransx/y/z trans values
Returns
1 on success
-1 on error

Definition at line 365 of file gvl2.c.

References gvl_get_vol(), g_vol::x_trans, g_vol::y_trans, and g_vol::z_trans.

◆ GVL_get_vol_list()

int* GVL_get_vol_list ( int *  numvols)

Get list of loaded volume sets.

Must be freed if not needed!

Parameters
[out]numvolsnumber of volume sets
Returns
pointer to list of volume sets
NULL on error

Definition at line 181 of file gvl2.c.

Referenced by Nviz_draw_all_vol().

◆ GVL_get_volname()

int GVL_get_volname ( int  id,
char *  filename 
)

Get volume set name.

Parameters
idvolume set id
[out]filenamename (must be allocated)
Returns
-1 on error
1 on success

Definition at line 286 of file gvl2.c.

◆ GVL_get_window()

void* GVL_get_window ( void  )

Get window.

Todo:
gvl_file.c use this - change
Returns
pointer to RASTER3D_Region struct (static)

Definition at line 98 of file gvl2.c.

◆ GVL_init_region()

void GVL_init_region ( void  )

Initialize 3D region.

Set region extent (N,S,W,E,T,B)

Definition at line 57 of file gvl2.c.

References Rast3d_read_window().

◆ GVL_isosurf_add()

int GVL_isosurf_add ( int  id)

Add isosurface.

Parameters
idvolume set id
Returns
-1 on error (invalid volume set id
1 on success

Definition at line 667 of file gvl2.c.

References G_debug(), G_malloc, gvl_get_vol(), gvl_isosurf_init(), g_vol::isosurf, MAX_ISOSURFS, and g_vol::n_isosurfs.

◆ GVL_isosurf_del()

int GVL_isosurf_del ( int  id,
int  isosurf_id 
)

Delete isosurface.

Parameters
idvolume set id
isosurf_idisosurface id
Returns
-1 on error
1 on success

Definition at line 704 of file gvl2.c.

References G_debug(), G_free(), gvl_get_vol(), gvl_isosurf_freemem(), gvl_isosurf_get_isosurf(), g_vol::isosurf, and g_vol::n_isosurfs.

Referenced by GVL_delete_vol().

◆ GVL_isosurf_get_att()

int GVL_isosurf_get_att ( int  id,
int  isosurf_id,
int  att,
int *  set,
float *  constant,
char *  mapname 
)

Get isosurface attributes.

Parameters
idvolume set id
isosurf_idsurface id
attattribute id
[out]set
[out]constant
[out]mapname
Returns
-1 on error
1 on success

Definition at line 815 of file gvl2.c.

◆ GVL_isosurf_get_drawmode()

int GVL_isosurf_get_drawmode ( int  id,
int *  mode 
)

Get isosurface draw mode.

Parameters
idvolume set id
[out]modedraw-mode
Returns
1 on success
-1 on error

Definition at line 618 of file gvl2.c.

◆ GVL_isosurf_get_drawres()

void GVL_isosurf_get_drawres ( int  id,
int *  xres,
int *  yres,
int *  zres 
)

Get draw resolution for isosurface.

Todo:
error handling
Parameters
idvolume set id
[out]xres,yres,zresx/y/z resolution value

Definition at line 555 of file gvl2.c.

References G_debug(), gvl_get_vol(), g_vol::isosurf_x_mod, g_vol::isosurf_y_mod, and g_vol::isosurf_z_mod.

◆ GVL_isosurf_get_flags()

int GVL_isosurf_get_flags ( int  id,
int  isosurf_id,
int *  inout 
)

Get isosurface flags.

Parameters
idvolume set id
isosurf_idisosurface id
[out]inoutmap name
Returns
1 on success
-1 on error

Definition at line 957 of file gvl2.c.

References G_debug(), gvl_isosurf_get_isosurf(), and geovol_isosurf::inout_mode.

◆ GVL_isosurf_get_maskmode()

int GVL_isosurf_get_maskmode ( int  id,
int  isosurf_id,
int *  mode 
)

Get isosurface mask mode.

Parameters
idvolume set id
isosurf_idisosurface id
modeattribute mode
Returns
1 on success
-1 on error

Definition at line 1062 of file gvl2.c.

◆ GVL_isosurf_move_down()

int GVL_isosurf_move_down ( int  id,
int  isosurf_id 
)

Move down isosurface in list.

Parameters
idvolume set id
isosurf_idisosurface id
Returns
-1 on error
1 on success

Definition at line 777 of file gvl2.c.

◆ GVL_isosurf_move_up()

int GVL_isosurf_move_up ( int  id,
int  isosurf_id 
)

Move up isosurface in list.

Parameters
idvolume set id
isosurf_idisosurface id
Returns
-1 on error
1 on success

Definition at line 743 of file gvl2.c.

◆ GVL_isosurf_num_isosurfs()

int GVL_isosurf_num_isosurfs ( int  id)

Get number of available isosurfaces.

Parameters
idvolume set id
Returns
number of isosurfaces
-1 on error

Definition at line 1008 of file gvl2.c.

References G_debug(), gvl_get_vol(), and g_vol::n_isosurfs.

Referenced by GVL_delete_vol().

◆ GVL_isosurf_set_att_const()

int GVL_isosurf_set_att_const ( int  id,
int  isosurf_id,
int  att,
float  constant 
)

Set constant isosurface attribute.

Attributes:

  • ATT_NORM
  • ATT_TOPO topography (level) constant
  • ATT_COLOR color map/constant
  • ATT_MASK mask map
  • ATT_TRANSP transparency map/constant
  • ATT_SHINE shininess map/constant
  • ATT_EMIT emission map/constant
Parameters
idvolume set id
isosurf_idisosurface id (0 - MAX_ISOSURFS)
attattribute descriptor
constantconstant value
Returns
1 on success
-1 on error

Definition at line 890 of file gvl2.c.

References G_debug(), gvl_isosurf_get_isosurf(), and gvl_isosurf_set_att_const().

◆ GVL_isosurf_set_att_map()

int GVL_isosurf_set_att_map ( int  id,
int  isosurf_id,
int  att,
const char *  filename 
)

Set isosurface map attribute.

Attributes:

  • ATT_NORM
  • ATT_TOPO topography (level) constant
  • ATT_COLOR color map/constant
  • ATT_MASK mask map
  • ATT_TRANSP transparency map/constant
  • ATT_SHINE shininess map/constant
  • ATT_EMIT emission map/constant
Parameters
idvolume set id
isosurf_idisosurface id (0 - MAX_ISOSURFS)
attattribute descriptor
filenamemap name
Returns
1 on success
-1 on error

Definition at line 928 of file gvl2.c.

◆ GVL_isosurf_set_drawmode()

int GVL_isosurf_set_drawmode ( int  id,
int  mode 
)

Set isosurface draw mode.

Parameters
idvolume set id
modedraw mode
Returns
0 on success
-1 on error (invalid volume set id)

Definition at line 642 of file gvl2.c.

Referenced by Nviz_set_volume_attr_default().

◆ GVL_isosurf_set_drawres()

int GVL_isosurf_set_drawres ( int  id,
int  xres,
int  yres,
int  zres 
)

Set isosurface draw resolution.

Parameters
idvolume set id
xres,yres,zresx/y/z resolution value
Returns
-1 on error (invalid values/volume set id)
0 on success

Definition at line 581 of file gvl2.c.

References ATT_TOPO, G_debug(), gvl_get_vol(), gvl_isosurf_set_att_changed(), g_vol::isosurf, g_vol::isosurf_x_mod, g_vol::isosurf_y_mod, g_vol::isosurf_z_mod, and g_vol::n_isosurfs.

Referenced by Nviz_set_volume_attr_default().

◆ GVL_isosurf_set_flags()

int GVL_isosurf_set_flags ( int  id,
int  isosurf_id,
int  inout 
)

Set isosurface flags.

Parameters
idvolume set id
isosurf_idisosurface id
inoutmap name
Returns
1 on success
-1 on error

Definition at line 983 of file gvl2.c.

References G_debug(), gvl_isosurf_get_isosurf(), and geovol_isosurf::inout_mode.

◆ GVL_isosurf_set_maskmode()

int GVL_isosurf_set_maskmode ( int  id,
int  isosurf_id,
int  mode 
)

Set mask attribute mode.

Mask attribute special: constant is set to indicate invert or no

Parameters
idvolume set id
isosurf_idisosurface id
modeattribute mode
Returns
mode id
-1 on error

Definition at line 1035 of file gvl2.c.

◆ GVL_isosurf_unset_att()

int GVL_isosurf_unset_att ( int  id,
int  isosurf_id,
int  att 
)

Unset isosurface attributes.

Parameters
idvolume set id
isosurface_idisosurface id
attattribute id
Returns
?
-1 on error

Definition at line 855 of file gvl2.c.

References G_debug(), gvl_isosurf_get_isosurf(), gvl_isosurf_set_att_src(), and NOTSET_ATT.

◆ GVL_libinit()

void GVL_libinit ( void  )

Library initialization for volumes.

Set region extent (N,S,W,E,T,B)

Definition at line 37 of file gvl2.c.

References Rast3d_get_window(), and Rast3d_init_defaults().

◆ GVL_load_vol()

int GVL_load_vol ( int  id,
const char *  filename 
)

Load 3d raster map to volume set.

Parameters
idvolume set id
filename3d raster map name
Returns
-1 on error
0 on success

Definition at line 256 of file gvl2.c.

◆ GVL_new_vol()

int GVL_new_vol ( void  )

Create new volume set.

Returns
volume set id
-1 on error

Definition at line 136 of file gvl2.c.

References G_debug().

◆ GVL_num_vols()

int GVL_num_vols ( void  )

Get number of loaded volume sets.

Returns
number of volume sets

Definition at line 166 of file gvl2.c.

References gvl_num_vols().

◆ GVL_Set_ClientData()

int GVL_Set_ClientData ( int  id,
void *  clientd 
)

Set client data for volume set.

Parameters
idvolume set id
clientdpointer to client data
Returns
1 on success
-1 on error

Definition at line 481 of file gvl2.c.

References g_vol::clientdata, and gvl_get_vol().

◆ GVL_set_draw_wire()

void GVL_set_draw_wire ( int  id,
int  draw_wire 
)

Set drawing wire box.

Parameters
idvolume set id
draw_wire1 for drawing wire, 0 otherwise

Definition at line 388 of file gvl2.c.

References g_vol::draw_wire, G_debug(), and gvl_get_vol().

◆ GVL_set_focus_center_map()

void GVL_set_focus_center_map ( int  id)

Set focus on map center.

Parameters
idvolume set id

Definition at line 522 of file gvl2.c.

References G_debug(), GS_set_focus(), gvl_get_vol(), X, g_vol::xmax, g_vol::xmin, Y, g_vol::ymax, g_vol::ymin, Z, g_vol::zmax, and g_vol::zmin.

◆ GVL_set_trans()

void GVL_set_trans ( int  id,
float  xtrans,
float  ytrans,
float  ztrans 
)

Set trans ?

Parameters
idvolume set id
xtrans,ytrans,ztransx/y/z trans values

Definition at line 339 of file gvl2.c.

References G_debug(), gvl_get_vol(), g_vol::x_trans, g_vol::y_trans, and g_vol::z_trans.

◆ GVL_slice_add()

int GVL_slice_add ( int  id)

Add slice.

Parameters
idvolume set id
Returns
-1 on error
1 on success

Definition at line 1200 of file gvl2.c.

◆ GVL_slice_del()

int GVL_slice_del ( int  id,
int  slice_id 
)

Delete slice.

Parameters
idvolume set id
slice_idslice id
Returns
-1 on error
1 on success

Definition at line 1236 of file gvl2.c.

Referenced by GVL_delete_vol().

◆ GVL_slice_get_drawmode()

int GVL_slice_get_drawmode ( int  id,
int *  mode 
)

Get slice draw mode.

Parameters
idvolume set id
[out]modedraw mode
Returns
1 on success
-1 on error (invalid id)

Definition at line 1151 of file gvl2.c.

◆ GVL_slice_get_drawres()

void GVL_slice_get_drawres ( int  id,
int *  xres,
int *  yres,
int *  zres 
)

Get draw resolution of slice.

Parameters
idvolume set id
[out]xres,yres,zresx/y/z resolution value

Definition at line 1088 of file gvl2.c.

References G_debug(), gvl_get_vol(), g_vol::slice_x_mod, g_vol::slice_y_mod, and g_vol::slice_z_mod.

◆ GVL_slice_get_pos()

int GVL_slice_get_pos ( int  id,
int  slice_id,
float *  x1,
float *  x2,
float *  y1,
float *  y2,
float *  z1,
float *  z2,
int *  dir 
)

Get slice position.

Parameters
idvolume set id
slice_idslice id
[out]x1,y1,z1coordinates ?
[out]x2,y2,z2coordinates ?
[out]dirdirection
Returns
-1 on error
1 on success

Definition at line 1369 of file gvl2.c.

◆ GVL_slice_get_transp()

int GVL_slice_get_transp ( int  id,
int  slice_id,
int *  transp 
)

Get slice trans ?

Parameters
idvolume set id
slice_idslice id
[out]transptransp value
Returns
-1 on error
1 on success

Definition at line 1489 of file gvl2.c.

◆ GVL_slice_move_down()

int GVL_slice_move_down ( int  id,
int  slice_id 
)

Move down slice.

Parameters
idvolume set id
slice_idslice id
Returns
-1 on error
1 on success

Definition at line 1309 of file gvl2.c.

◆ GVL_slice_move_up()

int GVL_slice_move_up ( int  id,
int  slice_id 
)

Move up slice.

Parameters
idvolume set id
slice_idslice id
Returns
-1 on error
1 on success

Definition at line 1275 of file gvl2.c.

◆ GVL_slice_num_slices()

int GVL_slice_num_slices ( int  id)

Get number or slices.

Parameters
idvolume set id
Returns
number of slices
-1 on error

Definition at line 1342 of file gvl2.c.

References G_debug(), gvl_get_vol(), and g_vol::n_slices.

Referenced by GVL_delete_vol().

◆ GVL_slice_set_drawmode()

int GVL_slice_set_drawmode ( int  id,
int  mode 
)

Set slice draw mode.

Parameters
idvolume set id
modedraw mode
Returns
0 on success
-1 on error (invalid id)

Definition at line 1175 of file gvl2.c.

Referenced by Nviz_set_volume_attr_default().

◆ GVL_slice_set_drawres()

int GVL_slice_set_drawres ( int  id,
int  xres,
int  yres,
int  zres 
)

Set slice draw resolution.

Parameters
idvolume set id
xres,yres,zresx/y/z resolution value
Returns
0 on success
-1 on error (invalid value or id)

Definition at line 1114 of file gvl2.c.

References geovol_slice::changed, G_debug(), gvl_get_vol(), g_vol::n_slices, g_vol::slice, g_vol::slice_x_mod, g_vol::slice_y_mod, and g_vol::slice_z_mod.

Referenced by Nviz_set_volume_attr_default().

◆ GVL_slice_set_pos()

int GVL_slice_set_pos ( int  id,
int  slice_id,
float  x1,
float  x2,
float  y1,
float  y2,
float  z1,
float  z2,
int  dir 
)

Get slice position.

Parameters
idvolume set id
slice_idslice id
x1,y1,z1coordinates ?
x2,y2,z2coordinates ?
dirdirection
Returns
-1 on error
1 on success

Definition at line 1429 of file gvl2.c.

◆ GVL_slice_set_transp()

int GVL_slice_set_transp ( int  id,
int  slice_id,
int  transp 
)

Set slice trans ?

Parameters
idvolume set id
slice_idslice id
transptransp value
Returns
-1 on error
1 on success

Definition at line 1515 of file gvl2.c.

◆ GVL_vol_exists()

int GVL_vol_exists ( int  id)

Check if volume set exists.

Parameters
idvolume set id
Returns
1 found
0 not found

Definition at line 111 of file gvl2.c.

References G_debug(), gvl_get_vol(), and NULL.

Referenced by GVL_delete_vol().