Merge branch 'master' into cairocanvas
[ardour.git] / gtk2_ardour / automation_region_view.h
index fc152f67965d01ea05125dea1bad20f60d9e8a83..571a80709a3149d246bb339d6697191fa5c95832 100644 (file)
@@ -1,6 +1,6 @@
 /*
-    Copyright (C) 2007 Paul Davis 
-    Author: Dave Robillard
+    Copyright (C) 2007 Paul Davis
+    Author: David Robillard
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 #ifndef __gtk_ardour_automation_region_view_h__
 #define __gtk_ardour_automation_region_view_h__
 
-#include <ardour/diskstream.h>
-#include <ardour/types.h>
+#include "ardour/types.h"
 
 #include "region_view.h"
 #include "automation_time_axis.h"
 #include "automation_line.h"
 #include "enums.h"
-#include "canvas.h"
 
 namespace ARDOUR {
        class AutomationList;
+       class Parameter;
 };
 
-class AutomationTimeAxisView;
+class TimeAxisView;
 
 class AutomationRegionView : public RegionView
 {
@@ -41,22 +40,38 @@ public:
        AutomationRegionView(ArdourCanvas::Group*,
                             AutomationTimeAxisView&,
                             boost::shared_ptr<ARDOUR::Region>,
+                            const Evoral::Parameter& parameter,
                             boost::shared_ptr<ARDOUR::AutomationList>,
-                            double initial_samples_per_unit,
-                            Gdk::Color& basic_color);
+                            double initial_samples_per_pixel,
+                            Gdk::Color const & basic_color);
+
+       ~AutomationRegionView();
+
+       void init (Gdk::Color const & basic_color, bool wfd);
+
+       inline AutomationTimeAxisView* automation_view() const
+               { return dynamic_cast<AutomationTimeAxisView*>(&trackview); }
+
+       boost::shared_ptr<AutomationLine> line() { return _line; }
 
-       ~AutomationRegionView() {}
-       
        // We are a ghost.  Meta ghosts?  Crazy talk.
-       virtual GhostRegion* add_ghost(AutomationTimeAxisView&) { return NULL; }
+       virtual GhostRegion* add_ghost(TimeAxisView&) { return NULL; }
+
+       void set_height (double);
+       void reset_width_dependent_items(double pixel_width);
 
 protected:
-       void set_y_position_and_height (double y, double h);
-       void entered();
+       void create_line(boost::shared_ptr<ARDOUR::AutomationList> list);
+       bool set_position(framepos_t pos, void* src, double* ignored);
+       void region_resized (const PBD::PropertyChange&);
+       bool canvas_event(GdkEvent* ev);
+       void add_automation_event (GdkEvent* event, framepos_t when, double y);
+       void entered (bool);
        void exited();
 
 private:
-       AutomationLine _line;
+       Evoral::Parameter                 _parameter;
+       boost::shared_ptr<AutomationLine> _line;
 };
 
 #endif /* __gtk_ardour_automation_region_view_h__ */