X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fcanvas-waveview.h;h=f04a4b38c2e4acb0867652642221c484cba8c3c3;hb=6ee23029a338951705c589be6c61ab52099758b6;hp=f0c74b0fe0ab525a619309c0be733962845c4a70;hpb=14d43ca9fe28a8309b4a52fa85e2b0c64a92248b;p=ardour.git diff --git a/gtk2_ardour/canvas-waveview.h b/gtk2_ardour/canvas-waveview.h index f0c74b0fe0..f04a4b38c2 100644 --- a/gtk2_ardour/canvas-waveview.h +++ b/gtk2_ardour/canvas-waveview.h @@ -26,16 +26,17 @@ #include -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; @@ -54,36 +55,41 @@ struct _GnomeCanvasWaveViewCacheEntry 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 (); void gnome_canvas_waveview_cache_destroy (GnomeCanvasWaveViewCache*); +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. * @@ -91,15 +97,21 @@ struct _GnomeCanvasWaveView * 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 @@ -111,6 +123,8 @@ struct _GnomeCanvasWaveView 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; @@ -120,8 +134,8 @@ struct _GnomeCanvasWaveViewClass { 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__ */