}
+/* GisObject */
+G_DEFINE_TYPE(GisObject, gis_object, G_TYPE_OBJECT);
+static void gis_object_init(GisObject *self) { }
+static void gis_object_class_init(GisObjectClass *klass) { }
+
+
/* GisMarker */
+G_DEFINE_TYPE(GisMarker, gis_marker, GIS_TYPE_OBJECT);
+static void gis_marker_init(GisMarker *self) { }
+
+static void gis_marker_finalize(GObject *_self);
+static void gis_marker_class_init(GisMarkerClass *klass)
+{
+ G_OBJECT_CLASS(klass)->finalize = gis_marker_finalize;
+}
+
GisMarker *gis_marker_new(const gchar *label)
{
static const int RADIUS = 4;
static const int WIDTH = 100;
static const int HEIGHT = 20;
- GisMarker *self = g_new0(GisMarker, 1);
- GIS_OBJECT(self)->type = GIS_TYPE_MARKER;
+ GisMarker *self = g_object_new(GIS_TYPE_MARKER, NULL);
self->xoff = RADIUS;
self->yoff = HEIGHT-RADIUS;
self->label = g_strdup(label);
return self;
}
-void gis_marker_free(GisMarker *self)
+static void gis_marker_finalize(GObject *_self)
{
+ GisMarker *self = GIS_MARKER(_self);
cairo_surface_destroy(cairo_get_target(self->cairo));
cairo_destroy(self->cairo);
g_free(self->label);
/* GisCallback */
+G_DEFINE_TYPE(GisCallback, gis_callback, GIS_TYPE_OBJECT);
+static void gis_callback_init(GisCallback *self) { }
+static void gis_callback_class_init(GisCallbackClass *klass) { }
+
GisCallback *gis_callback_new(GisCallbackFunc callback, gpointer user_data)
{
- GisCallback *self = g_new0(GisCallback, 1);
- GIS_OBJECT(self)->type = GIS_TYPE_CALLBACK;
+ GisCallback *self = g_object_new(GIS_TYPE_CALLBACK, NULL);
self->callback = callback;
self->user_data = user_data;
return self;
}
-
-void gis_callback_free(GisCallback *self)
-{
- g_free(self);
-}