From: Kaj-Michael Lang Date: Fri, 5 Oct 2007 13:20:26 +0000 (+0300) Subject: Use poi category color for anything we draw. X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6931d9c4e96c10e063917c52a7c62d76a444e8ad;p=mapper Use poi category color for anything we draw. --- diff --git a/src/map-poi.c b/src/map-poi.c index d3852a6..63e9515 100644 --- a/src/map-poi.c +++ b/src/map-poi.c @@ -14,13 +14,14 @@ #include "ui-common.h" #include "db.h" -#define POI_FONT_SIZE_BIG (14) +#define POI_FONT_SIZE_BIG (12) #define POI_FONT_SIZE_SMALL (10) static GHashTable *poi_icon_hash = NULL; static PangoContext *context = NULL; static PangoLayout *layout = NULL; static PangoFontDescription *fontdesc = NULL; +static GdkGC *poi_gc; gboolean map_poi_init(GtkWidget *map_widget) @@ -34,6 +35,7 @@ pango_font_description_set_size(fontdesc, POI_FONT_SIZE_SMALL*PANGO_SCALE); pango_layout_set_font_description (layout, fontdesc); pango_layout_set_alignment(layout, PANGO_ALIGN_CENTER); pango_layout_set_width(layout, 70*PANGO_SCALE); +poi_gc=gdk_gc_new(map_widget->window); return TRUE; } @@ -76,7 +78,7 @@ return pixbuf; /** * Render all the POI data. This should be done before rendering track data. */ -void +void map_render_poi(void) { guint unitx, unity; @@ -106,14 +108,19 @@ if (SQLITE_OK != sqlite3_bind_double(poisql.select_poi, 1, lat1) } if (_zoom<2) { + pango_font_description_set_size(fontdesc, POI_FONT_SIZE_BIG*PANGO_SCALE); + pango_layout_set_font_description (layout, fontdesc); pango_layout_set_ellipsize(layout, PANGO_ELLIPSIZE_NONE); - pango_font_description_set_size(fontdesc, POI_FONT_SIZE_SMALL*PANGO_SCALE); } else { + pango_font_description_set_size(fontdesc, POI_FONT_SIZE_SMALL*PANGO_SCALE); + pango_layout_set_font_description (layout, fontdesc); pango_layout_set_ellipsize(layout, PANGO_ELLIPSIZE_END); - pango_font_description_set_size(fontdesc, POI_FONT_SIZE_BIG*PANGO_SCALE); } while (SQLITE_ROW == sqlite3_step(poisql.select_poi)) { + GdkColor color; + GdkGC *gc; + lat1 = sqlite3_column_double(poisql.select_poi, 0); lon1 = sqlite3_column_double(poisql.select_poi, 1); gchar *poi_label = sqlite3_column_text(poisql.select_poi, 3); @@ -126,25 +133,34 @@ while (SQLITE_ROW == sqlite3_step(poisql.select_poi)) { pixbuf=map_poi_get_icon(cat_icon); + // XXX: Cache instead of parsing every time... + if (gdk_color_parse(cat_color, &color)) { + gdk_gc_set_rgb_fg_color(poi_gc, &color); + gc=poi_gc; + g_printf("Using color: %s\n", cat_color); + } else { + gc=_gc[COLORABLE_POI]; + } + if (!pixbuf) { /* No icon for POI or for category - draw default. */ - gdk_draw_arc(_map_pixmap, _gc[COLORABLE_POI], FALSE, - poix - _draw_width, poiy - _draw_width, - (MAX_ZOOM-_zoom)/6 * _draw_width, (MAX_ZOOM-_zoom)/6 * _draw_width, 0, 360 * 64); + gdk_draw_arc(_map_pixmap, gc, FALSE, + poix - _draw_width, poiy - _draw_width, + (MAX_ZOOM-_zoom)/6 * _draw_width, (MAX_ZOOM-_zoom)/6 * _draw_width, 0, 360 * 64); } else { guint w,h; w=gdk_pixbuf_get_width(pixbuf); h=gdk_pixbuf_get_height(pixbuf); gdk_draw_pixbuf(_map_pixmap, - _gc[COLORABLE_POI], + gc, pixbuf, 0, 0, poix-w/2, - poiy-h/2, + poiy-h/2, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); if (_zoom<2) - gdk_draw_rectangle(_map_pixmap, _gc[COLORABLE_POI], FALSE, poix-w/2-1, poiy-h/2-1, w+1, h+1); + gdk_draw_rectangle(_map_pixmap, gc, FALSE, poix-w/2-1, poiy-h/2-1, w+1, h+1); } if (_zoom<3 && poi_label) { map_poi_title(poix, poiy, poi_label);