Fix MIDI recording display when zoom/etc changes.
[ardour.git] / gtk2_ardour / region_view.cc
index bd80e27acbf8857bbb678d3033ad5bd41eacf655..735e5dd09c36d81779c5a3803c7ad3886b309090 100644 (file)
@@ -510,34 +510,37 @@ RegionView::set_duration (framecnt_t frames, void *src)
        return true;
 }
 
-uint32_t
-RegionView::fill_opacity () const
-{
-       if (!_region->opaque()) {
-               return 60;
-       }
-       
-       uint32_t normal_tavi_opacity = TimeAxisViewItem::fill_opacity ();
-
-       return normal_tavi_opacity;
-}
-
 void
 RegionView::set_colors ()
 {
        TimeAxisViewItem::set_colors ();
+       set_sync_mark_color ();
+}
 
+void
+RegionView::set_sync_mark_color ()
+{
        if (sync_mark) {
-               /* XXX: make these colours themable */
-               sync_mark->set_fill_color (ArdourCanvas::rgba_to_color (0, 1.0, 0, 1.0));
-               sync_line->set_outline_color (ArdourCanvas::rgba_to_color (0, 1.0, 0, 1.0));
+               ArdourCanvas::Color c = ARDOUR_UI::config()->color ("sync mark");
+               sync_mark->set_fill_color (c);
+               sync_mark->set_outline_color (c);
+               sync_line->set_outline_color (c);
        }
 }
 
-void
-RegionView::set_frame_color ()
+uint32_t
+RegionView::get_fill_color () const
 {
-       TimeAxisViewItem::set_frame_color ();
+       ArdourCanvas::Color f = TimeAxisViewItem::get_fill_color();
+       char const *modname;
+       
+       if (_region->opaque()) {
+               modname = "opaque region base";
+       } else {
+               modname = "transparent region base";
+       }
+
+       return HSV(f).mod (ARDOUR_UI::config()->modifier (modname)).color ();
 }
 
 void
@@ -622,11 +625,10 @@ RegionView::region_sync_changed ()
 
                sync_mark = new ArdourCanvas::Polygon (group);
                CANVAS_DEBUG_NAME (sync_mark, string_compose ("sync mark for %1", get_item_name()));
-               sync_mark->set_fill_color (ArdourCanvas::rgba_to_color (0, 1.0, 0, 1.0));    // FIXME make a themeable colour
-
                sync_line = new ArdourCanvas::Line (group);
                CANVAS_DEBUG_NAME (sync_line, string_compose ("sync mark for %1", get_item_name()));
-               sync_line->set_outline_color (ArdourCanvas::rgba_to_color (0, 1.0, 0, 1.0)); // FIXME make a themeable colour
+
+               set_sync_mark_color ();
        }
 
        /* this has to handle both a genuine change of position, a change of samples_per_pixel
@@ -782,7 +784,7 @@ RegionView::update_coverage_frames (LayerDisplay d)
        bool me = false;
 
        /* the color that will be used to show parts of regions that will not be heard */
-       uint32_t const non_playing_color = ARDOUR_UI::config()->color_mod ("covered region", "region base");
+       uint32_t const non_playing_color = ARDOUR_UI::config()->color_mod ("covered region", "covered region base");
 
        while (t < end) {