summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-06-28 11:31:26 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-06-28 11:31:26 -0400
commit7a7e937d8e30ffa8552cade473223fb3ecd591b1 (patch)
treed890492266a30776705d81e2bce90d99e621c8f7 /gtk2_ardour
parent144fdfbbd02f6c8538bb574c96b4d05e5ca8261f (diff)
more waveform drawing/coloring changes
* move color-regions-using-track color into UI config, not RC config * consolidate all waveform coloring into AudioRegionView::set_one_waveform_color()
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/audio_region_view.cc114
-rw-r--r--gtk2_ardour/audio_region_view.h1
-rw-r--r--gtk2_ardour/rc_option_editor.cc8
-rw-r--r--gtk2_ardour/theme_manager.cc13
-rw-r--r--gtk2_ardour/theme_manager.h2
-rw-r--r--gtk2_ardour/time_axis_view_item.cc4
-rw-r--r--gtk2_ardour/ui_config_vars.h1
7 files changed, 71 insertions, 72 deletions
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc
index 077755ff83..71f9466b00 100644
--- a/gtk2_ardour/audio_region_view.cc
+++ b/gtk2_ardour/audio_region_view.cc
@@ -1184,36 +1184,6 @@ AudioRegionView::create_one_wave (uint32_t which, bool /*direct*/)
wave->set_y_position (yoff);
wave->set_height (ht);
wave->set_samples_per_pixel (samples_per_pixel);
-
- if (_recregion) {
- wave->set_outline_color (_region->muted() ? UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_RecWaveForm(), MUTED_ALPHA) : ARDOUR_UI::config()->get_canvasvar_RecWaveForm());
-
-
-
- wave->set_fill_color (ARDOUR_UI::config()->get_canvasvar_RecWaveFormFill());
- } else {
- wave->set_outline_color (_region->muted() ? UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_WaveForm(), MUTED_ALPHA) : ARDOUR_UI::config()->get_canvasvar_WaveForm());
-
- /* wave color is a saturated, whiter version of the frame's
- * fill color
- */
-
- ArdourCanvas::Color c = frame->fill_color ();
- double h, s, v;
- ArdourCanvas::color_to_hsv (c, h, s, v);
-
- /* full saturate */
- s = 1.0;
- /* head towards white */
- v = min (1.0, v * 3.0);
-
- c = ArdourCanvas::hsv_to_color (h, s, v, _region->muted() ? MUTED_ALPHA : 1.0);
-
- wave->set_fill_color (c);
- }
-
- wave->set_clip_color (ARDOUR_UI::config()->get_canvasvar_WaveFormClip());
- wave->set_zero_color (ARDOUR_UI::config()->get_canvasvar_ZeroLine());
wave->set_show_zero_line (true);
switch (Config->get_waveform_shape()) {
@@ -1453,42 +1423,62 @@ AudioRegionView::color_handler ()
void
AudioRegionView::set_waveform_colors ()
{
- ArdourCanvas::Color fill, outline, clip, zero;
-
- if (_selected) {
- if (_region->muted()) {
- outline = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_SelectedWaveForm(), MUTED_ALPHA);
- } else {
- outline = ARDOUR_UI::config()->get_canvasvar_SelectedWaveForm();
- }
- fill = ARDOUR_UI::config()->get_canvasvar_SelectedWaveFormFill();
- } else {
- if (_recregion) {
- if (_region->muted()) {
- outline = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_RecWaveForm(), MUTED_ALPHA);
- } else {
- outline = ARDOUR_UI::config()->get_canvasvar_RecWaveForm();
- }
- fill = ARDOUR_UI::config()->get_canvasvar_RecWaveFormFill();
- } else {
- if (_region->muted()) {
- outline = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_WaveForm(), MUTED_ALPHA);
- } else {
- outline = ARDOUR_UI::config()->get_canvasvar_WaveForm();
- }
- fill = ARDOUR_UI::config()->get_canvasvar_WaveFormFill();
- }
+ for (vector<ArdourCanvas::WaveView*>::iterator w = waves.begin(); w != waves.end(); ++w) {
+ set_one_waveform_color (*w);
}
+}
- clip = ARDOUR_UI::config()->get_canvasvar_WaveFormClip();
- zero = ARDOUR_UI::config()->get_canvasvar_ZeroLine();
+void
+AudioRegionView::set_one_waveform_color (ArdourCanvas::WaveView* wave)
+{
+ ArdourCanvas::Color fill;
+ ArdourCanvas::Color outline;
- for (vector<ArdourCanvas::WaveView*>::iterator w = waves.begin(); w != waves.end(); ++w) {
- (*w)->set_outline_color (outline);
- (*w)->set_fill_color (fill);
- (*w)->set_clip_color (clip);
- (*w)->set_zero_color (zero);
+ if (ARDOUR_UI::config()->get_color_regions_using_track_color()) {
+
+ /* wave color is a saturated, whiter version of the frame's
+ * fill color
+ */
+
+ ArdourCanvas::Color c = frame->fill_color ();
+ double h, s, v;
+ ArdourCanvas::color_to_hsv (c, h, s, v);
+
+ /* full saturate */
+ s = 0.45;
+ /* head towards white */
+ v = 0.97;
+
+ fill = ArdourCanvas::hsv_to_color (h, s, v, _region->muted() ? MUTED_ALPHA : 1.0);
+
+ } else {
+
+ if (_selected) {
+ if (_region->muted()) {
+ outline = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_SelectedWaveForm(), MUTED_ALPHA);
+ } else {
+ outline = ARDOUR_UI::config()->get_canvasvar_SelectedWaveForm();
+ }
+ fill = ARDOUR_UI::config()->get_canvasvar_SelectedWaveFormFill();
+ } else {
+ if (_recregion) {
+ outline = ARDOUR_UI::config()->get_canvasvar_RecWaveForm();
+ fill = ARDOUR_UI::config()->get_canvasvar_RecWaveFormFill();
+ } else {
+ if (_region->muted()) {
+ outline = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_WaveForm(), MUTED_ALPHA);
+ } else {
+ outline = ARDOUR_UI::config()->get_canvasvar_WaveForm();
+ }
+ fill = ARDOUR_UI::config()->get_canvasvar_WaveFormFill();
+ }
+ }
}
+
+ wave->set_fill_color (fill);
+ wave->set_outline_color (outline);
+ wave->set_clip_color (ARDOUR_UI::config()->get_canvasvar_WaveFormClip());
+ wave->set_zero_color (ARDOUR_UI::config()->get_canvasvar_ZeroLine());
}
void
diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h
index 049b61a571..02de3edbb1 100644
--- a/gtk2_ardour/audio_region_view.h
+++ b/gtk2_ardour/audio_region_view.h
@@ -190,6 +190,7 @@ class AudioRegionView : public RegionView
void set_colors ();
void set_waveform_colors ();
+ void set_one_waveform_color (ArdourCanvas::WaveView*);
void compute_colors (Gdk::Color const &);
void reset_width_dependent_items (double pixel_width);
void set_frame_color ();
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index da0e55c7a2..afd0969d2c 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -1394,14 +1394,6 @@ RCOptionEditor::RCOptionEditor ()
add_option (_("Editor"),
new BoolOption (
- "color-regions-using-track-color",
- _("Color regions using their track's color"),
- sigc::mem_fun (*_rc_config, &RCConfiguration::get_color_regions_using_track_color),
- sigc::mem_fun (*_rc_config, &RCConfiguration::set_color_regions_using_track_color)
- ));
-
- add_option (_("Editor"),
- new BoolOption (
"update-editor-during-summary-drag",
_("Update editor window during drags of the summary"),
sigc::mem_fun (*_rc_config, &RCConfiguration::get_update_editor_during_summary_drag),
diff --git a/gtk2_ardour/theme_manager.cc b/gtk2_ardour/theme_manager.cc
index 947d92bddf..ff37c315cf 100644
--- a/gtk2_ardour/theme_manager.cc
+++ b/gtk2_ardour/theme_manager.cc
@@ -59,6 +59,7 @@ ThemeManager::ThemeManager()
, light_button (_("Light Theme"))
, reset_button (_("Restore Defaults"))
, flat_buttons (_("Draw \"flat\" buttons"))
+ , region_color_button (_("Color regions using their track's color"))
, waveform_gradient_depth (0, 1.0, 0.05)
, waveform_gradient_depth_label (_("Waveforms color gradient depth"))
, timeline_item_gradient_depth (0, 1.0, 0.05)
@@ -102,6 +103,7 @@ ThemeManager::ThemeManager()
vbox->pack_start (all_dialogs, PACK_SHRINK);
#endif
vbox->pack_start (flat_buttons, PACK_SHRINK);
+ vbox->pack_start (region_color_button, PACK_SHRINK);
Gtk::HBox* hbox = Gtk::manage (new Gtk::HBox());
hbox->set_spacing (6);
@@ -129,12 +131,16 @@ ThemeManager::ThemeManager()
color_dialog.get_colorsel()->set_has_opacity_control (true);
color_dialog.get_colorsel()->set_has_palette (true);
+ flat_buttons.set_active (ARDOUR_UI::config()->get_flat_buttons());
+ region_color_button.set_active (ARDOUR_UI::config()->get_color_regions_using_track_color());
+
color_dialog.get_ok_button()->signal_clicked().connect (sigc::bind (sigc::mem_fun (color_dialog, &Gtk::Dialog::response), RESPONSE_ACCEPT));
color_dialog.get_cancel_button()->signal_clicked().connect (sigc::bind (sigc::mem_fun (color_dialog, &Gtk::Dialog::response), RESPONSE_CANCEL));
dark_button.signal_toggled().connect (sigc::mem_fun (*this, &ThemeManager::on_dark_theme_button_toggled));
light_button.signal_toggled().connect (sigc::mem_fun (*this, &ThemeManager::on_light_theme_button_toggled));
reset_button.signal_clicked().connect (sigc::mem_fun (*this, &ThemeManager::reset_canvas_colors));
flat_buttons.signal_toggled().connect (sigc::mem_fun (*this, &ThemeManager::on_flat_buttons_toggled));
+ region_color_button.signal_toggled().connect (sigc::mem_fun (*this, &ThemeManager::on_region_color_toggled));
waveform_gradient_depth.signal_value_changed().connect (sigc::mem_fun (*this, &ThemeManager::on_waveform_gradient_depth_change));
timeline_item_gradient_depth.signal_value_changed().connect (sigc::mem_fun (*this, &ThemeManager::on_timeline_item_gradient_depth_change));
all_dialogs.signal_toggled().connect (sigc::mem_fun (*this, &ThemeManager::on_all_dialogs_toggled));
@@ -280,6 +286,13 @@ ThemeManager::on_flat_buttons_toggled ()
}
void
+ThemeManager::on_region_color_toggled ()
+{
+ ARDOUR_UI::config()->set_color_regions_using_track_color (region_color_button.get_active());
+ ARDOUR_UI::config()->set_dirty ();
+}
+
+void
ThemeManager::on_all_dialogs_toggled ()
{
ARDOUR_UI::config()->set_all_floating_windows_are_dialogs (all_dialogs.get_active());
diff --git a/gtk2_ardour/theme_manager.h b/gtk2_ardour/theme_manager.h
index 5751b34fb0..c0d6cf8f74 100644
--- a/gtk2_ardour/theme_manager.h
+++ b/gtk2_ardour/theme_manager.h
@@ -44,6 +44,7 @@ class ThemeManager : public ArdourWindow
void on_dark_theme_button_toggled ();
void on_light_theme_button_toggled ();
void on_flat_buttons_toggled ();
+ void on_region_color_toggled ();
void on_waveform_gradient_depth_change ();
void on_timeline_item_gradient_depth_change ();
void on_all_dialogs_toggled ();
@@ -73,6 +74,7 @@ class ThemeManager : public ArdourWindow
Gtk::RadioButton light_button;
Gtk::Button reset_button;
Gtk::CheckButton flat_buttons;
+ Gtk::CheckButton region_color_button;
Gtk::HScale waveform_gradient_depth;
Gtk::Label waveform_gradient_depth_label;
Gtk::HScale timeline_item_gradient_depth;
diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc
index bdfb095109..23c17476d3 100644
--- a/gtk2_ardour/time_axis_view_item.cc
+++ b/gtk2_ardour/time_axis_view_item.cc
@@ -801,7 +801,7 @@ TimeAxisViewItem::get_fill_color () const
f = ARDOUR_UI::config()->get_canvasvar_RecordingRect();
} else {
- if (high_enough_for_name && !Config->get_color_regions_using_track_color()) {
+ if (high_enough_for_name && !ARDOUR_UI::config()->get_color_regions_using_track_color()) {
f = ARDOUR_UI::config()->get_canvasvar_FrameBase();
} else {
f = fill_color;
@@ -1094,7 +1094,7 @@ void
TimeAxisViewItem::parameter_changed (string p)
{
if (p == "color-regions-using-track-color") {
- set_frame_color ();
+ set_colors ();
} else if (p == "timeline-item-gradient-depth") {
set_frame_gradient ();
}
diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h
index 600d0b28fb..84f293649f 100644
--- a/gtk2_ardour/ui_config_vars.h
+++ b/gtk2_ardour/ui_config_vars.h
@@ -22,4 +22,5 @@ UI_CONFIG_VARIABLE(bool, flat_buttons, "flat-buttons", false)
UI_CONFIG_VARIABLE(float, waveform_gradient_depth, "waveform-gradient-depth", 0.6)
UI_CONFIG_VARIABLE(float, timeline_item_gradient_depth, "timeline-item-gradient-depth", 1.3)
UI_CONFIG_VARIABLE(bool, all_floating_windows_are_dialogs, "all-floating-windows-are-dialogs", false)
+UI_CONFIG_VARIABLE (bool, color_regions_using_track_color, "color-regions-using-track-color", false)