Changing active-state needs no color lookup
[ardour.git] / gtk2_ardour / region_view.h
index 7cc4c6b964cc28467d4d2666f809d2510451d133..18d6ce53a997929467b5c8b0236131ea641d9e19 100644 (file)
@@ -1,20 +1,25 @@
 /*
-    Copyright (C) 2001-2006 Paul Davis
-
-    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
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
+ * Copyright (C) 2006-2014 David Robillard <d@drobilla.net>
+ * Copyright (C) 2007-2011 Carl Hetherington <carl@carlh.net>
+ * Copyright (C) 2007-2019 Paul Davis <paul@linuxaudiosystems.com>
+ * Copyright (C) 2007 Doug McLain <doug@nostar.net>
+ * Copyright (C) 2015-2017 Nick Mainsbridge <mainsbridge@gmail.com>
+ * Copyright (C) 2016-2019 Robin Gareus <robin@gareus.org>
+ *
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
 
 #ifndef __gtk_ardour_region_view_h__
 #define __gtk_ardour_region_view_h__
@@ -27,7 +32,7 @@
 
 #include <sigc++/signal.h>
 #include "ardour/region.h"
-#include "ardour/beats_frames_converter.h"
+#include "ardour/beats_samples_converter.h"
 
 #include "canvas/fwd.h"
 
@@ -49,18 +54,23 @@ namespace ArdourCanvas {
 class RegionView : public TimeAxisViewItem
 {
 public:
-       RegionView (ArdourCanvas::Container* parent,
-                   TimeAxisView&        time_view,
+       RegionView (ArdourCanvas::Container*          parent,
+                   TimeAxisView&                     time_view,
                    boost::shared_ptr<ARDOUR::Region> region,
-                   double               samples_per_pixel,
-                   uint32_t             base_color,
-                   bool                 automation = false);
+                   double                            samples_per_pixel,
+                   uint32_t                          base_color,
+                   bool                              automation = false);
 
        RegionView (const RegionView& other);
        RegionView (const RegionView& other, boost::shared_ptr<ARDOUR::Region> other_region);
 
        ~RegionView ();
 
+       virtual void set_selected (bool yn) {
+               _region->set_selected_for_solo(yn);
+               TimeAxisViewItem::set_selected(yn);
+       }
+
        virtual void init (bool wait_for_data);
 
        boost::shared_ptr<ARDOUR::Region> region() const { return _region; }
@@ -71,14 +81,14 @@ public:
 
        virtual void set_height (double);
        virtual void set_samples_per_pixel (double);
-       virtual bool set_duration (framecnt_t, void*);
+       virtual bool set_duration (samplecnt_t, void*);
 
        void move (double xdelta, double ydelta);
 
        void raise_to_top ();
        void lower_to_bottom ();
 
-       bool set_position(framepos_t pos, void* src, double* delta = 0);
+       bool set_position(samplepos_t pos, void* src, double* delta = 0);
 
        virtual void show_region_editor ();
        void hide_region_editor ();
@@ -95,20 +105,20 @@ public:
        virtual void exited () {}
 
        virtual void enable_display(bool yn) { _enable_display = yn; }
-       virtual void update_coverage_frames (LayerDisplay);
+       virtual void update_coverage_frame (LayerDisplay);
 
        static PBD::Signal1<void,RegionView*> RegionViewGoingAway;
 
        /** Called when a front trim is about to begin */
        virtual void trim_front_starting () {}
 
-       bool trim_front (framepos_t, bool, const int32_t sub_num);
+       bool trim_front (samplepos_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, const int32_t sub_num);
-       void move_contents (ARDOUR::frameoffset_t);
+       bool trim_end (samplepos_t, bool, const int32_t sub_num);
+       void move_contents (ARDOUR::sampleoffset_t);
        virtual void thaw_after_trim ();
 
        void set_silent_frames (const ARDOUR::AudioIntervalResult&, double threshold);
@@ -121,7 +131,9 @@ public:
                }
        };
 
-       ARDOUR::MusicFrame snap_frame_to_frame (ARDOUR::frameoffset_t, bool ensure_snap = false) const;
+       ARDOUR::MusicSample snap_sample_to_sample (ARDOUR::sampleoffset_t, bool ensure_snap = false) const;
+
+       void update_visibility ();
 
 protected:
 
@@ -179,14 +191,14 @@ protected:
         * 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;
+       std::list<ArdourCanvas::Rectangle*> _coverage_frame;
 
        /** a list of rectangles used to show silent segments
        */
        std::list<ArdourCanvas::Rectangle*> _silent_frames;
        /** a list of rectangles used to show the current silence threshold
        */
-       std::list<ArdourCanvas::Rectangle*> _silent_threshold_frames;
+       std::list<ArdourCanvas::Rectangle*> _silent_threshold_samples;
        /** a text item to display strip silence statistics */
        ArdourCanvas::Text* _silence_text;
 };