sfdb paths are saved and restored.
[ardour.git] / gtk2_ardour / regionview.h
index 0ce154747fd81d62897c527e775d1897a52a695b..f49b46aea4373056ab36dde420f4c666fea48748 100644 (file)
@@ -23,7 +23,7 @@
 
 #include <vector>
 
-#include <libgnomecanvasmm/libgnomecanvasmm.h>
+#include <libgnomecanvasmm.h>
 #include <libgnomecanvasmm/polygon.h>
 #include <sigc++/signal.h>
 #include <ardour/region.h>
@@ -33,6 +33,7 @@
 #include "enums.h"
 #include "waveview.h"
 #include "canvas.h"
+#include "color.h"
 
 namespace ARDOUR {
        class AudioRegion;
@@ -52,16 +53,16 @@ class AudioRegionView : public TimeAxisViewItem
                         AudioTimeAxisView&,
                         ARDOUR::AudioRegion&,
                         double initial_samples_per_unit,
-                        double amplitude_above_axis,
-                        Gdk::Color& base_color,
-                        bool wait_for_waves);
+                        Gdk::Color& basic_color);
+
        ~AudioRegionView ();
        
+       virtual void init (double amplitude_above_axis, Gdk::Color& base_color, bool wait_for_waves);
+    
     ARDOUR::AudioRegion& region;  // ok, let 'em have it
     bool is_valid() const { return valid; }
     void set_valid (bool yn) { valid = yn; }
 
-    std::string get_item_name();
     void set_height (double);
     void set_samples_per_unit (double);
     bool set_duration (jack_nframes_t, void*);
@@ -115,7 +116,20 @@ class AudioRegionView : public TimeAxisViewItem
     virtual void entered ();
     virtual void exited ();
 
-  private:
+  protected:
+
+    /* this constructor allows derived types
+       to specify their visibility requirements
+       to the TimeAxisViewItem parent class
+    */
+    
+    AudioRegionView (ArdourCanvas::Group *, 
+                    AudioTimeAxisView&,
+                    ARDOUR::AudioRegion&,
+                    double initial_samples_per_unit,
+                    Gdk::Color& basic_color,
+                    TimeAxisViewItem::Visibility);
+    
     enum Flags {
            EnvelopeVisible = 0x1,
            WaveformVisible = 0x4,
@@ -146,6 +160,7 @@ class AudioRegionView : public TimeAxisViewItem
     double _height;
     bool    in_destructor;
     bool    wait_for_waves;
+    sigc::connection peaks_ready_connection;
 
     void reset_fade_shapes ();
     void reset_fade_in_shape ();
@@ -178,12 +193,14 @@ class AudioRegionView : public TimeAxisViewItem
 
     void set_colors ();
     void compute_colors (Gdk::Color&);
-    void set_frame_color ();
+    virtual void set_frame_color ();
     void reset_width_dependent_items (double pixel_width);
     void set_waveview_data_src();
 
     vector<GnomeCanvasWaveViewCache*> wave_caches;
     vector<GhostRegion*> ghosts;
+    
+    void color_handler (ColorID, uint32_t);
 };
 
 #endif /* __gtk_ardour_region_view_h__ */