From 7a7e937d8e30ffa8552cade473223fb3ecd591b1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 28 Jun 2013 11:31:26 -0400 Subject: [PATCH] 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() --- gtk2_ardour/audio_region_view.cc | 114 ++++++++++----------- gtk2_ardour/audio_region_view.h | 1 + gtk2_ardour/rc_option_editor.cc | 8 -- gtk2_ardour/theme_manager.cc | 13 +++ gtk2_ardour/theme_manager.h | 2 + gtk2_ardour/time_axis_view_item.cc | 4 +- gtk2_ardour/ui_config_vars.h | 1 + libs/ardour/ardour/rc_configuration_vars.h | 1 - 8 files changed, 71 insertions(+), 73 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::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::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 @@ -1392,14 +1392,6 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (*_rc_config, &RCConfiguration::set_show_zoom_tools) )); - 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", 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)); @@ -279,6 +285,13 @@ ThemeManager::on_flat_buttons_toggled () gtk_rc_reset_styles (gtk_settings_get_default()); } +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 () { 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) diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index d8440f24f3..989592b359 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -184,7 +184,6 @@ CONFIG_VARIABLE (WaveformScale, waveform_scale, "waveform-scale", Linear) CONFIG_VARIABLE (WaveformShape, waveform_shape, "waveform-shape", Traditional) CONFIG_VARIABLE (bool, allow_special_bus_removal, "allow-special-bus-removal", false) CONFIG_VARIABLE (int32_t, processor_usage, "processor-usage", -1) -CONFIG_VARIABLE (bool, color_regions_using_track_color, "color-regions-using-track-color", false) CONFIG_VARIABLE (gain_t, max_gain, "max-gain", 2.0) /* +6.0dB */ CONFIG_VARIABLE (bool, update_editor_during_summary_drag, "update-editor-during-summary-drag", true) CONFIG_VARIABLE (bool, never_display_periodic_midi, "never-display-periodic-midi", true) -- 2.30.2