add VU and IEC meter DSP (from jmeters)
[ardour.git] / gtk2_ardour / streamview.h
index 795fe0f68713cccf1daec8412c3d887297d6742f..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,9 +73,8 @@ 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 ();
@@ -80,7 +82,6 @@ public:
        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 {
@@ -118,11 +119,15 @@ 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;