-/* gtk-canvas-waveview.h: GtkCanvas item for displaying wave data
+/* libgnomecanvas/gnome-canvas-waveview.h: GnomeCanvas item for displaying wave data
*
* Copyright (C) 2001 Paul Davis <pbd@op.net>
*
*
*/
-#ifndef __GTK_CANVAS_WAVEVIEW_H__
-#define __GTK_CANVAS_WAVEVIEW_H__
+#ifndef __GNOME_CANVAS_WAVEVIEW_H__
+#define __GNOME_CANVAS_WAVEVIEW_H__
#include <stdint.h>
-#include <gtk-canvas/gtk-canvas-defs.h>
-#include "gtk-canvas/gtk-canvas.h"
+#include <libgnomecanvas/libgnomecanvas.h>
-BEGIN_GTK_CANVAS_DECLS
+G_BEGIN_DECLS
/* Wave viewer item for canvas.
*/
-#define GTK_CANVAS_TYPE_CANVAS_WAVEVIEW (gtk_canvas_waveview_get_type ())
-#define GTK_CANVAS_WAVEVIEW(obj) (GTK_CHECK_CAST ((obj), GTK_CANVAS_TYPE_CANVAS_WAVEVIEW, GtkCanvasWaveView))
-#define GTK_CANVAS_WAVEVIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_CANVAS_TYPE_CANVAS_WAVEVIEW, GtkCanvasWaveViewClass))
-#define GTK_CANVAS_IS_CANVAS_WAVEVIEW(obj) (GTK_CHECK_TYPE ((obj), GTK_CANVAS_TYPE_CANVAS_WAVEVIEW))
-#define GTK_CANVAS_IS_CANVAS_WAVEVIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_CANVAS_TYPE_CANVAS_WAVEVIEW))
+#define GNOME_TYPE_CANVAS_WAVEVIEW (gnome_canvas_waveview_get_type ())
+#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_TYPE_CANVAS_WAVEVIEW, GnomeCanvasWaveViewClass))
+#define GNOME_IS_CANVAS_WAVEVIEW(obj) (GTK_CHECK_TYPE ((obj), GNOME_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 _GtkCanvasWaveView GtkCanvasWaveView;
-typedef struct _GtkCanvasWaveViewClass GtkCanvasWaveViewClass;
-typedef struct _GtkCanvasWaveViewChannelInfo GtkCanvasWaveViewChannelInfo;
-typedef struct _GtkCanvasWaveViewCacheEntry GtkCanvasWaveViewCacheEntry;
-typedef struct _GtkCanvasWaveViewCache GtkCanvasWaveViewCache;
+typedef struct _GnomeCanvasWaveView GnomeCanvasWaveView;
+typedef struct _GnomeCanvasWaveViewClass GnomeCanvasWaveViewClass;
+typedef struct _GnomeCanvasWaveViewChannelInfo GnomeCanvasWaveViewChannelInfo;
+typedef struct _GnomeCanvasWaveViewCacheEntry GnomeCanvasWaveViewCacheEntry;
+typedef struct _GnomeCanvasWaveViewCache GnomeCanvasWaveViewCache;
/* XXX this needs to be synced with ardour/source.h PeakData */
-struct _GtkCanvasWaveViewCacheEntry
+struct _GnomeCanvasWaveViewCacheEntry
{
float min;
float max;
};
-struct _GtkCanvasWaveViewCache
+struct _GnomeCanvasWaveViewCache
{
- GtkCanvasWaveViewCacheEntry* data;
- gint32 allocated;
- gint32 data_size;
- gulong start;
- gulong end;
-};
+ GnomeCanvasWaveViewCacheEntry* data;
+ guint32 allocated;
+ guint64 data_size;
+ gulong start;
+ gulong end;
+};
+
+GnomeCanvasWaveViewCache* gnome_canvas_waveview_cache_new (void);
+void gnome_canvas_waveview_cache_destroy (GnomeCanvasWaveViewCache*);
-GtkCanvasWaveViewCache* gtk_canvas_waveview_cache_new ();
-void gtk_canvas_waveview_cache_destroy (GtkCanvasWaveViewCache*);
+void gnome_canvas_waveview_set_gradient_waveforms (int);
-struct _GtkCanvasWaveView
+typedef gulong (*waveview_length_function_t)(void*);
+typedef gulong (*waveview_sourcefile_length_function_t)(void*, double);
+typedef void (*waveview_gain_curve_function_t)(void *arg, double start, double end, float* vector, gint64 veclen);
+typedef void (*waveview_peak_function_t)(void*,gulong,gulong,gulong,gpointer,guint32,double);
+
+struct _GnomeCanvasWaveView
{
- GtkCanvasItem item;
-
- GtkCanvasWaveViewCache *cache;
+ GnomeCanvasItem item;
+
+ GnomeCanvasWaveViewCache *cache;
gboolean cache_updater;
gint screen_width;
void *data_src;
guint32 channel;
- void (*peak_function)(void*,gulong,gulong,gulong,gpointer,guint32,double);
- gulong (*length_function)(void *);
- gulong (*sourcefile_length_function)(void*);
- void (*gain_curve_function)(void *arg, double start, double end, float* vector, guint32 veclen);
+ waveview_peak_function_t peak_function;
+ waveview_length_function_t length_function;
+ waveview_sourcefile_length_function_t sourcefile_length_function;
+ waveview_gain_curve_function_t gain_curve_function;
void *gain_src;
- /* x-axis: samples per canvas unit. */
+ /** x-axis: samples per canvas unit. */
double samples_per_unit;
-
- /* y-axis: amplitude_above_axis.
- *
+
+ /** y-axis: amplitude_above_axis.
+ *
* the default is that an (scaled, normalized -1.0 ... +1.0) amplitude of 1.0
* corresponds to the top of the area assigned to the waveview.
*
* smaller values will decrease the vertical scale, moving peaks/troughs toward
* the middle of the area assigned to the waveview.
*/
-
double amplitude_above_axis;
+
double x;
double y;
double height;
double half_height;
uint32_t wave_color;
+ uint32_t clip_color;
+ uint32_t zero_color;
+ uint32_t fill_color;
+ char filled;
char rectified;
+ char zero_line;
+ char logscaled;
/* These are updated by the update() routine
to optimize the render() routine, which may
int32_t bbox_lrx;
int32_t bbox_lry;
unsigned char wave_r, wave_g, wave_b, wave_a;
+ unsigned char clip_r, clip_g, clip_b, clip_a;
+ unsigned char fill_r, fill_g, fill_b, fill_a;
uint32_t samples;
uint32_t region_start;
int32_t reload_cache_in_render;
};
-struct _GtkCanvasWaveViewClass {
- GtkCanvasItemClass parent_class;
+struct _GnomeCanvasWaveViewClass {
+ GnomeCanvasItemClass parent_class;
};
-GtkType gtk_canvas_waveview_get_type (void);
+GType gnome_canvas_waveview_get_type (void) G_GNUC_CONST;
-END_GTK_CANVAS_DECLS
+G_END_DECLS
-#endif /* __GTK_CANVAS_WAVEVIEW_H__ */
+#endif /* __GNOME_CANVAS_WAVEVIEW_H__ */