champlain-network-map-source.h \
champlain-map-source-factory.h \
champlain-map-source-desc.h \
- champlain-line.h \
+ champlain-polygon.h \
champlain-version.h
champlain-network-map-source.c \
champlain-map-source-factory.c \
champlain-cache.c \
- champlain-line.c
+ champlain-polygon.c
noinst_HEADERS = \
champlain-debug.h \
champlain-map-source-desc.h \
champlain-version.h \
champlain-cache.h \
- champlain-line.h \
+ champlain-polygon.h \
champlain-version.h
libchamplain_include_HEADERS = \
champlain-marker.h \
champlain-version.h \
champlain-cache.h \
- champlain-line.h \
+ champlain-polygon.h \
champlain-version.h
libchamplain_0_3_la_LIBADD = $(DEPS_LIBS) $(SOUP_LIBS) ../tidy/libtidy-1.0.la
+++ /dev/null
-/*
- * Copyright (C) 2009 Pierre-Luc Beaudoin <pierre-luc@pierlux.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#if !defined (__CHAMPLAIN_CHAMPLAIN_H_INSIDE__) && !defined (CHAMPLAIN_COMPILATION)
-#error "Only <champlain/champlain.h> can be included directly."
-#endif
-
-#ifndef CHAMPLAIN_LINE_H
-#define CHAMPLAIN_LINE_H
-
-#include <champlain/champlain-defines.h>
-
-#include <glib-object.h>
-#include <clutter/clutter.h>
-
-G_BEGIN_DECLS
-
-#define CHAMPLAIN_TYPE_LINE champlain_line_get_type()
-
-#define CHAMPLAIN_LINE(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), CHAMPLAIN_TYPE_LINE, ChamplainLine))
-
-#define CHAMPLAIN_LINE_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), CHAMPLAIN_TYPE_LINE, ChamplainLineClass))
-
-#define CHAMPLAIN_IS_LINE(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CHAMPLAIN_TYPE_LINE))
-
-#define CHAMPLAIN_IS_LINE_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), CHAMPLAIN_TYPE_LINE))
-
-#define CHAMPLAIN_LINE_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), CHAMPLAIN_TYPE_LINE, ChamplainLineClass))
-
-typedef struct _ChamplainLinePrivate ChamplainLinePrivate;
-
-typedef struct {
- GObject parent;
- ChamplainLinePrivate *priv;
-} ChamplainLine;
-
-typedef struct {
- GObjectClass parent_class;
-} ChamplainLineClass;
-
-GType champlain_line_get_type (void);
-
-ChamplainLine* champlain_line_new (void);
-
-void champlain_line_add_point (ChamplainLine *line,
- gdouble lat,
- gdouble lon);
-
-void champlain_line_clear_points (ChamplainLine *line);
-void champlain_line_set_fill_color (ChamplainLine *line,
- const ClutterColor *color);
-void champlain_line_set_stroke_color (ChamplainLine *line,
- const ClutterColor *color);
-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
*/
/**
- * SECTION:champlain-line
- * @short_description: A container for #ChamplainLine
+ * SECTION:champlain-polygon
+ * @short_description: A container for #ChamplainPolygon
*
- * A ChamplainLine is little more than a #ClutterContainer. It keeps the
- * lines ordered so that they display correctly.
+ * A ChamplainPolygon is little more than a #ClutterContainer. It keeps the
+ * polygons ordered so that they display correctly.
*
- * Use #clutter_container_add to add lines to the line and
+ * Use #clutter_container_add to add polygons to the polygon and
* #clutter_container_remove to remove them.
*/
#include "config.h"
-#include "champlain-line.h"
+#include "champlain-polygon.h"
#include "champlain-defines.h"
#include "champlain-private.h"
static ClutterColor DEFAULT_FILL_COLOR = {0xcc, 0x00, 0x00, 0xaa};
static ClutterColor DEFAULT_STROKE_COLOR = {0xa4, 0x00, 0x00, 0xff};
-G_DEFINE_TYPE (ChamplainLine, champlain_line, G_TYPE_OBJECT)
+G_DEFINE_TYPE (ChamplainPolygon, champlain_polygon, G_TYPE_OBJECT)
#define GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), CHAMPLAIN_TYPE_LINE, ChamplainLinePrivate))
+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), CHAMPLAIN_TYPE_POLYGON, ChamplainPolygonPrivate))
enum
{
};
static void
-champlain_line_get_property (GObject *object,
+champlain_polygon_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec)
{
- ChamplainLinePrivate *priv = GET_PRIVATE (object);
+ ChamplainPolygonPrivate *priv = GET_PRIVATE (object);
switch (property_id)
{
}
static void
-champlain_line_set_property (GObject *object,
+champlain_polygon_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec)
{
- ChamplainLinePrivate *priv = GET_PRIVATE (object);
+ ChamplainPolygonPrivate *priv = GET_PRIVATE (object);
switch (property_id)
{
priv->closed_path = g_value_get_boolean (value);
break;
case PROP_FILL:
- champlain_line_set_fill (CHAMPLAIN_LINE (object),
+ champlain_polygon_set_fill (CHAMPLAIN_POLYGON (object),
g_value_get_boolean (value));
break;
case PROP_STROKE:
- champlain_line_set_stroke (CHAMPLAIN_LINE (object),
+ champlain_polygon_set_stroke (CHAMPLAIN_POLYGON (object),
g_value_get_boolean (value));
break;
case PROP_FILL_COLOR:
- champlain_line_set_fill_color (CHAMPLAIN_LINE (object),
+ champlain_polygon_set_fill_color (CHAMPLAIN_POLYGON (object),
clutter_value_get_color (value));
break;
case PROP_STROKE_COLOR:
- champlain_line_set_stroke_color (CHAMPLAIN_LINE (object),
+ champlain_polygon_set_stroke_color (CHAMPLAIN_POLYGON (object),
clutter_value_get_color (value));
break;
case PROP_STROKE_WIDTH:
- champlain_line_set_stroke_width (CHAMPLAIN_LINE (object),
+ champlain_polygon_set_stroke_width (CHAMPLAIN_POLYGON (object),
g_value_get_double (value));
break;
default:
}
static void
-champlain_line_dispose (GObject *object)
+champlain_polygon_dispose (GObject *object)
{
- //ChamplainLinePrivate *priv = GET_PRIVATE (object);
+ //ChamplainPolygonPrivate *priv = GET_PRIVATE (object);
- G_OBJECT_CLASS (champlain_line_parent_class)->dispose (object);
+ G_OBJECT_CLASS (champlain_polygon_parent_class)->dispose (object);
}
static void
-champlain_line_finalize (GObject *object)
+champlain_polygon_finalize (GObject *object)
{
- G_OBJECT_CLASS (champlain_line_parent_class)->finalize (object);
+ G_OBJECT_CLASS (champlain_polygon_parent_class)->finalize (object);
}
static void
-champlain_line_class_init (ChamplainLineClass *klass)
+champlain_polygon_class_init (ChamplainPolygonClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- g_type_class_add_private (klass, sizeof (ChamplainLinePrivate));
+ g_type_class_add_private (klass, sizeof (ChamplainPolygonPrivate));
- object_class->get_property = champlain_line_get_property;
- object_class->set_property = champlain_line_set_property;
- object_class->dispose = champlain_line_dispose;
- object_class->finalize = champlain_line_finalize;
+ object_class->get_property = champlain_polygon_get_property;
+ object_class->set_property = champlain_polygon_set_property;
+ object_class->dispose = champlain_polygon_dispose;
+ object_class->finalize = champlain_polygon_finalize;
/**
- * ChamplainLine:close-path:
+ * ChamplainPolygon:close-path:
*
* The shape is a closed path
*
FALSE, CHAMPLAIN_PARAM_READWRITE));
/**
- * ChamplainLine:fill:
+ * ChamplainPolygon:fill:
*
* The shape should be filled
*
FALSE, CHAMPLAIN_PARAM_READWRITE));
/**
- * ChamplainLine:stroke:
+ * ChamplainPolygon:stroke:
*
* The shape should be stroked
*
TRUE, CHAMPLAIN_PARAM_READWRITE));
/**
- * ChamplainLine:stroke-color:
+ * ChamplainPolygon:stroke-color:
*
- * The line's stroke color
+ * The polygon's stroke color
*
* Since: 0.4
*/
PROP_STROKE_COLOR,
clutter_param_spec_color ("stroke-color",
"Stroke Color",
- "The line's stroke color",
+ "The polygon's stroke color",
&DEFAULT_STROKE_COLOR,
CHAMPLAIN_PARAM_READWRITE));
/**
- * ChamplainLine:text-color:
+ * ChamplainPolygon:text-color:
*
- * The line's fill color
+ * The polygon's fill color
*
* Since: 0.4
*/
PROP_FILL_COLOR,
clutter_param_spec_color ("fill-color",
"Fill Color",
- "The line's fill color",
+ "The polygon's fill color",
&DEFAULT_FILL_COLOR,
CHAMPLAIN_PARAM_READWRITE));
/**
- * ChamplainLine:stroke-width:
+ * ChamplainPolygon:stroke-width:
*
- * The line's stroke width (in pixels)
+ * The polygon's stroke width (in pixels)
*
* Since: 0.4
*/
PROP_STROKE_WIDTH,
g_param_spec_double ("stroke-width",
"Stroke Width",
- "The line's stroke width",
+ "The polygon's stroke width",
0, 100.0,
2.0,
CHAMPLAIN_PARAM_READWRITE));
}
static void
-champlain_line_init (ChamplainLine *self)
+champlain_polygon_init (ChamplainPolygon *self)
{
self->priv = GET_PRIVATE (self);
}
/**
- * champlain_line_new:
+ * champlain_polygon_new:
*
- * Returns a new #ChamplainLine ready to be to draw lines on the map
+ * Returns a new #ChamplainPolygon ready to be to draw polygons on the map
*
* Since: 0.4
*/
-ChamplainLine *
-champlain_line_new ()
+ChamplainPolygon *
+champlain_polygon_new ()
{
- return g_object_new (CHAMPLAIN_TYPE_LINE, NULL);
+ return g_object_new (CHAMPLAIN_TYPE_POLYGON, NULL);
}
void
-champlain_line_add_point (ChamplainLine *self,
+champlain_polygon_add_point (ChamplainPolygon *self,
gdouble lat,
gdouble lon)
{
- g_return_if_fail (CHAMPLAIN_IS_LINE (self));
+ g_return_if_fail (CHAMPLAIN_IS_POLYGON (self));
ChamplainPoint *point = g_new0 (ChamplainPoint, 1);
point->lat = lat;
}
void
-champlain_line_clear_points (ChamplainLine *self)
+champlain_polygon_clear_points (ChamplainPolygon *self)
{
- g_return_if_fail (CHAMPLAIN_IS_LINE (self));
+ g_return_if_fail (CHAMPLAIN_IS_POLYGON (self));
GList *next = self->priv->points;
while (next != NULL)
}
/**
- * champlain_line_set_fill_color:
- * @line: The line
- * @color: The line's fill color or NULL to reset to the
+ * champlain_polygon_set_fill_color:
+ * @polygon: The polygon
+ * @color: The polygon's fill color or NULL to reset to the
* default color. The color parameter is copied.
*
- * Set the line's fill color.
+ * Set the polygon's fill color.
*
* Since: 0.4
*/
void
-champlain_line_set_fill_color (ChamplainLine *line,
+champlain_polygon_set_fill_color (ChamplainPolygon *polygon,
const ClutterColor *color)
{
- g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+ g_return_if_fail (CHAMPLAIN_IS_POLYGON (polygon));
- ChamplainLinePrivate *priv = line->priv;
+ ChamplainPolygonPrivate *priv = polygon->priv;
if (priv->fill_color != NULL)
clutter_color_free (priv->fill_color);
color = &DEFAULT_FILL_COLOR;
priv->fill_color = clutter_color_copy (color);
- g_object_notify (G_OBJECT (line), "fill-color");
+ g_object_notify (G_OBJECT (polygon), "fill-color");
}
/**
- * champlain_line_set_stoke_color:
- * @line: The line
- * @color: The line's stroke color or NULL to reset to the
+ * champlain_polygon_set_stoke_color:
+ * @polygon: The polygon
+ * @color: The polygon's stroke color or NULL to reset to the
* default color. The color parameter is copied.
*
- * Set the line's stroke color.
+ * Set the polygon's stroke color.
*
* Since: 0.4
*/
void
-champlain_line_set_stroke_color (ChamplainLine *line,
+champlain_polygon_set_stroke_color (ChamplainPolygon *polygon,
const ClutterColor *color)
{
- g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+ g_return_if_fail (CHAMPLAIN_IS_POLYGON (polygon));
- ChamplainLinePrivate *priv = line->priv;
+ ChamplainPolygonPrivate *priv = polygon->priv;
if (priv->stroke_color != NULL)
clutter_color_free (priv->stroke_color);
color = &DEFAULT_STROKE_COLOR;
priv->stroke_color = clutter_color_copy (color);
- g_object_notify (G_OBJECT (line), "stroke-color");
+ g_object_notify (G_OBJECT (polygon), "stroke-color");
}
/**
- * champlain_line_get_color:
- * @line: The line
+ * champlain_polygon_get_color:
+ * @polygon: The polygon
*
- * Returns the line's fill color.
+ * Returns the polygon's fill color.
*
* Since: 0.4
*/
ClutterColor *
-champlain_line_get_fill_color (ChamplainLine *line)
+champlain_polygon_get_fill_color (ChamplainPolygon *polygon)
{
- g_return_val_if_fail (CHAMPLAIN_IS_LINE (line), NULL);
+ g_return_val_if_fail (CHAMPLAIN_IS_POLYGON (polygon), NULL);
- return line->priv->fill_color;
+ return polygon->priv->fill_color;
}
/**
- * champlain_line_get_stroke_color:
- * @line: The line
+ * champlain_polygon_get_stroke_color:
+ * @polygon: The polygon
*
- * Returns the line's stroke color.
+ * Returns the polygon's stroke color.
*
* Since: 0.4
*/
ClutterColor *
-champlain_line_get_stroke_color (ChamplainLine *line)
+champlain_polygon_get_stroke_color (ChamplainPolygon *polygon)
{
- g_return_val_if_fail (CHAMPLAIN_IS_LINE (line), NULL);
+ g_return_val_if_fail (CHAMPLAIN_IS_POLYGON (polygon), NULL);
- return line->priv->stroke_color;
+ return polygon->priv->stroke_color;
}
/**
- * champlain_line_set_stroke:
- * @line: The line
- * @value: if the line is stroked
+ * champlain_polygon_set_stroke:
+ * @polygon: The polygon
+ * @value: if the polygon is stroked
*
- * Sets the line to have a stroke
+ * Sets the polygon to have a stroke
*
* Since: 0.4
*/
void
-champlain_line_set_stroke (ChamplainLine *line,
+champlain_polygon_set_stroke (ChamplainPolygon *polygon,
gboolean value)
{
- g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+ g_return_if_fail (CHAMPLAIN_IS_POLYGON (polygon));
- line->priv->stroke = value;
+ polygon->priv->stroke = value;
}
/**
- * champlain_line_get_stroke:
- * @line: The line
+ * champlain_polygon_get_stroke:
+ * @polygon: The polygon
*
- * Returns if the line has a stroke
+ * Returns if the polygon has a stroke
*
* Since: 0.4
*/
gboolean
-champlain_line_get_stroke (ChamplainLine *line)
+champlain_polygon_get_stroke (ChamplainPolygon *polygon)
{
- g_return_val_if_fail (CHAMPLAIN_IS_LINE (line), FALSE);
+ g_return_val_if_fail (CHAMPLAIN_IS_POLYGON (polygon), FALSE);
- return line->priv->stroke;
+ return polygon->priv->stroke;
}
/**
- * champlain_line_set_fill:
- * @line: The line
- * @value: if the line is filled
+ * champlain_polygon_set_fill:
+ * @polygon: The polygon
+ * @value: if the polygon is filled
*
- * Sets the line to have be filled
+ * Sets the polygon to have be filled
*
* Since: 0.4
*/
void
-champlain_line_set_fill (ChamplainLine *line,
+champlain_polygon_set_fill (ChamplainPolygon *polygon,
gboolean value)
{
- g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+ g_return_if_fail (CHAMPLAIN_IS_POLYGON (polygon));
- line->priv->fill = value;
+ polygon->priv->fill = value;
}
/**
- * champlain_line_get_fill:
- * @line: The line
+ * champlain_polygon_get_fill:
+ * @polygon: The polygon
*
- * Returns if the line is filled
+ * Returns if the polygon is filled
*
* Since: 0.4
*/
gboolean
-champlain_line_get_fill (ChamplainLine *line)
+champlain_polygon_get_fill (ChamplainPolygon *polygon)
{
- g_return_val_if_fail (CHAMPLAIN_IS_LINE (line), FALSE);
+ g_return_val_if_fail (CHAMPLAIN_IS_POLYGON (polygon), FALSE);
- return line->priv->fill;
+ return polygon->priv->fill;
}
/**
- * champlain_line_set_stroke_width:
- * @line: The line
+ * champlain_polygon_set_stroke_width:
+ * @polygon: The polygon
* @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,
+champlain_polygon_set_stroke_width (ChamplainPolygon *polygon,
gdouble value)
{
- g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+ g_return_if_fail (CHAMPLAIN_IS_POLYGON (polygon));
- line->priv->stroke_width = value;
+ polygon->priv->stroke_width = value;
}
/**
- * champlain_line_get_stroke_width:
- * @line: The line
+ * champlain_polygon_get_stroke_width:
+ * @polygon: The polygon
*
* Returns the width of the stroke
*
* Since: 0.4
*/
gdouble
-champlain_line_get_stroke_width (ChamplainLine *line)
+champlain_polygon_get_stroke_width (ChamplainPolygon *polygon)
{
- g_return_val_if_fail (CHAMPLAIN_IS_LINE (line), 0);
+ g_return_val_if_fail (CHAMPLAIN_IS_POLYGON (polygon), 0);
- return line->priv->stroke_width;
+ return polygon->priv->stroke_width;
}
--- /dev/null
+/*
+ * Copyright (C) 2009 Pierre-Luc Beaudoin <pierre-luc@pierlux.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#if !defined (__CHAMPLAIN_CHAMPLAIN_H_INSIDE__) && !defined (CHAMPLAIN_COMPILATION)
+#error "Only <champlain/champlain.h> can be included directly."
+#endif
+
+#ifndef CHAMPLAIN_POLYGON_H
+#define CHAMPLAIN_POLYGON_H
+
+#include <champlain/champlain-defines.h>
+
+#include <glib-object.h>
+#include <clutter/clutter.h>
+
+G_BEGIN_DECLS
+
+#define CHAMPLAIN_TYPE_POLYGON champlain_polygon_get_type()
+
+#define CHAMPLAIN_POLYGON(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), CHAMPLAIN_TYPE_POLYGON, ChamplainPolygon))
+
+#define CHAMPLAIN_POLYGON_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), CHAMPLAIN_TYPE_POLYGON, ChamplainPolygonClass))
+
+#define CHAMPLAIN_IS_POLYGON(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CHAMPLAIN_TYPE_POLYGON))
+
+#define CHAMPLAIN_IS_POLYGON_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), CHAMPLAIN_TYPE_POLYGON))
+
+#define CHAMPLAIN_POLYGON_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), CHAMPLAIN_TYPE_POLYGON, ChamplainPolygonClass))
+
+typedef struct _ChamplainPolygonPrivate ChamplainPolygonPrivate;
+
+typedef struct {
+ GObject parent;
+ ChamplainPolygonPrivate *priv;
+} ChamplainPolygon;
+
+typedef struct {
+ GObjectClass parent_class;
+} ChamplainPolygonClass;
+
+GType champlain_polygon_get_type (void);
+
+ChamplainPolygon* champlain_polygon_new (void);
+
+void champlain_polygon_add_point (ChamplainPolygon *polygon,
+ gdouble lat,
+ gdouble lon);
+
+void champlain_polygon_clear_points (ChamplainPolygon *polygon);
+void champlain_polygon_set_fill_color (ChamplainPolygon *polygon,
+ const ClutterColor *color);
+void champlain_polygon_set_stroke_color (ChamplainPolygon *polygon,
+ const ClutterColor *color);
+ClutterColor * champlain_polygon_get_fill_color (ChamplainPolygon *polygon);
+ClutterColor * champlain_polygon_get_stroke_color (ChamplainPolygon *polygon);
+
+gboolean champlain_polygon_get_fill (ChamplainPolygon *polygon);
+void champlain_polygon_set_fill (ChamplainPolygon *polygon,
+ gboolean value);
+gboolean champlain_polygon_get_stroke (ChamplainPolygon *polygon);
+void champlain_polygon_set_stroke (ChamplainPolygon *polygon,
+ gboolean value);
+void champlain_polygon_set_stroke_width (ChamplainPolygon *polygon,
+ gdouble value);
+gdouble champlain_polygon_get_stroke_width (ChamplainPolygon *polygon);
+G_END_DECLS
+
+#endif
gdouble lat;
};
-struct _ChamplainLinePrivate {
+struct _ChamplainPolygonPrivate {
GList *points;
gboolean closed_path;
ClutterColor *stroke_color;
#include "champlain-marshal.h"
#include "champlain-map-source.h"
#include "champlain-map-source-factory.h"
+#include "champlain-polygon.h"
#include "champlain-private.h"
#include "champlain-tile.h"
#include "champlain-zoom-level.h"
GoToContext *goto_context;
/* Lines and shapes */
- GList *lines;
- ClutterActor *line_layer; /* Contains the lines */
+ GList *polygons;
+ ClutterActor *polygon_layer; /* Contains the polygons */
};
static void tile_state_notify (GObject *gobject,
GParamSpec *pspec,
gpointer data);
-static void view_update_lines (ChamplainView *view);
+static void view_update_polygons (ChamplainView *view);
static gdouble
viewport_get_longitude_at (ChamplainViewPrivate *priv, gint x)
priv->user_layers);
clutter_actor_raise (priv->user_layers, priv->map_layer);
- priv->lines = NULL;
+ priv->polygons = NULL;
- /* Setup line layer */
- priv->line_layer = g_object_ref (clutter_cairo_new (800, 600));
- clutter_actor_show (priv->line_layer);
+ /* Setup polygon layer */
+ priv->polygon_layer = g_object_ref (clutter_cairo_new (800, 600));
+ clutter_actor_show (priv->polygon_layer);
clutter_container_add_actor (CLUTTER_CONTAINER (priv->viewport),
- priv->line_layer);
- clutter_actor_raise (priv->line_layer, priv->map_layer);
- clutter_actor_set_position (priv->line_layer, 0, 0);
+ priv->polygon_layer);
+ clutter_actor_raise (priv->polygon_layer, priv->map_layer);
+ clutter_actor_set_position (priv->polygon_layer, 0, 0);
champlain_view_set_size (view, priv->viewport_size.width,
priv->viewport_size.height);
view_load_visible_tiles (view);
view_tiles_reposition (view);
marker_reposition (view);
- view_update_lines (view);
+ view_update_polygons (view);
priv->longitude = viewport_get_current_longitude (priv);
priv->latitude = viewport_get_current_latitude (priv);
view_load_visible_tiles (view);
view_tiles_reposition (view);
- view_update_lines (view);
+ view_update_polygons (view);
marker_reposition (view);
}
}
static void
-draw_line (ChamplainView *view, cairo_t *cr, ChamplainLine *line)
+draw_polygon (ChamplainView *view, cairo_t *cr, ChamplainPolygon *polygon)
{
ChamplainViewPrivate *priv = view->priv;
cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
- GList *list = g_list_first (line->priv->points);
+ GList *list = g_list_first (polygon->priv->points);
while (list != NULL)
{
ChamplainPoint *point = (ChamplainPoint*) list->data;
list = list->next;
}
- if (line->priv->closed_path)
+ if (polygon->priv->closed_path)
cairo_close_path (cr);
cairo_set_source_rgba (cr,
- line->priv->fill_color->red / 255.0,
- line->priv->fill_color->green / 255.0,
- line->priv->fill_color->blue / 255.0,
- line->priv->fill_color->alpha / 255.0);
+ polygon->priv->fill_color->red / 255.0,
+ polygon->priv->fill_color->green / 255.0,
+ polygon->priv->fill_color->blue / 255.0,
+ polygon->priv->fill_color->alpha / 255.0);
- if (line->priv->fill)
+ if (polygon->priv->fill)
cairo_fill_preserve (cr);
cairo_set_source_rgba (cr,
- line->priv->stroke_color->red / 255.0,
- line->priv->stroke_color->green / 255.0,
- line->priv->stroke_color->blue / 255.0,
- line->priv->stroke_color->alpha / 255.0);
+ polygon->priv->stroke_color->red / 255.0,
+ polygon->priv->stroke_color->green / 255.0,
+ polygon->priv->stroke_color->blue / 255.0,
+ polygon->priv->stroke_color->alpha / 255.0);
- cairo_set_line_width (cr, line->priv->stroke_width);
+ cairo_set_line_width (cr, polygon->priv->stroke_width);
- if (line->priv->stroke)
+ if (polygon->priv->stroke)
cairo_stroke (cr);
}
static void
-view_update_lines (ChamplainView *view)
+view_update_polygons (ChamplainView *view)
{
ChamplainViewPrivate *priv = view->priv;
- GList * lines;
- cairo_t *cr;
- gint x, y;
+ GList *polygons;
+ cairo_t *cr;
+ gint x, y;
- if (priv->lines == NULL)
+ if (priv->polygons == NULL)
return;
- cr = clutter_cairo_create (CLUTTER_CAIRO (priv->line_layer));
+ cr = clutter_cairo_create (CLUTTER_CAIRO (priv->polygon_layer));
/* Clear the drawing area */
cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
cairo_rectangle (cr, 0, 0, 800, 600);
cairo_fill (cr);
- lines = priv->lines;
- while (lines != NULL)
+ polygons = priv->polygons;
+ while (polygons != NULL)
{
- ChamplainLine *line;
+ ChamplainPolygon *polygon;
- line = CHAMPLAIN_LINE (lines->data);
- draw_line (view, cr, line);
- lines = lines->next;
+ polygon = CHAMPLAIN_POLYGON (polygons->data);
+ draw_polygon (view, cr, polygon);
+ polygons = polygons->next;
}
/* Position the layer in the viewport */
cairo_destroy (cr);
- clutter_actor_set_position (priv->line_layer, x, y);
+ clutter_actor_set_position (priv->polygon_layer, x, y);
}
/**
- * champlain_view_add_line:
+ * champlain_view_add_polygon:
* @view: a #ChamplainView
- * @line: a #ChamplainLine
+ * @polygon: a #ChamplainPolygon
*
- * Adds a #ChamplainLine to the #ChamplainView
+ * Adds a #ChamplainPolygon to the #ChamplainView
*
* Since: 0.4
*/
void
-champlain_view_add_line (ChamplainView *view,
- ChamplainLine *line)
+champlain_view_add_polygon (ChamplainView *view,
+ ChamplainPolygon *polygon)
{
g_return_if_fail (CHAMPLAIN_IS_VIEW (view));
- g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+ g_return_if_fail (CHAMPLAIN_IS_POLYGON (polygon));
- view->priv->lines = g_list_append (view->priv->lines, g_object_ref (line));
+ view->priv->polygons = g_list_append (view->priv->polygons, g_object_ref (polygon));
}
/**
- * champlain_view_remove_line:
+ * champlain_view_remove_polygon:
* @view: a #ChamplainView
- * @line: a #ChamplainLine
+ * @polygon: a #ChamplainPolygon
*
- * Removes a #ChamplainLine to the #ChamplainView
+ * Removes a #ChamplainPolygon to the #ChamplainView
*
* Since: 0.4
*/
void
-champlain_view_remove_line (ChamplainView *view,
- ChamplainLine *line)
+champlain_view_remove_polygon (ChamplainView *view,
+ ChamplainPolygon *polygon)
{
g_return_if_fail (CHAMPLAIN_IS_VIEW (view));
- g_return_if_fail (CHAMPLAIN_IS_LINE (line));
+ g_return_if_fail (CHAMPLAIN_IS_POLYGON (polygon));
- view->priv->lines = g_list_remove (view->priv->lines, line);
- g_object_unref (line);
+ view->priv->polygons = g_list_remove (view->priv->polygons, polygon);
+ g_object_unref (polygon);
}
#include <champlain/champlain-defines.h>
#include <champlain/champlain-base-marker.h>
#include <champlain/champlain-layer.h>
-#include <champlain/champlain-line.h>
+#include <champlain/champlain-polygon.h>
#include <champlain/champlain-map-source.h>
#include <champlain/champlain-zoom-level.h>
gboolean champlain_view_get_show_license (ChamplainView *view);
gboolean champlain_view_get_zoom_on_double_click (ChamplainView *view);
-void champlain_view_add_line (ChamplainView *view,
- ChamplainLine *line);
-void champlain_view_remove_line (ChamplainView *view,
- ChamplainLine *line);
+void champlain_view_add_polygon (ChamplainView *view,
+ ChamplainPolygon *polygon);
+void champlain_view_remove_polygon (ChamplainView *view,
+ ChamplainPolygon *polygon);
G_END_DECLS
-noinst_PROGRAMS = launcher animated-marker lines
+noinst_PROGRAMS = launcher animated-marker polygons
INCLUDES = -I$(top_srcdir)
animated_marker_SOURCES = animated-marker.c
animated_marker_LDADD = $(DEPS_LIBS) ../champlain/libchamplain-0.3.la
-lines_SOURCES = lines.c
-lines_LDADD = $(DEPS_LIBS) ../champlain/libchamplain-0.3.la
+polygons_SOURCES = polygons.c
+polygons_LDADD = $(DEPS_LIBS) ../champlain/libchamplain-0.3.la
if ENABLE_GTK
noinst_PROGRAMS += launcher-gtk
char *argv[])
{
ClutterActor* actor, *stage, *buttons, *button;
- ChamplainLine *line;
+ ChamplainPolygon *polygon;
guint width, total_width = 0;;
g_thread_init (NULL);
clutter_container_add_actor (CLUTTER_CONTAINER (stage), buttons);
/* draw a line */
- line = champlain_line_new ();
+ polygon = champlain_polygon_new ();
/* Cheap approx of Highway 10 */
- champlain_line_add_point (line, 45.4095, -73.3197);
- champlain_line_add_point (line, 45.4104, -73.2846);
- champlain_line_add_point (line, 45.4178, -73.2239);
- champlain_line_add_point (line, 45.4176, -73.2181);
- champlain_line_add_point (line, 45.4151, -73.2126);
- champlain_line_add_point (line, 45.4016, -73.1926);
- champlain_line_add_point (line, 45.3994, -73.1877);
- champlain_line_add_point (line, 45.4000, -73.1815);
- champlain_line_add_point (line, 45.4151, -73.1218);
- champlain_line_set_stroke_width (line, 5.0);
- champlain_view_add_line (CHAMPLAIN_VIEW (actor), line);
+ champlain_polygon_add_point (polygon, 45.4095, -73.3197);
+ champlain_polygon_add_point (polygon, 45.4104, -73.2846);
+ champlain_polygon_add_point (polygon, 45.4178, -73.2239);
+ champlain_polygon_add_point (polygon, 45.4176, -73.2181);
+ champlain_polygon_add_point (polygon, 45.4151, -73.2126);
+ champlain_polygon_add_point (polygon, 45.4016, -73.1926);
+ champlain_polygon_add_point (polygon, 45.3994, -73.1877);
+ champlain_polygon_add_point (polygon, 45.4000, -73.1815);
+ champlain_polygon_add_point (polygon, 45.4151, -73.1218);
+ champlain_polygon_set_stroke_width (polygon, 5.0);
+ champlain_view_add_polygon (CHAMPLAIN_VIEW (actor), polygon);
/* draw a polygon */
- line = champlain_line_new ();
- champlain_line_add_point (line, 45.1386, -73.9196);
- champlain_line_add_point (line, 45.1229, -73.8991);
- champlain_line_add_point (line, 45.0946, -73.9531);
- champlain_line_add_point (line, 45.1085, -73.9714);
- champlain_line_add_point (line, 45.1104, -73.9761);
- champlain_view_add_line (CHAMPLAIN_VIEW (actor), line);
- g_object_set (line, "closed-path", TRUE, NULL);
- g_object_set (line, "fill", TRUE, NULL);
+ polygon = champlain_polygon_new ();
+ champlain_polygon_add_point (polygon, 45.1386, -73.9196);
+ champlain_polygon_add_point (polygon, 45.1229, -73.8991);
+ champlain_polygon_add_point (polygon, 45.0946, -73.9531);
+ champlain_polygon_add_point (polygon, 45.1085, -73.9714);
+ champlain_polygon_add_point (polygon, 45.1104, -73.9761);
+ champlain_view_add_polygon (CHAMPLAIN_VIEW (actor), polygon);
+ g_object_set (polygon, "closed-path", TRUE, NULL);
+ g_object_set (polygon, "fill", TRUE, NULL);
/* Finish initialising the map view */
g_object_set (G_OBJECT (actor), "zoom-level", 9,
"scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC, NULL);
- champlain_view_center_on(CHAMPLAIN_VIEW(actor), 45.466, -73.75);
+ champlain_view_center_on (CHAMPLAIN_VIEW (actor), 45.466, -73.75);
clutter_actor_show (stage);
clutter_main ();