add VU and IEC meter DSP (from jmeters)
[ardour.git] / gtk2_ardour / streamview.h
index 3268519534194eb9530455bdc4f129b72880f562..c54d5dea70c47b59f6df13d88275b6ce569413b3 100644 (file)
 
 #include "ardour/location.h"
 #include "enums.h"
-#include "simplerect.h"
-#include "canvas.h"
 
 namespace Gdk {
        class Color;
 }
 
 namespace ARDOUR {
-       class Route;
        class Crossfade;
-       class PeakData;
        class Region;
+       class Route;
        class Source;
        class Track;
+       struct PeakData;
+}
+
+namespace ArdourCanvas {
+       class Rectangle;
+       class Group;
 }
 
 struct RecBoxInfo {
-       ArdourCanvas::SimpleRect*  rectangle;
+       ArdourCanvas::Rectangle*   rectangle;
        framepos_t                 start;
        ARDOUR::framecnt_t         length;
 };
@@ -70,17 +73,15 @@ public:
        int set_position (gdouble x, gdouble y);
        virtual int set_height (double);
 
-       virtual int set_samples_per_unit (gdouble spp);
-       gdouble     get_samples_per_unit () { return _samples_per_unit; }
-       virtual void horizontal_position_changed () {}
+       virtual int set_samples_per_pixel (double);
+       gdouble     get_samples_per_pixel () const { return _samples_per_pixel; }
 
-        virtual void enter_internal_edit_mode () {}
-        virtual void leave_internal_edit_mode () {}
+        virtual void enter_internal_edit_mode ();
+        virtual void leave_internal_edit_mode ();
 
        void set_layer_display (LayerDisplay);
        LayerDisplay layer_display () const { return _layer_display; }
 
-       ArdourCanvas::Group* background_group() { return _background_group; }
        ArdourCanvas::Group* canvas_item() { return _canvas_group; }
 
        enum ColorTarget {
@@ -89,7 +90,7 @@ public:
        };
 
        Gdk::Color get_region_color () const { return region_color; }
-       void       apply_color (Gdk::Color&, ColorTarget t);
+       void       apply_color (Gdk::Color, ColorTarget t);
 
        uint32_t     num_selected_regionviews () const;
 
@@ -117,12 +118,16 @@ public:
        }
 
        void check_record_layers (boost::shared_ptr<ARDOUR::Region>, ARDOUR::framepos_t);
+
+       virtual void playlist_layered (boost::weak_ptr<ARDOUR::Track>);
        
        sigc::signal<void, RegionView*> RegionViewAdded;
        sigc::signal<void> RegionViewRemoved;
+       /** Emitted when the height of regions has changed */
+       sigc::signal<void> ContentsHeightChanged;
 
 protected:
-       StreamView (RouteTimeAxisView&, ArdourCanvas::Group* background_group = 0, ArdourCanvas::Group* canvas_group = 0);
+       StreamView (RouteTimeAxisView&);
 
        void         transport_changed();
        void         transport_looped();
@@ -140,22 +145,18 @@ protected:
        void         diskstream_changed ();
        void         layer_regions ();
 
-       virtual void playlist_switched (boost::weak_ptr<ARDOUR::Track>);
-       virtual void playlist_layered (boost::weak_ptr<ARDOUR::Track>);
+       void playlist_switched (boost::weak_ptr<ARDOUR::Track>);
 
        virtual void color_handler () = 0;
 
        RouteTimeAxisView&        _trackview;
-       bool                      owns_background_group;
-       bool                      owns_canvas_group;
-       ArdourCanvas::Group*      _background_group;
        ArdourCanvas::Group*      _canvas_group;
-       ArdourCanvas::SimpleRect* canvas_rect; /* frame around the whole thing */
+       ArdourCanvas::Rectangle*   canvas_rect; /* frame around the whole thing */
 
        typedef std::list<RegionView* > RegionViewList;
        RegionViewList  region_views;
 
-       double _samples_per_unit;
+       double _samples_per_pixel;
 
        sigc::connection       screen_update_connection;
        std::vector<RecBoxInfo>     rec_rects;
@@ -182,7 +183,7 @@ protected:
        */
        framepos_t _new_rec_layer_time;
        void setup_new_rec_layer_time (boost::shared_ptr<ARDOUR::Region>);
-       
+
 private:
        void update_coverage_frames ();
 };