mirror of
https://github.com/Ryujinx/GtkSharp.git
synced 2024-09-09 00:13:20 +02:00
2002-08-17 Duncan Mak <duncan@ximian.com>
* glue/canvas-proxy.c: * glue/canvas-proxy.h: New files. Glue for subclassing CanvasItem from C#. * glue/canvas-proxy-marshal.c: * glue/canvas-proxy-marshal.h: * glue/canvas-proxy-marshal.list: Added to handle marshaling signals used by CanvasProxy. svn path=/trunk/gtk-sharp/; revision=6682
This commit is contained in:
parent
64addd90b9
commit
40dd8134e3
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
2002-08-17 Duncan Mak <duncan@ximian.com>
|
||||
|
||||
* glue/canvas-proxy.c:
|
||||
* glue/canvas-proxy.h: New files. Glue for subclassing CanvasItem
|
||||
from C#.
|
||||
|
||||
* glue/canvas-proxy-marshal.c:
|
||||
* glue/canvas-proxy-marshal.h:
|
||||
* glue/canvas-proxy-marshal.list: Added to handle marshaling
|
||||
signals used by CanvasProxy.
|
||||
|
||||
2002-08-15 Mike Kestner <mkestner@speakeasy.net>
|
||||
|
||||
* sample/Makefile.in : add some art-sharp refs
|
||||
|
@ -12,7 +12,9 @@ BASESOURCES = \
|
||||
paned.c \
|
||||
style.c \
|
||||
type.c \
|
||||
widget.c
|
||||
widget.c \
|
||||
canvas-proxy.c \
|
||||
canvas-proxy.h
|
||||
|
||||
GNOMESOURCES = \
|
||||
canvasitem.c \
|
||||
|
225
glue/canvas-proxy-marshal.c
Normal file
225
glue/canvas-proxy-marshal.c
Normal file
@ -0,0 +1,225 @@
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
|
||||
#define g_marshal_value_peek_char(v) g_value_get_char (v)
|
||||
#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
|
||||
#define g_marshal_value_peek_int(v) g_value_get_int (v)
|
||||
#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
|
||||
#define g_marshal_value_peek_long(v) g_value_get_long (v)
|
||||
#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
|
||||
#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
|
||||
#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
|
||||
#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
|
||||
#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
|
||||
#define g_marshal_value_peek_float(v) g_value_get_float (v)
|
||||
#define g_marshal_value_peek_double(v) g_value_get_double (v)
|
||||
#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
|
||||
#define g_marshal_value_peek_param(v) g_value_get_param (v)
|
||||
#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
|
||||
#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
|
||||
#define g_marshal_value_peek_object(v) g_value_get_object (v)
|
||||
#else /* !G_ENABLE_DEBUG */
|
||||
/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
|
||||
* Do not access GValues directly in your code. Instead, use the
|
||||
* g_value_get_*() functions
|
||||
*/
|
||||
#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
|
||||
#define g_marshal_value_peek_char(v) (v)->data[0].v_int
|
||||
#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
|
||||
#define g_marshal_value_peek_int(v) (v)->data[0].v_int
|
||||
#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
|
||||
#define g_marshal_value_peek_long(v) (v)->data[0].v_long
|
||||
#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
|
||||
#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
|
||||
#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
|
||||
#define g_marshal_value_peek_enum(v) (v)->data[0].v_int
|
||||
#define g_marshal_value_peek_flags(v) (v)->data[0].v_uint
|
||||
#define g_marshal_value_peek_float(v) (v)->data[0].v_float
|
||||
#define g_marshal_value_peek_double(v) (v)->data[0].v_double
|
||||
#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
|
||||
#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
|
||||
#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
|
||||
#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
|
||||
#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
|
||||
#endif /* !G_ENABLE_DEBUG */
|
||||
|
||||
|
||||
/* VOID:OBJECT,DOUBLE,POINTER,INT (canvas-proxy-marshal.list:1) */
|
||||
void
|
||||
g_cclosure_user_marshal_VOID__OBJECT_DOUBLE_POINTER_INT (GClosure *closure,
|
||||
GValue *return_value,
|
||||
guint n_param_values,
|
||||
const GValue *param_values,
|
||||
gpointer invocation_hint,
|
||||
gpointer marshal_data)
|
||||
{
|
||||
typedef void (*GMarshalFunc_VOID__OBJECT_DOUBLE_POINTER_INT) (gpointer data1,
|
||||
gpointer arg_1,
|
||||
gdouble arg_2,
|
||||
gpointer arg_3,
|
||||
gint arg_4,
|
||||
gpointer data2);
|
||||
register GMarshalFunc_VOID__OBJECT_DOUBLE_POINTER_INT callback;
|
||||
register GCClosure *cc = (GCClosure*) closure;
|
||||
register gpointer data1, data2;
|
||||
|
||||
g_return_if_fail (n_param_values == 5);
|
||||
|
||||
if (G_CCLOSURE_SWAP_DATA (closure))
|
||||
{
|
||||
data1 = closure->data;
|
||||
data2 = g_value_peek_pointer (param_values + 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
data1 = g_value_peek_pointer (param_values + 0);
|
||||
data2 = closure->data;
|
||||
}
|
||||
callback = (GMarshalFunc_VOID__OBJECT_DOUBLE_POINTER_INT) (marshal_data ? marshal_data : cc->callback);
|
||||
|
||||
callback (data1,
|
||||
g_marshal_value_peek_object (param_values + 1),
|
||||
g_marshal_value_peek_double (param_values + 2),
|
||||
g_marshal_value_peek_pointer (param_values + 3),
|
||||
g_marshal_value_peek_int (param_values + 4),
|
||||
data2);
|
||||
}
|
||||
|
||||
/* DOUBLE:OBJECT,DOUBLE,DOUBLE,INT,INT,POINTER (canvas-proxy-marshal.list:2) */
|
||||
void
|
||||
g_cclosure_user_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE_INT_INT_POINTER (GClosure *closure,
|
||||
GValue *return_value,
|
||||
guint n_param_values,
|
||||
const GValue *param_values,
|
||||
gpointer invocation_hint,
|
||||
gpointer marshal_data)
|
||||
{
|
||||
typedef gdouble (*GMarshalFunc_DOUBLE__OBJECT_DOUBLE_DOUBLE_INT_INT_POINTER) (gpointer data1,
|
||||
gpointer arg_1,
|
||||
gdouble arg_2,
|
||||
gdouble arg_3,
|
||||
gint arg_4,
|
||||
gint arg_5,
|
||||
gpointer arg_6,
|
||||
gpointer data2);
|
||||
register GMarshalFunc_DOUBLE__OBJECT_DOUBLE_DOUBLE_INT_INT_POINTER callback;
|
||||
register GCClosure *cc = (GCClosure*) closure;
|
||||
register gpointer data1, data2;
|
||||
gdouble v_return;
|
||||
|
||||
g_return_if_fail (return_value != NULL);
|
||||
g_return_if_fail (n_param_values == 7);
|
||||
|
||||
if (G_CCLOSURE_SWAP_DATA (closure))
|
||||
{
|
||||
data1 = closure->data;
|
||||
data2 = g_value_peek_pointer (param_values + 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
data1 = g_value_peek_pointer (param_values + 0);
|
||||
data2 = closure->data;
|
||||
}
|
||||
callback = (GMarshalFunc_DOUBLE__OBJECT_DOUBLE_DOUBLE_INT_INT_POINTER) (marshal_data ? marshal_data : cc->callback);
|
||||
|
||||
v_return = callback (data1,
|
||||
g_marshal_value_peek_object (param_values + 1),
|
||||
g_marshal_value_peek_double (param_values + 2),
|
||||
g_marshal_value_peek_double (param_values + 3),
|
||||
g_marshal_value_peek_int (param_values + 4),
|
||||
g_marshal_value_peek_int (param_values + 5),
|
||||
g_marshal_value_peek_pointer (param_values + 6),
|
||||
data2);
|
||||
|
||||
g_value_set_double (return_value, v_return);
|
||||
}
|
||||
|
||||
/* VOID:OBJECT,POINTER,POINTER,POINTER,POINTER (canvas-proxy-marshal.list:3) */
|
||||
void
|
||||
g_cclosure_user_marshal_VOID__OBJECT_POINTER_POINTER_POINTER_POINTER (GClosure *closure,
|
||||
GValue *return_value,
|
||||
guint n_param_values,
|
||||
const GValue *param_values,
|
||||
gpointer invocation_hint,
|
||||
gpointer marshal_data)
|
||||
{
|
||||
typedef void (*GMarshalFunc_VOID__OBJECT_POINTER_POINTER_POINTER_POINTER) (gpointer data1,
|
||||
gpointer arg_1,
|
||||
gpointer arg_2,
|
||||
gpointer arg_3,
|
||||
gpointer arg_4,
|
||||
gpointer arg_5,
|
||||
gpointer data2);
|
||||
register GMarshalFunc_VOID__OBJECT_POINTER_POINTER_POINTER_POINTER callback;
|
||||
register GCClosure *cc = (GCClosure*) closure;
|
||||
register gpointer data1, data2;
|
||||
|
||||
g_return_if_fail (n_param_values == 6);
|
||||
|
||||
if (G_CCLOSURE_SWAP_DATA (closure))
|
||||
{
|
||||
data1 = closure->data;
|
||||
data2 = g_value_peek_pointer (param_values + 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
data1 = g_value_peek_pointer (param_values + 0);
|
||||
data2 = closure->data;
|
||||
}
|
||||
callback = (GMarshalFunc_VOID__OBJECT_POINTER_POINTER_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback);
|
||||
|
||||
callback (data1,
|
||||
g_marshal_value_peek_object (param_values + 1),
|
||||
g_marshal_value_peek_pointer (param_values + 2),
|
||||
g_marshal_value_peek_pointer (param_values + 3),
|
||||
g_marshal_value_peek_pointer (param_values + 4),
|
||||
g_marshal_value_peek_pointer (param_values + 5),
|
||||
data2);
|
||||
}
|
||||
|
||||
/* VOID:OBJECT,INT,INT,INT,INT (canvas-proxy-marshal.list:4) */
|
||||
void
|
||||
g_cclosure_user_marshal_VOID__OBJECT_INT_INT_INT_INT (GClosure *closure,
|
||||
GValue *return_value,
|
||||
guint n_param_values,
|
||||
const GValue *param_values,
|
||||
gpointer invocation_hint,
|
||||
gpointer marshal_data)
|
||||
{
|
||||
typedef void (*GMarshalFunc_VOID__OBJECT_INT_INT_INT_INT) (gpointer data1,
|
||||
gpointer arg_1,
|
||||
gint arg_2,
|
||||
gint arg_3,
|
||||
gint arg_4,
|
||||
gint arg_5,
|
||||
gpointer data2);
|
||||
register GMarshalFunc_VOID__OBJECT_INT_INT_INT_INT callback;
|
||||
register GCClosure *cc = (GCClosure*) closure;
|
||||
register gpointer data1, data2;
|
||||
|
||||
g_return_if_fail (n_param_values == 6);
|
||||
|
||||
if (G_CCLOSURE_SWAP_DATA (closure))
|
||||
{
|
||||
data1 = closure->data;
|
||||
data2 = g_value_peek_pointer (param_values + 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
data1 = g_value_peek_pointer (param_values + 0);
|
||||
data2 = closure->data;
|
||||
}
|
||||
callback = (GMarshalFunc_VOID__OBJECT_INT_INT_INT_INT) (marshal_data ? marshal_data : cc->callback);
|
||||
|
||||
callback (data1,
|
||||
g_marshal_value_peek_object (param_values + 1),
|
||||
g_marshal_value_peek_int (param_values + 2),
|
||||
g_marshal_value_peek_int (param_values + 3),
|
||||
g_marshal_value_peek_int (param_values + 4),
|
||||
g_marshal_value_peek_int (param_values + 5),
|
||||
data2);
|
||||
}
|
||||
|
44
glue/canvas-proxy-marshal.h
Normal file
44
glue/canvas-proxy-marshal.h
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
#ifndef __g_cclosure_user_marshal_MARSHAL_H__
|
||||
#define __g_cclosure_user_marshal_MARSHAL_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/* VOID:OBJECT,DOUBLE,POINTER,INT (canvas-proxy-marshal.list:1) */
|
||||
extern void g_cclosure_user_marshal_VOID__OBJECT_DOUBLE_POINTER_INT (GClosure *closure,
|
||||
GValue *return_value,
|
||||
guint n_param_values,
|
||||
const GValue *param_values,
|
||||
gpointer invocation_hint,
|
||||
gpointer marshal_data);
|
||||
|
||||
/* DOUBLE:OBJECT,DOUBLE,DOUBLE,INT,INT,POINTER (canvas-proxy-marshal.list:2) */
|
||||
extern void g_cclosure_user_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE_INT_INT_POINTER (GClosure *closure,
|
||||
GValue *return_value,
|
||||
guint n_param_values,
|
||||
const GValue *param_values,
|
||||
gpointer invocation_hint,
|
||||
gpointer marshal_data);
|
||||
|
||||
/* VOID:OBJECT,POINTER,POINTER,POINTER,POINTER (canvas-proxy-marshal.list:3) */
|
||||
extern void g_cclosure_user_marshal_VOID__OBJECT_POINTER_POINTER_POINTER_POINTER (GClosure *closure,
|
||||
GValue *return_value,
|
||||
guint n_param_values,
|
||||
const GValue *param_values,
|
||||
gpointer invocation_hint,
|
||||
gpointer marshal_data);
|
||||
|
||||
/* VOID:OBJECT,INT,INT,INT,INT (canvas-proxy-marshal.list:4) */
|
||||
extern void g_cclosure_user_marshal_VOID__OBJECT_INT_INT_INT_INT (GClosure *closure,
|
||||
GValue *return_value,
|
||||
guint n_param_values,
|
||||
const GValue *param_values,
|
||||
gpointer invocation_hint,
|
||||
gpointer marshal_data);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __g_cclosure_user_marshal_MARSHAL_H__ */
|
||||
|
4
glue/canvas-proxy-marshal.list
Normal file
4
glue/canvas-proxy-marshal.list
Normal file
@ -0,0 +1,4 @@
|
||||
VOID:OBJECT,DOUBLE,POINTER,INT
|
||||
DOUBLE:OBJECT,DOUBLE,DOUBLE,INT,INT,POINTER
|
||||
VOID:OBJECT,POINTER,POINTER,POINTER,POINTER
|
||||
VOID:OBJECT,INT,INT,INT,INT
|
133
glue/canvas-proxy.c
Normal file
133
glue/canvas-proxy.c
Normal file
@ -0,0 +1,133 @@
|
||||
/*
|
||||
* canvasproxy.c - glue functions for creating C# CanvasItems
|
||||
*
|
||||
* Author: Duncan Mak (duncan@ximian.com)
|
||||
*
|
||||
* Copyright (C), 2002. Ximian, Inc.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <gtk/gtkobject.h>
|
||||
|
||||
#include "canvas-proxy.h"
|
||||
#include "canvas-proxy-marshal.h"
|
||||
|
||||
enum {
|
||||
UPDATE,
|
||||
REALIZE,
|
||||
UNREALIZE,
|
||||
MAP,
|
||||
UNMAP,
|
||||
COVERAGE,
|
||||
DRAW,
|
||||
RENDER,
|
||||
POINT,
|
||||
BOUNDS,
|
||||
LAST_SIGNAL,
|
||||
};
|
||||
|
||||
static GnomeCanvasItemClass *parent_class;
|
||||
|
||||
static guint proxy_signals [LAST_SIGNAL];
|
||||
|
||||
/* Class initialization */
|
||||
static void
|
||||
gtksharp_canvas_proxy_class_init (CanvasProxyClass *class)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GtkObjectClass *object_class;
|
||||
GnomeCanvasItemClass *item_class;
|
||||
|
||||
gobject_class = (GObjectClass *) class;
|
||||
object_class = (GtkObjectClass *) class;
|
||||
item_class = (GnomeCanvasItemClass *) class;
|
||||
|
||||
parent_class = g_type_class_peek_parent (class);
|
||||
|
||||
/* void (* update) (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags); */
|
||||
proxy_signals [UPDATE] = g_signal_new ("update",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GnomeCanvasItemClass, update),
|
||||
NULL, NULL,
|
||||
g_cclosure_user_marshal_VOID__OBJECT_DOUBLE_POINTER_INT,
|
||||
G_TYPE_NONE, 3, G_TYPE_DOUBLE,
|
||||
G_TYPE_POINTER, G_TYPE_INT);
|
||||
|
||||
/* void (* realize) (GnomeCanvasItem *item); */
|
||||
proxy_signals [REALIZE] = g_signal_new ("realize",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GnomeCanvasItemClass, realize),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
/* void (* unrealize) (GnomeCanvasItem *item); */
|
||||
proxy_signals [UNREALIZE] = g_signal_new ("unrealize",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GnomeCanvasItemClass, unrealize),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
/* void (* map) (GnomeCanvasItem *item); */
|
||||
proxy_signals [MAP] = g_signal_new ("map",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GnomeCanvasItemClass, map),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
/* void (* unmap) (GnomeCanvasItem *item); */
|
||||
proxy_signals [UNMAP] = g_signal_new ("unmap",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GnomeCanvasItemClass, unmap),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
/* void (* draw) (GnomeCanvasItem *item, GdkDrawable *drawable, */
|
||||
/* int x, int y, int width, int height); */
|
||||
proxy_signals [DRAW] = g_signal_new ("draw",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GnomeCanvasItemClass, draw),
|
||||
NULL, NULL,
|
||||
g_cclosure_user_marshal_VOID__OBJECT_INT_INT_INT_INT,
|
||||
G_TYPE_NONE, 5, GDK_TYPE_DRAWABLE,
|
||||
G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
||||
|
||||
/* void (* render) (GnomeCanvasItem *item, GnomeCanvasBuf *buf); */
|
||||
proxy_signals [RENDER] = g_signal_new ("render",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GnomeCanvasItemClass, render),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__POINTER,
|
||||
G_TYPE_NONE, 1, G_TYPE_POINTER);
|
||||
|
||||
/* double (* point) (GnomeCanvasItem *item, double x, double y, int cx, int cy, */
|
||||
/* GnomeCanvasItem **actual_item); */
|
||||
proxy_signals [POINT] = g_signal_new ("point",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GnomeCanvasItemClass, point),
|
||||
NULL, NULL,
|
||||
g_cclosure_user_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE_INT_INT_POINTER,
|
||||
G_TYPE_DOUBLE, 5, G_TYPE_DOUBLE, G_TYPE_DOUBLE,
|
||||
G_TYPE_INT, G_TYPE_INT, G_TYPE_POINTER);
|
||||
|
||||
/* void (* bounds) (GnomeCanvasItem *item, double *x1, double *y1, double *x2, double *y2); */
|
||||
proxy_signals [BOUNDS] = g_signal_new ("bounds",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GnomeCanvasItemClass, bounds),
|
||||
NULL, NULL,
|
||||
g_cclosure_user_marshal_VOID__OBJECT_POINTER_POINTER_POINTER_POINTER,
|
||||
G_TYPE_NONE, 4, G_TYPE_POINTER, G_TYPE_POINTER,
|
||||
G_TYPE_POINTER, G_TYPE_POINTER);
|
||||
}
|
30
glue/canvas-proxy.h
Normal file
30
glue/canvas-proxy.h
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* canvasproxy.h
|
||||
*
|
||||
* Author: Duncan Mak (duncan@ximian.com)
|
||||
*
|
||||
* Copyright (C), 2002. Ximian, Inc.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CANVAS_PROXY_H
|
||||
#define CANVAS_PROXY_H
|
||||
|
||||
#include <libgnomecanvas/gnome-canvas.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
typedef struct _CanvasProxy CanvasProxy;
|
||||
typedef struct _CanvasProxyClass CanvasProxyClass;
|
||||
|
||||
struct _CanvasProxy {
|
||||
GnomeCanvasItem item;
|
||||
};
|
||||
|
||||
struct _CanvasProxyClass {
|
||||
GnomeCanvasItemClass parent;
|
||||
};
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user