G_DEFINE_TYPE(GtkCompass, gtk_compass, GTK_TYPE_WIDGET);
#define BOUND(x, a, b) { \
- if((x) < (a)) \
- (x) = (a); \
- else if((x) > (b)) \
- (x) = (b); \
+ if((x) < (a)) \
+ (x) = (a); \
+ else if((x) > (b)) \
+ (x) = (b); \
}
+typedef struct _GtkCompassPriv GtkCompassPriv;
+
+struct _GtkCompassPriv
+{
+PangoContext *context;
+PangoLayout *layout;
+PangoFontDescription *fontdesc;
+};
+
+#define GTK_COMPASS_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_COMPASS, GtkCompassPriv))
+
static void
gtk_compass_class_init (GtkCompassClass *class)
{
widget_class->expose_event = gtk_compass_expose;
widget_class->realize = gtk_compass_realize;
widget_class->size_allocate = gtk_compass_size_allocate;
+
+g_type_class_add_private (object_class, sizeof (GtkCompassPriv));
}
static void
hsize=0;
#endif
-fs=size/42;
+fs=size/41;
BOUND(fs, 1, 16);
pango_context_set_matrix (compass->context, NULL);
-g_snprintf(htext, 8, "%3.0f°", compass->heading);
+g_snprintf(htext, 8, "%3.0f°", compass->data->heading);
pango_font_description_set_size(compass->fontdesc, (10+fs) * PANGO_SCALE);
pango_layout_set_font_description(compass->layout, compass->fontdesc);
pango_layout_set_text(compass->layout, htext, -1);