various tweaks to the height/sizing of audioregion views and their waveforms
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 19 Jun 2015 12:15:25 +0000 (08:15 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 19 Jun 2015 12:15:25 +0000 (08:15 -0400)
gtk2_ardour/audio_region_view.cc
gtk2_ardour/time_axis_view_item.cc

index 2ea91ff62f8e349e59f13a3cb2eb2dd1238c34c9..a511ff771fff27a28e56aff17624d0d18adcb85a 100644 (file)
@@ -477,19 +477,23 @@ AudioRegionView::set_height (gdouble height)
 
        uint32_t wcnt = waves.size();
 
-       for (uint32_t n = 0; n < wcnt; ++n) {
-               gdouble ht;
+       if (wcnt > 0) {
 
-               if (height < NAME_HIGHLIGHT_THRESH) {
-                       ht = ((height - 2 * wcnt) / (double) wcnt);
+               gdouble ht;
+               
+               if (!ARDOUR_UI::config()->get_show_name_highlight() || (height < NAME_HIGHLIGHT_THRESH)) {
+                       ht = height / (double) wcnt;
                } else {
-                       ht = (((height - 2 * wcnt) - NAME_HIGHLIGHT_SIZE) / (double) wcnt);
+                       ht = (height - NAME_HIGHLIGHT_SIZE) / (double) wcnt;
+               }
+               
+               for (uint32_t n = 0; n < wcnt; ++n) {
+                       
+                       gdouble yoff = floor (ht * n);
+                       
+                       waves[n]->set_height (ht);
+                       waves[n]->set_y_position (yoff);
                }
-
-               gdouble yoff = n * (ht + 1);
-
-               waves[n]->set_height (ht);
-               waves[n]->set_y_position (yoff + 2);
        }
 
        if (gain_line) {
@@ -1126,12 +1130,18 @@ AudioRegionView::create_one_wave (uint32_t which, bool /*direct*/)
        uint32_t nwaves = std::min (nchans, audio_region()->n_channels());
        gdouble ht;
 
+       /* reduce waveview height by 2.0 to account for our frame */
+       
        if (trackview.current_height() < NAME_HIGHLIGHT_THRESH) {
-               ht = ((trackview.current_height()) / (double) nchans);
+               ht = ((trackview.current_height() - 2.0) / (double) nchans);
        } else {
-               ht = ((trackview.current_height() - NAME_HIGHLIGHT_SIZE) / (double) nchans);
+               ht = ((trackview.current_height() - NAME_HIGHLIGHT_SIZE - 2.0) / (double) nchans);
        }
 
+       /* first waveview starts at 1.0, not 0.0 since that will overlap the
+        * frame 
+        */
+       
        gdouble yoff = which * ht;
 
        WaveView *wave = new WaveView (group, audio_region ());
index 9a0e37708d79aa3f7d8af2fa13bc414531a332b0..94f9b9346757c459a105a300012b4be7f0519eda 100644 (file)
@@ -209,24 +209,12 @@ TimeAxisViewItem::init (ArdourCanvas::Item* parent, double fpp, uint32_t base_co
        
        if (ARDOUR_UI::config()->get_show_name_highlight() && (visibility & ShowNameHighlight)) {
 
-               double width;
-               double start = 1.0;
-
-               if (visibility & FullWidthNameHighlight) {
-                       width = trackview.editor().sample_to_pixel(item_duration);
-               } else {
-                       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,
-                                                                                 trackview.current_height() - 1.0));
+               /* rectangle size will be set in ::manage_name_highlight() */
+               name_highlight = new ArdourCanvas::Rectangle (group);
                CANVAS_DEBUG_NAME (name_highlight, string_compose ("name highlight for %1", get_item_name()));
                name_highlight->set_data ("timeaxisviewitem", this);
                 name_highlight->set_outline_what (ArdourCanvas::Rectangle::TOP);
-               name_highlight->set_outline_color (RGBA_TO_UINT (0,0,0,255));
+                name_highlight->set_outline_color (RGBA_TO_UINT (0,0,0,255)); // this should use a theme color
 
        } else {
                name_highlight = 0;
@@ -575,7 +563,7 @@ TimeAxisViewItem::set_height (double height)
 
        if (frame) {
                
-               frame->set_y0 (1.0);
+               frame->set_y0 (0.0);
                frame->set_y1 (height);
 
                if (frame_handle_start) {
@@ -589,7 +577,7 @@ TimeAxisViewItem::set_height (double height)
        }
 
        if (vestigial_frame) {
-               vestigial_frame->set_y0 (1.0);
+               vestigial_frame->set_y0 (0.0);
                vestigial_frame->set_y1 (height);
        }
 
@@ -618,7 +606,8 @@ 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, (double) _height - 1.0));
+               // name_highlight->set_x_position (1.0);
+               name_highlight->set (ArdourCanvas::Rect (0.0, (double) _height - NAME_HIGHLIGHT_SIZE,  _width - 2.0, _height));
                        
        } else {
                name_highlight->hide();