when dragging on the canvas, use x,y pointer coordinates to decide if motion has...
[ardour.git] / gtk2_ardour / automation_region_view.h
index 885bf2176cbba1badf5e52b7be2abee273d235d7..a41c57c7823b0d861a97741a8d85e5f777fff541 100644 (file)
@@ -37,17 +37,30 @@ class TimeAxisView;
 class AutomationRegionView : public RegionView
 {
 public:
-       AutomationRegionView(ArdourCanvas::Group*,
+       AutomationRegionView(ArdourCanvas::Container*,
                             AutomationTimeAxisView&,
                             boost::shared_ptr<ARDOUR::Region>,
                             const Evoral::Parameter& parameter,
                             boost::shared_ptr<ARDOUR::AutomationList>,
-                            double initial_frames_per_pixel,
-                            Gdk::Color const & basic_color);
+                            double initial_samples_per_pixel,
+                            uint32_t basic_color);
 
        ~AutomationRegionView();
 
-       void init (Gdk::Color const & basic_color, bool wfd);
+       void init (bool wfd);
+
+       bool paste (framepos_t                                      pos,
+                   unsigned                                        paste_count,
+                   float                                           times,
+                   boost::shared_ptr<const ARDOUR::AutomationList> slist);
+
+       ARDOUR::DoubleBeatsFramesConverter const & region_relative_time_converter () const {
+               return _region_relative_time_converter;
+       }
+
+       ARDOUR::DoubleBeatsFramesConverter const & source_relative_time_converter () const {
+               return _source_relative_time_converter;
+       }
 
        inline AutomationTimeAxisView* automation_view() const
                { return dynamic_cast<AutomationTimeAxisView*>(&trackview); }
@@ -55,7 +68,7 @@ public:
        boost::shared_ptr<AutomationLine> line() { return _line; }
 
        // We are a ghost.  Meta ghosts?  Crazy talk.
-       virtual GhostRegion* add_ghost(TimeAxisView&) { return NULL; }
+       virtual GhostRegion* add_ghost(TimeAxisView&) { return 0; }
 
        void set_height (double);
        void reset_width_dependent_items(double pixel_width);
@@ -64,14 +77,16 @@ protected:
        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);
+       bool canvas_group_event(GdkEvent* ev);
+       void add_automation_event (GdkEvent* event, framepos_t when, double y, bool with_guard_points);
        void entered (bool);
        void exited();
 
 private:
-       Evoral::Parameter                 _parameter;
-       boost::shared_ptr<AutomationLine> _line;
+       ARDOUR::DoubleBeatsFramesConverter _region_relative_time_converter;
+       ARDOUR::DoubleBeatsFramesConverter _source_relative_time_converter;
+       Evoral::Parameter                  _parameter;
+       boost::shared_ptr<AutomationLine>  _line;
 };
 
 #endif /* __gtk_ardour_automation_region_view_h__ */