always compute range for a redirect automation line, even if it will not be drawn...
[ardour.git] / gtk2_ardour / audio_region_view.cc
index f622f16c8a40099a1a2ee321cb88442bc1fd87c6..8b6dab3cc942e4c2417aacb5f9a8469c1e9bcdde 100644 (file)
@@ -176,7 +176,6 @@ AudioRegionView::init (Gdk::Color& basic_color, bool wfd)
        fade_out_shape->property_fill_color_rgba() = fade_color;
        fade_out_shape->set_data ("regionview", this);
 
-
        {
                uint32_t r,g,b,a;
                UINT_TO_RGBA(fill_color,&r,&g,&b,&a);
@@ -199,6 +198,10 @@ AudioRegionView::init (Gdk::Color& basic_color, bool wfd)
                fade_out_handle->set_data ("regionview", this);
        }
 
+       if (!Config->get_show_region_fades()) {
+               set_fade_visibility (false);
+       }
+
        string foo = _region->name();
        foo += ':';
        foo += "gain";
@@ -266,6 +269,7 @@ void
 AudioRegionView::region_changed (Change what_changed)
 {
        ENSURE_GUI_THREAD (bind (mem_fun(*this, &AudioRegionView::region_changed), what_changed));
+       //cerr << "AudioRegionView::region_changed() called" << endl;
 
        RegionView::region_changed(what_changed);
 
@@ -391,8 +395,10 @@ AudioRegionView::reset_width_dependent_items (double pixel_width)
                                fade_in_handle->hide();
                                fade_out_handle->hide();
                        } else {
-                               fade_in_handle->show();
-                               fade_out_handle->show();
+                               if (Config->get_show_region_fades()) {
+                                       fade_in_handle->show();
+                                       fade_out_handle->show();
+                               }
                        }
                }
        }
@@ -423,14 +429,16 @@ AudioRegionView::set_height (gdouble height)
        uint32_t wcnt = waves.size();
 
        // FIXME: ick
-       TimeAxisViewItem::set_height (height - 2);
+       height -= 2;
+       TimeAxisViewItem::set_height (height);
+       
        
        _height = height;
 
        for (uint32_t n=0; n < wcnt; ++n) {
                gdouble ht;
 
-               if ((height) <= NAME_HIGHLIGHT_THRESH) {
+               if ((height) < NAME_HIGHLIGHT_THRESH) {
                        ht = ((height-2*wcnt) / (double) wcnt);
                } else {
                        ht = (((height-2*wcnt) - NAME_HIGHLIGHT_SIZE) / (double) wcnt);
@@ -443,7 +451,7 @@ AudioRegionView::set_height (gdouble height)
        }
 
        if (gain_line) {
-               if ((height/wcnt) < NAME_HIGHLIGHT_SIZE) {
+               if ((height/wcnt) < NAME_HIGHLIGHT_THRESH) {
                        gain_line->hide ();
                } else {
                        if (_flags & EnvelopeVisible) {
@@ -530,14 +538,16 @@ AudioRegionView::reset_fade_in_shape_width (nframes_t width)
                return;
        }
 
-       fade_in_shape->show();
+       if (Config->get_show_region_fades()) {
+               fade_in_shape->show();
+       }
 
        float curve[npoints];
        audio_region()->fade_in().get_vector (0, audio_region()->fade_in().back()->when, curve, npoints);
 
        points = get_canvas_points ("fade in shape", npoints+3);
 
-       if (_height > NAME_HIGHLIGHT_THRESH) {
+       if (_height >= NAME_HIGHLIGHT_THRESH) {
                h = _height - NAME_HIGHLIGHT_SIZE;
        } else {
                h = _height;
@@ -616,12 +626,14 @@ AudioRegionView::reset_fade_out_shape_width (nframes_t width)
                return;
        } 
        
-       fade_out_shape->show();
+       if (Config->get_show_region_fades()) {
+               fade_out_shape->show();
+       }
 
        float curve[npoints];
        audio_region()->fade_out().get_vector (0, audio_region()->fade_out().back()->when, curve, npoints);
 
-       if (_height > NAME_HIGHLIGHT_THRESH) {
+       if (_height >= NAME_HIGHLIGHT_THRESH) {
                h = _height - NAME_HIGHLIGHT_SIZE;
        } else {
                h = _height;
@@ -840,7 +852,7 @@ AudioRegionView::create_one_wave (uint32_t which, bool direct)
        uint32_t nwaves = std::min (nchans, audio_region()->n_channels());
        gdouble ht;
 
-       if (trackview.current_height() < NAME_HIGHLIGHT_SIZE) {
+       if (trackview.current_height() < NAME_HIGHLIGHT_THRESH) {
                ht = ((trackview.current_height()) / (double) nchans);
        } else {
                ht = ((trackview.current_height() - NAME_HIGHLIGHT_SIZE) / (double) nchans);
@@ -1238,7 +1250,6 @@ AudioRegionView::set_frame_color ()
                if (_recregion) {
                        UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_RecordingRect.get(), &r, &g, &b, &a);
                        frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, a);
-                       cerr << "Was a recregion" << endl;
 
                        for (vector<ArdourCanvas::WaveView*>::iterator w = waves.begin(); w != waves.end(); ++w) {
                                if (_region->muted()) {
@@ -1264,3 +1275,34 @@ AudioRegionView::set_frame_color ()
        }
 }
 
+void
+AudioRegionView::set_fade_visibility (bool yn)
+{
+       if (yn) {
+               if (fade_in_shape) {
+                       fade_in_shape->show();
+               }
+               if (fade_out_shape) {
+                       fade_out_shape->show ();
+               } 
+               if (fade_in_handle) {
+                       fade_in_handle->show ();
+               } 
+               if (fade_out_handle) {
+                       fade_out_handle->show ();
+               }
+       } else {
+               if (fade_in_shape) {
+                       fade_in_shape->hide();
+               }
+               if (fade_out_shape) {
+                       fade_out_shape->hide ();
+               } 
+               if (fade_in_handle) {
+                       fade_in_handle->hide ();
+               } 
+               if (fade_out_handle) {
+                       fade_out_handle->hide ();
+               }
+       }
+}