GRASS GIS 8 Programmer's Manual  8.2.2dev(2023)-3d2c704037
Todo List
Global Cairo_begin_raster (int mask, int s[2][2], double d[2][2])
are top and left swapped?
Global Cairo_begin_raster (int mask, int s[2][2], double d[2][2])
are top and left swapped?
Global D_save_command (const char *cmd)
To be removed
Global D_save_command (const char *cmd)
To be removed
Global db_CatValArray_alloc (dbCatValArray *arr, int n)
return type void?
Global db_CatValArray_alloc (dbCatValArray *arr, int n)
return type void?
Global db_CatValArray_realloc (dbCatValArray *arr, int n)
return code void?
Global db_CatValArray_realloc (dbCatValArray *arr, int n)
return code void?
Global db_get_login (const char *driver, const char *database, const char **user, const char **password)
: GRASS 8: to be replaced by db_set_login2().
Global db_get_login (const char *driver, const char *database, const char **user, const char **password)
: GRASS 8: to be replaced by db_set_login2().
Global db_set_column_has_undefined_default_value (dbColumn *)
Replace by db_unset_column_has_default_value() ?
Global db_set_column_has_undefined_default_value (dbColumn *)
Replace by db_unset_column_has_default_value() ?
Global db_set_default_connection (void)
DB_OK on success, DB_* error code on fail
Global db_set_index_type_non_unique (dbIndex *index)
return type void?
Global db_set_index_type_non_unique (dbIndex *index)
return type void?
Global db_set_index_type_unique (dbIndex *index)
return type void?
Global db_set_index_type_unique (dbIndex *index)
return type void?
Global db_set_login (const char *driver, const char *database, const char *user, const char *password)
: GRASS 8: to be replaced by db_set_login2().
Global db_set_login (const char *driver, const char *database, const char *user, const char *password)
: GRASS 8: to be replaced by db_set_login2().
Global DBL_SIZ
To be removed ?
Global dig_head::recycle
Not implemented yet
File field.c
see Vect_read_dblinks(); activate auto-FID detection once OGR_L_GetFIDColumn() is working or solution found if FID not available
Class Format_info_ogr
Structure size should not change depending on compilation I think, do it better
Global G__location_path (void)
Support also Windows-like path (?)
Global G__mapset_path (void)
Support also Windows-like path (?)
Global G_config_path (void)
should it be? see possible TODO below
Global get_vert_intersects (geosurf *, float *, float *, float *)
For consistancy, need to decide how last row & last column are displayed - would it look funny to always draw last row/col with finer resolution if necessary, or would it be better to only show full rows/cols?
Global get_vert_intersects (geosurf *, float *, float *, float *)
For consistancy, need to decide how last row & last column are displayed - would it look funny to always draw last row/col with finer resolution if necessary, or would it be better to only show full rows/cols?
Global GP_get_zmode (int, int *)
Who's using this?
Global GP_get_zmode (int, int *)
Who's using this?
Global gp_init_site (geosite *)
Currently does nothing
Global gp_init_site (geosite *)
Currently does nothing
Global GP_load_site (int, const char *)
load file handle & ready for reading instead of using memory
Global GP_load_site (int, const char *)
load file handle & ready for reading instead of using memory
Global gpd_2dsite (geosite *, geosurf *, int)
prevent scaling by 0
Global gpd_2dsite (geosite *, geosurf *, int)
prevent scaling by 0
Global GPJ_grass_to_osr2 (const struct Key_Value *, const struct Key_Value *, const struct Key_Value *)
Merge with GPJ_grass_to_osr() in GRASS 8.
Global GPJ_grass_to_osr2 (const struct Key_Value *, const struct Key_Value *, const struct Key_Value *)
Merge with GPJ_grass_to_osr() in GRASS 8.
Global GPJ_grass_to_wkt2 (const struct Key_Value *, const struct Key_Value *, const struct Key_Value *, int, int)
Merge with GPJ_grass_to_wkt() in GRASS 8.
Global GPJ_grass_to_wkt2 (const struct Key_Value *, const struct Key_Value *, const struct Key_Value *, int, int)
Merge with GPJ_grass_to_wkt() in GRASS 8.
page GRASS GIS 8 Programmer's Manual
Update the list.
Global gs_calc_normals (geosurf *)
fix to correctly calculate norms when mapped to sphere!
Global gs_calc_normals (geosurf *)
fix to correctly calculate norms when mapped to sphere!
Global gs_clip_segment (geosurf *, float *, float *, float *)
to use fast clipping and move to gs.c
Global gs_clip_segment (geosurf *, float *, float *, float *)
to use fast clipping and move to gs.c
Global GS_draw_legend (const char *, GLuint, int, int *, float *, int *)
add legend from list option make font loading more flexible
Global GS_draw_legend (const char *, GLuint, int, int *, float *, int *)
add legend from list option make font loading more flexible
Global GS_get_cat_at_xy (int, int, char *, float, float)
Allocate catstr using G_store()
Global GS_get_cat_at_xy (int, int, char *, float, float)
Allocate catstr using G_store()
Global GS_get_to (float *)
need set_to? - just use viewdir?
Global GS_get_to (float *)
need set_to? - just use viewdir?
Global gs_get_zextents (geosurf *, float *, float *, float *)
pass flag to use zminmasked instead of zmin
Global gs_get_zextents (geosurf *, float *, float *, float *)
pass flag to use zminmasked instead of zmin
Global gs_get_zrange0 (float *, float *)
pass flag to use zminmasked instead of zmin could also have this return a weighted average for vertical "centroid"
Global gs_get_zrange0 (float *, float *)
pass flag to use zminmasked instead of zmin could also have this return a weighted average for vertical "centroid"
Global gs_init_surf (geosurf *, double, double, int, int, double, double)
Now xmin & ox are the same, right? - get rid of ox, oy in geosurf struct?
Global gs_init_surf (geosurf *, double, double, int, int, double, double)
Now xmin & ox are the same, right? - get rid of ox, oy in geosurf struct?
Global GS_init_view (void)
allow setting center?
Global Gs_loadmap_as_char (struct Cell_head *, const char *, unsigned char *, struct BM *, int *)
fn body Gs_loadmap_as_float()
Global Gs_loadmap_as_char (struct Cell_head *, const char *, unsigned char *, struct BM *, int *)
fn body Gs_loadmap_as_float()
Global Gs_loadmap_as_int (struct Cell_head *, const char *, int *, struct BM *, int *)
fn body of Gs_loadmap_as_float()
Global Gs_loadmap_as_int (struct Cell_head *, const char *, int *, struct BM *, int *)
fn body of Gs_loadmap_as_float()
Global gs_put_label (const char *, GLuint, int, unsigned long, int *)
Allocate label dynamically
Global gs_put_label (const char *, GLuint, int, unsigned long, int *)
Allocate label dynamically
Global gs_set_att_const (geosurf *, int, float)
set typbuf constant
Global gs_set_att_const (geosurf *, int, float)
set typbuf constant
Global GS_set_Narrow (int *, int, float *)
scale used to calculate len of arrow still needs work needs go function that returns center / eye distance gsd_get_los function is not working correctly ??
Global GS_set_Narrow (int *, int, float *)
scale used to calculate len of arrow still needs work needs go function that returns center / eye distance gsd_get_los function is not working correctly ??
Global GS_set_wire_color (int, int)
error-handling
Global GS_set_wire_color (int, int)
error-handling
Global gsd_coarse_surf_map (geosurf *)
normals have to be recalculated before proper low res surface can be drawn
Global gsd_coarse_surf_map (geosurf *)
normals have to be recalculated before proper low res surface can be drawn
Global gsd_display_fringe (geosurf *, unsigned long, float, int[4])
add elevation for bottom add color option add ruler grid lines
Global gsd_display_fringe (geosurf *, unsigned long, float, int[4])
add elevation for bottom add color option add ruler grid lines
File gsd_fonts.c

This file needs to be re-written in OpenGL

This file needs to be re-written in OpenGL

Global gsd_line_onsurf (geosurf *, float *, float *)
remove fudge, instead fudge the Z buffer
Global gsd_line_onsurf (geosurf *, float *, float *)
remove fudge, instead fudge the Z buffer
Global gsd_nline_onsurf (geosurf *, float *, float *, float *, int)
remove fudge, instead fudge the Z buffer
Global gsd_nline_onsurf (geosurf *, float *, float *, float *, int)
remove fudge, instead fudge the Z buffer
Global gsd_surf_const (geosurf *, float)
FIX: do_diff won't work right - needs normals - maybe calculate on the fly
Global gsd_surf_const (geosurf *, float)
FIX: do_diff won't work right - needs normals - maybe calculate on the fly
File gsdiff.c
generalize this concept to allow transform functions which are dependent on surfaces that are dependent on other surfaces, etc., as long as the dependency doesn't loop back.
Global gsds_alloc_typbuff (int, int *, int, int)
add ATTY_CONST
Global gsds_alloc_typbuff (int, int *, int, int)
add ATTY_CONST
Global GV_draw_fastvect (int)
Seems to be broken, nothing is drawn
Global GV_draw_fastvect (int)
Seems to be broken, nothing is drawn
Global GV_load_vector (int, const char *)
Load file handle & ready for reading instead of using memory
Global GV_load_vector (int, const char *)
Load file handle & ready for reading instead of using memory
Global GVL_get_window ()
gvl_file.c use this - change
Global GVL_isosurf_get_drawres (int, int *, int *, int *)
error handling
Global GVL_isosurf_get_drawres (int, int *, int *, int *)
error handling
Global IL_check_at_points_2d (struct interp_params *params, struct quaddata *data, double *b, double *ertot, double zmin, double dnorm, struct triple skip_point)
Alternative description: ...calculate the maximum and RMS deviation caused by smoothing.
Global IL_check_at_points_2d (struct interp_params *params, struct quaddata *data, double *b, double *ertot, double zmin, double dnorm, struct triple skip_point)
Alternative description: ...calculate the maximum and RMS deviation caused by smoothing.
Global IL_interp_segments_2d (struct interp_params *params, struct tree_info *info, struct multtree *tree, struct BM *bitmask, double zmin, double zmax, double *zminac, double *zmaxac, double *gmin, double *gmax, double *c1min, double *c1max, double *c2min, double *c2max, double *ertot, int totsegm, off_t offset1, double dnorm)
Isn't this in fact the updated version of the function (IL_interp_segments_new_2d)? The function IL_interp_segments_new_2d has the following, better behavior: The difference between this function and IL_interp_segments_2d() is making sure that additional points are taken from all directions, i.e. it finds equal number of points from neighboring segments in each of 8 neighborhoods.
Global IL_interp_segments_2d (struct interp_params *params, struct tree_info *info, struct multtree *tree, struct BM *bitmask, double zmin, double zmax, double *zminac, double *zmaxac, double *gmin, double *gmax, double *c1min, double *c1max, double *c2min, double *c2max, double *ertot, int totsegm, off_t offset1, double dnorm)
Isn't this in fact the updated version of the function (IL_interp_segments_new_2d)? The function IL_interp_segments_new_2d has the following, better behavior: The difference between this function and IL_interp_segments_2d() is making sure that additional points are taken from all directions, i.e. it finds equal number of points from neighboring segments in each of 8 neighborhoods.
File kdtree.h

Doxygen ignores comment for last parameter after );. The parameter description now goes to the end of function description.

Include formatting to function descriptions.

File legal_dbname.c
Are we as restrictive here as for vector names?
Global Map_info::n_site_att
To be removed?
Global Map_info::n_site_dbl
To be removed
Global Map_info::n_site_str
To be removed?
Global Map_info::site_att
To be removed?
Global N_calc_solute_transport_disptensor_2d (N_solute_transport_data2d *data)
Change the tensor calculation to a mor realistic algorithm
Global N_calc_solute_transport_disptensor_3d (N_solute_transport_data3d *data)
Change the tensor calculation to a mor realistic algorithm
Global PORT_DOUBLE
To be moved to gislib?
Global PORT_DOUBLE_MAX
To be moved to gislib?
Global print_256lookup (int *)
G_debug ?
Global print_256lookup (int *)
G_debug ?
Global print_frto (float(*)[4])
G_debug ?
Global print_frto (float(*)[4])
G_debug ?
Global print_realto (float *)
G_debug ?
Global print_realto (float *)
G_debug ?
Global print_surf_fields (geosurf *)
G_debug ?
Global print_surf_fields (geosurf *)
G_debug ?
Global print_view_fields (geoview *)
G_debug ?
Global print_view_fields (geoview *)
G_debug ?
File radii.c
Suggestion: all "lon"s in the file "radii.c" should read as "lat"
Global Rast3d_remove_color (const char *)
Is primary and/or secondary color file still valid for 7?
Global Rast3d_remove_color (const char *)
Is primary and/or secondary color file still valid for 7?
Global Rast_add_modular_color_rule (const void *, int, int, int, const void *, int, int, int, struct Colors *, RASTER_MAP_TYPE)
Question: shouldn't this function call G_add_modular_<data_type>_raster_color_rule() instead?
Global Rast_add_modular_color_rule (const void *, int, int, int, const void *, int, int, int, struct Colors *, RASTER_MAP_TYPE)
Question: shouldn't this function call G_add_modular_<data_type>_raster_color_rule() instead?
Global Rast_free_cats (struct Categories *)
To be removed, replaced by Rast_free_cats().
Global Rast_free_cats (struct Categories *)
To be removed, replaced by Rast_free_cats().
Global Rast_get_cats_title (const struct Categories *)
Remove from GIS Library, replace by Rast_get_c_cats_title().
Global Rast_get_cats_title (const struct Categories *)
Remove from GIS Library, replace by Rast_get_c_cats_title().
Global Rast_init_cats (const char *, struct Categories *)
Eliminate pcats->num. Num has no meaning in new Categories structure and only stores (int) largets data value for backwards compatibility.
Global Rast_init_cats (const char *, struct Categories *)
Eliminate pcats->num. Num has no meaning in new Categories structure and only stores (int) largets data value for backwards compatibility.
Global Rast_read_vector_cats (const char *, const char *, struct Categories *)
: To be moved to the vector library
Global Rast_read_vector_cats (const char *, const char *, struct Categories *)
: To be moved to the vector library
Global Rast_set_cats_title (const char *, struct Categories *)
To be removed, replaced by Rast_set_cats_title().
Global Rast_set_cats_title (const char *, struct Categories *)
To be removed, replaced by Rast_set_cats_title().
Global Rast_write_cats (const char *, struct Categories *)
To be removed, replaced by Rast_write_cats().
Global Rast_write_cats (const char *, struct Categories *)
To be removed, replaced by Rast_write_cats().
Global Rast_write_vector_cats (const char *, struct Categories *)
Move to the vector library.
Global Rast_write_vector_cats (const char *, struct Categories *)
Move to the vector library.
File read_pg.c

Currently only points, linestrings and polygons are supported, implement also other types

Support multigeometries

PostGIS Topology - fix category handling (read categories from feature table)

Class recycle
Implement it
File ret_codes.c
Are we as restrictive here as for vector names?
File simple_features.c
  • Vect_sfa_line_is_simple()
  • Vect_sfa_line_srid()
  • Vect_sfa_line_envelope()
  • Vect_sfa_line_asbinary()
  • Vect_sfa_line_is_empty()
  • Vect_sfa_line_is_3d()
  • Vect_sfa_line_is_measured()
  • Vect_sfa_line_boundary()
File snprintf.c
if needed, implement alternative versions for portability. potential code source:
File strings.c
merge interesting functions from ../datetime/scan.c here
Global V1_rewrite_line_pg (struct Map_info *Map, off_t offset, int type, const struct line_pnts *points, const struct line_cats *cats)
Use UPDATE statement ?
Global V1_rewrite_line_pg (struct Map_info *Map, off_t offset, int type, const struct line_pnts *points, const struct line_cats *cats)
Use UPDATE statement ?
Global V2_delete_line_sfa (struct Map_info *Map, off_t line)
Update fidx
Global V2_delete_line_sfa (struct Map_info *Map, off_t line)
Update fidx
Global V2_rewrite_line_pg (struct Map_info *Map, off_t line, int type, const struct line_pnts *points, const struct line_cats *cats)

Handle also categories

Store original geometry in tmp table for restore

Global V2_rewrite_line_pg (struct Map_info *Map, off_t line, int type, const struct line_pnts *points, const struct line_cats *cats)

Handle also categories

Store original geometry in tmp table for restore

Global var_signature (IClass_statistics *statistics, int band1, int band2)
verify the computation
Global Vect_open_tmp_old (struct Map_info *, const char *, const char *)
Create new vector map if doesn't exist.
Global Vect_open_tmp_old (struct Map_info *, const char *, const char *)
Create new vector map if doesn't exist.
Global Vect_open_tmp_update (struct Map_info *, const char *, const char *)
Create new vector map if doesn't exist.
Global Vect_open_tmp_update (struct Map_info *, const char *, const char *)
Create new vector map if doesn't exist.
Global Vect_set_date (struct Map_info *, const char *)
This should be coupled to DateTime functions to support time series
Global Vect_set_date (struct Map_info *, const char *)
This should be coupled to DateTime functions to support time series
File vector/Vlib/graph.c
Vect_graph_free ( dglGraph_s *graph )
Global Vedit_add_vertex (struct Map_info *Map, struct ilist *List, struct line_pnts *coord, double thresh)
3D
Global Vedit_add_vertex (struct Map_info *Map, struct ilist *List, struct line_pnts *coord, double thresh)
3D
Global Vedit_get_min_distance (struct line_pnts *, struct line_pnts *, int, int *)
LL projection
Global Vedit_get_min_distance (struct line_pnts *, struct line_pnts *, int, int *)
LL projection
Global Vedit_remove_vertex (struct Map_info *Map, struct ilist *List, struct line_pnts *coord, double thresh)
3D
Global Vedit_remove_vertex (struct Map_info *Map, struct ilist *List, struct line_pnts *coord, double thresh)
3D
File write_ogr.c
How to deal with OGRNullFID
File write_pg.c

PostGIS version of V2__delete_area_cats_from_cidx_nat()

function to delete corresponding entry in fidx

PostGIS version of V2__add_area_cats_to_cidx_nat

File write_sfa.c

SFA version of V2__delete_area_cats_from_cidx_nat()

function to delete corresponding entry in fidx

SFA version of V2__add_area_cats_to_cidx_nat

SFA version of V2__add_line_to_topo_nat