Canvas GObject fixes

git-svn-id: svn://localhost/trunk/ardour2@119 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Tim Mayberry 2005-11-26 11:51:19 +00:00
parent f59b4c3c09
commit ebb7b8712e
2 changed files with 323 additions and 156 deletions

View file

@ -30,67 +30,102 @@
#include "rgb_macros.h" #include "rgb_macros.h"
enum { enum {
ARG_0, PROP_0,
ARG_DATA_SRC, PROP_DATA_SRC,
ARG_CHANNEL, PROP_CHANNEL,
ARG_LENGTH_FUNCTION, PROP_LENGTH_FUNCTION,
ARG_PEAK_FUNCTION, PROP_SOURCEFILE_LENGTH_FUNCTION,
ARG_GAIN_FUNCTION, PROP_PEAK_FUNCTION,
ARG_GAIN_SRC, PROP_GAIN_FUNCTION,
ARG_CACHE, PROP_GAIN_SRC,
ARG_CACHE_UPDATER, PROP_CACHE,
ARG_SAMPLES_PER_PIXEL, PROP_CACHE_UPDATER,
ARG_AMPLITUDE_ABOVE_AXIS, PROP_SAMPLES_PER_UNIT,
ARG_X, PROP_AMPLITUDE_ABOVE_AXIS,
ARG_Y, PROP_X,
ARG_HEIGHT, PROP_Y,
ARG_WAVE_COLOR, PROP_HEIGHT,
ARG_RECTIFIED, PROP_WAVE_COLOR,
ARG_SOURCEFILE_LENGTH_FUNCTION, PROP_RECTIFIED,
ARG_REGION_START PROP_REGION_START
}; };
static void gnome_canvas_waveview_class_init (GnomeCanvasWaveViewClass *class); static void gnome_canvas_waveview_class_init (GnomeCanvasWaveViewClass *class);
static void gnome_canvas_waveview_init (GnomeCanvasWaveView *waveview);
static void gnome_canvas_waveview_set_arg (GtkObject *object,
GtkArg *arg,
guint arg_id);
static void gnome_canvas_waveview_get_arg (GtkObject *object,
GtkArg *arg,
guint arg_id);
static void gnome_canvas_waveview_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags); static void gnome_canvas_waveview_init (GnomeCanvasWaveView *waveview);
static void gnome_canvas_waveview_bounds (GnomeCanvasItem *item, double *x1, double *y1, double *x2, double *y2);
static double gnome_canvas_waveview_point (GnomeCanvasItem *item, double x, double y, int cx, int cy, GnomeCanvasItem **actual_item);
static void gnome_canvas_waveview_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf); static void gnome_canvas_waveview_destroy (GtkObject *object);
static void gnome_canvas_waveview_draw (GnomeCanvasItem *item, GdkDrawable *drawable, int x, int y, int w, int h);
static void gnome_canvas_waveview_set_data_src (GnomeCanvasWaveView *, void *); static void gnome_canvas_waveview_set_property (GObject *object,
static void gnome_canvas_waveview_set_channel (GnomeCanvasWaveView *, guint32); guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void gnome_canvas_waveview_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static gint32 gnome_canvas_waveview_ensure_cache (GnomeCanvasWaveView *waveview, gulong start_sample, gulong end_sample); static void gnome_canvas_waveview_update (GnomeCanvasItem *item,
double *affine,
ArtSVP *clip_path,
int flags);
static void gnome_canvas_waveview_bounds (GnomeCanvasItem *item,
double *x1,
double *y1,
double *x2,
double *y2);
static double gnome_canvas_waveview_point (GnomeCanvasItem *item,
double x,
double y,
int cx,
int cy,
GnomeCanvasItem **actual_item);
static void gnome_canvas_waveview_render (GnomeCanvasItem *item,
GnomeCanvasBuf *buf);
static void gnome_canvas_waveview_draw (GnomeCanvasItem *item,
GdkDrawable *drawable,
int x,
int y,
int w,
int h);
static void gnome_canvas_waveview_set_data_src (GnomeCanvasWaveView *,
void *);
static void gnome_canvas_waveview_set_channel (GnomeCanvasWaveView *,
guint32);
static gint32 gnome_canvas_waveview_ensure_cache (GnomeCanvasWaveView *waveview,
gulong start_sample,
gulong end_sample);
static GnomeCanvasItemClass *parent_class; static GnomeCanvasItemClass *parent_class;
GtkType GType
gnome_canvas_waveview_get_type (void) gnome_canvas_waveview_get_type (void)
{ {
static GtkType waveview_type = 0; static GType waveview_type;
if (!waveview_type) { if (!waveview_type) {
GtkTypeInfo waveview_info = { static const GTypeInfo object_info = {
"GnomeCanvasWaveView",
sizeof (GnomeCanvasWaveView),
sizeof (GnomeCanvasWaveViewClass), sizeof (GnomeCanvasWaveViewClass),
(GtkClassInitFunc) gnome_canvas_waveview_class_init, (GBaseInitFunc) NULL,
(GtkObjectInitFunc) gnome_canvas_waveview_init, (GBaseFinalizeFunc) NULL,
NULL, /* reserved_1 */ (GClassInitFunc) gnome_canvas_waveview_class_init,
NULL, /* reserved_2 */ (GClassFinalizeFunc) NULL,
(GtkClassInitFunc) NULL NULL, /* class_data */
sizeof (GnomeCanvasWaveView),
0, /* n_preallocs */
(GInstanceInitFunc) gnome_canvas_waveview_init,
NULL /* value_table */
}; };
waveview_type = gtk_type_unique (gnome_canvas_item_get_type (), &waveview_info); waveview_type = g_type_register_static (GNOME_TYPE_CANVAS_ITEM, "GnomeCanvasWaveView",
&object_info, 0);
} }
return waveview_type; return waveview_type;
@ -99,34 +134,139 @@ gnome_canvas_waveview_get_type (void)
static void static void
gnome_canvas_waveview_class_init (GnomeCanvasWaveViewClass *class) gnome_canvas_waveview_class_init (GnomeCanvasWaveViewClass *class)
{ {
GObjectClass *gobject_class;
GtkObjectClass *object_class; GtkObjectClass *object_class;
GnomeCanvasItemClass *item_class; GnomeCanvasItemClass *item_class;
gobject_class = (GObjectClass *) class;
object_class = (GtkObjectClass *) class; object_class = (GtkObjectClass *) class;
item_class = (GnomeCanvasItemClass *) class; item_class = (GnomeCanvasItemClass *) class;
parent_class = gtk_type_class (gnome_canvas_item_get_type ()); parent_class = g_type_class_peek_parent (class);
gtk_object_add_arg_type ("GnomeCanvasWaveView::data-src", GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_DATA_SRC); gobject_class->set_property = gnome_canvas_waveview_set_property;
gtk_object_add_arg_type ("GnomeCanvasWaveView::channel", GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_CHANNEL); gobject_class->get_property = gnome_canvas_waveview_get_property;
gtk_object_add_arg_type ("GnomeCanvasWaveView::length-function", GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_LENGTH_FUNCTION);
gtk_object_add_arg_type ("GnomeCanvasWaveView::sourcefile-length-function", GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_SOURCEFILE_LENGTH_FUNCTION); g_object_class_install_property
gtk_object_add_arg_type ("GnomeCanvasWaveView::peak-function", GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_PEAK_FUNCTION); (gobject_class,
gtk_object_add_arg_type ("GnomeCanvasWaveView::gain-function", GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_GAIN_FUNCTION); PROP_DATA_SRC,
gtk_object_add_arg_type ("GnomeCanvasWaveView::gain-src", GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_GAIN_SRC); g_param_spec_boxed ("data_src", NULL, NULL,
gtk_object_add_arg_type ("GnomeCanvasWaveView::cache", GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_CACHE); GTK_TYPE_POINTER,
gtk_object_add_arg_type ("GnomeCanvasWaveView::cache-updater", GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_CACHE_UPDATER); (G_PARAM_READABLE | G_PARAM_WRITABLE)));
gtk_object_add_arg_type ("GnomeCanvasWaveView::samples-per-unit", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_SAMPLES_PER_PIXEL);
gtk_object_add_arg_type ("GnomeCanvasWaveView::amplitude_above_axis", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_AMPLITUDE_ABOVE_AXIS); g_object_class_install_property
gtk_object_add_arg_type ("GnomeCanvasWaveView::x", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_X); (gobject_class,
gtk_object_add_arg_type ("GnomeCanvasWaveView::y", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_Y); PROP_CHANNEL,
gtk_object_add_arg_type ("GnomeCanvasWaveView::height", GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_HEIGHT); g_param_spec_uint ("channel", NULL, NULL,
gtk_object_add_arg_type ("GnomeCanvasWaveView::wave-color", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_WAVE_COLOR); 0, G_MAXUINT, 0,
gtk_object_add_arg_type ("GnomeCanvasWaveView::rectified", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_RECTIFIED); (G_PARAM_READABLE | G_PARAM_WRITABLE)));
gtk_object_add_arg_type ("GnomeCanvasWaveView::region-start", GTK_TYPE_UINT, GTK_ARG_READWRITE, ARG_REGION_START);
g_object_class_install_property
(gobject_class,
PROP_LENGTH_FUNCTION,
g_param_spec_boxed ("length_function", NULL, NULL,
GTK_TYPE_POINTER,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_SOURCEFILE_LENGTH_FUNCTION,
g_param_spec_boxed ("sourcefile_length_function", NULL, NULL,
GTK_TYPE_POINTER,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_PEAK_FUNCTION,
g_param_spec_boxed ("peak_function", NULL, NULL,
GTK_TYPE_POINTER,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_GAIN_FUNCTION,
g_param_spec_boxed ("gain_function", NULL, NULL,
GTK_TYPE_POINTER,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_GAIN_SRC,
g_param_spec_boxed ("gain_src", NULL, NULL,
GTK_TYPE_POINTER,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_CACHE,
g_param_spec_boxed ("cache", NULL, NULL,
GTK_TYPE_POINTER,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_CACHE_UPDATER,
g_param_spec_boolean ("cache_updater", NULL, NULL,
FALSE,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_SAMPLES_PER_UNIT,
g_param_spec_double ("sample_per_unit", NULL, NULL,
0.0, G_MAXDOUBLE, 0.0,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
object_class->set_arg = gnome_canvas_waveview_set_arg; g_object_class_install_property
object_class->get_arg = gnome_canvas_waveview_get_arg; (gobject_class,
PROP_AMPLITUDE_ABOVE_AXIS,
g_param_spec_double ("amplitude_above_axis", NULL, NULL,
0.0, G_MAXDOUBLE, 0.0,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_X,
g_param_spec_double ("x", NULL, NULL,
0.0, G_MAXDOUBLE, 0.0,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_Y,
g_param_spec_double ("y", NULL, NULL,
0.0, G_MAXDOUBLE, 0.0,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_HEIGHT,
g_param_spec_double ("height", NULL, NULL,
0.0, G_MAXDOUBLE, 0.0,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_WAVE_COLOR,
g_param_spec_uint ("wave_color", NULL, NULL,
0, G_MAXUINT, 0,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_RECTIFIED,
g_param_spec_boolean ("rectified", NULL, NULL,
FALSE,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
g_object_class_install_property
(gobject_class,
PROP_REGION_START,
g_param_spec_uint ("region_start", NULL, NULL,
0, G_MAXUINT, 0,
(G_PARAM_READABLE | G_PARAM_WRITABLE)));
object_class->destroy = gnome_canvas_waveview_destroy;
item_class->update = gnome_canvas_waveview_update; item_class->update = gnome_canvas_waveview_update;
item_class->bounds = gnome_canvas_waveview_bounds; item_class->bounds = gnome_canvas_waveview_bounds;
@ -186,6 +326,22 @@ gnome_canvas_waveview_init (GnomeCanvasWaveView *waveview)
// GNOME_CANVAS_ITEM(waveview)->object.flags |= GNOME_CANVAS_ITEM_NO_AUTO_REDRAW; // GNOME_CANVAS_ITEM(waveview)->object.flags |= GNOME_CANVAS_ITEM_NO_AUTO_REDRAW;
} }
static void
gnome_canvas_waveview_destroy (GtkObject *object)
{
GnomeCanvasWaveView *waveview;
g_return_if_fail (object != NULL);
g_return_if_fail (GNOME_IS_CANVAS_WAVEVIEW (object));
waveview = GNOME_CANVAS_WAVEVIEW (object);
gnome_canvas_waveview_cache_destroy (waveview->cache);
if (GTK_OBJECT_CLASS (parent_class)->destroy)
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
#define DEBUG_CACHE 0 #define DEBUG_CACHE 0
static gint32 static gint32
@ -493,51 +649,55 @@ gnome_canvas_waveview_reset_bounds (GnomeCanvasItem *item)
*/ */
static void static void
gnome_canvas_waveview_set_arg (GtkObject *object, GtkArg *arg, guint arg_id) gnome_canvas_waveview_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{ {
GnomeCanvasItem *item; GnomeCanvasItem *item;
GnomeCanvasWaveView *waveview; GnomeCanvasWaveView *waveview;
int redraw; int redraw = FALSE;
int calc_bounds; int calc_bounds = FALSE;
g_return_if_fail (object != NULL);
g_return_if_fail (GNOME_IS_CANVAS_WAVEVIEW (object));
item = GNOME_CANVAS_ITEM (object); item = GNOME_CANVAS_ITEM (object);
waveview = GNOME_CANVAS_WAVEVIEW (object); waveview = GNOME_CANVAS_WAVEVIEW (object);
redraw = FALSE; switch (prop_id) {
calc_bounds = FALSE; case PROP_DATA_SRC:
gnome_canvas_waveview_set_data_src (waveview, g_value_get_pointer(value));
switch (arg_id) {
case ARG_DATA_SRC:
gnome_canvas_waveview_set_data_src (waveview, GTK_VALUE_POINTER(*arg));
redraw = TRUE; redraw = TRUE;
break; break;
case ARG_CHANNEL: case PROP_CHANNEL:
gnome_canvas_waveview_set_channel (waveview, GTK_VALUE_UINT(*arg)); gnome_canvas_waveview_set_channel (waveview, g_value_get_uint(value));
redraw = TRUE; redraw = TRUE;
break; break;
case ARG_LENGTH_FUNCTION: case PROP_LENGTH_FUNCTION:
waveview->length_function = GTK_VALUE_POINTER(*arg); waveview->length_function = g_value_get_pointer(value);
redraw = TRUE; redraw = TRUE;
break; break;
case ARG_SOURCEFILE_LENGTH_FUNCTION: case PROP_SOURCEFILE_LENGTH_FUNCTION:
waveview->sourcefile_length_function = GTK_VALUE_POINTER(*arg); waveview->sourcefile_length_function = g_value_get_pointer(value);
redraw = TRUE; redraw = TRUE;
break; break;
case ARG_PEAK_FUNCTION: case PROP_PEAK_FUNCTION:
waveview->peak_function = GTK_VALUE_POINTER(*arg); waveview->peak_function = g_value_get_pointer(value);
redraw = TRUE; redraw = TRUE;
break; break;
case ARG_GAIN_FUNCTION: case PROP_GAIN_FUNCTION:
waveview->gain_curve_function = GTK_VALUE_POINTER(*arg); waveview->gain_curve_function = g_value_get_pointer(value);
redraw = TRUE; redraw = TRUE;
break; break;
case ARG_GAIN_SRC: case PROP_GAIN_SRC:
waveview->gain_src = GTK_VALUE_POINTER(*arg); waveview->gain_src = g_value_get_pointer(value);
if (waveview->cache_updater) { if (waveview->cache_updater) {
waveview->cache->start = 0; waveview->cache->start = 0;
waveview->cache->end = 0; waveview->cache->end = 0;
@ -546,19 +706,19 @@ gnome_canvas_waveview_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
calc_bounds = TRUE; calc_bounds = TRUE;
break; break;
case ARG_CACHE: case PROP_CACHE:
waveview->cache = GTK_VALUE_POINTER(*arg); waveview->cache = g_value_get_pointer(value);
redraw = TRUE; redraw = TRUE;
break; break;
case ARG_CACHE_UPDATER: case PROP_CACHE_UPDATER:
waveview->cache_updater = GTK_VALUE_BOOL(*arg); waveview->cache_updater = g_value_get_boolean(value);
redraw = TRUE; redraw = TRUE;
break; break;
case ARG_SAMPLES_PER_PIXEL: case PROP_SAMPLES_PER_UNIT:
if ((waveview->samples_per_unit = GTK_VALUE_DOUBLE(*arg)) < 1.0) { if ((waveview->samples_per_unit = g_value_get_double(value)) < 1.0) {
waveview->samples_per_unit = 1.0; waveview->samples_per_unit = 1.0;
} }
if (waveview->cache_updater) { if (waveview->cache_updater) {
@ -569,47 +729,47 @@ gnome_canvas_waveview_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
calc_bounds = TRUE; calc_bounds = TRUE;
break; break;
case ARG_AMPLITUDE_ABOVE_AXIS: case PROP_AMPLITUDE_ABOVE_AXIS:
waveview->amplitude_above_axis = GTK_VALUE_DOUBLE(*arg); waveview->amplitude_above_axis = g_value_get_double(value);
redraw = TRUE; redraw = TRUE;
break; break;
case ARG_X: case PROP_X:
if (waveview->x != GTK_VALUE_DOUBLE (*arg)) { if (waveview->x != g_value_get_double (value)) {
waveview->x = GTK_VALUE_DOUBLE (*arg); waveview->x = g_value_get_double (value);
calc_bounds = TRUE; calc_bounds = TRUE;
} }
break; break;
case ARG_Y: case PROP_Y:
if (waveview->y != GTK_VALUE_DOUBLE (*arg)) { if (waveview->y != g_value_get_double (value)) {
waveview->y = GTK_VALUE_DOUBLE (*arg); waveview->y = g_value_get_double (value);
calc_bounds = TRUE; calc_bounds = TRUE;
} }
break; break;
case ARG_HEIGHT: case PROP_HEIGHT:
if (waveview->height != fabs (GTK_VALUE_DOUBLE (*arg))) { if (waveview->height != fabs (g_value_get_double (value))) {
waveview->height = fabs (GTK_VALUE_DOUBLE (*arg)); waveview->height = fabs (g_value_get_double (value));
redraw = TRUE; redraw = TRUE;
} }
break; break;
case ARG_WAVE_COLOR: case PROP_WAVE_COLOR:
if (waveview->wave_color != GTK_VALUE_INT(*arg)) { if (waveview->wave_color != g_value_get_uint(value)) {
waveview->wave_color = GTK_VALUE_INT(*arg); waveview->wave_color = g_value_get_uint(value);
redraw = TRUE; redraw = TRUE;
} }
break; break;
case ARG_RECTIFIED: case PROP_RECTIFIED:
if (waveview->rectified != GTK_VALUE_BOOL(*arg)) { if (waveview->rectified != g_value_get_boolean(value)) {
waveview->rectified = GTK_VALUE_BOOL(*arg); waveview->rectified = g_value_get_boolean(value);
redraw = TRUE; redraw = TRUE;
} }
break; break;
case ARG_REGION_START: case PROP_REGION_START:
waveview->region_start = GTK_VALUE_UINT(*arg); waveview->region_start = g_value_get_uint(value);
redraw = TRUE; redraw = TRUE;
calc_bounds = TRUE; calc_bounds = TRUE;
break; break;
@ -630,80 +790,86 @@ gnome_canvas_waveview_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
} }
static void static void
gnome_canvas_waveview_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) gnome_canvas_waveview_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{ {
GnomeCanvasWaveView *waveview;
g_return_if_fail (object != NULL);
g_return_if_fail (GNOME_IS_CANVAS_WAVEVIEW (object));
waveview = GNOME_CANVAS_WAVEVIEW (object); GnomeCanvasWaveView *waveview = GNOME_CANVAS_WAVEVIEW (object);
switch (arg_id) { switch (prop_id) {
case ARG_DATA_SRC: case PROP_DATA_SRC:
GTK_VALUE_POINTER(*arg) = waveview->data_src; g_value_set_pointer(value, waveview->data_src);
break; break;
case ARG_CHANNEL: case PROP_CHANNEL:
GTK_VALUE_UINT(*arg) = waveview->channel; g_value_set_uint(value, waveview->channel);
break; break;
case ARG_LENGTH_FUNCTION: case PROP_LENGTH_FUNCTION:
GTK_VALUE_POINTER(*arg) = waveview->length_function; g_value_set_pointer(value, waveview->length_function);
break; break;
case ARG_SOURCEFILE_LENGTH_FUNCTION: case PROP_SOURCEFILE_LENGTH_FUNCTION:
GTK_VALUE_POINTER(*arg) = waveview->sourcefile_length_function; g_value_set_pointer(value, waveview->sourcefile_length_function);
break; break;
case ARG_PEAK_FUNCTION: case PROP_PEAK_FUNCTION:
GTK_VALUE_POINTER(*arg) = waveview->peak_function; g_value_set_pointer(value, waveview->peak_function);
break; break;
case ARG_GAIN_FUNCTION: case PROP_GAIN_FUNCTION:
GTK_VALUE_POINTER(*arg) = waveview->gain_curve_function; g_value_set_pointer(value, waveview->gain_curve_function);
break; break;
case ARG_GAIN_SRC: case PROP_GAIN_SRC:
GTK_VALUE_POINTER(*arg) = waveview->gain_src; g_value_set_pointer(value, waveview->gain_src);
break; break;
case ARG_CACHE: case PROP_CACHE:
GTK_VALUE_POINTER(*arg) = waveview->cache; g_value_set_pointer(value, waveview->cache);
break; break;
case ARG_CACHE_UPDATER: case PROP_CACHE_UPDATER:
GTK_VALUE_BOOL(*arg) = waveview->cache_updater; g_value_set_boolean(value, waveview->cache_updater);
break; break;
case ARG_SAMPLES_PER_PIXEL: case PROP_SAMPLES_PER_UNIT:
GTK_VALUE_DOUBLE(*arg) = waveview->samples_per_unit; g_value_set_double(value, waveview->samples_per_unit);
break; break;
case ARG_AMPLITUDE_ABOVE_AXIS: case PROP_AMPLITUDE_ABOVE_AXIS:
GTK_VALUE_DOUBLE(*arg) = waveview->amplitude_above_axis; g_value_set_double(value, waveview->amplitude_above_axis);
break; break;
case ARG_X: case PROP_X:
GTK_VALUE_DOUBLE (*arg) = waveview->x; g_value_set_double (value, waveview->x);
break; break;
case ARG_Y: case PROP_Y:
GTK_VALUE_DOUBLE (*arg) = waveview->y; g_value_set_double (value, waveview->y);
break; break;
case ARG_HEIGHT: case PROP_HEIGHT:
GTK_VALUE_DOUBLE (*arg) = waveview->height; g_value_set_double (value, waveview->height);
break; break;
case ARG_WAVE_COLOR: case PROP_WAVE_COLOR:
GTK_VALUE_INT (*arg) = waveview->wave_color; g_value_set_uint (value, waveview->wave_color);
break; break;
case ARG_RECTIFIED: case PROP_RECTIFIED:
GTK_VALUE_BOOL (*arg) = waveview->rectified; g_value_set_boolean (value, waveview->rectified);
case ARG_REGION_START: case PROP_REGION_START:
GTK_VALUE_UINT (*arg) = waveview->region_start; g_value_set_uint (value, waveview->region_start);
default: default:
arg->type = GTK_TYPE_INVALID; G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
} }
} }

View file

@ -31,11 +31,12 @@ G_BEGIN_DECLS
/* Wave viewer item for canvas. /* Wave viewer item for canvas.
*/ */
#define GNOME_CANVAS_TYPE_CANVAS_WAVEVIEW (gnome_canvas_waveview_get_type ()) #define GNOME_TYPE_CANVAS_WAVEVIEW (gnome_canvas_waveview_get_type ())
#define GNOME_CANVAS_WAVEVIEW(obj) (GTK_CHECK_CAST ((obj), GNOME_CANVAS_TYPE_CANVAS_WAVEVIEW, GnomeCanvasWaveView)) #define GNOME_CANVAS_WAVEVIEW(obj) (GTK_CHECK_CAST ((obj), GNOME_TYPE_CANVAS_WAVEVIEW, GnomeCanvasWaveView))
#define GNOME_CANVAS_WAVEVIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_CANVAS_TYPE_CANVAS_WAVEVIEW, GnomeCanvasWaveViewClass)) #define GNOME_CANVAS_WAVEVIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_CANVAS_WAVEVIEW, GnomeCanvasWaveViewClass))
#define GNOME_CANVAS_IS_CANVAS_WAVEVIEW(obj) (GTK_CHECK_TYPE ((obj), GNOME_CANVAS_TYPE_CANVAS_WAVEVIEW)) #define GNOME_IS_CANVAS_WAVEVIEW(obj) (GTK_CHECK_TYPE ((obj), GNOME_TYPE_CANVAS_WAVEVIEW))
#define GNOME_CANVAS_IS_CANVAS_WAVEVIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_CANVAS_TYPE_CANVAS_WAVEVIEW)) #define GNOME_IS_CANVAS_WAVEVIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_CANVAS_WAVEVIEW))
#define GNOME_CANVAS_WAVEVIEW_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GNOME_TYPE_CANVAS_WAVEVIEW, GnomeCanvasWaveViewClass))
typedef struct _GnomeCanvasWaveView GnomeCanvasWaveView; typedef struct _GnomeCanvasWaveView GnomeCanvasWaveView;
typedef struct _GnomeCanvasWaveViewClass GnomeCanvasWaveViewClass; typedef struct _GnomeCanvasWaveViewClass GnomeCanvasWaveViewClass;
@ -120,7 +121,7 @@ struct _GnomeCanvasWaveViewClass {
GnomeCanvasItemClass parent_class; GnomeCanvasItemClass parent_class;
}; };
GtkType gnome_canvas_waveview_get_type (void); GType gnome_canvas_waveview_get_type (void) G_GNUC_CONST;
G_END_DECLS G_END_DECLS