Canvas GObject fixes

git-svn-id: svn://localhost/trunk/ardour2@118 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Tim Mayberry 2005-11-26 10:28:55 +00:00
parent 0c8284ca6a
commit f59b4c3c09
4 changed files with 177 additions and 78 deletions

View File

@ -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;
@ -143,6 +176,20 @@ gnome_canvas_simpleline_init (GnomeCanvasSimpleLine *simpleline)
// 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_LINE (object));
line = GNOME_CANVAS_SIMPLELINE (object);
if (GTK_OBJECT_CLASS (parent_class)->destroy)
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
static void
gnome_canvas_simpleline_bounds_world (GnomeCanvasItem *item, int* ix1, int* iy1, int* ix2, int* iy2)
{
@ -203,6 +250,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) {
@ -255,8 +305,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);

View File

@ -31,11 +31,12 @@ G_BEGIN_DECLS
/* Wave viewer item for canvas.
*/
#define GNOME_CANVAS_TYPE_CANVAS_SIMPLELINE (gnome_canvas_simpleline_get_type ())
#define GNOME_CANVAS_SIMPLELINE(obj) (GTK_CHECK_CAST ((obj), GNOME_CANVAS_TYPE_CANVAS_SIMPLELINE, GnomeCanvasSimpleLine))
#define GNOME_CANVAS_SIMPLELINE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_CANVAS_TYPE_CANVAS_SIMPLELINE, GnomeCanvasSimpleLineClass))
#define GNOME_CANVAS_IS_CANVAS_SIMPLELINE(obj) (GTK_CHECK_TYPE ((obj), GNOME_CANVAS_TYPE_CANVAS_SIMPLELINE))
#define GNOME_CANVAS_IS_CANVAS_SIMPLELINE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_CANVAS_TYPE_CANVAS_SIMPLELINE))
#define GNOME_TYPE_CANVAS_SIMPLELINE (gnome_canvas_simpleline_get_type ())
#define GNOME_CANVAS_SIMPLELINE(obj) (GTK_CHECK_CAST ((obj), GNOME_TYPE_CANVAS_SIMPLELINE, GnomeCanvasSimpleLine))
#define GNOME_CANVAS_SIMPLELINE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_CANVAS_SIMPLELINE, GnomeCanvasSimpleLineClass))
#define GNOME_IS_CANVAS_SIMPLELINE(obj) (GTK_CHECK_TYPE ((obj), GNOME_TYPE_CANVAS_SIMPLELINE))
#define GNOME_IS_CANVAS_SIMPLELINE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_CANVAS_SIMPLELINE))
#define GNOME_CANVAS_SIMPLELINE_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GNOME_TYPE_CANVAS_SIMPLELINE, GnomeCanvasSimpleLineClass))
typedef struct _GnomeCanvasSimpleLine GnomeCanvasSimpleLine;
typedef struct _GnomeCanvasSimpleLineClass GnomeCanvasSimpleLineClass;
@ -58,7 +59,7 @@ struct _GnomeCanvasSimpleLineClass {
GnomeCanvasItemClass parent_class;
};
GtkType gnome_canvas_simpleline_get_type (void);
GType gnome_canvas_simpleline_get_type (void) G_GNUC_CONST;
G_END_DECLS

View File

@ -22,43 +22,63 @@ enum {
};
static void gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *class);
static void gnome_canvas_simplerect_init (GnomeCanvasSimpleRect *simplerect);
static void gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *class);
static void gnome_canvas_simplerect_init (GnomeCanvasSimpleRect *simplerect);
static void gnome_canvas_simplerect_destroy (GtkObject *object);
static void gnome_canvas_simplerect_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void gnome_canvas_simplerect_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void gnome_canvas_simplerect_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags);
static void gnome_canvas_simplerect_bounds (GnomeCanvasItem *item, double *x1, double *y1, double *x2, double *y2);
static double gnome_canvas_simplerect_point (GnomeCanvasItem *item, double x, double y, int cx, int cy, GnomeCanvasItem **actual_item);
static void gnome_canvas_simplerect_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf);
static void gnome_canvas_simplerect_draw (GnomeCanvasItem *item, GdkDrawable *drawable, int x, int y, int w, int h);
static void gnome_canvas_simplerect_update (GnomeCanvasItem *item,
double *affine,
ArtSVP *clip_path,
int flags);
static void gnome_canvas_simplerect_bounds (GnomeCanvasItem *item,
double *x1,
double *y1,
double *x2,
double *y2);
static double gnome_canvas_simplerect_point (GnomeCanvasItem *item, double x, double y, int cx, int cy, GnomeCanvasItem **actual_item);
static void gnome_canvas_simplerect_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf);
static void gnome_canvas_simplerect_draw (GnomeCanvasItem *item, GdkDrawable *drawable, int x, int y, int w, int h);
static GnomeCanvasItemClass *parent_class;
GtkType
GType
gnome_canvas_simplerect_get_type (void)
{
static GtkType simplerect_type = 0;
static GType simplerect_type;
if (!simplerect_type) {
GtkTypeInfo simplerect_info = {
"GnomeCanvasSimpleRect",
sizeof (GnomeCanvasSimpleRect),
static const GTypeInfo object_info = {
sizeof (GnomeCanvasSimpleRectClass),
(GtkClassInitFunc) gnome_canvas_simplerect_class_init,
(GtkObjectInitFunc) gnome_canvas_simplerect_init,
NULL, /* reserved_1 */
NULL, /* reserved_2 */
(GtkClassInitFunc) NULL
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) gnome_canvas_simplerect_class_init,
(GClassFinalizeFunc) NULL,
NULL, /* class_data */
sizeof (GnomeCanvasSimpleRect),
0, /* n_preallocs */
(GInstanceInitFunc) gnome_canvas_simplerect_init,
NULL /* value_table */
};
simplerect_type = gtk_type_unique (gnome_canvas_item_get_type (), &simplerect_info);
simplerect_type = g_type_register_static (GNOME_TYPE_CANVAS_ITEM, "GnomeCanvasSimpleRect",
&object_info, 0);
}
return simplerect_type;
@ -67,18 +87,18 @@ gnome_canvas_simplerect_get_type (void)
static void
gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *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 ());
object_class->set_property = gnome_canvas_simplerect_set_property;
object_class->get_property = gnome_canvas_simplerect_get_property;
gobject_class->set_property = gnome_canvas_simplerect_set_property;
gobject_class->get_property = gnome_canvas_simplerect_get_property;
g_object_class_install_property (object_class,
g_object_class_install_property (gobject_class,
PROP_X1,
g_param_spec_double ("x1",
_("x1"),
@ -88,7 +108,7 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *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"),
@ -99,7 +119,7 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *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"),
@ -109,7 +129,7 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *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"),
@ -120,7 +140,7 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *class)
G_PARAM_READWRITE));
g_object_class_install_property (object_class,
g_object_class_install_property (gobject_class,
PROP_OUTLINE_PIXELS,
g_param_spec_uint ("outline_pixels",
_("outline pixels"),
@ -131,7 +151,7 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *class)
G_PARAM_READWRITE));
g_object_class_install_property (object_class,
g_object_class_install_property (gobject_class,
PROP_OUTLINE_WHAT,
g_param_spec_uint ("outline_what",
_("outline what"),
@ -143,7 +163,7 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *class)
g_object_class_install_property (object_class,
g_object_class_install_property (gobject_class,
PROP_FILL,
g_param_spec_boolean ("fill",
_("fill"),
@ -151,7 +171,7 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *class)
TRUE,
G_PARAM_READWRITE));
g_object_class_install_property (object_class,
g_object_class_install_property (gobject_class,
PROP_DRAW,
g_param_spec_boolean ("draw",
_("draw"),
@ -160,7 +180,7 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *class)
G_PARAM_READWRITE));
g_object_class_install_property (object_class,
g_object_class_install_property (gobject_class,
PROP_OUTLINE_COLOR_RGBA,
g_param_spec_uint ("outline_color_rgba",
_("outline color rgba"),
@ -171,7 +191,7 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *class)
G_PARAM_READWRITE));
g_object_class_install_property (object_class,
g_object_class_install_property (gobject_class,
PROP_FILL_COLOR_RGBA,
g_param_spec_uint ("fill_color_rgba",
_("fill color rgba"),
@ -180,12 +200,15 @@ gnome_canvas_simplerect_class_init (GnomeCanvasSimpleRectClass *class)
G_MAXUINT,
0,
G_PARAM_READWRITE));
object_class->destroy = gnome_canvas_simplerect_destroy;
item_class->update = gnome_canvas_simplerect_update;
item_class->draw = gnome_canvas_simplerect_draw;
item_class->bounds = gnome_canvas_simplerect_bounds;
item_class->point = gnome_canvas_simplerect_point;
item_class->render = gnome_canvas_simplerect_render;
item_class->draw = gnome_canvas_simplerect_draw;
}
static void
@ -207,6 +230,22 @@ gnome_canvas_simplerect_init (GnomeCanvasSimpleRect *simplerect)
// GNOME_CANVAS_ITEM(simplerect)->object.flags |= GNOME_CANVAS_ITEM_NO_AUTO_REDRAW;
}
static void
gnome_canvas_simplerect_destroy (GtkObject *object)
{
GnomeCanvasSimpleRect *rect;
g_return_if_fail (object != NULL);
g_return_if_fail (GNOME_IS_CANVAS_SIMPLERECT (object));
rect = GNOME_CANVAS_SIMPLERECT (object);
/* remember, destroy can be run multiple times! */
if (GTK_OBJECT_CLASS (parent_class)->destroy)
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
static void
gnome_canvas_simplerect_bounds (GnomeCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
{
@ -301,6 +340,8 @@ gnome_canvas_simplerect_set_property (GObject *object,
GnomeCanvasSimpleRect *simplerect;
int update = FALSE;
int bounds_changed = FALSE;
g_return_if_fail (object != NULL);
g_return_if_fail (GNOME_IS_CANVAS_SIMPLERECT (object));
simplerect = GNOME_CANVAS_SIMPLERECT (object);
@ -395,6 +436,9 @@ gnome_canvas_simplerect_get_property (GObject *object,
{
GnomeCanvasSimpleRect *rect = GNOME_CANVAS_SIMPLERECT (object);
g_return_if_fail (object != NULL);
g_return_if_fail (GNOME_IS_CANVAS_SIMPLERECT (object));
switch (prop_id) {
case PROP_X1:
g_value_set_double (value, rect->x1);

View File

@ -31,11 +31,12 @@ G_BEGIN_DECLS
/* Wave viewer item for canvas.
*/
#define GNOME_CANVAS_TYPE_CANVAS_SIMPLERECT (gnome_canvas_simplerect_get_type ())
#define GNOME_CANVAS_SIMPLERECT(obj) (GTK_CHECK_CAST ((obj), GNOME_CANVAS_TYPE_CANVAS_SIMPLERECT, GnomeCanvasSimpleRect))
#define GNOME_CANVAS_SIMPLERECT_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_CANVAS_TYPE_CANVAS_SIMPLERECT, GnomeCanvasSimpleRectClass))
#define GNOME_CANVAS_IS_CANVAS_SIMPLERECT(obj) (GTK_CHECK_TYPE ((obj), GNOME_CANVAS_TYPE_CANVAS_SIMPLERECT))
#define GNOME_CANVAS_IS_CANVAS_SIMPLERECT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_CANVAS_TYPE_CANVAS_SIMPLERECT))
#define GNOME_TYPE_CANVAS_SIMPLERECT (gnome_canvas_simplerect_get_type ())
#define GNOME_CANVAS_SIMPLERECT(obj) (GTK_CHECK_CAST ((obj), GNOME_TYPE_CANVAS_SIMPLERECT, GnomeCanvasSimpleRect))
#define GNOME_CANVAS_SIMPLERECT_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_CANVAS_SIMPLERECT, GnomeCanvasSimpleRectClass))
#define GNOME_IS_CANVAS_SIMPLERECT(obj) (GTK_CHECK_TYPE ((obj), GNOME_TYPE_CANVAS_SIMPLERECT))
#define GNOME_IS_CANVAS_SIMPLERECT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_CANVAS_SIMPLERECT))
#define GNOME_CANVAS_SIMPLERECT_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GNOME_TYPE_CANVAS_SIMPLERECT, GnomeCanvasSimpleRectClass))
typedef struct _GnomeCanvasSimpleRect GnomeCanvasSimpleRect;
typedef struct _GnomeCanvasSimpleRectClass GnomeCanvasSimpleRectClass;
@ -64,7 +65,7 @@ struct _GnomeCanvasSimpleRectClass {
GnomeCanvasItemClass parent_class;
};
GtkType gnome_canvas_simplerect_get_type (void);
GType gnome_canvas_simplerect_get_type (void) G_GNUC_CONST;
G_END_DECLS