#include #include #include #include #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 't': display |= DISP_TOPO; break; case 'd': display |= DISP_DIR; break; case 'a': display |= DISP_ATTR; 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); }