Speed up AFL/PFL changes for large sessions
[ardour.git] / gtk2_ardour / canvas-waveview.h
index 75281f69ebb5d80752e000361e0e445c29dc388d..daa907e11047519a7e3f2dc31c12b4addd146d54 100644 (file)
@@ -55,36 +55,43 @@ 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 ();
+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*,double);
-    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. */
     double samples_per_unit;
-    
+
     /** 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.
      *
@@ -99,8 +106,14 @@ struct _GnomeCanvasWaveView
     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
@@ -112,6 +125,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;