[libchamplain] Use the new MemphisRule implementation
- From: Pierre-Luc Beaudoin <plbeaudoin src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libchamplain] Use the new MemphisRule implementation
- Date: Sun, 24 Jan 2010 20:14:22 +0000 (UTC)
commit 1fc5a086f633d73c9e97948d0ecb32b3628f72e7
Author: Simon Wenner <simon wenner ch>
Date: Fri Sep 11 19:28:56 2009 +0200
Use the new MemphisRule implementation
champlain/champlain-memphis-map-source.c | 2 +-
demos/local-rendering.c | 136 +++++++++++++++--------------
2 files changed, 71 insertions(+), 67 deletions(-)
---
diff --git a/champlain/champlain-memphis-map-source.c b/champlain/champlain-memphis-map-source.c
index 3201915..c8cca3e 100644
--- a/champlain/champlain-memphis-map-source.c
+++ b/champlain/champlain-memphis-map-source.c
@@ -748,7 +748,7 @@ champlain_memphis_map_source_set_rule (ChamplainMemphisMapSource *self,
MemphisRule *rule)
{
g_return_if_fail (CHAMPLAIN_IS_MEMPHIS_MAP_SOURCE (self) &&
- MEMPHIS_IS_RULE (rule));
+ MEMPHIS_RULE (rule));
ChamplainMemphisMapSourcePrivate *priv = GET_PRIVATE (self);
diff --git a/demos/local-rendering.c b/demos/local-rendering.c
index e81cf2e..4eedc14 100644
--- a/demos/local-rendering.c
+++ b/demos/local-rendering.c
@@ -40,7 +40,7 @@ static GtkWidget *polycolor, *polyminz, *polymaxz;
static GtkWidget *linecolor, *linesize, *lineminz, *linemaxz;
static GtkWidget *bordercolor, *bordersize, *borderminz, *bordermaxz;
static GtkWidget *textcolor, *textsize, *textminz, *textmaxz;
-static MemphisRule *current_rule;
+static MemphisRule *current_rule = NULL;
/*
* Terminate the main loop.
@@ -51,6 +51,23 @@ on_destroy (GtkWidget *widget, gpointer data)
gtk_main_quit ();
}
+static void color_gdk_to_clutter (const GdkColor *gdk_color,
+ ClutterColor *clutter_color)
+{
+ clutter_color->red = CLAMP (((gdk_color->red / 65535.0) * 255), 0, 255);
+ clutter_color->green = CLAMP (((gdk_color->green / 65535.0) * 255), 0, 255);
+ clutter_color->blue = CLAMP (((gdk_color->blue / 65535.0) * 255), 0, 255);
+ clutter_color->alpha = 255;
+}
+
+static void color_clutter_to_gdk (const ClutterColor *clutter_color,
+ GdkColor *gdk_color)
+{
+ gdk_color->red = ((guint16) clutter_color->red) << 8;
+ gdk_color->green = ((guint16) clutter_color->green) << 8;
+ gdk_color->blue = ((guint16) clutter_color->blue) << 8;
+}
+
static void
data_source_state_changed (ChamplainView *view,
GParamSpec *gobject,
@@ -119,9 +136,8 @@ load_rules_into_gui (ChamplainView *view)
clutter_color = champlain_memphis_map_source_get_background_color (
CHAMPLAIN_MEMPHIS_MAP_SOURCE (source));
- gdk_color.red = ((guint16) clutter_color->red) << 8;
- gdk_color.green = ((guint16) clutter_color->green) << 8;
- gdk_color.blue = ((guint16) clutter_color->blue) << 8;
+
+ color_clutter_to_gdk (clutter_color, &gdk_color);
clutter_color_free (clutter_color);
gtk_color_button_set_color (GTK_COLOR_BUTTON (bg_button), &gdk_color);
@@ -144,6 +160,8 @@ static void
rule_window_close_cb (GtkWidget *widget, gpointer data)
{
gtk_widget_destroy (rule_edit_window);
+ memphis_rule_free (current_rule);
+ current_rule = NULL;
rule_edit_window = NULL;
}
@@ -153,76 +171,75 @@ rule_apply_cb (GtkWidget *widget, ChamplainMemphisMapSource *source)
MemphisRule *rule = current_rule;
GdkColor color;
- if (rule->polygon_color[0] != -1)
+ if (rule->polygon)
{
gtk_color_button_get_color (GTK_COLOR_BUTTON (polycolor), &color);
- rule->polygon_color[0] = color.red >> 8;
- rule->polygon_color[1] = color.green >> 8;
- rule->polygon_color[2] = color.blue >> 8;
- rule->polygon_z[0] = gtk_spin_button_get_value (GTK_SPIN_BUTTON (polyminz));
- rule->polygon_z[1] = gtk_spin_button_get_value (GTK_SPIN_BUTTON (polymaxz));
+ rule->polygon->color_red = color.red >> 8;
+ rule->polygon->color_green = color.green >> 8;
+ rule->polygon->color_blue = color.blue >> 8;
+ rule->polygon->z_min = gtk_spin_button_get_value (GTK_SPIN_BUTTON (polyminz));
+ rule->polygon->z_max = gtk_spin_button_get_value (GTK_SPIN_BUTTON (polymaxz));
}
- if (rule->line_color[0] != -1)
+ if (rule->line)
{
gtk_color_button_get_color (GTK_COLOR_BUTTON (linecolor), &color);
- rule->line_color[0] = color.red >> 8;
- rule->line_color[1] = color.green >> 8;
- rule->line_color[2] = color.blue >> 8;
- rule->line_size = gtk_spin_button_get_value (GTK_SPIN_BUTTON (linesize));
- rule->line_z[0] = gtk_spin_button_get_value (GTK_SPIN_BUTTON (lineminz));
- rule->line_z[1] = gtk_spin_button_get_value (GTK_SPIN_BUTTON (linemaxz));
+ rule->line->color_red = color.red >> 8;
+ rule->line->color_green = color.green >> 8;
+ rule->line->color_blue = color.blue >> 8;
+ rule->line->size = gtk_spin_button_get_value (GTK_SPIN_BUTTON (linesize));
+ rule->line->z_min = gtk_spin_button_get_value (GTK_SPIN_BUTTON (lineminz));
+ rule->line->z_max = gtk_spin_button_get_value (GTK_SPIN_BUTTON (linemaxz));
}
- if (rule->border_color[0] != -1)
+ if (rule->border)
{
gtk_color_button_get_color (GTK_COLOR_BUTTON (bordercolor), &color);
- rule->border_color[0] = color.red >> 8;
- rule->border_color[1] = color.green >> 8;
- rule->border_color[2] = color.blue >> 8;
- rule->border_size = gtk_spin_button_get_value (GTK_SPIN_BUTTON (bordersize));
- rule->border_z[0] = gtk_spin_button_get_value (GTK_SPIN_BUTTON (borderminz));
- rule->border_z[1] = gtk_spin_button_get_value (GTK_SPIN_BUTTON (bordermaxz));
+ rule->border->color_red = color.red >> 8;
+ rule->border->color_green = color.green >> 8;
+ rule->border->color_blue = color.blue >> 8;
+ rule->border->size = gtk_spin_button_get_value (GTK_SPIN_BUTTON (bordersize));
+ rule->border->z_min = gtk_spin_button_get_value (GTK_SPIN_BUTTON (borderminz));
+ rule->border->z_max = gtk_spin_button_get_value (GTK_SPIN_BUTTON (bordermaxz));
}
- if (rule->text_color[0] != -1)
+ if (rule->text)
{
gtk_color_button_get_color (GTK_COLOR_BUTTON (textcolor), &color);
- rule->text_color[0] = color.red >> 8;
- rule->text_color[1] = color.green >> 8;
- rule->text_color[2] = color.blue >> 8;
- rule->text_size = gtk_spin_button_get_value (GTK_SPIN_BUTTON (textsize));
- rule->text_z[0] = gtk_spin_button_get_value (GTK_SPIN_BUTTON (textminz));
- rule->text_z[1] = gtk_spin_button_get_value (GTK_SPIN_BUTTON (textmaxz));
+ rule->text->color_red = color.red >> 8;
+ rule->text->color_green = color.green >> 8;
+ rule->text->color_blue = color.blue >> 8;
+ rule->text->size = gtk_spin_button_get_value (GTK_SPIN_BUTTON (textsize));
+ rule->text->z_min = gtk_spin_button_get_value (GTK_SPIN_BUTTON (textminz));
+ rule->text->z_max = gtk_spin_button_get_value (GTK_SPIN_BUTTON (textmaxz));
}
champlain_memphis_map_source_set_rule (source, rule);
}
GtkWidget *
-gtk_memphis_prop_new (gint type,
- gint16 *color, gdouble size, gint16 *z)
+gtk_memphis_prop_new (gint type, MemphisRuleAttr *attr)
{
GtkWidget *hbox, *cb, *sb1, *sb2, *sb3;
GdkColor gcolor;
hbox = gtk_hbox_new (FALSE, 0);
- gcolor.red = color[0] << 8;
- gcolor.green = color[1] << 8;
- gcolor.blue = color[2] << 8;
+ gcolor.red = ((guint16) attr->color_red) << 8;
+ gcolor.green = ((guint16) attr->color_green) << 8;
+ gcolor.blue = ((guint16) attr->color_blue) << 8;
cb = gtk_color_button_new_with_color (&gcolor);
gtk_box_pack_start (GTK_BOX (hbox), cb, FALSE, FALSE, 0);
if (type != 0)
{
sb1 = gtk_spin_button_new_with_range (0.0, 20.0, 0.1);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (sb1), size);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (sb1), attr->size);
gtk_box_pack_start (GTK_BOX (hbox), sb1, FALSE, FALSE, 0);
}
sb2 = gtk_spin_button_new_with_range (12, 18, 1);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (sb2), z[0]);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (sb2), attr->z_min);
gtk_box_pack_start (GTK_BOX (hbox), sb2, FALSE, FALSE, 0);
sb3 = gtk_spin_button_new_with_range (12, 18, 1);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (sb3), z[1]);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (sb3), attr->z_max);
gtk_box_pack_start (GTK_BOX (hbox), sb3, FALSE, FALSE, 0);
if (type == 0)
@@ -278,53 +295,43 @@ create_rule_edit_window (MemphisRule *rule, gchar* id,
gtk_table_set_row_spacings (GTK_TABLE (table), 8);
label = gtk_label_new (NULL);
- if (rule->type == WAY)
+ if (rule->type == MEMPHIS_RULE_TYPE_WAY)
gtk_label_set_markup (GTK_LABEL (label), "<b>Way properties</b>");
- else if (rule->type == NODE)
+ else if (rule->type == MEMPHIS_RULE_TYPE_NODE)
gtk_label_set_markup (GTK_LABEL (label), "<b>Node properties</b>");
+ else if (rule->type == MEMPHIS_RULE_TYPE_RELATION)
+ gtk_label_set_markup (GTK_LABEL (label), "<b>Relation properties</b>");
else
- gtk_label_set_markup (GTK_LABEL (label), "<b>Unknwn property</b>");
+ gtk_label_set_markup (GTK_LABEL (label), "<b>Unknown type</b>");
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 2, 0, 1);
- if (rule->polygon_color[0] != -1)
+ if (rule->polygon != NULL)
{
label = gtk_label_new ("Polygon: ");
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2);
- props = gtk_memphis_prop_new (0,
- rule->polygon_color,
- -1,
- rule->polygon_z);
+ props = gtk_memphis_prop_new (0, rule->polygon);
gtk_table_attach_defaults (GTK_TABLE (table), props, 1, 2, 1, 2);
}
- if (rule->line_color[0] != -1)
+ if (rule->line != NULL)
{
label = gtk_label_new ("Line: ");
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3);
- props = gtk_memphis_prop_new (1,
- rule->line_color,
- rule->line_size,
- rule->line_z);
+ props = gtk_memphis_prop_new (1, rule->line);
gtk_table_attach_defaults (GTK_TABLE (table), props, 1, 2, 2, 3);
}
- if (rule->border_color[0] != -1)
+ if (rule->border != NULL)
{
label = gtk_label_new ("Border: ");
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4);
- props = gtk_memphis_prop_new (2,
- rule->border_color,
- rule->border_size,
- rule->border_z);
+ props = gtk_memphis_prop_new (2, rule->border);
gtk_table_attach_defaults (GTK_TABLE (table), props, 1, 2, 3, 4);
}
- if (rule->text_color[0] != -1)
+ if (rule->text != NULL)
{
label = gtk_label_new ("Text: ");
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 4, 5);
- props = gtk_memphis_prop_new (3,
- rule->text_color,
- rule->text_size,
- rule->text_z);
+ props = gtk_memphis_prop_new (3, rule->text);
gtk_table_attach_defaults (GTK_TABLE (table), props, 1, 2, 4, 5);
}
@@ -396,10 +403,7 @@ bg_color_set_cb (GtkColorButton *widget, ChamplainView *view)
if (strncmp (champlain_map_source_get_id (source), "memphis", 7) == 0)
{
ClutterColor clutter_color;
- clutter_color.red = CLAMP (((gdk_color.red / 65535.0) * 255), 0, 255);
- clutter_color.green = CLAMP (((gdk_color.green / 65535.0) * 255), 0, 255);
- clutter_color.blue = CLAMP (((gdk_color.blue / 65535.0) * 255), 0, 255);
- clutter_color.alpha = 255;
+ color_gdk_to_clutter (&gdk_color, &clutter_color);
champlain_memphis_map_source_set_background_color (
CHAMPLAIN_MEMPHIS_MAP_SOURCE (source), &clutter_color);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]