From bb75b9251ef804a398650febda7d155589500921 Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Wed, 3 Feb 2010 12:10:54 +0000 Subject: [PATCH] Split gis-object.{c,h} -> gis-{object,marker,callback}.{c,h} --- src/gis-opengl.c | 5 +++- src/gis-util.h | 2 ++ src/gis.h | 9 ++++-- src/objects/Makefile.am | 6 ++-- src/objects/gis-callback.c | 32 +++++++++++++++++++++ src/objects/gis-callback.h | 47 ++++++++++++++++++++++++++++++ src/objects/gis-marker.c | 59 ++++++++++++++++++++++++++++++++++++++ src/objects/gis-marker.h | 48 +++++++++++++++++++++++++++++++ src/objects/gis-object.c | 59 +------------------------------------- src/objects/gis-object.h | 48 ------------------------------- src/objects/gis-tile.c | 4 +-- src/objects/gis-tile.h | 1 + 12 files changed, 206 insertions(+), 114 deletions(-) create mode 100644 src/objects/gis-callback.c create mode 100644 src/objects/gis-callback.h create mode 100644 src/objects/gis-marker.c create mode 100644 src/objects/gis-marker.h diff --git a/src/gis-opengl.c b/src/gis-opengl.c index f420e75..f0b89f0 100644 --- a/src/gis-opengl.c +++ b/src/gis-opengl.c @@ -30,9 +30,12 @@ #include "gis-opengl.h" #include "gis-util.h" -#include "gis-object.h" #include "roam.h" +#include "gis-object.h" +#include "gis-marker.h" +#include "gis-callback.h" + #define FOV_DIST 2000.0 #define MPPX(dist) (4*dist/FOV_DIST) diff --git a/src/gis-util.h b/src/gis-util.h index b2457b0..3bc4d66 100644 --- a/src/gis-util.h +++ b/src/gis-util.h @@ -18,6 +18,8 @@ #ifndef __GIS_UTIL_H__ #define __GIS_UTIL_H__ +#include + #define EARTH_R (6371000) #define EARTH_C (2*G_PI*EARTH_R) #define NORTH 90 diff --git a/src/gis.h b/src/gis.h index fdc083e..462abbf 100644 --- a/src/gis.h +++ b/src/gis.h @@ -22,10 +22,15 @@ #include "gis-viewer.h" #include "gis-opengl.h" #include "gis-prefs.h" - -/* GIS helprs */ #include "gis-util.h" + +/* GIS objects */ +#include "gis-object.h" #include "gis-tile.h" +#include "gis-marker.h" +#include "gis-callback.h" + +/* GIS data */ #include "gis-wms.h" #include "gis-data.h" diff --git a/src/objects/Makefile.am b/src/objects/Makefile.am index eb7fe21..9cf5b6a 100644 --- a/src/objects/Makefile.am +++ b/src/objects/Makefile.am @@ -8,8 +8,10 @@ gis_include_HEADERS = \ noinst_LTLIBRARIES = libgis-objects.la libgis_objects_la_SOURCES = \ - gis-object.c gis-object.h \ - gis-tile.c gis-tile.h + gis-object.c gis-object.h \ + gis-marker.c gis-marker.h \ + gis-callback.c gis-callback.h \ + gis-tile.c gis-tile.h libgis_objects_la_LDFLAGS = -static MAINTAINERCLEANFILES = Makefile.in diff --git a/src/objects/gis-callback.c b/src/objects/gis-callback.c new file mode 100644 index 0000000..b739159 --- /dev/null +++ b/src/objects/gis-callback.c @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2009-2010 Andy Spencer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include "gis-callback.h" + +/* 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_object_new(GIS_TYPE_CALLBACK, NULL); + self->callback = callback; + self->user_data = user_data; + return self; +} diff --git a/src/objects/gis-callback.h b/src/objects/gis-callback.h new file mode 100644 index 0000000..8677fa6 --- /dev/null +++ b/src/objects/gis-callback.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2009-2010 Andy Spencer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __GIS_CALLBACK_H__ +#define __GIS_CALLBACK_H__ + +#include +#include +#include "gis-object.h" + +/* GisCallback */ +#define GIS_TYPE_CALLBACK (gis_callback_get_type()) + +GOBJECT_HEAD( + GIS, CALLBACK, + Gis, Callback, + gis, callback); + +typedef gpointer (*GisCallbackFunc)(GisCallback *callback, gpointer user_data); + +struct _GisCallback { + GisObject parent; + GisCallbackFunc callback; + gpointer user_data; +}; + +struct _GisCallbackClass { + GisObjectClass parent_class; +}; + +GisCallback *gis_callback_new(GisCallbackFunc callback, gpointer user_data); + +#endif diff --git a/src/objects/gis-marker.c b/src/objects/gis-marker.c new file mode 100644 index 0000000..0033080 --- /dev/null +++ b/src/objects/gis-marker.c @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2009-2010 Andy Spencer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include "gis-marker.h" + +/* 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_object_new(GIS_TYPE_MARKER, NULL); + self->xoff = RADIUS; + self->yoff = HEIGHT-RADIUS; + self->label = g_strdup(label); + self->cairo = cairo_create(cairo_image_surface_create( + CAIRO_FORMAT_ARGB32, WIDTH, HEIGHT)); + cairo_set_source_rgba(self->cairo, 1, 1, 1, 1); + cairo_arc(self->cairo, self->xoff, self->yoff, RADIUS, 0, 2*G_PI); + cairo_fill(self->cairo); + cairo_move_to(self->cairo, self->xoff+4, self->yoff-8); + cairo_set_font_size(self->cairo, 10); + cairo_show_text(self->cairo, self->label); + return 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); + g_free(self); +} diff --git a/src/objects/gis-marker.h b/src/objects/gis-marker.h new file mode 100644 index 0000000..c712759 --- /dev/null +++ b/src/objects/gis-marker.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2009-2010 Andy Spencer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __GIS_MARKER_H__ +#define __GIS_MARKER_H__ + +#include +#include +#include +#include "gis-object.h" + +/* GisMarker */ +#define GIS_TYPE_MARKER (gis_marker_get_type()) + +GOBJECT_HEAD( + GIS, MARKER, + Gis, Marker, + gis, marker); + +struct _GisMarker { + GisObject parent_instance; + gint xoff, yoff; + gchar *label; + cairo_t *cairo; + guint tex; +}; + +struct _GisMarkerClass { + GisObjectClass parent_class; +}; + +GisMarker *gis_marker_new(const gchar *label); + +#endif diff --git a/src/objects/gis-object.c b/src/objects/gis-object.c index fe51eb1..b869337 100644 --- a/src/objects/gis-object.c +++ b/src/objects/gis-object.c @@ -15,9 +15,7 @@ * along with this program. If not, see . */ -#include -#include - +#include #include "gis-object.h" /* GisPoint */ @@ -43,58 +41,3 @@ void gis_point_free(GisPoint *self) 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_object_new(GIS_TYPE_MARKER, NULL); - self->xoff = RADIUS; - self->yoff = HEIGHT-RADIUS; - self->label = g_strdup(label); - self->cairo = cairo_create(cairo_image_surface_create( - CAIRO_FORMAT_ARGB32, WIDTH, HEIGHT)); - cairo_set_source_rgba(self->cairo, 1, 1, 1, 1); - cairo_arc(self->cairo, self->xoff, self->yoff, RADIUS, 0, 2*G_PI); - cairo_fill(self->cairo); - cairo_move_to(self->cairo, self->xoff+4, self->yoff-8); - cairo_set_font_size(self->cairo, 10); - cairo_show_text(self->cairo, self->label); - return 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); - g_free(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_object_new(GIS_TYPE_CALLBACK, NULL); - self->callback = callback; - self->user_data = user_data; - return self; -} diff --git a/src/objects/gis-object.h b/src/objects/gis-object.h index acc4255..baf21db 100644 --- a/src/objects/gis-object.h +++ b/src/objects/gis-object.h @@ -20,8 +20,6 @@ #include #include -#include - /* Take that GLib boilerplate! */ #define GOBJECT_HEAD( \ @@ -97,50 +95,4 @@ static inline GisPoint *gis_object_center(GisObject *object) return &GIS_OBJECT(object)->center; } - -/* GisMarker */ -#define GIS_TYPE_MARKER (gis_marker_get_type()) - -GOBJECT_HEAD( - GIS, MARKER, - Gis, Marker, - gis, marker); - -struct _GisMarker { - GisObject parent_instance; - gint xoff, yoff; - gchar *label; - cairo_t *cairo; - guint tex; -}; - -struct _GisMarkerClass { - GisObjectClass parent_class; -}; - -GisMarker *gis_marker_new(const gchar *label); - - -/* GisCallback */ -#define GIS_TYPE_CALLBACK (gis_callback_get_type()) - -GOBJECT_HEAD( - GIS, CALLBACK, - Gis, Callback, - gis, callback); - -typedef gpointer (*GisCallbackFunc)(GisCallback *callback, gpointer user_data); - -struct _GisCallback { - GisObject parent; - GisCallbackFunc callback; - gpointer user_data; -}; - -struct _GisCallbackClass { - GisObjectClass parent_class; -}; - -GisCallback *gis_callback_new(GisCallbackFunc callback, gpointer user_data); - #endif diff --git a/src/objects/gis-tile.c b/src/objects/gis-tile.c index cf3f857..d11af4f 100644 --- a/src/objects/gis-tile.c +++ b/src/objects/gis-tile.c @@ -16,10 +16,8 @@ */ #include -#include - -#include "gis-tile.h" #include "gis-util.h" +#include "gis-tile.h" gchar *gis_tile_path_table[2][2] = { {"00.", "01."}, diff --git a/src/objects/gis-tile.h b/src/objects/gis-tile.h index b7e9123..698c0c4 100644 --- a/src/objects/gis-tile.h +++ b/src/objects/gis-tile.h @@ -19,6 +19,7 @@ #define __GIS_TILE_H__ #include +#include #include "gis-object.h" #define GIS_TYPE_TILE (gis_tile_get_type()) -- 2.43.2