19#include <grass/ogsf.h>
21#define FIRST_SITE_ID 21720
23static geosite *Site_top =
NULL;
37 G_debug(5,
"gp_get_site(%d)",
id);
39 for (gp = Site_top; gp; gp = gp->next) {
40 if (gp->gsite_id ==
id) {
60 G_debug(5,
"gp_get_prev_site(%d)",
id);
62 for (pp = Site_top; pp; pp = pp->next) {
63 if (pp->gsite_id ==
id - 1) {
81 for (i = 0, gp = Site_top; gp; gp = gp->next, i++)
84 G_debug(5,
"gp_num_sites(): n=%d", i);
105 for (lp = Site_top; lp->next; lp = lp->next)
108 G_debug(5,
" last site id: %d", lp->gsite_id);
123 np = (geosite *)G_malloc(
sizeof(geosite));
127 G_zero(np,
sizeof(geosite));
132 np->gsite_id = lp->gsite_id + 1;
138 np->style = (gvstyle *)G_malloc(
sizeof(gvstyle));
141 G_zero(np->style,
sizeof(gvstyle));
142 np->hstyle = (gvstyle *)G_malloc(
sizeof(gvstyle));
145 G_zero(np->hstyle,
sizeof(gvstyle));
147 G_debug(5,
"gp_get_new_site id=%d", np->gsite_id);
162 for (gp = Site_top; gp; gp = gp->next) {
164 for (i = 0; i < gp->n_surfs; i++) {
165 if (gp->drape_surf_id[i]) {
167 for (j = i; j < gp->n_surfs - 1; j++) {
168 gp->drape_surf_id[j] = gp->drape_surf_id[j + 1];
171 gp->n_surfs = gp->n_surfs - 1;
196 G_debug(5,
"gp_set_defaults() id=%d", gp->gsite_id);
200 gp->style->color = 0xF0F0F0;
201 gp->style->size = dim / 100.;
202 gp->style->width = 1;
203 gp->style->symbol = ST_X;
204 gp->hstyle->color = 0xFF0000;
205 gp->hstyle->size = dim / 150.;
206 gp->hstyle->symbol = ST_X;
266 G_debug(5,
"gp_free_site(id=%d)", fp->gsite_id);
269 if (fp == Site_top) {
270 if (Site_top->next) {
282 for (gp = Site_top; gp && !found; gp = gp->next) {
285 if (gp->next == fp) {
314 G_free((
void *)fp->filename);
323 for (gpt = fp->points; gpt;) {
339 G_free(fp->tstyle->color_column);
340 G_free(fp->tstyle->symbol_column);
341 G_free(fp->tstyle->size_column);
342 G_free(fp->tstyle->width_column);
359 for (i = 0; i < nsurfs && i < MAX_SURFS; i++) {
360 gp->drape_surf_id[i] = hsurfs[i];
void G_free(void *buf)
Free allocated memory.
int G_debug(int level, const char *msg,...)
Print debugging message.
geosite * gp_get_last_site(void)
Get last point set.
void gp_delete_site(int id)
Delete point set and remove from list.
geosite * gp_get_site(int id)
Get geosite struct.
int gp_free_site(geosite *fp)
Free allocated geosite struct.
void gp_set_drapesurfs(geosite *gp, int hsurfs[], int nsurfs)
Set drape surfaces.
void gp_free_sitemem(geosite *fp)
Free geosite (lower level)
geosite * gp_get_prev_site(int id)
Get previous geosite struct from list.
int gp_init_site(geosite *gp)
Initialize geosite struct.
geosite * gp_get_new_site(void)
Create new geosite instance and add it to list.
int gp_set_defaults(geosite *gp)
Set default value for geosite struct.
int gp_num_sites(void)
Get number of loaded point sets.
void gp_update_drapesurfs(void)
Update drape surfaces.
int GS_get_longdim(float *dim)
Get largest dimension.
geosurf * gs_get_surf(int id)
Get geosurf struct.
void G_zero(void *buf, int i)
Zero out a buffer, buf, of length i.