Add option to use narrow mixer strips by default, and fix ardour_system.rc being...
[ardour.git] / gtk2_ardour / crossfade_edit.cc
index eab26f62c3365d06b878c07f76165af100004ae6..c80aa4cb76d080cea8b44dab9ff6ec674c689de9 100644 (file)
@@ -48,7 +48,6 @@
 #include "canvas_impl.h"
 #include "simplerect.h"
 #include "waveview.h"
-#include "color.h"
 
 using namespace std;
 using namespace ARDOUR;
@@ -129,23 +128,23 @@ CrossfadeEditor::CrossfadeEditor (Session& s, boost::shared_ptr<Crossfade> xf, d
        toplevel->property_x2() =  10.0;
        toplevel->property_y2() =  10.0;
        toplevel->property_fill() =  true;
-       toplevel->property_fill_color_rgba() = color_map[cCrossfadeEditorBase];
+       toplevel->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorBase.get();
        toplevel->property_outline_pixels() =  0;
        toplevel->signal_event().connect (mem_fun (*this, &CrossfadeEditor::canvas_event));
        
        fade[Out].line = new ArdourCanvas::Line (*(canvas->root()));
        fade[Out].line->property_width_pixels() = 1;
-       fade[Out].line->property_fill_color_rgba() = color_map[cCrossfadeEditorLine];
+       fade[Out].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get();
                
        fade[Out].shading = new ArdourCanvas::Polygon (*(canvas->root()));
-       fade[Out].shading->property_fill_color_rgba() = color_map[cCrossfadeEditorLineShading];
+       fade[Out].shading->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLineShading.get();
 
        fade[In].line = new ArdourCanvas::Line (*(canvas->root()));
        fade[In].line->property_width_pixels() = 1;
-       fade[In].line->property_fill_color_rgba() = color_map[cCrossfadeEditorLine];
+       fade[In].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get();
                
        fade[In].shading = new ArdourCanvas::Polygon (*(canvas->root()));
-       fade[In].shading->property_fill_color_rgba() = color_map[cCrossfadeEditorLineShading];
+       fade[In].shading->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLineShading.get();
        
        fade[In].shading->signal_event().connect (mem_fun (*this, &CrossfadeEditor::canvas_event));
        fade[In].line->signal_event().connect (mem_fun (*this, &CrossfadeEditor::curve_event));
@@ -454,8 +453,8 @@ CrossfadeEditor::make_point ()
 
        p->box = new ArdourCanvas::SimpleRect (*(canvas->root()));
        p->box->property_fill() = true;
-       p->box->property_fill_color_rgba() = color_map[cCrossfadeEditorPointFill];
-       p->box->property_outline_color_rgba() = color_map[cCrossfadeEditorPointOutline];
+       p->box->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorPointFill.get();
+       p->box->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorPointOutline.get();
        p->box->property_outline_pixels() = 1;
 
        p->curve = fade[current].line;
@@ -638,9 +637,15 @@ CrossfadeEditor::redraw ()
 
        for (list<Point*>::iterator i = fade[current].points.begin(); i != fade[current].points.end(); ++i) {
                fade[current].normative_curve.add ((*i)->x, (*i)->y);
-               fade[current].gain_curve.add (((*i)->x * len), (*i)->y);
+               double offset;
+               if (current==In)
+                       offset = xfade->in()->start();
+               else
+                       offset = xfade->out()->start()+xfade->out()->length()-xfade->length();
+               fade[current].gain_curve.add (((*i)->x * len) + offset, (*i)->y);
        }
 
+
        size_t npoints = (size_t) effective_width();
        float vec[npoints];
 
@@ -976,15 +981,15 @@ CrossfadeEditor::curve_select_clicked (WhichFade wf)
        if (wf == In) {
                
                for (vector<ArdourCanvas::WaveView*>::iterator i = fade[In].waves.begin(); i != fade[In].waves.end(); ++i) {
-                       (*i)->property_wave_color() = color_map[cSelectedCrossfadeEditorWave];
+                       (*i)->property_wave_color() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorWave.get();
                }
 
                for (vector<ArdourCanvas::WaveView*>::iterator i = fade[Out].waves.begin(); i != fade[Out].waves.end(); ++i) {
-                       (*i)->property_wave_color() = color_map[cCrossfadeEditorWave];
+                       (*i)->property_wave_color() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorWave.get();
                }
 
-               fade[In].line->property_fill_color_rgba() = color_map[cSelectedCrossfadeEditorLine];
-               fade[Out].line->property_fill_color_rgba() = color_map[cCrossfadeEditorLine];
+               fade[In].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorLine.get();
+               fade[Out].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get();
                fade[Out].shading->hide();
                fade[In].shading->show();
 
@@ -999,15 +1004,15 @@ CrossfadeEditor::curve_select_clicked (WhichFade wf)
        } else {
 
                for (vector<ArdourCanvas::WaveView*>::iterator i = fade[In].waves.begin(); i != fade[In].waves.end(); ++i) {
-                       (*i)->property_wave_color() = color_map[cCrossfadeEditorWave];
+                       (*i)->property_wave_color() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorWave.get();
                }
 
                for (vector<ArdourCanvas::WaveView*>::iterator i = fade[Out].waves.begin(); i != fade[Out].waves.end(); ++i) {
-                       (*i)->property_wave_color() = color_map[cSelectedCrossfadeEditorWave];
+                       (*i)->property_wave_color() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorWave.get();
                }
 
-               fade[Out].line->property_fill_color_rgba() = color_map[cSelectedCrossfadeEditorLine];
-               fade[In].line->property_fill_color_rgba() = color_map[cCrossfadeEditorLine];
+               fade[Out].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorLine.get();
+               fade[In].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get();
                fade[In].shading->hide();
                fade[Out].shading->show();
 
@@ -1049,9 +1054,9 @@ CrossfadeEditor::make_waves (boost::shared_ptr<AudioRegion> region, WhichFade wh
        double spu;
 
        if (which == In) {
-               color = color_map[cSelectedCrossfadeEditorWave];
+               color = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorWave.get();
        } else {
-               color = color_map[cCrossfadeEditorWave];
+               color = ARDOUR_UI::config()->canvasvar_CrossfadeEditorWave.get();
        }
 
        ht = canvas->get_allocation().get_height() / (double) nchans;
@@ -1081,6 +1086,11 @@ CrossfadeEditor::make_waves (boost::shared_ptr<AudioRegion> region, WhichFade wh
                        waveview->property_amplitude_above_axis() = 2.0;
                        waveview->property_wave_color() = color;
                        
+                       if (which==In)
+                               waveview->property_region_start() = region->start();
+                       else
+                               waveview->property_region_start() = region->start()+region->length()-xfade->length();
+
                        waveview->lower_to_bottom();
                        fade[which].waves.push_back (waveview);
                }
@@ -1112,13 +1122,13 @@ CrossfadeEditor::audition_both ()
        nframes_t left_length;
 
        if (preroll_button.get_active()) {
-               preroll = ARDOUR_UI::instance()->preroll_clock.current_duration ();
+               preroll = session.frame_rate() * 2;  //2 second hardcoded preroll for now
        } else {
                preroll = 0;
        }
 
        if (postroll_button.get_active()) {
-               postroll = ARDOUR_UI::instance()->postroll_clock.current_duration ();
+               postroll = session.frame_rate() * 2;  //2 second hardcoded postroll for now
        } else {
                postroll = 0;
        }