add JAG to author list
[ardour.git] / gtk2_ardour / audio_region_view.cc
index 858fe827105c9bb88a7cdf9473b40f2ae8b4d0f4..20310c4f4f21a45185641e38aea6454e313fe8ac 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";
@@ -215,7 +218,7 @@ AudioRegionView::init (Gdk::Color& basic_color, bool wfd)
                gain_line->reset ();
        }
 
-       set_height (trackview.height);
+       set_height (trackview.current_height());
 
        region_muted ();
        region_sync_changed ();
@@ -266,7 +269,8 @@ 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;
+       //cerr << "AudioRegionView::region_changed() called" << endl;
+
        RegionView::region_changed(what_changed);
 
        if (what_changed & AudioRegion::ScaleAmplitudeChanged) {
@@ -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,13 @@ 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,22 +448,19 @@ 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) {
                                gain_line->show ();
                        }
                }
-               gain_line->set_height ((uint32_t) rint (height - NAME_HIGHLIGHT_SIZE));
+               gain_line->set_height ((uint32_t) rint (height - NAME_HIGHLIGHT_SIZE - 2));
        }
 
        manage_zero_line ();
        reset_fade_shapes ();
-       
-       if (name_text) {
-               name_text->raise_to_top();
-       }
+
 }
 
 void
@@ -530,14 +532,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 +620,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,10 +846,10 @@ AudioRegionView::create_one_wave (uint32_t which, bool direct)
        uint32_t nwaves = std::min (nchans, audio_region()->n_channels());
        gdouble ht;
 
-       if (trackview.height < NAME_HIGHLIGHT_SIZE) {
-               ht = ((trackview.height) / (double) nchans);
+       if (trackview.current_height() < NAME_HIGHLIGHT_THRESH) {
+               ht = ((trackview.current_height()) / (double) nchans);
        } else {
-               ht = ((trackview.height - NAME_HIGHLIGHT_SIZE) / (double) nchans);
+               ht = ((trackview.current_height() - NAME_HIGHLIGHT_SIZE) / (double) nchans);
        }
 
        gdouble yoff = which * ht;
@@ -954,7 +960,7 @@ AudioRegionView::add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *ev)
 
        /* compute vertical fractional position */
 
-       y = 1.0 - (y / (trackview.height - NAME_HIGHLIGHT_SIZE));
+       y = 1.0 - (y / (trackview.current_height() - NAME_HIGHLIGHT_SIZE));
        
        /* map using gain line */
 
@@ -1003,25 +1009,25 @@ AudioRegionView::set_flags (XMLNode* node)
        XMLProperty *prop;
 
        if ((prop = node->property ("waveform-visible")) != 0) {
-               if (prop->value() == "yes") {
+               if (string_is_affirmative (prop->value())) {
                        _flags |= WaveformVisible;
                }
        }
 
        if ((prop = node->property ("envelope-visible")) != 0) {
-               if (prop->value() == "yes") {
+               if (string_is_affirmative (prop->value())) {
                        _flags |= EnvelopeVisible;
                }
        }
 
        if ((prop = node->property ("waveform-rectified")) != 0) {
-               if (prop->value() == "yes") {
+               if (string_is_affirmative (prop->value())) {
                        _flags |= WaveformRectified;
                }
        }
 
        if ((prop = node->property ("waveform-logscaled")) != 0) {
-               if (prop->value() == "yes") {
+               if (string_is_affirmative (prop->value())) {
                        _flags |= WaveformLogScaled;
                }
        }
@@ -1238,7 +1244,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 +1269,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 ();
+               }
+       }
+}