123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- #include <stdlib.h>
- #include <grass/gis.h>
- #include <grass/dbmi.h>
- #include <grass/glocale.h>
- #include "local_proto.h"
- int option_to_display(const struct Option *opt)
- {
- int i, display;
-
- i = display = 0;
- while (opt->answers[i]) {
- switch (opt->answers[i][0]) {
- case 's':
- display |= DISP_SHAPE;
- break;
- case 'c':
- display |= DISP_CAT;
- break;
- case 'v':
- display |= DISP_VERT;
- break;
- case 't':
- display |= DISP_TOPO;
- break;
- case 'd':
- display |= DISP_DIR;
- break;
- case 'z':
- display |= DISP_ZCOOR;
- break;
- }
- i++;
- }
- return display;
- }
- void options_to_lattr(LATTR *lattr, const char *layer,
- const char *color, const char *bgcolor, const char *bcolor,
- int size, const char *font, const char *encoding,
- const char *xref, const char *yref)
- {
- int r, g, b;
-
- if (layer)
- lattr->field = atoi(layer);
- else
- lattr->field = 1;
- lattr->color.R = lattr->color.G = lattr->color.B = 255;
- if (G_str_to_color(color, &r, &g, &b)) {
- lattr->color.R = r;
- lattr->color.G = g;
- lattr->color.B = b;
- }
- lattr->has_bgcolor = 0;
- if (G_str_to_color(bgcolor, &r, &g, &b) == 1) {
- lattr->has_bgcolor = 1;
- lattr->bgcolor.R = r;
- lattr->bgcolor.G = g;
- lattr->bgcolor.B = b;
- }
- lattr->has_bcolor = 0;
- if (G_str_to_color(bcolor, &r, &g, &b) == 1) {
- lattr->has_bcolor = 1;
- lattr->bcolor.R = r;
- lattr->bcolor.G = g;
- lattr->bcolor.B = b;
- }
- lattr->size = size;
- lattr->font = font;
- lattr->enc = encoding;
- if (xref) {
- switch (xref[0]) {
- case 'l':
- lattr->xref = LLEFT;
- break;
- case 'c':
- lattr->xref = LCENTER;
- break;
- case 'r':
- lattr->xref = LRIGHT;
- break;
- }
- }
- else
- lattr->xref = LCENTER;
-
- if (yref) {
- switch (yref[0]) {
- case 't':
- lattr->yref = LTOP;
- break;
- case 'c':
- lattr->yref = LCENTER;
- break;
- case 'b':
- lattr->yref = LBOTTOM;
- break;
- }
- }
- else
- lattr->yref = LCENTER;
- }
- int option_to_color(struct color_rgb *color, const char *color_val)
- {
- int has_color, ret;
- int r, g, b;
-
- ret = G_str_to_color(color_val, &r, &g, &b);
- if (ret == 1) {
- has_color = 1;
- color->r = r;
- color->g = g;
- color->b = b;
- }
- else if (ret == 2) { /* none */
- has_color = 0;
- }
- else if (ret == 0) { /* error */
- G_fatal_error(_("Unknown color: '%s'"), color_val);
- }
-
- return has_color;
- }
- void option_to_where(struct Map_info *Map, struct cat_list *Clist,
- const char *where)
- {
- int ncat;
- int *cats;
- struct field_info *fi;
- dbDriver *driver;
- dbHandle handle;
-
- fi = Vect_get_field(Map, Clist->field);
- if (!fi)
- G_fatal_error(_("Database connection not defined"));
-
- driver = db_start_driver(fi->driver);
- if (!driver)
- G_fatal_error(_("Unable to start driver <%s>"), fi->driver);
-
- db_init_handle(&handle);
- db_set_handle(&handle, fi->database, NULL);
- if (db_open_database(driver, &handle) != DB_OK)
- G_fatal_error(_("Unable to open database <%s>"),
- fi->database);
-
- ncat = db_select_int(driver, fi->table, fi->key, where,
- &cats);
-
- db_close_database(driver);
- db_shutdown_driver(driver);
-
- Vect_array_to_cat_list(cats, ncat, Clist);
- }
-
|