X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fgis-object.c;h=4eca0774ccb8d1ed2c6ba0d2e2c98fe1ac90672f;hp=c70adc424d8421e6b3ee0f12d6d26addeb2c85d7;hb=72ae2b9bd30e518fa1539424ad0d994aa8d8a6de;hpb=ccfdb537f75386aa38db18660f14f0dc41b54ed8 diff --git a/src/gis-object.c b/src/gis-object.c index c70adc4..4eca077 100644 --- a/src/gis-object.c +++ b/src/gis-object.c @@ -40,15 +40,29 @@ void gis_point_free(GisPoint *self) } +/* 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); @@ -63,8 +77,9 @@ GisMarker *gis_marker_new(const gchar *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); @@ -73,16 +88,14 @@ void gis_marker_free(GisMarker *self) /* 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); -}