Set the toggled default metadata of parameters.
[ardour.git] / gtk2_ardour / time_axis_view_item.cc
index ffd9a6d202a0230babfdc1b05235d4a1254ad63f..0d5f649a99b8f9f011b12c652836426baaafa007 100644 (file)
@@ -32,7 +32,7 @@
 #include "canvas/rectangle.h"
 #include "canvas/debug.h"
 #include "canvas/text.h"
-#include "canvas/utils.h"
+#include "canvas/colors.h"
 
 #include "ardour/profile.h"
 
@@ -63,7 +63,6 @@ Pango::FontDescription TimeAxisViewItem::NAME_FONT;
 const double TimeAxisViewItem::NAME_X_OFFSET = 15.0;
 const double TimeAxisViewItem::GRAB_HANDLE_TOP = 0.0;
 const double TimeAxisViewItem::GRAB_HANDLE_WIDTH = 10.0;
-const double TimeAxisViewItem::RIGHT_EDGE_SHIFT = 0.0; // TODO remove, fixed in 3.5-3406-g90872c2, but may need further work.
 
 int    TimeAxisViewItem::NAME_HEIGHT;
 double TimeAxisViewItem::NAME_Y_OFFSET;
@@ -185,21 +184,16 @@ TimeAxisViewItem::init (ArdourCanvas::Item* parent, double fpp, uint32_t base_co
        wide_enough_for_name = wide;
        high_enough_for_name = high;
         rect_visible = true;
+       vestigial_frame = 0;
 
        if (duration == 0) {
                warning << "Time Axis Item Duration == 0" << endl;
        }
 
-       vestigial_frame = new ArdourCanvas::TimeRectangle (group, ArdourCanvas::Rect (0.0, 0.0, 2.0, trackview.current_height()));
-       CANVAS_DEBUG_NAME (vestigial_frame, string_compose ("vestigial frame for %1", get_item_name()));
-       vestigial_frame->hide ();
-       vestigial_frame->set_outline_color (ARDOUR_UI::config()->get_VestigialFrame());
-       vestigial_frame->set_fill_color (ARDOUR_UI::config()->get_VestigialFrame());
-
        if (visibility & ShowFrame) {
                frame = new ArdourCanvas::TimeRectangle (group, 
                                                     ArdourCanvas::Rect (0.0, 0.0, 
-                                                                        trackview.editor().sample_to_pixel(duration) + RIGHT_EDGE_SHIFT
+                                                                        trackview.editor().sample_to_pixel(duration), 
                                                                         trackview.current_height()));
                
                frame->set_outline_what (ArdourCanvas::Rectangle::What (ArdourCanvas::Rectangle::LEFT|ArdourCanvas::Rectangle::RIGHT));
@@ -219,15 +213,15 @@ TimeAxisViewItem::init (ArdourCanvas::Item* parent, double fpp, uint32_t base_co
                double start = 1.0;
 
                if (visibility & FullWidthNameHighlight) {
-                       width = trackview.editor().sample_to_pixel(item_duration) + RIGHT_EDGE_SHIFT;
+                       width = trackview.editor().sample_to_pixel(item_duration);
                } else {
-                       width = trackview.editor().sample_to_pixel(item_duration) - 2.0 + RIGHT_EDGE_SHIFT;
+                       width = trackview.editor().sample_to_pixel(item_duration) - 2.0;
                }
 
                name_highlight = new ArdourCanvas::Rectangle (group, 
                                                              ArdourCanvas::Rect (start, 
                                                                                  trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE, 
-                                                                                 width - 2.0 + RIGHT_EDGE_SHIFT,
+                                                                                 width - 2.0,
                                                                                  trackview.current_height() - 1.0));
                CANVAS_DEBUG_NAME (name_highlight, string_compose ("name highlight for %1", get_item_name()));
                name_highlight->set_data ("timeaxisviewitem", this);
@@ -616,8 +610,10 @@ TimeAxisViewItem::set_height (double height)
                }
        }
 
-       vestigial_frame->set_y0 (1.0);
-       vestigial_frame->set_y1 (height);
+       if (vestigial_frame) {
+               vestigial_frame->set_y0 (1.0);
+               vestigial_frame->set_y1 (height);
+       }
 
        set_colors ();
 }
@@ -644,7 +640,7 @@ TimeAxisViewItem::manage_name_highlight ()
        if (name_highlight && wide_enough_for_name && high_enough_for_name) {
 
                name_highlight->show();
-               name_highlight->set (ArdourCanvas::Rect (1.0, (double) _height - NAME_HIGHLIGHT_SIZE,  _width+RIGHT_EDGE_SHIFT, (double) _height - 1.0));
+               name_highlight->set (ArdourCanvas::Rect (1.0, (double) _height - NAME_HIGHLIGHT_SIZE,  _width, (double) _height - 1.0));
                        
        } else {
                name_highlight->hide();
@@ -723,12 +719,10 @@ uint32_t
 TimeAxisViewItem::fill_opacity () const
 {
        if (!rect_visible) {
-               /* if the frame/rect is marked as invisible, then the
-                * fill should be transparent. simplest: set
-                
-                * alpha/opacity to zero.
-                */
-               return 0;
+               /* if the frame/rect is marked as "invisible", then the
+                  fill should be translucent.parent.
+               */
+               return 64;
        }
 
        if (_dragging) {
@@ -785,19 +779,19 @@ TimeAxisViewItem::set_frame_color()
                return;
        }
 
-        frame->set_fill_color (get_fill_color());
+       frame->set_fill_color (get_fill_color());
        set_frame_gradient ();
 
-        if (!_recregion) {
+       if (!_recregion) {
                uint32_t f = ARDOUR_UI::config()->get_TimeAxisFrame();
 
-                if (!rect_visible) {
+               if (!rect_visible) {
                        /* make the frame outline be visible but rather transparent */
-                        f = UINT_RGBA_CHANGE_A (f, 64);
-                }
+                       f = UINT_RGBA_CHANGE_A (f, 64);
+               }
 
-                frame->set_outline_color (f);
-        }
+               frame->set_outline_color (f);
+       }
 }
 
 void
@@ -824,7 +818,7 @@ TimeAxisViewItem::set_frame_gradient ()
 
        v = min (1.0, v * (1.0 - ARDOUR_UI::config()->get_timeline_item_gradient_depth()));
        
-       ArdourCanvas::Color darker = ArdourCanvas::hsv_to_color (h, s, v, a);
+       ArdourCanvas::Color darker = ArdourCanvas::hsva_to_color (h, s, v, a);
        stops.push_back (std::make_pair (1.0, darker));
        
        frame->set_gradient (stops, true);
@@ -912,6 +906,15 @@ TimeAxisViewItem::reset_width_dependent_items (double pixel_width)
        if (pixel_width < 2.0) {
 
                if (show_vestigial) {
+
+                       if (!vestigial_frame) {
+                               vestigial_frame = new ArdourCanvas::TimeRectangle (group, ArdourCanvas::Rect (0.0, 0.0, 2.0, trackview.current_height()));
+                               CANVAS_DEBUG_NAME (vestigial_frame, string_compose ("vestigial frame for %1", get_item_name()));
+                               vestigial_frame->set_outline_color (ARDOUR_UI::config()->get_VestigialFrame());
+                               vestigial_frame->set_fill_color (ARDOUR_UI::config()->get_VestigialFrame());
+                               vestigial_frame->set_outline_what (ArdourCanvas::Rectangle::What (ArdourCanvas::Rectangle::LEFT|ArdourCanvas::Rectangle::RIGHT));
+                       }
+
                        vestigial_frame->show();
                }
 
@@ -925,11 +928,13 @@ TimeAxisViewItem::reset_width_dependent_items (double pixel_width)
                }
 
        } else {
-               vestigial_frame->hide();
+               if (vestigial_frame) {
+                       vestigial_frame->hide();
+               }
 
                if (frame) {
                        frame->show();
-                       frame->set_x1 (pixel_width + RIGHT_EDGE_SHIFT);
+                       frame->set_x1 (pixel_width);
 
                        if (selection_frame) {
                                selection_frame->set (frame->get().shrink (1.0));
@@ -948,8 +953,8 @@ TimeAxisViewItem::reset_width_dependent_items (double pixel_width)
                                frame_handle_end->hide();
                        } else {
                                frame_handle_start->show();
-                               frame_handle_end->set_x0 (pixel_width + RIGHT_EDGE_SHIFT - (TimeAxisViewItem::GRAB_HANDLE_WIDTH));
-                               frame_handle_end->set_x1 (pixel_width + RIGHT_EDGE_SHIFT);
+                               frame_handle_end->set_x0 (pixel_width - (TimeAxisViewItem::GRAB_HANDLE_WIDTH));
+                               frame_handle_end->set_x1 (pixel_width);
                                frame_handle_end->show();
                        }
                }