#include "champlain-perl.h"


MODULE = Champlain::Polygon  PACKAGE = Champlain::Polygon  PREFIX = champlain_polygon_


ChamplainPolygon*
champlain_polygon_new (class)
	C_ARGS: /* No args */


ChamplainPoint*
champlain_polygon_append_point (ChamplainPolygon *polygon, gdouble lat, gdouble lon)


ChamplainPoint*
champlain_polygon_insert_point (ChamplainPolygon *polygon, gdouble lat, gdouble lon, gint pos)


void
champlain_polygon_clear_points (ChamplainPolygon *polygon)


void
champlain_polygon_get_points (ChamplainPolygon *polygon)
	PREINIT:
		GList *item = NULL;
	
	PPCODE:
		item = champlain_polygon_get_points(polygon);

		if (!item) {
			XSRETURN_EMPTY;
		}

		for (; item != NULL; item = item->next) {
			ChamplainPoint *point = CHAMPLAIN_POINT(item->data);
			XPUSHs(sv_2mortal(newSVChamplainPoint(point)));
		}
		
		/* The doc says that the list shouldn't be freed! */


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)


void
champlain_polygon_show (ChamplainPolygon *polygon)


void
champlain_polygon_hide (ChamplainPolygon *polygon)


void
champlain_polygon_remove_point (ChamplainPolygon *self, ChamplainPoint *point)


void
champlain_polygon_set_mark_points (ChamplainPolygon *polygon, gboolean value)


gboolean
champlain_polygon_get_mark_points (ChamplainPolygon *polygon)