~ubuntu-branches/ubuntu/vivid/grass/vivid-proposed

« back to all changes in this revision

Viewing changes to visualization/nviz/src/site_highlight_commands.c

  • Committer: Package Import Robot
  • Author(s): Bas Couwenberg
  • Date: 2015-02-20 23:12:08 UTC
  • mfrom: (8.2.6 experimental)
  • Revision ID: package-import@ubuntu.com-20150220231208-1u6qvqm84v430b10
Tags: 7.0.0-1~exp1
* New upstream release.
* Update python-ctypes-ternary.patch to use if/else instead of and/or.
* Drop check4dev patch, rely on upstream check.
* Add build dependency on libpq-dev to grass-dev for libpq-fe.h.
* Drop patches applied upstream, refresh remaining patches.
* Update symlinks for images switched from jpg to png.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
/***************************************************************
3
 
 *
4
 
 * MODULE:       site_highlight_commands.c 1.0
5
 
 *
6
 
 * AUTHOR(S):    ACS - Massimo Cuomo - m.cuomo at acsys.it
7
 
 *
8
 
 * PURPOSE: Tcl commands created:
9
 
 *
10
 
 *    Sites depending commands
11
 
 *
12
 
 *    Nsite_highlight "what" "site_id" "cat" ["value"]
13
 
 *       - highlights a specific geopoint -
14
 
 *      what = color/size/marker/default
15
 
 *            default: panel highlight type and values are used instead of "value"
16
 
 *      site_id = (string range map_name 5 end)
17
 
 *      cat = DB category associated to the specific geopoint
18
 
 *      [value] (optional) = #rrggbb for color
19
 
 *                           float for size
20
 
 *                           int for marker
21
 
 *              when omitted default value is used
22
 
 *
23
 
 *    Nsite_highlight_list "what" "site_id" "catlist" ["value"]
24
 
 *       - highlights a list of geopoints -
25
 
 *      what = color/size/marker/default
26
 
 *            default: panel highlight type and values are used instead of "value"
27
 
 *      site_id = (string range map_name 5 end)
28
 
 *      catlist = list of DB category associated to the each geopoint
29
 
 *      [value] (optional) = #rrggbb for color
30
 
 *                           float for size
31
 
 *                           int for marker
32
 
 *              when omitted default value is used
33
 
 *
34
 
 *
35
 
 *    Nsite_unhighlight "what" "site_id" "cat"
36
 
 *       - unhighlights a specific geopoint -
37
 
 *      what = color/size/marker
38
 
 *      site_id = (string range map_name 5 end)
39
 
 *      cat = DB category associated to the specific geopoint
40
 
 *
41
 
 *    Nsite_unhighlight_list "what" "site_id" "catlist"
42
 
 *       - unhighlights a list of geopoints -
43
 
 *      what = color/size/marker/default
44
 
 *            default: panel highlight type and values are used instead of "value"
45
 
 *      site_id = (string range map_name 5 end)
46
 
 *      catlist = list of DB category associated to the each geopoint
47
 
 *
48
 
 *    Nsite_unhighlight_all "what" "site_id"
49
 
 *       - unhighlights all site geopoints -
50
 
 *      what = color/size/marker/all
51
 
 *             all: unhighlights color, size and marker
52
 
 *      site_id = (string range map_name 5 end)
53
 
 *
54
 
 *
55
 
 *    Sites independent commands (for panel_highlight.tcl)
56
 
 *
57
 
 *    Nsite_highlight_set_default "what" "value"
58
 
 *       - sets highlight default type -
59
 
 *      what = color/size/marker
60
 
 *      value = 1/0 (1: turns ON / 0 turns OFF color/size/marker highlight)
61
 
 *
62
 
 *    Nsite_highlight_get_default "what"
63
 
 *       - returns highlight default type -
64
 
 *      what = color/size/marker
65
 
 *
66
 
 *    Nsite_highlight_set_default_value "what" "value"
67
 
 *       - sets highlight default value -
68
 
 *      what = color/size/marker
69
 
 *      value = color/size/marker value to set
70
 
 *
71
 
 *    Nsite_highlight_get_default_value "what"
72
 
 *       - returns highlight default value -
73
 
 *      what = color/size/marker
74
 
 *
75
 
 *
76
 
 * REQUIREMENTS: external files with needed modifications:
77
 
 *
78
 
 *   - visualization/src
79
 
 *       visualization/nviz/src/Makefile
80
 
 *       visualization/nviz/src/nviz_init.c
81
 
 *
82
 
 *   - lib/ogsf
83
 
 *       lib/ogsf/gstypes.h
84
 
 *       lib/ogsf/Gp3.c
85
 
 *       lib/ogsf/gpd.c
86
 
 *
87
 
 *   See following "README" section for details
88
 
 *
89
 
 *
90
 
 * COPYRIGHT:    (C) 2005 by the ACS / GRASS Development Team
91
 
 *
92
 
 *               This program is free software under the
93
 
 *               GNU General Public License (>=v2).
94
 
 *               Read the file COPYING that comes with GRASS
95
 
 *               for details.
96
 
 *
97
 
 **************************************************************/
98
 
 
99
 
#if 0
100
 
******************************************************************************* ********************site_highlight "README" ********************************** *******************************************************************************Files involved:
101
 
 
102
 
-src(mod) visualization / nviz / src / Makefile
103
 
    (new) visualization / nviz / src / site_highlight_commands.c
104
 
    (mod) visualization / nviz / src / nviz_init.c
105
 
    - ogsf
106
 
    (mod) lib / ogsf / gstypes.h
107
 
    (mod) lib / ogsf / Gp3.c
108
 
    (mod) lib / ogsf / gpd.c
109
 
    - script
110
 
    (new) visualization / nviz / scripts / panel_highlight.tcl
111
 
    - src
112
 
    (mod) visualization / nviz / src / Makefile
113
 
    added compilation for site_highlight_commands
114
 
  .c(new) visualization / nviz / src / site_highlight_commands.c this file: creates Tcl commands(mod) visualization / nviz / src / nviz_init.c added call to function:site_highlight_init_tcl(interp,
115
 
                            &data);
116
 
     to intialize all the Tcl commands -
117
 
         ogsf(mod) lib / ogsf /
118
 
    gstypes.h added in struct g_point:... int highlight_color;
119
 
     int highlight_size;
120
 
     int highlight_marker;
121
 
 
122
 
     TRUE / FALSE flags to enable / disable proper highlight
123
 
         int highlight_color_value;
124
 
     float highlight_size_value;
125
 
     int highlight_marker_value;
126
 
 
127
 
...proper highlight values used for each
128
 
    geopoint(mod) lib / ogsf / Gp3.c added line:gpt->highlight_color =
129
 
        gpt->highlight_size = gpt->highlight_marker = FALSE;
130
 
in order to get the proper initializations(mod) lib / ogsf /
131
 
    gpd.c added:if (gpt->highlight_color)
132
 
      color = gpt->highlight_color_value;
133
 
 
134
 
if (gpt->highlight_size)
135
 
    marker = gpt->highlight_marker_value;
136
 
if (gpt->highlight_marker)
137
 
    size *= gpt->highlight_size_value;
138
 
 
139
 
     in function "gpd_obj_site_attr"(that replaces function "gpd_obj")
140
 
 
141
 
 
142
 
 
143
 
- script
144
 
    (new) visualization / nviz / scripts / panel_highlight.tcl
145
 
    to panelIndex file add:"highlight"
146
 
    to tclIndex file add:set auto_index(mkhighlightPanel)
147
 
    "source $dir/panel_highlight.tcl"
148
 
    *******************************************************************************
149
 
    ********************end site_highlight "README"
150
 
    ******************************
151
 
    *******************************************************************************
152
 
#endif
153
 
#include <stdio.h>
154
 
#include <string.h>
155
 
#include <stdlib.h>
156
 
#include "interface.h"
157
 
#define SITE_HIGHLIGHT_ALL              0
158
 
#define SITE_HIGHLIGHT_COLOR    1
159
 
#define SITE_HIGHLIGHT_SIZE             2
160
 
#define SITE_HIGHLIGHT_MARKER   3
161
 
     static int default_highlight_color_value = 0xffffff;       /* white */
162
 
     static float default_highlight_size_value = 1.2f;
163
 
     static int default_highlight_marker_value = 9;     /* ST_GYRO */
164
 
 
165
 
     static int default_highlight_color = 1;
166
 
     static int default_highlight_size = 0;
167
 
     static int default_highlight_marker = 0;
168
 
 
169
 
 
170
 
/* Color conversion function */
171
 
     int site_highlight_get_int_BBGGRR(char *rrggbb)
172
 
{
173
 
    /* rrggbb is in the form of #RRGGBB (first char is skipped) */
174
 
    char strbuf[16];
175
 
 
176
 
    memcpy(strbuf + 0, rrggbb + 5, 2);
177
 
    memcpy(strbuf + 2, rrggbb + 3, 2);
178
 
    memcpy(strbuf + 4, rrggbb + 1, 2);
179
 
    memset(strbuf + 6, 0, 1);
180
 
    return (strtol(strbuf, NULL, 16));
181
 
}
182
 
 
183
 
 
184
 
 
185
 
int Nsite_highlight_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
186
 
                        char **argv);
187
 
int Nsite_highlight_list_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
188
 
                             char **argv);
189
 
 
190
 
int Nsite_unhighlight_list_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
191
 
                               char **argv);
192
 
int Nsite_unhighlight_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
193
 
                          char **argv);
194
 
int Nsite_unhighlight_all_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
195
 
                              char **argv);
196
 
 
197
 
 
198
 
int Nsite_highlight_set_default_cmd(Nv_data * data, Tcl_Interp * interp,
199
 
                                    int argc, char **argv);
200
 
int Nsite_highlight_get_default_cmd(Nv_data * data, Tcl_Interp * interp,
201
 
                                    int argc, char **argv);
202
 
int Nsite_highlight_set_default_value_cmd(Nv_data * data, Tcl_Interp * interp,
203
 
                                          int argc, char **argv);
204
 
int Nsite_highlight_get_default_value_cmd(Nv_data * data, Tcl_Interp * interp,
205
 
                                          int argc, char **argv);
206
 
 
207
 
 
208
 
/* called by nviz_init.c */
209
 
 
210
 
void site_highlight_init_tcl(Tcl_Interp * interp, Nv_data * data)
211
 
{
212
 
    Tcl_CreateCommand(interp, "Nsite_highlight",
213
 
                      (Tcl_CmdProc *) Nsite_highlight_cmd, data, NULL);
214
 
    Tcl_CreateCommand(interp, "Nsite_unhighlight",
215
 
                      (Tcl_CmdProc *) Nsite_unhighlight_cmd, data, NULL);
216
 
 
217
 
    Tcl_CreateCommand(interp, "Nsite_highlight_list",
218
 
                      (Tcl_CmdProc *) Nsite_highlight_list_cmd, data, NULL);
219
 
    Tcl_CreateCommand(interp, "Nsite_unhighlight_list",
220
 
                      (Tcl_CmdProc *) Nsite_unhighlight_list_cmd, data, NULL);
221
 
 
222
 
    Tcl_CreateCommand(interp, "Nsite_unhighlight_all",
223
 
                      (Tcl_CmdProc *) Nsite_unhighlight_all_cmd, data, NULL);
224
 
 
225
 
    Tcl_CreateCommand(interp, "Nsite_highlight_set_default",
226
 
                      (Tcl_CmdProc *) Nsite_highlight_set_default_cmd, data,
227
 
                      NULL);
228
 
    Tcl_CreateCommand(interp, "Nsite_highlight_get_default",
229
 
                      (Tcl_CmdProc *) Nsite_highlight_get_default_cmd, data,
230
 
                      NULL);
231
 
    Tcl_CreateCommand(interp, "Nsite_highlight_set_default_value",
232
 
                      (Tcl_CmdProc *) Nsite_highlight_set_default_value_cmd,
233
 
                      data, NULL);
234
 
    Tcl_CreateCommand(interp, "Nsite_highlight_get_default_value",
235
 
                      (Tcl_CmdProc *) Nsite_highlight_get_default_value_cmd,
236
 
                      data, NULL);
237
 
}
238
 
 
239
 
 
240
 
/*not used for now */
241
 
geosite *site_highlight_get_geosite(char *name)
242
 
{
243
 
    geosite *gp;
244
 
    int i, n, *id;
245
 
 
246
 
    id = GP_get_site_list(&n);
247
 
    for (i = 0; i < n; i++) {
248
 
        gp = gp_get_site(id[i]);
249
 
        if (!strcmp(gp->filename, name)) {
250
 
            free(id);
251
 
            return gp;
252
 
        }
253
 
    }
254
 
    free(id);
255
 
    return NULL;
256
 
}
257
 
 
258
 
 
259
 
geopoint *site_highlight_get_geopoint(geosite * gp, int cat)
260
 
{
261
 
    geopoint *gpt;
262
 
 
263
 
    for (gpt = gp->points; gpt; gpt = gpt->next) {
264
 
        if (gpt->cat == cat)
265
 
            return gpt;
266
 
    }
267
 
    return NULL;
268
 
}
269
 
 
270
 
 
271
 
int site_highlight_loop(geosite * gp, const char **argvPtr, int argcPtr,
272
 
                        int what, int flag, float value)
273
 
{
274
 
    geopoint *gpt;
275
 
    int i;
276
 
 
277
 
    switch (what) {
278
 
    case SITE_HIGHLIGHT_SIZE:
279
 
        for (i = 0; i < argcPtr; i++) {
280
 
            if ((gpt =
281
 
                 site_highlight_get_geopoint(gp, atoi(argvPtr[i]))) == NULL)
282
 
                return (0);
283
 
            gpt->highlight_size = flag;
284
 
            gpt->highlight_size_value = value;
285
 
        }
286
 
        break;
287
 
    case SITE_HIGHLIGHT_COLOR:
288
 
        for (i = 0; i < argcPtr; i++) {
289
 
            if ((gpt =
290
 
                 site_highlight_get_geopoint(gp, atoi(argvPtr[i]))) == NULL)
291
 
                return (0);
292
 
            gpt->highlight_color = flag;
293
 
            gpt->highlight_color_value = (int)value;
294
 
        }
295
 
        break;
296
 
    case SITE_HIGHLIGHT_MARKER:
297
 
        for (i = 0; i < argcPtr; i++) {
298
 
            if ((gpt =
299
 
                 site_highlight_get_geopoint(gp, atoi(argvPtr[i]))) == NULL)
300
 
                return (0);
301
 
            gpt->highlight_marker = flag;
302
 
            gpt->highlight_marker_value = (int)value;
303
 
        }
304
 
        break;
305
 
    case SITE_HIGHLIGHT_ALL:
306
 
        for (i = 0; i < argcPtr; i++) {
307
 
            if ((gpt =
308
 
                 site_highlight_get_geopoint(gp, atoi(argvPtr[i]))) == NULL)
309
 
                return (0);
310
 
            gpt->highlight_size = flag;
311
 
            gpt->highlight_color = flag;
312
 
            gpt->highlight_marker = flag;
313
 
 
314
 
            gpt->highlight_size_value = value;
315
 
            gpt->highlight_color_value = (int)value;
316
 
            gpt->highlight_marker_value = (int)value;
317
 
        }
318
 
        break;
319
 
    }
320
 
    return (1);
321
 
}
322
 
 
323
 
 
324
 
/* Tcl Commands */
325
 
 
326
 
int Nsite_highlight_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
327
 
                        char **argv)
328
 
{
329
 
    /* argv[1] = what (color/size/marker) / argv[2] = id / argv[3] = category / [argv[4] = color] */
330
 
    geosite *gp;
331
 
    geopoint *gpt;
332
 
 
333
 
    if (argc < 4)
334
 
        return (TCL_ERROR);
335
 
    if ((gp = gp_get_site(atoi(argv[2]))) == NULL)
336
 
        return (TCL_ERROR);
337
 
    if ((gpt = site_highlight_get_geopoint(gp, atoi(argv[3]))) == NULL)
338
 
        return (TCL_ERROR);
339
 
 
340
 
    if (!strcmp(argv[1], "size")) {
341
 
        if (argc == 5)
342
 
            gpt->highlight_size_value = atof(argv[4]);
343
 
        else
344
 
            gpt->highlight_size_value = default_highlight_size_value;
345
 
        gpt->highlight_size = TRUE;
346
 
    }
347
 
    else if (!strcmp(argv[1], "color")) {
348
 
        if (argc == 5)
349
 
            gpt->highlight_color_value =
350
 
                site_highlight_get_int_BBGGRR(argv[4]);
351
 
        else
352
 
            gpt->highlight_color_value = default_highlight_color_value;
353
 
        gpt->highlight_color = TRUE;
354
 
    }
355
 
    else if (!strcmp(argv[1], "marker")) {
356
 
        if (argc == 5)
357
 
            gpt->highlight_marker_value = atoi(argv[4]);
358
 
        else
359
 
            gpt->highlight_marker_value = default_highlight_marker_value;
360
 
        gpt->highlight_marker = TRUE;
361
 
    }
362
 
    else if (!strcmp(argv[1], "default")) {
363
 
        if (default_highlight_size != 0) {
364
 
            gpt->highlight_size_value = default_highlight_size_value;
365
 
            gpt->highlight_size = TRUE;
366
 
        }
367
 
        if (default_highlight_color != 0) {
368
 
            gpt->highlight_color_value = default_highlight_color_value;
369
 
            gpt->highlight_color = TRUE;
370
 
        }
371
 
        if (default_highlight_marker != 0) {
372
 
            gpt->highlight_marker_value = default_highlight_marker_value;
373
 
            gpt->highlight_marker = TRUE;
374
 
        }
375
 
    }
376
 
    else
377
 
        return (TCL_ERROR);
378
 
 
379
 
    return (TCL_OK);
380
 
}
381
 
 
382
 
 
383
 
int Nsite_highlight_list_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
384
 
                             char **argv)
385
 
{
386
 
    /* argv[1] = what (color/size/marker) / argv[2] = id / argv[3] = list of categories / [argv[4] = color] */
387
 
    int argcPtr;
388
 
    const char **argvPtr;
389
 
    float value;
390
 
    geosite *gp;
391
 
 
392
 
    if (argc < 4)
393
 
        return (TCL_ERROR);
394
 
    if ((gp = gp_get_site(atoi(argv[2]))) == NULL)
395
 
        return (TCL_ERROR);
396
 
 
397
 
    if (TCL_OK != Tcl_SplitList(interp, argv[3], &argcPtr, &argvPtr))
398
 
        return (TCL_ERROR);
399
 
 
400
 
 
401
 
    if (!strcmp(argv[1], "size")) {
402
 
        if (argc == 5)
403
 
            value = atof(argv[4]);
404
 
        else
405
 
            value = default_highlight_size_value;
406
 
 
407
 
        if (site_highlight_loop
408
 
            (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_SIZE, TRUE, value) == 0)
409
 
            goto error;
410
 
    }
411
 
    else if (!strcmp(argv[1], "color")) {
412
 
        if (argc == 5)
413
 
            value = (float)site_highlight_get_int_BBGGRR(argv[4]);
414
 
        else
415
 
            value = (float)default_highlight_color_value;
416
 
 
417
 
        if (site_highlight_loop
418
 
            (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_COLOR, TRUE, value) == 0)
419
 
            goto error;
420
 
    }
421
 
    else if (!strcmp(argv[1], "marker")) {
422
 
        if (argc == 5)
423
 
            value = (float)atoi(argv[4]);
424
 
        else
425
 
            value = (float)default_highlight_marker_value;
426
 
 
427
 
        if (site_highlight_loop
428
 
            (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_MARKER, TRUE, value) == 0)
429
 
            goto error;
430
 
    }
431
 
    else if (!strcmp(argv[1], "default")) {
432
 
        if (default_highlight_size != 0) {
433
 
            value = default_highlight_size_value;
434
 
            if (site_highlight_loop
435
 
                (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_SIZE, TRUE, value) == 0)
436
 
                goto error;
437
 
        }
438
 
        if (default_highlight_color != 0) {
439
 
            value = (float)default_highlight_color_value;
440
 
            if (site_highlight_loop
441
 
                (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_COLOR, TRUE,
442
 
                 value) == 0)
443
 
                goto error;
444
 
        }
445
 
        if (default_highlight_marker != 0) {
446
 
            value = (float)default_highlight_marker_value;
447
 
            if (site_highlight_loop
448
 
                (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_MARKER, TRUE,
449
 
                 value) == 0)
450
 
                goto error;
451
 
        }
452
 
    }
453
 
    else
454
 
        goto error;
455
 
 
456
 
    Tcl_Free((char *)argvPtr);
457
 
    return (TCL_OK);
458
 
 
459
 
  error:
460
 
    if (argvPtr)
461
 
        Tcl_Free((char *)argvPtr);
462
 
    return (TCL_ERROR);
463
 
}
464
 
 
465
 
int Nsite_unhighlight_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
466
 
                          char **argv)
467
 
{
468
 
    /* argv[1] = what (color/size/marker/all) / argv[2] = id / argv[3] = category */
469
 
    geosite *gp;
470
 
    geopoint *gpt;
471
 
 
472
 
    if (argc < 4)
473
 
        return (TCL_ERROR);
474
 
    if ((gp = gp_get_site(atoi(argv[2]))) == NULL)
475
 
        return (TCL_ERROR);
476
 
    if ((gpt = site_highlight_get_geopoint(gp, atoi(argv[3]))) == NULL)
477
 
        return (TCL_ERROR);
478
 
 
479
 
    if (!strcmp(argv[1], "size"))
480
 
        gpt->highlight_size = FALSE;
481
 
    else if (!strcmp(argv[1], "color"))
482
 
        gpt->highlight_color = FALSE;
483
 
    else if (!strcmp(argv[1], "marker"))
484
 
        gpt->highlight_marker = FALSE;
485
 
    else if (!strcmp(argv[1], "all")) {
486
 
        gpt->highlight_color = FALSE;
487
 
        gpt->highlight_size = FALSE;
488
 
        gpt->highlight_marker = FALSE;
489
 
    }
490
 
    else
491
 
        return (TCL_ERROR);
492
 
 
493
 
    return (TCL_OK);
494
 
}
495
 
 
496
 
int Nsite_unhighlight_list_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
497
 
                               char **argv)
498
 
{
499
 
    /* argv[1] = what (color/size/marker) / argv[2] = id / argv[3] = list of categories / [argv[4] = color] */
500
 
    int argcPtr;
501
 
    const char **argvPtr;
502
 
    geosite *gp;
503
 
 
504
 
    if (argc < 4)
505
 
        return (TCL_ERROR);
506
 
    if ((gp = gp_get_site(atoi(argv[2]))) == NULL)
507
 
        return (TCL_ERROR);
508
 
 
509
 
    if (TCL_OK != Tcl_SplitList(interp, argv[3], &argcPtr, &argvPtr))
510
 
        return (TCL_ERROR);
511
 
 
512
 
 
513
 
    if (!strcmp(argv[1], "size")) {
514
 
        if (site_highlight_loop
515
 
            (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_SIZE, FALSE, 0.0) == 0)
516
 
            goto error;
517
 
    }
518
 
    else if (!strcmp(argv[1], "color")) {
519
 
        if (site_highlight_loop
520
 
            (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_COLOR, FALSE, 0.0) == 0)
521
 
            goto error;
522
 
    }
523
 
    else if (!strcmp(argv[1], "marker")) {
524
 
        if (site_highlight_loop
525
 
            (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_MARKER, FALSE, 0.0) == 0)
526
 
            goto error;
527
 
    }
528
 
    else if (!strcmp(argv[1], "all")) {
529
 
        if (site_highlight_loop
530
 
            (gp, argvPtr, argcPtr, SITE_HIGHLIGHT_ALL, FALSE, 0.0) == 0)
531
 
            goto error;
532
 
    }
533
 
    else
534
 
        goto error;
535
 
 
536
 
    Tcl_Free((char *)argvPtr);
537
 
    return (TCL_OK);
538
 
 
539
 
  error:
540
 
    if (argvPtr)
541
 
        Tcl_Free((char *)argvPtr);
542
 
    return (TCL_ERROR);
543
 
}
544
 
 
545
 
 
546
 
int Nsite_unhighlight_all_cmd(Nv_data * data, Tcl_Interp * interp, int argc,
547
 
                              char **argv)
548
 
{
549
 
    /* argv[1] = what (color/size/marker/all) / argv[2] = id */
550
 
    geosite *gp;
551
 
    geopoint *gpt;
552
 
 
553
 
    if (argc < 3)
554
 
        return (TCL_ERROR);
555
 
    if ((gp = gp_get_site(atoi(argv[2]))) == NULL)
556
 
        return (TCL_ERROR);
557
 
 
558
 
    if (!strcmp(argv[1], "size")) {
559
 
        for (gpt = gp->points; gpt; gpt = gpt->next)
560
 
            gpt->highlight_size = FALSE;
561
 
    }
562
 
    else if (!strcmp(argv[1], "color")) {
563
 
        for (gpt = gp->points; gpt; gpt = gpt->next)
564
 
            gpt->highlight_color = FALSE;
565
 
    }
566
 
    else if (!strcmp(argv[1], "marker")) {
567
 
        for (gpt = gp->points; gpt; gpt = gpt->next)
568
 
            gpt->highlight_marker = FALSE;
569
 
    }
570
 
    else if (!strcmp(argv[1], "all")) {
571
 
        for (gpt = gp->points; gpt; gpt = gpt->next) {
572
 
            gpt->highlight_color = FALSE;
573
 
            gpt->highlight_size = FALSE;
574
 
            gpt->highlight_marker = FALSE;
575
 
        }
576
 
    }
577
 
    else
578
 
        return (TCL_ERROR);
579
 
 
580
 
    return (TCL_OK);
581
 
}
582
 
 
583
 
/*
584
 
   Commands for highlight panel, not depending from sites
585
 
 */
586
 
 
587
 
int Nsite_highlight_set_default_value_cmd(Nv_data * data, Tcl_Interp * interp,
588
 
                                          int argc, char **argv)
589
 
{
590
 
    /* argv[1] = what (color/size/marker) / argv[2] = value */
591
 
 
592
 
    if (argc < 3)
593
 
        return (TCL_ERROR);
594
 
 
595
 
    if (!strcmp(argv[1], "size")) {
596
 
        default_highlight_size_value = atof(argv[2]);
597
 
    }
598
 
    else if (!strcmp(argv[1], "color")) {
599
 
        default_highlight_color_value =
600
 
            site_highlight_get_int_BBGGRR(argv[2]);
601
 
    }
602
 
    else if (!strcmp(argv[1], "marker")) {
603
 
        default_highlight_marker_value = atoi(argv[2]);
604
 
    }
605
 
    else
606
 
        return (TCL_ERROR);
607
 
 
608
 
    return (TCL_OK);
609
 
}
610
 
 
611
 
int Nsite_highlight_get_default_value_cmd(Nv_data * data, Tcl_Interp * interp,
612
 
                                          int argc, char **argv)
613
 
{
614
 
    /* argv[1] = what (color/size/marker) */
615
 
    char buf[256];
616
 
 
617
 
    if (argc < 2)
618
 
        return (TCL_ERROR);
619
 
 
620
 
    if (!strcmp(argv[1], "size")) {
621
 
        sprintf(buf, "%.1f", default_highlight_size_value);
622
 
    }
623
 
    else if (!strcmp(argv[1], "color")) {
624
 
        sprintf(buf, "#%x", default_highlight_color_value);
625
 
    }
626
 
    else if (!strcmp(argv[1], "marker")) {
627
 
        sprintf(buf, "%d", default_highlight_marker_value);
628
 
    }
629
 
    else
630
 
        return (TCL_ERROR);
631
 
 
632
 
    Tcl_SetResult(interp, buf, TCL_VOLATILE);
633
 
    return (TCL_OK);
634
 
}
635
 
 
636
 
 
637
 
 
638
 
 
639
 
 
640
 
int Nsite_highlight_set_default_cmd(Nv_data * data, Tcl_Interp * interp,
641
 
                                    int argc, char **argv)
642
 
{
643
 
    /* argv[1] = what (color/size/marker) / argv[2] = value */
644
 
 
645
 
    if (argc < 3)
646
 
        return (TCL_ERROR);
647
 
 
648
 
    if (!strcmp(argv[1], "size")) {
649
 
        default_highlight_size = atoi(argv[2]);
650
 
    }
651
 
    else if (!strcmp(argv[1], "color")) {
652
 
        default_highlight_color = atoi(argv[2]);
653
 
    }
654
 
    else if (!strcmp(argv[1], "marker")) {
655
 
        default_highlight_marker = atoi(argv[2]);
656
 
    }
657
 
    else
658
 
        return (TCL_ERROR);
659
 
 
660
 
    return (TCL_OK);
661
 
}
662
 
 
663
 
int Nsite_highlight_get_default_cmd(Nv_data * data, Tcl_Interp * interp,
664
 
                                    int argc, char **argv)
665
 
{
666
 
    /* argv[1] = what (color/size/marker) */
667
 
    char buf[256];
668
 
 
669
 
    if (argc < 2)
670
 
        return (TCL_ERROR);
671
 
 
672
 
    if (!strcmp(argv[1], "size")) {
673
 
        sprintf(buf, "%d", default_highlight_size);
674
 
    }
675
 
    else if (!strcmp(argv[1], "color")) {
676
 
        sprintf(buf, "%d", default_highlight_color);
677
 
    }
678
 
    else if (!strcmp(argv[1], "marker")) {
679
 
        sprintf(buf, "%d", default_highlight_marker);
680
 
    }
681
 
    else
682
 
        return (TCL_ERROR);
683
 
 
684
 
    Tcl_SetResult(interp, buf, TCL_VOLATILE);
685
 
    return (TCL_OK);
686
 
}