X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fcanvas-simpleline.c;h=b65693a54806cc1dcb16d7e90cd976e8a00213b8;hb=e22a48723ed192d54045ba91d4012f4cab1f276f;hp=22e968edd5b361d75d8d513e1e1507a18859a4eb;hpb=0c8284ca6a83312cd5794485519fc278eb4472aa;p=ardour.git diff --git a/gtk2_ardour/canvas-simpleline.c b/gtk2_ardour/canvas-simpleline.c index 22e968edd5..b65693a548 100644 --- a/gtk2_ardour/canvas-simpleline.c +++ b/gtk2_ardour/canvas-simpleline.c @@ -16,10 +16,14 @@ enum { PROP_COLOR_RGBA }; -static void gnome_canvas_simpleline_class_init (GnomeCanvasSimpleLineClass *class); -static void gnome_canvas_simpleline_init (GnomeCanvasSimpleLine *simpleline); +static void gnome_canvas_simpleline_class_init (GnomeCanvasSimpleLineClass *class); + +static void gnome_canvas_simpleline_init (GnomeCanvasSimpleLine *simpleline); + +static void gnome_canvas_simpleline_destroy (GtkObject *object); + static void gnome_canvas_simpleline_set_property (GObject *object, - guint prop_id, + guint prop_id, const GValue *value, GParamSpec *pspec); static void gnome_canvas_simpleline_get_property (GObject *object, @@ -27,33 +31,58 @@ static void gnome_canvas_simpleline_get_property (GObject *object, GValue *value, GParamSpec *pspec); -static void gnome_canvas_simpleline_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags); -static void gnome_canvas_simpleline_bounds (GnomeCanvasItem *item, double *x1, double *y1, double *x2, double *y2); -static double gnome_canvas_simpleline_point (GnomeCanvasItem *item, double x, double y, int cx, int cy, GnomeCanvasItem **actual_item); -static void gnome_canvas_simpleline_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf); -static void gnome_canvas_simpleline_draw (GnomeCanvasItem *item, GdkDrawable *drawable, int x, int y, int w, int h); +static void gnome_canvas_simpleline_update (GnomeCanvasItem *item, + double *affine, + ArtSVP *clip_path, + int flags); + +static void gnome_canvas_simpleline_bounds (GnomeCanvasItem *item, + double *x1, + double *y1, + double *x2, + double *y2); + +static double gnome_canvas_simpleline_point (GnomeCanvasItem *item, + double x, + double y, + int cx, + int cy, + GnomeCanvasItem **actual_item); + +static void gnome_canvas_simpleline_render (GnomeCanvasItem *item, + GnomeCanvasBuf *buf); + +static void gnome_canvas_simpleline_draw (GnomeCanvasItem *item, + GdkDrawable *drawable, + int x, + int y, + int w, + int h); static GnomeCanvasItemClass *parent_class; -GtkType +GType gnome_canvas_simpleline_get_type (void) { - static GtkType simpleline_type = 0; + static GType simpleline_type; if (!simpleline_type) { - GtkTypeInfo simpleline_info = { - "GnomeCanvasSimpleLine", - sizeof (GnomeCanvasSimpleLine), + static const GTypeInfo object_info = { sizeof (GnomeCanvasSimpleLineClass), - (GtkClassInitFunc) gnome_canvas_simpleline_class_init, - (GtkObjectInitFunc) gnome_canvas_simpleline_init, - NULL, /* reserved_1 */ - NULL, /* reserved_2 */ - (GtkClassInitFunc) NULL + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) gnome_canvas_simpleline_class_init, + (GClassFinalizeFunc) NULL, + NULL, /* class_data */ + sizeof (GnomeCanvasSimpleLine), + 0, /* n_preallocs */ + (GInstanceInitFunc) gnome_canvas_simpleline_init, + NULL /* value_table */ }; - simpleline_type = gtk_type_unique (gnome_canvas_item_get_type (), &simpleline_info); + simpleline_type = g_type_register_static (GNOME_TYPE_CANVAS_ITEM, "GnomeCanvasSimpleLine", + &object_info, 0); } return simpleline_type; @@ -62,18 +91,20 @@ gnome_canvas_simpleline_get_type (void) static void gnome_canvas_simpleline_class_init (GnomeCanvasSimpleLineClass *class) { - GObjectClass *object_class; + GObjectClass *gobject_class; + GtkObjectClass *object_class; GnomeCanvasItemClass *item_class; - object_class = G_OBJECT_CLASS (class); + gobject_class = (GObjectClass *) class; + object_class = (GtkObjectClass *) class; item_class = (GnomeCanvasItemClass *) class; - parent_class = gtk_type_class (gnome_canvas_item_get_type ()); + parent_class = g_type_class_peek_parent (class); - object_class->set_property = gnome_canvas_simpleline_set_property; - object_class->get_property = gnome_canvas_simpleline_get_property; + gobject_class->set_property = gnome_canvas_simpleline_set_property; + gobject_class->get_property = gnome_canvas_simpleline_get_property; - g_object_class_install_property (object_class, + g_object_class_install_property (gobject_class, PROP_X1, g_param_spec_double ("x1", _("x1"), @@ -83,7 +114,7 @@ gnome_canvas_simpleline_class_init (GnomeCanvasSimpleLineClass *class) 0.0, G_PARAM_READWRITE)); - g_object_class_install_property (object_class, + g_object_class_install_property (gobject_class, PROP_Y1, g_param_spec_double ("y1", _("y1"), @@ -94,7 +125,7 @@ gnome_canvas_simpleline_class_init (GnomeCanvasSimpleLineClass *class) G_PARAM_READWRITE)); - g_object_class_install_property (object_class, + g_object_class_install_property (gobject_class, PROP_X2, g_param_spec_double ("x2", _("x2"), @@ -104,7 +135,7 @@ gnome_canvas_simpleline_class_init (GnomeCanvasSimpleLineClass *class) 0.0, G_PARAM_READWRITE)); - g_object_class_install_property (object_class, + g_object_class_install_property (gobject_class, PROP_Y2, g_param_spec_double ("y2", _("y2"), @@ -113,7 +144,7 @@ gnome_canvas_simpleline_class_init (GnomeCanvasSimpleLineClass *class) G_MAXDOUBLE, 0.0, G_PARAM_READWRITE)); - g_object_class_install_property (object_class, + g_object_class_install_property (gobject_class, PROP_COLOR_RGBA, g_param_spec_uint ("color_rgba", _("color rgba"), @@ -123,6 +154,8 @@ gnome_canvas_simpleline_class_init (GnomeCanvasSimpleLineClass *class) 0, G_PARAM_READWRITE)); + object_class->destroy = gnome_canvas_simpleline_destroy; + item_class->update = gnome_canvas_simpleline_update; item_class->bounds = gnome_canvas_simpleline_bounds; item_class->point = gnome_canvas_simpleline_point; @@ -139,8 +172,20 @@ gnome_canvas_simpleline_init (GnomeCanvasSimpleLine *simpleline) simpleline->y2 = 0.0; simpleline->color = RGBA_TO_UINT(98,123,174,241); simpleline->horizontal = TRUE; /* reset in the _update() method */ - // GTK2FIX - // GNOME_CANVAS_ITEM(simpleline)->object.flags |= GNOME_CANVAS_ITEM_NO_AUTO_REDRAW; +} + +static void +gnome_canvas_simpleline_destroy (GtkObject *object) +{ + GnomeCanvasSimpleLine *line; + + g_return_if_fail (object != NULL); + g_return_if_fail (GNOME_IS_CANVAS_SIMPLELINE (object)); + + line = GNOME_CANVAS_SIMPLELINE (object); + + if (GTK_OBJECT_CLASS (parent_class)->destroy) + (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } static void @@ -203,6 +248,9 @@ gnome_canvas_simpleline_set_property (GObject *object, int update = FALSE; int bounds_changed = FALSE; + g_return_if_fail (object != NULL); + g_return_if_fail (GNOME_IS_CANVAS_SIMPLELINE (object)); + simpleline = GNOME_CANVAS_SIMPLELINE (object); switch (prop_id) { @@ -237,6 +285,7 @@ gnome_canvas_simpleline_set_property (GObject *object, case PROP_COLOR_RGBA: if (simpleline->color != g_value_get_uint(value)) { simpleline->color = g_value_get_uint(value); + UINT_TO_RGBA (simpleline->color, &simpleline->r, &simpleline->g, &simpleline->b, &simpleline->a); update = TRUE; } break; @@ -255,8 +304,11 @@ gnome_canvas_simpleline_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - GnomeCanvasSimpleLine *line = GNOME_CANVAS_SIMPLELINE (object); + g_return_if_fail (object != NULL); + g_return_if_fail (GNOME_IS_CANVAS_SIMPLELINE (object)); + GnomeCanvasSimpleLine *line = GNOME_CANVAS_SIMPLELINE (object); + switch (prop_id) { case PROP_X1: g_value_set_double (value, line->x1); @@ -324,8 +376,8 @@ gnome_canvas_simpleline_render (GnomeCanvasItem *item, buf->is_bg = FALSE; } - // begin = MAX(simpleline->bbox_ulx,buf->rect.x0); - // end = MIN(simpleline->bbox_lrx,buf->rect.x1); + //begin = MAX(simpleline->bbox_ulx,buf->rect.x0); + //end = MIN(simpleline->bbox_lrx,buf->rect.x1); begin = simpleline->bbox_ulx; end = simpleline->bbox_lrx; @@ -335,7 +387,7 @@ gnome_canvas_simpleline_render (GnomeCanvasItem *item, PAINT_HORIZA(buf, simpleline->r, simpleline->g, simpleline->b, simpleline->a, begin, end, simpleline->bbox_uly); } else { - PAINT_VERTA(buf, simpleline->r, simpleline->g, simpleline->b, simpleline->a, + PAINT_VERTA(buf, simpleline->r, simpleline->g, simpleline->b, simpleline->a, begin, simpleline->bbox_uly, simpleline->bbox_lry); } }