18 #include <grass/ogsf.h>
21 #define FIRST_VECT_ID 20656
23 static geovect *Vect_top =
NULL;
37 G_debug(5,
"gv_get_vect() id=%d",
id);
39 for (gv = Vect_top; gv; gv = gv->next) {
40 if (gv->gvect_id ==
id) {
60 G_debug(5,
"gv_get_prev_vect(): id=%d",
id);
62 for (pv = Vect_top; pv; pv = pv->next) {
63 if (pv->gvect_id ==
id - 1) {
81 for (i = 0, gv = Vect_top; gv; gv = gv->next, i++) ;
83 G_debug(5,
"gv_num_vects(): num=%d", i);
102 for (lv = Vect_top; lv->next; lv = lv->next) ;
104 G_debug(5,
"gv_get_last_vect(): id=%d", lv->gvect_id);
119 nv = (geovect *) G_malloc(
sizeof(geovect));
124 G_zero(nv,
sizeof(geovect));
128 nv->gvect_id = lv->gvect_id + 1;
135 nv->style = (gvstyle *) G_malloc(
sizeof(gvstyle));
136 if (
NULL == nv->style)
138 G_zero(nv->style, sizeof (gvstyle));
139 nv->hstyle = (gvstyle *) G_malloc(
sizeof(gvstyle));
140 if (
NULL == nv->hstyle)
142 G_zero(nv->hstyle, sizeof (gvstyle));
144 G_debug(5,
"gv_get_new_vect() id=%d", nv->gvect_id);
159 for (gv = Vect_top; gv; gv = gv->next) {
161 for (i = 0; i < gv->n_surfs; i++) {
162 if (gv->drape_surf_id[i]) {
164 for (j = i; j < gv->n_surfs - 1; j++) {
165 gv->drape_surf_id[j] = gv->drape_surf_id[j + 1];
168 gv->n_surfs = gv->n_surfs - 1;
191 G_debug(5,
"gv_set_defaults() id=%d", gv->gvect_id);
194 gv->n_lines = gv->n_surfs = gv->use_mem = 0;
195 gv->x_trans = gv->y_trans = gv->z_trans = 0.0;
197 gv->fastlines =
NULL;
199 gv->style->color = 0xF0F0F0;
200 gv->style->width = 1;
201 gv->style->next =
NULL;
202 gv->hstyle->color = 0xFF0000;
203 gv->hstyle->width = 2;
204 gv->hstyle->next =
NULL;
208 for (i = 0; i < MAX_SURFS; i++) {
209 gv->drape_surf_id[i] = 0;
229 G_debug(5,
"gv_init_vect() id=%d", gv->gvect_id);
243 G_debug(5,
"gv_delete_vect(): id=%d",
id);
268 if (fv == Vect_top) {
269 if (Vect_top->next) {
281 for (gv = Vect_top; gv && !found; gv = gv->next) {
284 if (gv->next == fv) {
293 G_debug(5,
"gv_free_vect(): id=%d", fv->gvect_id);
312 geoline *gln, *tmpln;
314 G_free((
void *)fv->filename);
322 for (gln = fv->lines; gln;) {
323 if (gln->dims == 2) {
328 if (gln->dims == 3) {
345 G_free(fv->tstyle->color_column);
346 G_free(fv->tstyle->symbol_column);
347 G_free(fv->tstyle->size_column);
348 G_free(fv->tstyle->width_column);
365 for (i = 0; i < nsurfs && i < MAX_SURFS; i++) {
366 gv->drape_surf_id[i] = hsurfs[i];