[libchamplain] Implement fill/stroke color, and stroke width
- From: Pierre-Luc Beaudoin <plbeaudoin src gnome org>
- To: svn-commits-list gnome org
- Subject: [libchamplain] Implement fill/stroke color, and stroke width
- Date: Fri, 12 Jun 2009 00:57:57 -0400 (EDT)
commit bde721fe7b558a03fd4980da19d290405c8b0941
Author: Pierre-Luc Beaudoin <pierre-luc pierlux com>
Date: Mon May 25 22:48:28 2009 -0400
Implement fill/stroke color, and stroke width
champlain/champlain-line.c | 186 ++++++++++++++++++++++++++++++++++++++---
champlain/champlain-line.h | 9 ++
champlain/champlain-private.h | 1 +
champlain/champlain-view.c | 2 +
4 files changed, 185 insertions(+), 13 deletions(-)
---
diff --git a/champlain/champlain-line.c b/champlain/champlain-line.c
index 2ac1c4d..d43bc7d 100644
--- a/champlain/champlain-line.c
+++ b/champlain/champlain-line.c
@@ -81,6 +81,9 @@ champlain_line_get_property (GObject *object,
case PROP_STROKE_COLOR:
clutter_value_set_color (value, priv->stroke_color);
break;
+ case PROP_STROKE_WIDTH:
+ g_value_set_double (value, priv->stroke_width);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -100,16 +103,24 @@ champlain_line_set_property (GObject *object,
priv->closed_path = g_value_get_boolean (value);
break;
case PROP_FILL:
- priv->fill = g_value_get_boolean (value);
+ champlain_line_set_fill (CHAMPLAIN_LINE (object),
+ g_value_get_boolean (value));
break;
case PROP_STROKE:
- priv->stroke = g_value_get_boolean (value);
+ champlain_line_set_stroke (CHAMPLAIN_LINE (object),
+ g_value_get_boolean (value));
break;
case PROP_FILL_COLOR:
- champlain_line_set_fill_color (CHAMPLAIN_LINE (object), clutter_value_get_color (value));
+ champlain_line_set_fill_color (CHAMPLAIN_LINE (object),
+ clutter_value_get_color (value));
break;
case PROP_STROKE_COLOR:
- champlain_line_set_stroke_color (CHAMPLAIN_LINE (object), clutter_value_get_color (value));
+ champlain_line_set_stroke_color (CHAMPLAIN_LINE (object),
+ clutter_value_get_color (value));
+ break;
+ case PROP_STROKE_WIDTH:
+ champlain_line_set_stroke_width (CHAMPLAIN_LINE (object),
+ g_value_get_double (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -152,9 +163,9 @@ champlain_line_class_init (ChamplainLineClass *klass)
g_object_class_install_property (object_class,
PROP_CLOSED_PATH,
g_param_spec_boolean ("closed-path",
- "Closed Path",
- "The Path is Closed",
- FALSE, CHAMPLAIN_PARAM_READWRITE));
+ "Closed Path",
+ "The Path is Closed",
+ FALSE, CHAMPLAIN_PARAM_READWRITE));
/**
* ChamplainLine:fill:
@@ -166,9 +177,9 @@ champlain_line_class_init (ChamplainLineClass *klass)
g_object_class_install_property (object_class,
PROP_FILL,
g_param_spec_boolean ("fill",
- "Fill",
- "The shape is filled",
- FALSE, CHAMPLAIN_PARAM_READWRITE));
+ "Fill",
+ "The shape is filled",
+ FALSE, CHAMPLAIN_PARAM_READWRITE));
/**
* ChamplainLine:stroke:
@@ -180,9 +191,55 @@ champlain_line_class_init (ChamplainLineClass *klass)
g_object_class_install_property (object_class,
PROP_STROKE,
g_param_spec_boolean ("stroke",
- "Stroke",
- "The shape is stroked",
- TRUE, CHAMPLAIN_PARAM_READWRITE));
+ "Stroke",
+ "The shape is stroked",
+ TRUE, CHAMPLAIN_PARAM_READWRITE));
+
+ /**
+ * ChamplainLine:stroke-color:
+ *
+ * The line's stroke color
+ *
+ * Since: 0.4
+ */
+ g_object_class_install_property (object_class,
+ PROP_STROKE_COLOR,
+ clutter_param_spec_color ("stroke-color",
+ "Stroke Color",
+ "The line's stroke color",
+ &DEFAULT_STROKE_COLOR,
+ CHAMPLAIN_PARAM_READWRITE));
+
+ /**
+ * ChamplainLine:text-color:
+ *
+ * The line's fill color
+ *
+ * Since: 0.4
+ */
+ g_object_class_install_property (object_class,
+ PROP_FILL_COLOR,
+ clutter_param_spec_color ("fill-color",
+ "Fill Color",
+ "The line's fill color",
+ &DEFAULT_FILL_COLOR,
+ CHAMPLAIN_PARAM_READWRITE));
+
+ /**
+ * ChamplainLine:stroke-width:
+ *
+ * The line's stroke width (in pixels)
+ *
+ * Since: 0.4
+ */
+ g_object_class_install_property (object_class,
+ PROP_STROKE_WIDTH,
+ g_param_spec_double ("stroke-width",
+ "Stroke Width",
+ "The line's stroke width",
+ 0, 100.0,
+ 2.0,
+ CHAMPLAIN_PARAM_READWRITE));
}
static void
@@ -193,6 +250,7 @@ champlain_line_init (ChamplainLine *self)
self->priv->points = NULL;
self->priv->fill = FALSE;
self->priv->stroke = TRUE;
+ self->priv->stroke_width = 2.0;
self->priv->fill_color = clutter_color_copy (&DEFAULT_FILL_COLOR);
self->priv->stroke_color = clutter_color_copy (&DEFAULT_STROKE_COLOR);
@@ -326,3 +384,105 @@ champlain_line_get_stroke_color (ChamplainLine *line)
return line->priv->stroke_color;
}
+
+/**
+ * champlain_line_set_stroke:
+ * @line: The line
+ * @value: if the line is stroked
+ *
+ * Sets the line to have a stroke
+ *
+ * Since: 0.4
+ */
+void
+champlain_line_set_stroke (ChamplainLine *line,
+ gboolean value)
+{
+ g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+
+ line->priv->stroke = value;
+}
+
+/**
+ * champlain_line_get_stroke:
+ * @line: The line
+ *
+ * Returns if the line has a stroke
+ *
+ * Since: 0.4
+ */
+gboolean
+champlain_line_get_stroke (ChamplainLine *line)
+{
+ g_return_val_if_fail (CHAMPLAIN_IS_LINE (line), FALSE);
+
+ return line->priv->stroke;
+}
+
+/**
+ * champlain_line_set_fill:
+ * @line: The line
+ * @value: if the line is filled
+ *
+ * Sets the line to have be filled
+ *
+ * Since: 0.4
+ */
+void
+champlain_line_set_fill (ChamplainLine *line,
+ gboolean value)
+{
+ g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+
+ line->priv->fill = value;
+}
+
+/**
+ * champlain_line_get_fill:
+ * @line: The line
+ *
+ * Returns if the line is filled
+ *
+ * Since: 0.4
+ */
+gboolean
+champlain_line_get_fill (ChamplainLine *line)
+{
+ g_return_val_if_fail (CHAMPLAIN_IS_LINE (line), FALSE);
+
+ return line->priv->fill;
+}
+
+/**
+ * champlain_line_set_stroke_width:
+ * @line: The line
+ * @value: the width of the stroke (in pixels)
+ *
+ * Sets the width of the stroke
+ *
+ * Since: 0.4
+ */
+void
+champlain_line_set_stroke_width (ChamplainLine *line,
+ gdouble value)
+{
+ g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+
+ line->priv->stroke_width = value;
+}
+
+/**
+ * champlain_line_get_stroke_width:
+ * @line: The line
+ *
+ * Returns the width of the stroke
+ *
+ * Since: 0.4
+ */
+gdouble
+champlain_line_get_stroke_width (ChamplainLine *line)
+{
+ g_return_val_if_fail (CHAMPLAIN_IS_LINE (line), 0);
+
+ return line->priv->stroke_width;
+}
diff --git a/champlain/champlain-line.h b/champlain/champlain-line.h
index 081073e..e20574c 100644
--- a/champlain/champlain-line.h
+++ b/champlain/champlain-line.h
@@ -74,6 +74,15 @@ void champlain_line_set_stroke_color (ChamplainLine *line,
ClutterColor * champlain_line_get_fill_color (ChamplainLine *line);
ClutterColor * champlain_line_get_stroke_color (ChamplainLine *line);
+gboolean champlain_line_get_fill (ChamplainLine *line);
+void champlain_line_set_fill (ChamplainLine *line,
+ gboolean value);
+gboolean champlain_line_get_stroke (ChamplainLine *line);
+void champlain_line_set_stroke (ChamplainLine *line,
+ gboolean value);
+void champlain_line_set_stroke_width (ChamplainLine *line,
+ gdouble value);
+gdouble champlain_line_get_stroke_width (ChamplainLine *line);
G_END_DECLS
#endif
diff --git a/champlain/champlain-private.h b/champlain/champlain-private.h
index 2576d02..2777a5a 100644
--- a/champlain/champlain-private.h
+++ b/champlain/champlain-private.h
@@ -44,6 +44,7 @@ struct _ChamplainLinePrivate {
gboolean fill;
ClutterColor *fill_color;
gboolean stroke;
+ gdouble stroke_width;
};
typedef struct
diff --git a/champlain/champlain-view.c b/champlain/champlain-view.c
index eae2cc7..cc61c30 100644
--- a/champlain/champlain-view.c
+++ b/champlain/champlain-view.c
@@ -2219,6 +2219,8 @@ draw_line (ChamplainView *view, cairo_t *cr, ChamplainLine *line)
line->priv->stroke_color->blue / 255.0,
line->priv->stroke_color->alpha / 255.0);
+ cairo_set_line_width (cr, line->priv->stroke_width);
+
if (line->priv->stroke)
cairo_stroke (cr);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]