Fix session-open after selecting new, template, then back
[ardour.git] / gtk2_ardour / region_view.h
index 551f8d93b0f5360c8c88b034a4e0b026e9014a13..7cc4c6b964cc28467d4d2666f809d2510451d133 100644 (file)
@@ -48,13 +48,13 @@ namespace ArdourCanvas {
 
 class RegionView : public TimeAxisViewItem
 {
-  public:
+public:
        RegionView (ArdourCanvas::Container* parent,
                    TimeAxisView&        time_view,
                    boost::shared_ptr<ARDOUR::Region> region,
                    double               samples_per_pixel,
                    uint32_t             base_color,
-                   bool                 automation = false);
+                   bool                 automation = false);
 
        RegionView (const RegionView& other);
        RegionView (const RegionView& other, boost::shared_ptr<ARDOUR::Region> other_region);
@@ -102,18 +102,18 @@ class RegionView : public TimeAxisViewItem
        /** Called when a front trim is about to begin */
        virtual void trim_front_starting () {}
 
-       bool trim_front (framepos_t, bool);
+       bool trim_front (framepos_t, bool, const int32_t sub_num);
 
        /** Called when a start trim has finished */
        virtual void trim_front_ending () {}
 
-       bool trim_end (framepos_t, bool);
-        void move_contents (ARDOUR::frameoffset_t);
+       bool trim_end (framepos_t, bool, const int32_t sub_num);
+       void move_contents (ARDOUR::frameoffset_t);
        virtual void thaw_after_trim ();
 
-        void set_silent_frames (const ARDOUR::AudioIntervalResult&, double threshold);
-        void drop_silent_frames ();
-        void hide_silent_frames ();
+       void set_silent_frames (const ARDOUR::AudioIntervalResult&, double threshold);
+       void drop_silent_frames ();
+       void hide_silent_frames ();
 
        struct PositionOrder {
                bool operator()(const RegionView* a, const RegionView* b) {
@@ -121,22 +121,22 @@ class RegionView : public TimeAxisViewItem
                }
        };
 
-       ARDOUR::frameoffset_t snap_frame_to_frame (ARDOUR::frameoffset_t) const;
-       
-  protected:
+       ARDOUR::MusicFrame snap_frame_to_frame (ARDOUR::frameoffset_t, bool ensure_snap = false) const;
+
+protected:
 
        /** Allows derived types to specify their visibility requirements
         * to the TimeAxisViewItem parent class
         */
        RegionView (ArdourCanvas::Container *,
-                   TimeAxisView&,
-                   boost::shared_ptr<ARDOUR::Region>,
-                   double samples_per_pixel,
-                   uint32_t basic_color,
-                   bool recording,
-                   TimeAxisViewItem::Visibility);
+                   TimeAxisView&,
+                   boost::shared_ptr<ARDOUR::Region>,
+                   double samples_per_pixel,
+                   uint32_t basic_color,
+                   bool recording,
+                   TimeAxisViewItem::Visibility);
 
-        bool canvas_group_event (GdkEvent*);
+       bool canvas_group_event (GdkEvent*);
 
        virtual void region_resized (const PBD::PropertyChange&);
        virtual void region_muted ();
@@ -151,6 +151,7 @@ class RegionView : public TimeAxisViewItem
        void        lock_toggle ();
 
        virtual void set_colors ();
+       virtual void set_sync_mark_color ();
        virtual void reset_width_dependent_items (double pixel_width);
 
        virtual void color_handler () {}
@@ -175,9 +176,9 @@ class RegionView : public TimeAxisViewItem
        std::vector<GhostRegion*> ghosts;
 
        /** a list of rectangles which are used in stacked display mode to colour
-           different bits of regions according to whether or not they are the one
-           that will be played at any given time.
-       */
+        * different bits of regions according to whether or not they are the one
+        * that will be played at any given time.
+        */
        std::list<ArdourCanvas::Rectangle*> _coverage_frames;
 
        /** a list of rectangles used to show silent segments
@@ -186,9 +187,8 @@ class RegionView : public TimeAxisViewItem
        /** a list of rectangles used to show the current silence threshold
        */
        std::list<ArdourCanvas::Rectangle*> _silent_threshold_frames;
-        /** a text item to display strip silence statistics
-         */
-        ArdourCanvas::Text* _silence_text;
+       /** a text item to display strip silence statistics */
+       ArdourCanvas::Text* _silence_text;
 };
 
 #endif /* __gtk_ardour_region_view_h__ */