#include <libgnomecanvas/libgnomecanvas.h>
-BEGIN_GNOME_CANVAS_DECLS
+G_BEGIN_DECLS
/* Wave viewer item for canvas.
*/
-#define GNOME_CANVAS_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_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_CANVAS_TYPE_CANVAS_WAVEVIEW, GnomeCanvasWaveViewClass))
-#define GNOME_CANVAS_IS_CANVAS_WAVEVIEW(obj) (GTK_CHECK_TYPE ((obj), GNOME_CANVAS_TYPE_CANVAS_WAVEVIEW))
-#define GNOME_CANVAS_IS_CANVAS_WAVEVIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_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 _GnomeCanvasWaveView GnomeCanvasWaveView;
typedef struct _GnomeCanvasWaveViewClass GnomeCanvasWaveViewClass;
struct _GnomeCanvasWaveViewCache
{
GnomeCanvasWaveViewCacheEntry* data;
- gint32 allocated;
- gint32 data_size;
- gulong start;
- gulong end;
-};
+ guint32 allocated;
+ guint64 data_size;
+ gulong start;
+ gulong end;
+};
-GnomeCanvasWaveViewCache* gnome_canvas_waveview_cache_new ();
+GnomeCanvasWaveViewCache* gnome_canvas_waveview_cache_new (void);
void gnome_canvas_waveview_cache_destroy (GnomeCanvasWaveViewCache*);
+void gnome_canvas_waveview_set_gradient_waveforms (int);
+
+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
{
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;
GnomeCanvasItemClass parent_class;
};
-GtkType gnome_canvas_waveview_get_type (void);
+GType gnome_canvas_waveview_get_type (void) G_GNUC_CONST;
-END_GNOME_CANVAS_DECLS
+G_END_DECLS
#endif /* __GNOME_CANVAS_WAVEVIEW_H__ */