summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-11-19 13:14:26 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2014-11-26 18:22:22 +0200
commit318a9edab99606d7fbf7eb21d816c7416c76b894 (patch)
tree52fbbb2c7e898bdc0369b9acf40e4cbee2618685 /gtk2_ardour
parente9768e934fdeaf31aaae779e42ff493a2e781179 (diff)
massive reworking of color selection implementation
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_button.cc12
-rw-r--r--gtk2_ardour/ardour_knob.cc6
-rw-r--r--gtk2_ardour/audio_clock.cc16
-rw-r--r--gtk2_ardour/base_colors.h54
-rw-r--r--gtk2_ardour/button_joiner.cc10
-rw-r--r--gtk2_ardour/canvas_vars.h236
-rw-r--r--gtk2_ardour/colors.h493
-rw-r--r--gtk2_ardour/default_ui_config.in463
-rw-r--r--gtk2_ardour/level_meter.cc2
-rw-r--r--gtk2_ardour/meter_patterns.cc4
-rw-r--r--gtk2_ardour/monitor_section.cc6
-rw-r--r--gtk2_ardour/stereo_panner.cc5
-rw-r--r--gtk2_ardour/styles.rc.in105
-rw-r--r--gtk2_ardour/theme_manager.cc2
-rw-r--r--gtk2_ardour/time_axis_view_item.cc2
-rw-r--r--gtk2_ardour/ui_config.cc795
-rw-r--r--gtk2_ardour/ui_config.h71
-rw-r--r--gtk2_ardour/widget_list.rc6
18 files changed, 1400 insertions, 888 deletions
diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc
index 447fc1ef0c..ddd8b9ca3e 100644
--- a/gtk2_ardour/ardour_button.cc
+++ b/gtk2_ardour/ardour_button.cc
@@ -663,14 +663,14 @@ ArdourButton::set_colors ()
}
std::string name = get_name();
- fill_active_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: fill active", name));
- fill_inactive_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: fill", name));
+ fill_active_color = ARDOUR_UI::config()->color (string_compose ("%1: fill active", name));
+ fill_inactive_color = ARDOUR_UI::config()->color (string_compose ("%1: fill", name));
- text_active_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: text active", name));
- text_inactive_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: text", name));
+ text_active_color = ARDOUR_UI::config()->color (string_compose ("%1: text active", name));
+ text_inactive_color = ARDOUR_UI::config()->color (string_compose ("%1: text", name));
- led_active_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: led active", name));
- led_inactive_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: led", name));
+ led_active_color = ARDOUR_UI::config()->color (string_compose ("%1: led active", name));
+ led_inactive_color = ARDOUR_UI::config()->color (string_compose ("%1: led", name));
}
/**
diff --git a/gtk2_ardour/ardour_knob.cc b/gtk2_ardour/ardour_knob.cc
index c244411562..c0dc03fe2b 100644
--- a/gtk2_ardour/ardour_knob.cc
+++ b/gtk2_ardour/ardour_knob.cc
@@ -89,7 +89,7 @@ ArdourKnob::render (cairo_t* cr, cairo_rectangle_t *)
cairo_translate (cr, xc, yc); //after this, everything is based on the center of the knob
//get the knob color from the theme
- ArdourCanvas::Color knob_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1", get_name()));
+ ArdourCanvas::Color knob_color = ARDOUR_UI::config()->color (string_compose ("%1", get_name()));
float center_radius = 0.48*scale;
float border_width = 0.8;
@@ -119,10 +119,10 @@ ArdourKnob::render (cairo_t* cr, cairo_rectangle_t *)
//look up the arc colors from the config
double red_start, green_start, blue_start, unused;
- ArdourCanvas::Color arc_start_color = ARDOUR_UI::config()->color_by_name ( string_compose ("%1: arc start", get_name()));
+ ArdourCanvas::Color arc_start_color = ARDOUR_UI::config()->color ( string_compose ("%1: arc start", get_name()));
ArdourCanvas::color_to_rgba( arc_start_color, red_start, green_start, blue_start, unused );
double red_end, green_end, blue_end;
- ArdourCanvas::Color arc_end_color = ARDOUR_UI::config()->color_by_name ( string_compose ("%1: arc end", get_name()) );
+ ArdourCanvas::Color arc_end_color = ARDOUR_UI::config()->color ( string_compose ("%1: arc end", get_name()) );
ArdourCanvas::color_to_rgba( arc_end_color, red_end, green_end, blue_end, unused );
//vary the arc color over the travel of the knob
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc
index dcd626d287..b6c2040792 100644
--- a/gtk2_ardour/audio_clock.cc
+++ b/gtk2_ardour/audio_clock.cc
@@ -223,15 +223,15 @@ AudioClock::set_colors ()
uint32_t cursor_color;
if (active_state()) {
- bg_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1 active: background", get_name()));
- text_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1 active: text", get_name()));
- editing_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1 active: edited text", get_name()));
- cursor_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1 active: cursor", get_name()));
+ bg_color = ARDOUR_UI::config()->color (string_compose ("%1 active: background", get_name()));
+ text_color = ARDOUR_UI::config()->color (string_compose ("%1 active: text", get_name()));
+ editing_color = ARDOUR_UI::config()->color (string_compose ("%1 active: edited text", get_name()));
+ cursor_color = ARDOUR_UI::config()->color (string_compose ("%1 active: cursor", get_name()));
} else {
- bg_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: background", get_name()));
- text_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: text", get_name()));
- editing_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: edited text", get_name()));
- cursor_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: cursor", get_name()));
+ bg_color = ARDOUR_UI::config()->color (string_compose ("%1: background", get_name()));
+ text_color = ARDOUR_UI::config()->color (string_compose ("%1: text", get_name()));
+ editing_color = ARDOUR_UI::config()->color (string_compose ("%1: edited text", get_name()));
+ cursor_color = ARDOUR_UI::config()->color (string_compose ("%1: cursor", get_name()));
}
/* store for bg and cursor in render() */
diff --git a/gtk2_ardour/base_colors.h b/gtk2_ardour/base_colors.h
new file mode 100644
index 0000000000..570a7825c8
--- /dev/null
+++ b/gtk2_ardour/base_colors.h
@@ -0,0 +1,54 @@
+/*
+ Copyright (C) 2014 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+/* no guard #ifdef's - this file is intended to be included many times */
+
+/* note that because the integer values are interpreted as RGBA, we must include a A component, which is just 0xff
+ for all colors here. The alpha component is not used.
+*/
+
+CANVAS_BASE_COLOR(colorA,"colorA", 0xff0000ff) /* red */
+CANVAS_BASE_COLOR(colorAlight,"colorAlight", 0xff00e6ff) /* pink */
+
+/* oranges */
+
+CANVAS_BASE_COLOR(colorAB,"colorAB", 0xff4d00ff) /* redder/darker orange */
+CANVAS_BASE_COLOR(colorABlight,"colorABlight", 0xff9900ff) /* lighter orange */
+
+/* yellows */
+CANVAS_BASE_COLOR(colorB,"colorB", 0xffe600ff) /* bright yellow */
+
+/* greens */
+CANVAS_BASE_COLOR(colorA2,"colorC", 0x00ff1aff) /* darker green */
+CANVAS_BASE_COLOR(colorClight,"colorClight", 0x80ff00ff) /* light green */
+
+/* cyan */
+CANVAS_BASE_COLOR(colorCD,"colorCD", 0x00ffb3ff) /* cyan */
+
+/* blues */
+CANVAS_BASE_COLOR(colorD,"colorD", 0x00ffffff) /* light blue */
+CANVAS_BASE_COLOR(colorDdark,"colorDdark", 0x001affff) /* darkest blue */
+CANVAS_BASE_COLOR(colorDlight,"colorDlight", 0x00b3ffff) /* lightest blue */
+
+/* purple */
+CANVAS_BASE_COLOR(colorDA,"colorDA", 0x8000ffff) /* purple */
+
+
+
+
diff --git a/gtk2_ardour/button_joiner.cc b/gtk2_ardour/button_joiner.cc
index 0c60cba1db..da9ae45847 100644
--- a/gtk2_ardour/button_joiner.cc
+++ b/gtk2_ardour/button_joiner.cc
@@ -74,7 +74,7 @@ ButtonJoiner::ButtonJoiner (const std::string& str, Gtk::Widget& lw, Gtk::Widget
uint32_t border_color;
uint32_t r, g, b, a;
- border_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: border end", name));
+ border_color = ARDOUR_UI::config()->color (string_compose ("%1: border end", name));
UINT_TO_RGBA (border_color, &r, &g, &b, &a);
border_r = r/255.0;
@@ -256,15 +256,15 @@ ButtonJoiner::set_colors ()
active_fill_pattern = cairo_pattern_create_linear (0.0, 0.0, 0.0, get_height());
inactive_fill_pattern = cairo_pattern_create_linear (0.0, 0.0, 0.0, get_height());
- start_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: fill start", name));
- end_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: fill end", name));
+ start_color = ARDOUR_UI::config()->color (string_compose ("%1: fill start", name));
+ end_color = ARDOUR_UI::config()->color (string_compose ("%1: fill end", name));
UINT_TO_RGBA (start_color, &r, &g, &b, &a);
cairo_pattern_add_color_stop_rgba (inactive_fill_pattern, 0, r/255.0,g/255.0,b/255.0, a/255.0);
UINT_TO_RGBA (end_color, &r, &g, &b, &a);
cairo_pattern_add_color_stop_rgba (inactive_fill_pattern, 1, r/255.0,g/255.0,b/255.0, a/255.0);
- start_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: fill start active", name));
- end_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: fill end active", name));
+ start_color = ARDOUR_UI::config()->color (string_compose ("%1: fill start active", name));
+ end_color = ARDOUR_UI::config()->color (string_compose ("%1: fill end active", name));
UINT_TO_RGBA (start_color, &r, &g, &b, &a);
cairo_pattern_add_color_stop_rgba (active_fill_pattern, 0, r/255.0,g/255.0,b/255.0, a/255.0);
UINT_TO_RGBA (end_color, &r, &g, &b, &a);
diff --git a/gtk2_ardour/canvas_vars.h b/gtk2_ardour/canvas_vars.h
index 206c509f06..995db6ae13 100644
--- a/gtk2_ardour/canvas_vars.h
+++ b/gtk2_ardour/canvas_vars.h
@@ -17,242 +17,6 @@
*/
-CANVAS_VARIABLE(ActiveCrossfade, "active crossfade")
-CANVAS_VARIABLE(canvasvar_ArrangeBase, "arrange base")
-CANVAS_VARIABLE(AudioBusBase, "audio bus base")
-CANVAS_VARIABLE(AudioMasterBusBase, "audio master bus base")
-CANVAS_VARIABLE(AudioTrackBase, "audio track base")
-CANVAS_VARIABLE(AutomationLine, "automation line")
-CANVAS_VARIABLE(AutomationTrackFill, "automation track fill")
-CANVAS_VARIABLE(AutomationTrackOutline, "automation track outline")
-CANVAS_VARIABLE(CDMarkerBar, "cd marker bar")
-CANVAS_VARIABLE(CrossfadeEditorBase, "crossfade editor base")
-CANVAS_VARIABLE(CrossfadeEditorLine, "crossfade editor line")
-CANVAS_VARIABLE(CrossfadeEditorLineShading, "crossfade editor line shading")
-CANVAS_VARIABLE(CrossfadeEditorPointFill, "crossfade editor point fill")
-CANVAS_VARIABLE(CrossfadeEditorPointOutline, "crossfade editor point outline")
-CANVAS_VARIABLE(CrossfadeEditorWave, "crossfade editor wave")
-CANVAS_VARIABLE(SelectedCrossfadeEditorWaveFill, "selected crossfade editor wave fill")
-CANVAS_VARIABLE(CrossfadeLine, "crossfade line")
-CANVAS_VARIABLE(EditPoint, "edit point")
-CANVAS_VARIABLE(EnteredAutomationLine, "entered automation line")
-CANVAS_VARIABLE(ControlPointFill, "control point fill")
-CANVAS_VARIABLE(ControlPointOutline, "control point outline")
-CANVAS_VARIABLE(ControlPointSelected, "control point selected")
-CANVAS_VARIABLE(EnteredGainLine, "entered gain line")
-CANVAS_VARIABLE(EnteredMarker, "entered marker")
-CANVAS_VARIABLE(FrameHandle, "frame handle")
-CANVAS_VARIABLE(GainLine, "gain line")
-CANVAS_VARIABLE(GainLineInactive, "gain line inactive")
-CANVAS_VARIABLE(GhostTrackBase, "ghost track base")
-CANVAS_VARIABLE(GhostTrackMidiOutline, "ghost track midi outline")
-CANVAS_VARIABLE(GhostTrackWave, "ghost track wave")
-CANVAS_VARIABLE(GhostTrackWaveFill, "ghost track wave fill")
-CANVAS_VARIABLE(GhostTrackWaveClip, "ghost track wave clip")
-CANVAS_VARIABLE(GhostTrackZeroLine, "ghost track zero line")
-CANVAS_VARIABLE(ImageTrack, "image track")
-CANVAS_VARIABLE(InactiveCrossfade, "inactive crossfade")
-CANVAS_VARIABLE(InactiveFadeHandle, "inactive fade handle")
-CANVAS_VARIABLE(InactiveGroupTab, "inactive group tab")
-CANVAS_VARIABLE(LocationCDMarker, "location cd marker")
-CANVAS_VARIABLE(LocationLoop, "location loop")
-CANVAS_VARIABLE(LocationMarker, "location marker")
-CANVAS_VARIABLE(LocationPunch, "location punch")
-CANVAS_VARIABLE(LocationRange, "location range")
-CANVAS_VARIABLE(MarkerBar, "marker bar")
-CANVAS_VARIABLE(MarkerBarSeparator, "marker bar separator")
-CANVAS_VARIABLE(MarkerDragLine, "marker drag line")
-CANVAS_VARIABLE(MarkerLabel, "marker label")
-CANVAS_VARIABLE(MarkerTrack, "marker track")
-CANVAS_VARIABLE(MeasureLineBar, "measure line bar")
-CANVAS_VARIABLE(MeasureLineBeat, "measure line beat")
-CANVAS_VARIABLE(MeterBar, "meter bar")
-CANVAS_VARIABLE(MeterBridgePeakLabel, "meterbridge peaklabel")
-CANVAS_VARIABLE(MeterColorBBC, "meter color BBC")
-CANVAS_VARIABLE(MeterColor0, "meter fill: 0")
-CANVAS_VARIABLE(MeterColor1, "meter fill: 1")
-CANVAS_VARIABLE(MeterColor2, "meter fill: 2")
-CANVAS_VARIABLE(MeterColor3, "meter fill: 3")
-CANVAS_VARIABLE(MeterColor4, "meter fill: 4")
-CANVAS_VARIABLE(MeterColor5, "meter fill: 5")
-CANVAS_VARIABLE(MeterColor6, "meter fill: 6")
-CANVAS_VARIABLE(MeterColor7, "meter fill: 7")
-CANVAS_VARIABLE(MeterColor8, "meter fill: 8")
-CANVAS_VARIABLE(MeterColor9, "meter fill: 9")
-CANVAS_VARIABLE(MidiMeterColor0, "midi meter fill: 0")
-CANVAS_VARIABLE(MidiMeterColor1, "midi meter fill: 1")
-CANVAS_VARIABLE(MidiMeterColor2, "midi meter fill: 2")
-CANVAS_VARIABLE(MidiMeterColor3, "midi meter fill: 3")
-CANVAS_VARIABLE(MidiMeterColor4, "midi meter fill: 4")
-CANVAS_VARIABLE(MidiMeterColor5, "midi meter fill: 5")
-CANVAS_VARIABLE(MidiMeterColor6, "midi meter fill: 6")
-CANVAS_VARIABLE(MidiMeterColor7, "midi meter fill: 7")
-CANVAS_VARIABLE(MidiMeterColor8, "midi meter fill: 8")
-CANVAS_VARIABLE(MidiMeterColor9, "midi meter fill: 9")
-CANVAS_VARIABLE(MeterBackgroundBot, "meter background: bottom")
-CANVAS_VARIABLE(MeterBackgroundTop, "meter background: top")
-CANVAS_VARIABLE(MeterMarker, "meter marker")
-CANVAS_VARIABLE(MidiBusBase, "midi bus base")
-CANVAS_VARIABLE(MidiFrameBase, "midi frame base")
-CANVAS_VARIABLE(MidiNoteInactiveChannel, "midi note inactive channel")
-CANVAS_VARIABLE(MidiNoteColorBase, "midi note color min")
-CANVAS_VARIABLE(MidiNoteColorMid, "midi note color mid")
-CANVAS_VARIABLE(MidiNoteColorTop, "midi note color max")
-CANVAS_VARIABLE(SelectedMidiNoteColorBase, "selected midi note color min")
-CANVAS_VARIABLE(SelectedMidiNoteColorMid, "selected midi note color mid")
-CANVAS_VARIABLE(SelectedMidiNoteColorTop, "selected midi note color max")
-CANVAS_VARIABLE(MidiNoteSelected, "midi note selected")
-CANVAS_VARIABLE(MidiNoteVelocityText, "midi note velocity text")
-CANVAS_VARIABLE(MidiPatchChangeFill, "midi patch change fill")
-CANVAS_VARIABLE(MidiPatchChangeOutline, "midi patch change outline")
-CANVAS_VARIABLE(MidiPatchChangeInactiveChannelFill, "midi patch change inactive channel fill")
-CANVAS_VARIABLE(MidiPatchChangeInactiveChannelOutline, "midi patch change inactive channel outline")
-CANVAS_VARIABLE(MidiSysExFill, "midi sysex fill")
-CANVAS_VARIABLE(MidiSysExOutline, "midi sysex outline")
-CANVAS_VARIABLE(MidiSelectRectFill, "midi select rect fill")
-CANVAS_VARIABLE(MidiSelectRectOutline, "midi select rect outline")
-CANVAS_VARIABLE(MidiTrackBase, "midi track base")
-CANVAS_VARIABLE(NameHighlightFill, "name highlight fill")
-CANVAS_VARIABLE(NameHighlightOutline, "name highlight outline")
-CANVAS_VARIABLE(PianoRollBlackOutline, "piano roll black outline")
-CANVAS_VARIABLE(PianoRollBlack, "piano roll black")
-CANVAS_VARIABLE(PianoRollWhite, "piano roll white")
-CANVAS_VARIABLE(PlayHead, "play head")
-CANVAS_VARIABLE(ProcessorAutomationLine, "processor automation line")
-CANVAS_VARIABLE(PunchLine, "punch line")
-CANVAS_VARIABLE(RangeDragBarRect, "range drag bar rect")
-CANVAS_VARIABLE(RangeDragRect, "range drag rect")
-CANVAS_VARIABLE(RangeMarkerBar, "range marker bar")
-CANVAS_VARIABLE(RecordingRect, "recording rect")
-CANVAS_VARIABLE(RecWaveFormFill, "recorded waveform fill")
-CANVAS_VARIABLE(RecWaveForm, "recorded waveform outline")
-CANVAS_VARIABLE(RubberBandRect, "rubber band rect")
-CANVAS_VARIABLE(RulerBase, "ruler base")
-CANVAS_VARIABLE(RulerText, "ruler text")
-CANVAS_VARIABLE(SelectedCrossfadeEditorLine, "selected crossfade editor line")
-CANVAS_VARIABLE(SelectedCrossfadeEditorWave, "selected crossfade editor wave")
-CANVAS_VARIABLE(SelectedFrameBase, "selected region base")
-CANVAS_VARIABLE(SelectedWaveFormFill, "selected waveform fill")
-CANVAS_VARIABLE(SelectedWaveForm, "selected waveform outline")
-CANVAS_VARIABLE(SelectionRect, "selection rect")
-CANVAS_VARIABLE(Selection, "selection")
-CANVAS_VARIABLE(Shuttle, "shuttle")
-CANVAS_VARIABLE(Silence, "silence")
-CANVAS_VARIABLE(SilenceText, "silence text")
-CANVAS_VARIABLE(MonoPannerOutline, "mono panner outline")
-CANVAS_VARIABLE(MonoPannerFill, "mono panner fill")
-CANVAS_VARIABLE(MonoPannerText, "mono panner text")
-CANVAS_VARIABLE(MonoPannerBackground, "mono panner bg")
-CANVAS_VARIABLE(MonoPannerPositionFill, "mono panner position fill")
-CANVAS_VARIABLE(MonoPannerPositionOutline, "mono panner position outline")
-CANVAS_VARIABLE(StereoPannerOutline, "stereo panner outline")
-CANVAS_VARIABLE(StereoPannerFill, "stereo panner fill")
-CANVAS_VARIABLE(StereoPannerText, "stereo panner text")
-CANVAS_VARIABLE(StereoPannerBackground, "stereo panner bg")
-CANVAS_VARIABLE(StereoPannerRule, "stereo panner rule")
-CANVAS_VARIABLE(StereoPannerMonoOutline, "stereo panner mono outline")
-CANVAS_VARIABLE(StereoPannerMonoFill, "stereo panner mono fill")
-CANVAS_VARIABLE(StereoPannerMonoText, "stereo panner mono text")
-CANVAS_VARIABLE(StereoPannerMonoBackground, "stereo panner mono bg")
-CANVAS_VARIABLE(StereoPannerInvertedOutline, "stereo panner inverted outline")
-CANVAS_VARIABLE(StereoPannerInvertedFill, "stereo panner inverted fill")
-CANVAS_VARIABLE(StereoPannerInvertedText, "stereo panner inverted text")
-CANVAS_VARIABLE(StereoPannerInvertedBackground, "stereo panner inverted bg")
-CANVAS_VARIABLE(TempoBar, "tempo bar")
-CANVAS_VARIABLE(TempoMarker, "tempo marker")
-CANVAS_VARIABLE(TimeAxisFrame, "time axis frame")
-CANVAS_VARIABLE(SelectedTimeAxisFrame, "selected time axis frame")
-CANVAS_VARIABLE(TimeStretchFill, "time stretch fill")
-CANVAS_VARIABLE(TimeStretchOutline, "time stretch outline")
-CANVAS_VARIABLE(MonitorKnobArcStart, "monitor knob: arc start")
-CANVAS_VARIABLE(MonitorKnobArcEnd, "monitor knob: arc end")
-CANVAS_VARIABLE(TransportDragRect, "transport drag rect")
-CANVAS_VARIABLE(TransportLoopRect, "transport loop rect")
-CANVAS_VARIABLE(TransportMarkerBar, "transport marker bar")
-CANVAS_VARIABLE(TransportPunchRect, "transport punch rect")
-CANVAS_VARIABLE(TrimHandleLocked, "trim handle locked")
-CANVAS_VARIABLE(TrimHandle, "trim handle")
-CANVAS_VARIABLE(VerboseCanvasCursor, "verbose canvas cursor")
-CANVAS_VARIABLE(VestigialFrame, "vestigial frame")
-CANVAS_VARIABLE(VideoBar, "video timeline bar")
-CANVAS_VARIABLE(FrameBase, "region base")
-CANVAS_VARIABLE(CoveredRegion, "region area covered by another region")
-CANVAS_VARIABLE(WaveForm, "waveform outline")
-CANVAS_VARIABLE(WaveFormClip, "clipped waveform")
-CANVAS_VARIABLE(WaveFormFill, "waveform fill")
-CANVAS_VARIABLE(ZeroLine, "zero line")
-CANVAS_VARIABLE(MonitorSectionKnob, "monitor knob")
-
-CANVAS_VARIABLE(ButtonBorder, "border color")
-#define BUTTON_VARS(root,name) \
-CANVAS_VARIABLE(root ## Fill, name ": fill") \
-CANVAS_VARIABLE(root ## FillActive, name ": fill active") \
-CANVAS_VARIABLE(root ## LED, name ": led") \
-CANVAS_VARIABLE(root ## LEDActive, name ": led active") \
-CANVAS_VARIABLE(root ## Text, name ": text") \
-CANVAS_VARIABLE(root ## TextActive, name ": text active") \
-
-BUTTON_VARS(ProcessorPreFader, "processor prefader")
-BUTTON_VARS(ProcessorFader, "processor fader")
-BUTTON_VARS(ProcessorPostFader, "processor postfader")
-BUTTON_VARS(ProcessorControlButton, "processor control button")
-BUTTON_VARS(MonitorButton, "monitor button")
-BUTTON_VARS(SoloIsolateButton, "solo isolate")
-BUTTON_VARS(SoloSafeButton, "solo safe")
-BUTTON_VARS(MidiDeviceButton, "midi device")
-BUTTON_VARS(MeterBridgePeakIndicator, "meterbridge peakindicator")
-BUTTON_VARS(MeterBridgeLabel, "meterbridge label")
-BUTTON_VARS(MonitorSectionCutButton, "monitor section cut")
-BUTTON_VARS(MonitorSectionDimButton, "monitor section dim")
-BUTTON_VARS(MonitorSectionSoloButton, "monitor section solo")
-BUTTON_VARS(MonitorSectionInvertButton, "monitor section invert")
-BUTTON_VARS(MonitorSectionMonoButton, "monitor section mono")
-BUTTON_VARS(MonitorSectionSoloModelButton, "monitor section solo model")
-BUTTON_VARS(MonitorSectionSoloOverrideButton, "monitor solo override")
-BUTTON_VARS(MonitorSectionSoloExclusiveButton, "monitor solo exclusive")
-BUTTON_VARS(RudeSolo, "rude solo")
-BUTTON_VARS(RudeIsolate, "rude isolate")
-BUTTON_VARS(RudeAudition, "rude audition")
-BUTTON_VARS(FeedbackAlert, "feedback alert")
-BUTTON_VARS(InvertButton, "invert button")
-BUTTON_VARS(MuteButton, "mute button")
-BUTTON_VARS(SoloButton, "solo button")
-BUTTON_VARS(RecEnableButton, "record enable button")
-BUTTON_VARS(SendButton, "send alert button")
-BUTTON_VARS(TransportButton, "transport button")
-BUTTON_VARS(TransportRecenableButton, "transport recenable button")
-BUTTON_VARS(TransportOptionButton, "transport option button")
-BUTTON_VARS(TransportActiveOptionButton, "transport active option button")
-BUTTON_VARS(TrackNumberLabel, "tracknumber label")
-BUTTON_VARS(PluginBypassButton, "plugin bypass button")
-BUTTON_VARS(PunchButton, "punch button")
-BUTTON_VARS(MouseModeButton, "mouse mode button")
-BUTTON_VARS(NudgeButton, "nudge button")
-BUTTON_VARS(ZoomButton, "zoom button")
-BUTTON_VARS(ZoomMenu, "zoom menu")
-BUTTON_VARS(RouteButton, "route button")
-BUTTON_VARS(MixerStripButton, "mixer strip button")
-BUTTON_VARS(MixerStripNameButton, "mixer strip name button")
-BUTTON_VARS(MidiInputButton, "midi input button")
-BUTTON_VARS(LockButton, "lock button")
-BUTTON_VARS(GenericButton, "generic button")
-
-#define CLOCK_VARS(root,name) \
- CANVAS_VARIABLE(root ## Background, name ": background") \
- CANVAS_VARIABLE(root ## Text, name ": text") \
- CANVAS_VARIABLE(root ## EditedText, name ": edited text") \
- CANVAS_VARIABLE(root ## Cursor, name ": cursor")
-
-CLOCK_VARS(TransportClock, "transport clock")
-CLOCK_VARS(SecondaryClock, "secondary clock")
-CLOCK_VARS(TransportDeltaClock, "transport delta clock")
-CLOCK_VARS(SecondaryDeltaClock, "secondary delta clock")
-CLOCK_VARS(BigClock, "big clock")
-CLOCK_VARS(BigClockActive, "big clock active")
-CLOCK_VARS(PunchClock, "punch clock")
-CLOCK_VARS(SelectionClock, "selection clock")
-CLOCK_VARS(NudgeClock, "nudge clock")
-CLOCK_VARS(GenericClock, "clock")
CANVAS_FONT_VARIABLE(SmallFont, "small font")
CANVAS_FONT_VARIABLE(SmallerFont, "smaller font")
CANVAS_FONT_VARIABLE(NormalFont, "normal font")
diff --git a/gtk2_ardour/colors.h b/gtk2_ardour/colors.h
new file mode 100644
index 0000000000..afa0f1150b
--- /dev/null
+++ b/gtk2_ardour/colors.h
@@ -0,0 +1,493 @@
+/*
+ Copyright (C) 2012 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+/* no guard #ifdef's - this should only be included in ui_config.{cc,h}, where it is
+ * used with some preprocessor tricks.
+ */
+
+CANVAS_COLOR(ActiveCrossfade,"active crossfade", "colorD", HSV(0,-0.179775,-0.301961,0.180392)) /*0 */
+CANVAS_COLOR(canvasvar_ArrangeBase,"arrange base", "colorA", HSV(0,-1,-0.65098,1)) /*0 */
+CANVAS_COLOR(AudioBusBase,"audio bus base", "colorDdark", HSV(-17.6842,-0.751634,-0.4,0.407843)) /*17.6842 */
+CANVAS_COLOR(AudioTrackBase,"audio track base", "colorDlight", HSV(17.3846,-0.80102,-0.231373,0.407843)) /*17.3846 */
+CANVAS_COLOR(AudioMasterBusBase,"audio master bus base", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(AutomationLine,"automation line", "colorC", HSV(0,-0.361702,-0.262745,1)) /*0 */
+CANVAS_COLOR(AutomationTrackFill,"automation track fill", "colorDdark", HSV(-0.521739,-0.776699,-0.192157,0.407843)) /*0.521739 */
+CANVAS_COLOR(AutomationTrackOutline,"automation track outline", "colorA", HSV(0,-1,-0.843137,1)) /*0 */
+CANVAS_COLOR(CDMarkerBar,"cd marker bar", "colorDdark", HSV(-2,-0.907975,-0.360784,0.8)) /*2 */
+CANVAS_COLOR(CrossfadeEditorBase,"crossfade editor base", "colorDdark", HSV(0.545455,-0.547945,-0.713725,1)) /*0.545455 */
+CANVAS_COLOR(CrossfadeEditorLine,"crossfade editor line", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(CrossfadeEditorLineShading,"crossfade editor line shading", "colorDlight", HSV(0.0861244,0,-0.180392,0.329412)) /*0.0861244 */
+CANVAS_COLOR(CrossfadeEditorPointFill,"crossfade editor point fill", "colorC", HSV(0.117647,0,0,1)) /*0.117647 */
+CANVAS_COLOR(CrossfadeEditorPointOutline,"crossfade editor point outline", "colorDdark", HSV(-0.117647,0,0,1)) /*0.117647 */
+CANVAS_COLOR(CrossfadeEditorWave,"crossfade editor wave", "colorA", HSV(0,-1,0,0.156863)) /*0 */
+CANVAS_COLOR(SelectedCrossfadeEditorWaveFill,"selected crossfade editor wave fill", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(CrossfadeLine,"crossfade line", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(EditPoint,"edit point", "colorDdark", HSV(-0.117647,0,0,1)) /*0.117647 */
+CANVAS_COLOR(EnteredAutomationLine,"entered automation line", "colorA", HSV(0,-0.447964,-0.133333,1)) /*0 */
+CANVAS_COLOR(ControlPointFill,"control point fill", "colorA", HSV(0,-1,0,0.4)) /*0 */
+CANVAS_COLOR(ControlPointOutline,"control point outline", "colorA", HSV(0,0,0,0.933333)) /*0 */
+CANVAS_COLOR(ControlPointSelected,"control point selected", "colorD", HSV(0,-0.416667,-0.2,1)) /*0 */
+CANVAS_COLOR(EnteredGainLine,"entered gain line", "colorA", HSV(0,-0.447964,-0.133333,1)) /*0 */
+CANVAS_COLOR(EnteredMarker,"entered marker", "colorA", HSV(0,-0.447964,-0.133333,1)) /*0 */
+CANVAS_COLOR(FrameHandle,"frame handle", "colorDA", HSV(0.117647,0,0,0.588235)) /*0.117647 */
+CANVAS_COLOR(GainLine,"gain line", "colorC", HSV(0.0638298,0,-0.262745,1)) /*0.0638298 */
+CANVAS_COLOR(GainLineInactive,"gain line inactive", "colorC", HSV(0.206897,-0.845745,-0.262745,0.772549)) /*0.206897 */
+CANVAS_COLOR(GhostTrackBase,"ghost track base", "colorDA", HSV(0,-0.5,-0.513725,0.776471)) /*0 */
+CANVAS_COLOR(GhostTrackMidiOutline,"ghost track midi outline", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(GhostTrackWave,"ghost track wave", "colorA", HSV(0,-1,-0.87451,0.85098)) /*0 */
+CANVAS_COLOR(GhostTrackWaveFill,"ghost track wave fill", "colorA", HSV(0,-1,-0.87451,0.376471)) /*0 */
+CANVAS_COLOR(GhostTrackWaveClip,"ghost track wave clip", "colorA", HSV(0,-1,-0.87451,0.85098)) /*0 */
+CANVAS_COLOR(GhostTrackZeroLine,"ghost track zero line", "colorAlight", HSV(0.0262009,0,-0.101961,0.4)) /*0.0262009 */
+CANVAS_COLOR(ImageTrack,"image track", "colorB", HSV(-6,-0.977376,-0.133333,1)) /*6 */
+CANVAS_COLOR(InactiveCrossfade,"inactive crossfade", "colorB", HSV(-0.136364,-0.257384,-0.0705882,0.466667)) /*0.136364 */
+CANVAS_COLOR(InactiveFadeHandle,"inactive fade handle", "colorA", HSV(0,-1,-0.266667,0.666667)) /*0 */
+CANVAS_COLOR(InactiveGroupTab,"inactive group tab", "colorA", HSV(0,-1,-0.737255,1)) /*0 */
+CANVAS_COLOR(LocationCDMarker,"location cd marker", "colorCD", HSV(-0.118812,-0.12931,-0.0901961,1)) /*0.118812 */
+CANVAS_COLOR(LocationLoop,"location loop", "colorCD", HSV(-17.8763,-0.353333,-0.411765,1)) /*17.8763 */
+CANVAS_COLOR(LocationMarker,"location marker", "colorB", HSV(17.8943,-0.0696721,-0.0431373,1)) /*17.8943 */
+CANVAS_COLOR(LocationPunch,"location punch", "colorA", HSV(0,-0.467742,-0.513725,1)) /*0 */
+CANVAS_COLOR(LocationRange,"location range", "colorCD", HSV(-17.5102,-0.598361,-0.521569,1)) /*17.5102 */
+CANVAS_COLOR(MarkerBar,"marker bar", "colorDdark", HSV(-18,-0.884393,-0.321569,0.8)) /*18 */
+CANVAS_COLOR(MarkerBarSeparator,"marker bar separator", "colorA", HSV(0,-1,-0.666667,1)) /*0 */
+CANVAS_COLOR(MarkerDragLine,"marker drag line", "colorC", HSV(0.0759494,0,-0.690196,0.976471)) /*0.0759494 */
+CANVAS_COLOR(MarkerLabel,"marker label", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(MarkerTrack,"marker track", "colorB", HSV(-6,-0.977376,-0.133333,1)) /*6 */
+CANVAS_COLOR(MeasureLineBar,"measure line bar", "colorA", HSV(0,-1,0,0.611765)) /*0 */
+CANVAS_COLOR(MeasureLineBeat,"measure line beat", "colorA", HSV(0,-0.975309,-0.364706,0.462745)) /*0 */
+CANVAS_COLOR(MeterBar,"meter bar", "colorDdark", HSV(1.71429,-0.875,-0.560784,0.8)) /*1.71429 */
+CANVAS_COLOR(MeterBridgePeakLabel,"meterbridge peaklabel", "colorA", HSV(0,-0.0666667,0,1)) /*0 */
+CANVAS_COLOR(MeterColorBBC,"meter color BBC", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterColor0,"meter fill: 0", "colorC", HSV(0.176471,0,-0.466667,1)) /*0.176471 */
+CANVAS_COLOR(MeterColor1,"meter fill: 1", "colorC", HSV(0,0,-0.333333,1)) /*0 */
+CANVAS_COLOR(MeterColor2,"meter fill: 2", "colorC", HSV(0.117647,0,0,1)) /*0.117647 */
+CANVAS_COLOR(MeterColor3,"meter fill: 3", "colorC", HSV(0.117647,0,0,1)) /*0.117647 */
+CANVAS_COLOR(MeterColor4,"meter fill: 4", "colorB", HSV(0.117647,0,0,1)) /*0.117647 */
+CANVAS_COLOR(MeterColor5,"meter fill: 5", "colorB", HSV(0.117647,0,0,1)) /*0.117647 */
+CANVAS_COLOR(MeterColor6,"meter fill: 6", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterColor7,"meter fill: 7", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterColor8,"meter fill: 8", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterColor9,"meter fill: 9", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MidiMeterColor0,"midi meter fill: 0", "colorClight", HSV(-17.8652,-0.644,-0.0196078,1)) /*17.8652 */
+CANVAS_COLOR(MidiMeterColor1,"midi meter fill: 1", "colorABlight", HSV(-0.102564,-0.516529,-0.0509804,1)) /*0.102564 */
+CANVAS_COLOR(MidiMeterColor2,"midi meter fill: 2", "colorABlight", HSV(-0.102564,-0.516529,-0.0509804,1)) /*0.102564 */
+CANVAS_COLOR(MidiMeterColor3,"midi meter fill: 3", "colorAB", HSV(0.148148,-0.336066,-0.0431373,1)) /*0.148148 */
+CANVAS_COLOR(MidiMeterColor4,"midi meter fill: 4", "colorAB", HSV(0.148148,-0.336066,-0.0431373,1)) /*0.148148 */
+CANVAS_COLOR(MidiMeterColor5,"midi meter fill: 5", "colorAB", HSV(0.0786026,-0.0766129,-0.027451,1)) /*0.0786026 */
+CANVAS_COLOR(MidiMeterColor6,"midi meter fill: 6", "colorAB", HSV(0.0786026,-0.0766129,-0.027451,1)) /*0.0786026 */
+CANVAS_COLOR(MidiMeterColor7,"midi meter fill: 7", "colorC", HSV(0.315789,-0.713568,-0.219608,1)) /*0.315789 */
+CANVAS_COLOR(MidiMeterColor8,"midi meter fill: 8", "colorC", HSV(0.315789,-0.713568,-0.219608,1)) /*0.315789 */
+CANVAS_COLOR(MidiMeterColor9,"midi meter fill: 9", "colorCD", HSV(-17.9016,0,-0.0431373,0)) /*17.9016 */
+CANVAS_COLOR(MeterBackgroundBot,"meter background: bottom", "colorA", HSV(0,-1,-0.8,1)) /*0 */
+CANVAS_COLOR(MeterBackgroundTop,"meter background: top", "colorA", HSV(0,-1,-0.733333,1)) /*0 */
+CANVAS_COLOR(MeterMarker,"meter marker", "colorA", HSV(0,-0.272727,-0.0509804,1)) /*0 */
+CANVAS_COLOR(MidiBusBase,"midi bus base", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MidiFrameBase,"midi frame base", "colorC", HSV(-16,-0.901639,-0.760784,0.4)) /*16 */
+CANVAS_COLOR(MidiNoteInactiveChannel,"midi note inactive channel", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MidiNoteColorBase,"midi note color min", "colorClight", HSV(0,-0.5,-0.670588,1)) /*0 */
+CANVAS_COLOR(MidiNoteColorMid,"midi note color mid", "colorClight", HSV(0,-0.5,-0.341176,1)) /*0 */
+CANVAS_COLOR(MidiNoteColorTop,"midi note color max", "colorClight", HSV(-0.23622,-0.501961,0,1)) /*0.23622 */
+CANVAS_COLOR(SelectedMidiNoteColorBase,"selected midi note color min", "colorDdark", HSV(0.285714,-0.588235,-0.8,1)) /*0.285714 */
+CANVAS_COLOR(SelectedMidiNoteColorMid,"selected midi note color mid", "colorDdark", HSV(-0.315789,-0.586957,-0.458824,1)) /*0.315789 */
+CANVAS_COLOR(SelectedMidiNoteColorTop,"selected midi note color max", "colorDdark", HSV(0.0659341,-0.59009,-0.129412,1)) /*0.0659341 */
+CANVAS_COLOR(MidiNoteSelected,"midi note selected", "colorDdark", HSV(-0.233766,-0.698039,0,1)) /*0.233766 */
+CANVAS_COLOR(MidiNoteVelocityText,"midi note velocity text", "colorB", HSV(0.107143,-0.0819672,-0.0431373,0.737255)) /*0.107143 */
+CANVAS_COLOR(MidiPatchChangeFill,"midi patch change fill", "colorDdark", HSV(-18,-0.888889,-0.647059,0.627451)) /*18 */
+CANVAS_COLOR(MidiPatchChangeOutline,"midi patch change outline", "colorDlight", HSV(18,-0.950495,-0.207843,1)) /*18 */
+CANVAS_COLOR(MidiPatchChangeInactiveChannelFill,"midi patch change inactive channel fill", "colorDdark", HSV(-18,-0.888889,-0.647059,0.752941)) /*18 */
+CANVAS_COLOR(MidiPatchChangeInactiveChannelOutline,"midi patch change inactive channel outline", "colorDdark", HSV(-18,-0.761905,-0.835294,0.752941)) /*18 */
+CANVAS_COLOR(MidiSysExFill,"midi sysex fill", "colorB", HSV(0.130435,-0.236515,-0.054902,0.627451)) /*0.130435 */
+CANVAS_COLOR(MidiSysExOutline,"midi sysex outline", "colorDdark", HSV(-0.666667,-0.787736,-0.168627,1)) /*0.666667 */
+CANVAS_COLOR(MidiSelectRectFill,"midi select rect fill", "colorDdark", HSV(-0.0504202,-0.533333,0,0.533333)) /*0.0504202 */
+CANVAS_COLOR(MidiSelectRectOutline,"midi select rect outline", "colorDdark", HSV(0,-0.333333,0,1)) /*0 */
+CANVAS_COLOR(MidiTrackBase,"midi track base", "colorClight", HSV(-0.731707,-0.79902,-0.2,0.372549)) /*0.731707 */
+CANVAS_COLOR(NameHighlightFill,"name highlight fill", "colorDdark", HSV(-0.117647,0,0,1)) /*0.117647 */
+CANVAS_COLOR(NameHighlightOutline,"name highlight outline", "colorDA", HSV(0.117647,0,0,0.588235)) /*0.117647 */
+CANVAS_COLOR(PianoRollBlackOutline,"piano roll black outline", "colorA", HSV(0,-1,-0.0431373,0.462745)) /*0 */
+CANVAS_COLOR(PianoRollBlack,"piano roll black", "colorClight", HSV(1.13687e-13,-0.963636,-0.568627,0.419608)) /*1.13687e-13 */
+CANVAS_COLOR(PianoRollWhite,"piano roll white", "colorC", HSV(-16,-0.96129,-0.392157,0.396078)) /*16 */
+CANVAS_COLOR(PlayHead,"play head", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(ProcessorAutomationLine,"processor automation line", "colorDlight", HSV(17.9055,-0.48996,-0.0235294,1)) /*17.9055 */
+CANVAS_COLOR(PunchLine,"punch line", "colorA", HSV(0,0,-0.341176,1)) /*0 */
+CANVAS_COLOR(RangeDragBarRect,"range drag bar rect", "colorA", HSV(0,-1,-0.411765,0.776471)) /*0 */
+CANVAS_COLOR(RangeDragRect,"range drag rect", "colorC", HSV(17.8235,-0.656566,-0.223529,0.776471)) /*17.8235 */
+CANVAS_COLOR(RangeMarkerBar,"range marker bar", "colorDdark", HSV(2,-0.892857,-0.45098,0.8)) /*2 */
+CANVAS_COLOR(RecordingRect,"recording rect", "colorA", HSV(0,-0.196078,-0.2,1)) /*0 */
+CANVAS_COLOR(RecWaveFormFill,"recorded waveform fill", "colorA", HSV(0,-1,0,0.85098)) /*0 */
+CANVAS_COLOR(RecWaveForm,"recorded waveform outline", "colorDdark", HSV(-1.5,-0.483871,-0.878431,1)) /*1.5 */
+CANVAS_COLOR(RubberBandRect,"rubber band rect", "colorA", HSV(0,-1,-0.223529,0.34902)) /*0 */
+CANVAS_COLOR(RulerBase,"ruler base", "colorA", HSV(0,-0.75,-0.827451,1)) /*0 */
+CANVAS_COLOR(RulerText,"ruler text", "colorA", HSV(0,-1,-0.101961,1)) /*0 */
+CANVAS_COLOR(SelectedCrossfadeEditorLine,"selected crossfade editor line", "colorD", HSV(0,0,-0.141176,1)) /*0 */
+CANVAS_COLOR(SelectedCrossfadeEditorWave,"selected crossfade editor wave", "colorB", HSV(-0.0262009,-0.0803213,-0.0235294,0.627451)) /*0.0262009 */
+CANVAS_COLOR(SelectedFrameBase,"selected region base", "colorDlight", HSV(15.3333,-0.907216,-0.619608,1)) /*15.3333 */
+CANVAS_COLOR(SelectedWaveFormFill,"selected waveform fill", "colorABlight", HSV(0,0,0,0.85098)) /*0 */
+CANVAS_COLOR(SelectedWaveForm,"selected waveform outline", "colorA", HSV(0,-1,-0.941176,0.8)) /*0 */
+CANVAS_COLOR(SelectionRect,"selection rect", "colorClight", HSV(0.909091,-0.864754,-0.0431373,0.466667)) /*0.909091 */
+CANVAS_COLOR(Selection,"selection", "colorA", HSV(0,-1,-0.611765,0.698039)) /*0 */
+CANVAS_COLOR(Shuttle,"shuttle", "colorClight", HSV(0,-0.175824,-0.286275,1)) /*0 */
+CANVAS_COLOR(Silence,"silence", "colorD", HSV(0,-0.619608,0,0.478431)) /*0 */
+CANVAS_COLOR(SilenceText,"silence text", "colorDdark", HSV(17.7647,-0.0555556,-0.576471,1)) /*17.7647 */
+CANVAS_COLOR(MonoPannerOutline,"mono panner outline", "colorDdark", HSV(-17.7209,-0.542553,-0.631373,1)) /*17.7209 */
+CANVAS_COLOR(MonoPannerFill,"mono panner fill", "colorDlight", HSV(17.8537,-0.598039,-0.2,0.788235)) /*17.8537 */
+CANVAS_COLOR(MonoPannerText,"mono panner text", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(MonoPannerBackground,"mono panner bg", "colorA", HSV(0,-0.891304,-0.819608,1)) /*0 */
+CANVAS_COLOR(MonoPannerPositionFill,"mono panner position fill", "colorDlight", HSV(17.7895,-0.681564,-0.298039,1)) /*17.7895 */
+CANVAS_COLOR(MonoPannerPositionOutline,"mono panner position outline", "colorDdark", HSV(-17.7209,-0.542553,-0.631373,1)) /*17.7209 */
+CANVAS_COLOR(StereoPannerOutline,"stereo panner outline", "colorDdark", HSV(-17.7209,-0.542553,-0.631373,1)) /*17.7209 */
+CANVAS_COLOR(StereoPannerFill,"stereo panner fill", "colorDlight", HSV(17.8537,-0.598039,-0.2,0.788235)) /*17.8537 */
+CANVAS_COLOR(StereoPannerText,"stereo panner text", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(StereoPannerBackground,"stereo panner bg", "colorA", HSV(0,-0.891304,-0.819608,1)) /*0 */
+CANVAS_COLOR(StereoPannerRule,"stereo panner rule", "colorDdark", HSV(-17.7931,-0.543307,-0.501961,1)) /*17.7931 */
+CANVAS_COLOR(StereoPannerMonoOutline,"stereo panner mono outline", "colorABlight", HSV(0,0,-0.372549,1)) /*0 */
+CANVAS_COLOR(StereoPannerMonoFill,"stereo panner mono fill", "colorAB", HSV(0.139535,-0.446352,-0.0862745,0.792157)) /*0.139535 */
+CANVAS_COLOR(StereoPannerMonoText,"stereo panner mono text", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(StereoPannerMonoBackground,"stereo panner mono bg", "colorA", HSV(0,-0.891304,-0.819608,1)) /*0 */
+CANVAS_COLOR(StereoPannerInvertedOutline,"stereo panner inverted outline", "colorA", HSV(0,0,-0.25098,1)) /*0 */
+CANVAS_COLOR(StereoPannerInvertedFill,"stereo panner inverted fill", "colorA", HSV(0,-0.684211,-0.105882,0.788235)) /*0 */
+CANVAS_COLOR(StereoPannerInvertedText,"stereo panner inverted text", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(StereoPannerInvertedBackground,"stereo panner inverted bg", "colorA", HSV(0,-0.891304,-0.819608,1)) /*0 */
+CANVAS_COLOR(TempoBar,"tempo bar", "colorDdark", HSV(-2,-0.88189,-0.501961,0.8)) /*2 */
+CANVAS_COLOR(TempoMarker,"tempo marker", "colorA", HSV(0,-0.272727,-0.0509804,1)) /*0 */
+CANVAS_COLOR(TimeAxisFrame,"time axis frame", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(SelectedTimeAxisFrame,"selected time axis frame", "colorA", HSV(0,0,-0.0666667,1)) /*0 */
+CANVAS_COLOR(TimeStretchFill,"time stretch fill", "colorA", HSV(0,-0.800885,-0.113725,0.588235)) /*0 */
+CANVAS_COLOR(TimeStretchOutline,"time stretch outline", "colorA", HSV(0,-1,-0.611765,0.588235)) /*0 */
+CANVAS_COLOR(MonitorKnobArcStart,"monitor knob: arc start", "colorDlight", HSV(0.0722892,-0.528409,-0.309804,1)) /*0.0722892 */
+CANVAS_COLOR(MonitorKnobArcEnd,"monitor knob: arc end", "colorDlight", HSV(0.202247,-0.190909,-0.568627,1)) /*0.202247 */
+CANVAS_COLOR(TransportDragRect,"transport drag rect", "colorA", HSV(0,-1,-0.411765,0.776471)) /*0 */
+CANVAS_COLOR(TransportLoopRect,"transport loop rect", "colorC", HSV(0.0674157,-0.252101,-0.533333,0.976471)) /*0.0674157 */
+CANVAS_COLOR(TransportMarkerBar,"transport marker bar", "colorDdark", HSV(1,-0.921053,-0.403922,0.8)) /*1 */
+CANVAS_COLOR(TransportPunchRect,"transport punch rect", "colorA", HSV(0,-0.366972,-0.572549,0.898039)) /*0 */
+CANVAS_COLOR(TrimHandleLocked,"trim handle locked", "colorA", HSV(0,-0.0641026,-0.0823529,0.156863)) /*0 */
+CANVAS_COLOR(TrimHandle,"trim handle", "colorDA", HSV(-18,0,0,0.266667)) /*18 */
+CANVAS_COLOR(VerboseCanvasCursor,"verbose canvas cursor", "colorB", HSV(-0.0287081,-0.180392,0,0.737255)) /*0.0287081 */
+CANVAS_COLOR(VestigialFrame,"vestigial frame", "colorA", HSV(0,-1,-1,0.0588235)) /*0 */
+CANVAS_COLOR(VideoBar,"video timeline bar", "colorA", HSV(0,-1,-0.811765,1)) /*0 */
+CANVAS_COLOR(FrameBase,"region base", "colorDdark", HSV(-17.0769,-0.909722,-0.435294,1)) /*17.0769 */
+CANVAS_COLOR(CoveredRegion,"region area covered by another region", "colorA", HSV(0,-1,-0.686275,0.690196)) /*0 */
+CANVAS_COLOR(WaveForm,"waveform outline", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(WaveFormClip,"clipped waveform", "colorA", HSV(0,0,0,0.898039)) /*0 */
+CANVAS_COLOR(WaveFormFill,"waveform fill", "colorA", HSV(0,-1,0,0.85098)) /*0 */
+CANVAS_COLOR(ZeroLine,"zero line", "colorA", HSV(0,-1,-0.501961,0.878431)) /*0 */
+CANVAS_COLOR(MonitorSectionKnob,"monitor knob", "colorA", HSV(0,-0.941176,-0.666667,1)) /*0 */
+CANVAS_COLOR(ButtonBorder,"border color", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(ProcessorPreFaderFill,"processor prefader: fill", "colorA", HSV(0,-0.444444,-0.470588,1)) /*0 */
+CANVAS_COLOR(ProcessorPreFaderFillActive,"processor prefader: fill active", "colorA", HSV(0,-0.552083,-0.623529,1)) /*0 */
+CANVAS_COLOR(ProcessorPreFaderLED,"processor prefader: led", "colorC", HSV(-17.831,-0.164706,-0.666667,1)) /*17.831 */
+CANVAS_COLOR(ProcessorPreFaderLEDActive,"processor prefader: led active", "colorC", HSV(-18,-0.384236,-0.203922,1)) /*18 */
+CANVAS_COLOR(ProcessorPreFaderText,"processor prefader: text", "colorB", HSV(-2.57143,-0.958824,-0.333333,1)) /*2.57143 */
+CANVAS_COLOR(ProcessorPreFaderTextActive,"processor prefader: text active", "colorB", HSV(6,-0.991597,-0.0666667,1)) /*6 */
+CANVAS_COLOR(ProcessorFaderFill,"processor fader: fill", "colorDlight", HSV(0.0722892,-0.528409,-0.309804,1)) /*0.0722892 */
+CANVAS_COLOR(ProcessorFaderFillActive,"processor fader: fill active", "colorDlight", HSV(0.113208,-0.258741,-0.439216,1)) /*0.113208 */
+CANVAS_COLOR(ProcessorFaderLED,"processor fader: led", "colorC", HSV(-17.831,-0.164706,-0.666667,1)) /*17.831 */
+CANVAS_COLOR(ProcessorFaderLEDActive,"processor fader: led active", "colorC", HSV(-18,-0.384236,-0.203922,1)) /*18 */
+CANVAS_COLOR(ProcessorFaderText,"processor fader: text", "colorB", HSV(-2.57143,-0.958824,-0.333333,1)) /*2.57143 */
+CANVAS_COLOR(ProcessorFaderTextActive,"processor fader: text active", "colorB", HSV(6,-0.991597,-0.0666667,1)) /*6 */
+CANVAS_COLOR(ProcessorPostFaderFill,"processor postfader: fill", "colorClight", HSV(18,-0.666667,-0.647059,1)) /*18 */
+CANVAS_COLOR(ProcessorPostFaderFillActive,"processor postfader: fill active", "colorC", HSV(-0.375,-0.536232,-0.729412,1)) /*0.375 */
+CANVAS_COLOR(ProcessorPostFaderLED,"processor postfader: led", "colorC", HSV(-17.831,-0.164706,-0.666667,1)) /*17.831 */
+CANVAS_COLOR(ProcessorPostFaderLEDActive,"processor postfader: led active", "colorC", HSV(-18,-0.384236,-0.203922,1)) /*18 */
+CANVAS_COLOR(ProcessorPostFaderText,"processor postfader: text", "colorB", HSV(-2.57143,-0.958824,-0.333333,1)) /*2.57143 */
+CANVAS_COLOR(ProcessorPostFaderTextActive,"processor postfader: text active", "colorB", HSV(6,-0.991597,-0.0666667,1)) /*6 */
+CANVAS_COLOR(ProcessorControlButtonFill,"processor control button: fill", "colorA", HSV(0,-1,-0.866667,1)) /*0 */
+CANVAS_COLOR(ProcessorControlButtonFillActive,"processor control button: fill active", "colorA", HSV(0,-1,-0.8,1)) /*0 */
+CANVAS_COLOR(ProcessorControlButtonLED,"processor control button: led", "colorA", HSV(0,-1,-0.937255,1)) /*0 */
+CANVAS_COLOR(ProcessorControlButtonLEDActive,"processor control button: led active", "colorDlight", HSV(0.0722892,-0.528409,-0.309804,1)) /*0.0722892 */
+CANVAS_COLOR(ProcessorControlButtonText,"processor control button: text", "colorA", HSV(0,-1,0,1)) /*0 */
+CANVAS_COLOR(ProcessorControlButtonTextActive,"processor control button: text active", "colorA", HSV(0,-1,0,1)) /*0 */
+CANVAS_COLOR(MonitorButtonFill,"monitor button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(MonitorButtonFillActive,"monitor button: fill active", "colorABlight", HSV(-0.0625,-0.0253807,-0.227451,1)) /*0.0625 */
+CANVAS_COLOR(MonitorButtonLED,"monitor button: led", "colorA", HSV(0,0,-0.6,1)) /*0 */
+CANVAS_COLOR(MonitorButtonLEDActive,"monitor button: led active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MonitorButtonText,"monitor button: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(MonitorButtonTextActive,"monitor button: text active", "colorA", HSV(0,-1,-0.898039,1)) /*0 */
+CANVAS_COLOR(SoloIsolateButtonFill,"solo isolate: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(SoloIsolateButtonFillActive,"solo isolate: fill active", "colorAB", HSV(-0.857143,-0.837209,-0.662745,1)) /*0.857143 */
+CANVAS_COLOR(SoloIsolateButtonLED,"solo isolate: led", "colorA", HSV(0,0,-0.6,1)) /*0 */
+CANVAS_COLOR(SoloIsolateButtonLEDActive,"solo isolate: led active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(SoloIsolateButtonText,"solo isolate: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(SoloIsolateButtonTextActive,"solo isolate: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(SoloSafeButtonFill,"solo safe: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(SoloSafeButtonFillActive,"solo safe: fill active", "colorAB", HSV(-0.857143,-0.837209,-0.662745,1)) /*0.857143 */
+CANVAS_COLOR(SoloSafeButtonLED,"solo safe: led", "colorA", HSV(0,0,-0.6,1)) /*0 */
+CANVAS_COLOR(SoloSafeButtonLEDActive,"solo safe: led active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(SoloSafeButtonText,"solo safe: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(SoloSafeButtonTextActive,"solo safe: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(MidiDeviceButtonFill,"midi device: fill", "colorDdark", HSV(-0.666667,-0.903226,-0.635294,1)) /*0.666667 */
+CANVAS_COLOR(MidiDeviceButtonFillActive,"midi device: fill active", "colorDdark", HSV(-2.57143,-0.907895,-0.701961,1)) /*2.57143 */
+CANVAS_COLOR(MidiDeviceButtonLED,"midi device: led", "colorC", HSV(-0.117647,0,-0.6,1)) /*0.117647 */
+CANVAS_COLOR(MidiDeviceButtonLEDActive,"midi device: led active", "colorC", HSV(0.117647,0,0,1)) /*0.117647 */
+CANVAS_COLOR(MidiDeviceButtonText,"midi device: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(MidiDeviceButtonTextActive,"midi device: text active", "colorB", HSV(6,-0.991597,-0.0666667,1)) /*6 */
+CANVAS_COLOR(MeterBridgePeakIndicatorFill,"meterbridge peakindicator: fill", "colorA", HSV(0,-1,-0.733333,1)) /*0 */
+CANVAS_COLOR(MeterBridgePeakIndicatorFillActive,"meterbridge peakindicator: fill active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterBridgePeakIndicatorLED,"meterbridge peakindicator: led", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterBridgePeakIndicatorLEDActive,"meterbridge peakindicator: led active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterBridgePeakIndicatorText,"meterbridge peakindicator: text", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterBridgePeakIndicatorTextActive,"meterbridge peakindicator: text active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterBridgeLabelFill,"meterbridge label: fill", "colorA", HSV(0,-1,-0.733333,1)) /*0 */
+CANVAS_COLOR(MeterBridgeLabelFillActive,"meterbridge label: fill active", "colorA", HSV(0,-1,-0.8,1)) /*0 */
+CANVAS_COLOR(MeterBridgeLabelLED,"meterbridge label: led", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterBridgeLabelLEDActive,"meterbridge label: led active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MeterBridgeLabelText,"meterbridge label: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(MeterBridgeLabelTextActive,"meterbridge label: text active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MonitorSectionCutButtonFill,"monitor section cut: fill", "colorAB", HSV(-0.857143,-0.926316,-0.627451,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionCutButtonFillActive,"monitor section cut: fill active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MonitorSectionCutButtonLED,"monitor section cut: led", "colorABlight", HSV(0.226415,-0.253521,-0.721569,1)) /*0.226415 */
+CANVAS_COLOR(MonitorSectionCutButtonLEDActive,"monitor section cut: led active", "colorC", HSV(-18,-0.384236,-0.203922,1)) /*18 */
+CANVAS_COLOR(MonitorSectionCutButtonText,"monitor section cut: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionCutButtonTextActive,"monitor section cut: text active", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(MonitorSectionDimButtonFill,"monitor section dim: fill", "colorAB", HSV(-0.857143,-0.926316,-0.627451,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionDimButtonFillActive,"monitor section dim: fill active", "colorABlight", HSV(-0.107143,-0.0218341,-0.101961,1)) /*0.107143 */
+CANVAS_COLOR(MonitorSectionDimButtonLED,"monitor section dim: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MonitorSectionDimButtonLEDActive,"monitor section dim: led active", "colorC", HSV(-18,-0.384236,-0.203922,1)) /*18 */
+CANVAS_COLOR(MonitorSectionDimButtonText,"monitor section dim: text", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionDimButtonTextActive,"monitor section dim: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionSoloButtonFill,"monitor section solo: fill", "colorAB", HSV(-0.857143,-0.926316,-0.627451,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionSoloButtonFillActive,"monitor section solo: fill active", "colorClight", HSV(-0.160428,0,-0.266667,1)) /*0.160428 */
+CANVAS_COLOR(MonitorSectionSoloButtonLED,"monitor section solo: led", "colorABlight", HSV(0.226415,-0.253521,-0.721569,1)) /*0.226415 */
+CANVAS_COLOR(MonitorSectionSoloButtonLEDActive,"monitor section solo: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MonitorSectionSoloButtonText,"monitor section solo: text", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MonitorSectionSoloButtonTextActive,"monitor section solo: text active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MonitorSectionInvertButtonFill,"monitor section invert: fill", "colorAB", HSV(-0.857143,-0.926316,-0.627451,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionInvertButtonFillActive,"monitor section invert: fill active", "colorDdark", HSV(0.084507,-0.317308,-0.184314,1)) /*0.084507 */
+CANVAS_COLOR(MonitorSectionInvertButtonLED,"monitor section invert: led", "colorABlight", HSV(0.226415,-0.253521,-0.721569,1)) /*0.226415 */
+CANVAS_COLOR(MonitorSectionInvertButtonLEDActive,"monitor section invert: led active", "colorC", HSV(-18,-0.384236,-0.203922,1)) /*18 */
+CANVAS_COLOR(MonitorSectionInvertButtonText,"monitor section invert: text", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MonitorSectionInvertButtonTextActive,"monitor section invert: text active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MonitorSectionMonoButtonFill,"monitor section mono: fill", "colorAB", HSV(-0.857143,-0.926316,-0.627451,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionMonoButtonFillActive,"monitor section mono: fill active", "colorDdark", HSV(0.084507,-0.260417,-0.247059,1)) /*0.084507 */
+CANVAS_COLOR(MonitorSectionMonoButtonLED,"monitor section mono: led", "colorABlight", HSV(0.226415,-0.253521,-0.721569,1)) /*0.226415 */
+CANVAS_COLOR(MonitorSectionMonoButtonLEDActive,"monitor section mono: led active", "colorC", HSV(-18,-0.384236,-0.203922,1)) /*18 */
+CANVAS_COLOR(MonitorSectionMonoButtonText,"monitor section mono: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionMonoButtonTextActive,"monitor section mono: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionSoloModelButtonFill,"monitor section solo model: fill", "colorAB", HSV(-0.857143,-0.924731,-0.635294,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionSoloModelButtonFillActive,"monitor section solo model: fill active", "colorAB", HSV(-0.857143,-0.837209,-0.662745,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionSoloModelButtonLED,"monitor section solo model: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(MonitorSectionSoloModelButtonLEDActive,"monitor section solo model: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MonitorSectionSoloModelButtonText,"monitor section solo model: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionSoloModelButtonTextActive,"monitor section solo model: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionSoloOverrideButtonFill,"monitor solo override: fill", "colorAB", HSV(-0.857143,-0.924731,-0.635294,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionSoloOverrideButtonFillActive,"monitor solo override: fill active", "colorAB", HSV(-0.857143,-0.837209,-0.662745,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionSoloOverrideButtonLED,"monitor solo override: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(MonitorSectionSoloOverrideButtonLEDActive,"monitor solo override: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MonitorSectionSoloOverrideButtonText,"monitor solo override: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionSoloOverrideButtonTextActive,"monitor solo override: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionSoloExclusiveButtonFill,"monitor solo exclusive: fill", "colorAB", HSV(-0.857143,-0.924731,-0.635294,1)) /*0.857143 */
+CANVAS_COLOR(MonitorSectionSoloExclusiveButtonFillActive,"monitor solo exclusive: fill active", "colorAB", HSV(2,-0.825581,-0.662745,1)) /*2 */
+CANVAS_COLOR(MonitorSectionSoloExclusiveButtonLED,"monitor solo exclusive: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(MonitorSectionSoloExclusiveButtonLEDActive,"monitor solo exclusive: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MonitorSectionSoloExclusiveButtonText,"monitor solo exclusive: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(MonitorSectionSoloExclusiveButtonTextActive,"monitor solo exclusive: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(RudeSoloFill,"rude solo: fill", "colorA", HSV(0,-0.740385,-0.592157,1)) /*0 */
+CANVAS_COLOR(RudeSoloFillActive,"rude solo: fill active", "colorA", HSV(0,-0.119469,-0.113725,1)) /*0 */
+CANVAS_COLOR(RudeSoloLED,"rude solo: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(RudeSoloLEDActive,"rude solo: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(RudeSoloText,"rude solo: text", "colorA", HSV(0,-1,-0.411765,1)) /*0 */
+CANVAS_COLOR(RudeSoloTextActive,"rude solo: text active", "colorA", HSV(0,-1,-0.101961,1)) /*0 */
+CANVAS_COLOR(RudeIsolateFill,"rude isolate: fill", "colorDlight", HSV(0.26087,-0.417722,-0.690196,1)) /*0.26087 */
+CANVAS_COLOR(RudeIsolateFillActive,"rude isolate: fill active", "colorDlight", HSV(-0.253521,-0.719368,-0.00784314,1)) /*0.253521 */
+CANVAS_COLOR(RudeIsolateLED,"rude isolate: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(RudeIsolateLEDActive,"rude isolate: led active", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(RudeIsolateText,"rude isolate: text", "colorA", HSV(0,-1,-0.407843,1)) /*0 */
+CANVAS_COLOR(RudeIsolateTextActive,"rude isolate: text active", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(RudeAuditionFill,"rude audition: fill", "colorA", HSV(0,-0.740385,-0.592157,1)) /*0 */
+CANVAS_COLOR(RudeAuditionFillActive,"rude audition: fill active", "colorA", HSV(0,-0.119469,-0.113725,1)) /*0 */
+CANVAS_COLOR(RudeAuditionLED,"rude audition: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(RudeAuditionLEDActive,"rude audition: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(RudeAuditionText,"rude audition: text", "colorA", HSV(0,-1,-0.407843,1)) /*0 */
+CANVAS_COLOR(RudeAuditionTextActive,"rude audition: text active", "colorA", HSV(0,-1,0,1)) /*0 */
+CANVAS_COLOR(FeedbackAlertFill,"feedback alert: fill", "colorA", HSV(0,-0.740385,-0.592157,1)) /*0 */
+CANVAS_COLOR(FeedbackAlertFillActive,"feedback alert: fill active", "colorA", HSV(0,-0.119469,-0.113725,1)) /*0 */
+CANVAS_COLOR(FeedbackAlertLED,"feedback alert: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(FeedbackAlertLEDActive,"feedback alert: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(FeedbackAlertText,"feedback alert: text", "colorA", HSV(0,-1,-0.411765,1)) /*0 */
+CANVAS_COLOR(FeedbackAlertTextActive,"feedback alert: text active", "colorA", HSV(0,-1,-0.101961,1)) /*0 */
+CANVAS_COLOR(InvertButtonFill,"invert button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(InvertButtonFillActive,"invert button: fill active", "colorDdark", HSV(0.084507,-0.317308,-0.184314,1)) /*0.084507 */
+CANVAS_COLOR(InvertButtonLED,"invert button: led", "colorABlight", HSV(0.226415,-0.253521,-0.721569,1)) /*0.226415 */
+CANVAS_COLOR(InvertButtonLEDActive,"invert button: led active", "colorC", HSV(-18,-0.384236,-0.203922,1)) /*18 */
+CANVAS_COLOR(InvertButtonText,"invert button: text", "colorDdark", HSV(-1.05882,-0.926724,-0.0901961,1)) /*1.05882 */
+CANVAS_COLOR(InvertButtonTextActive,"invert button: text active", "colorA", HSV(0,-1,-0.25098,1)) /*0 */
+CANVAS_COLOR(MuteButtonFill,"mute button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(MuteButtonFillActive,"mute button: fill active", "colorB", HSV(-0.0962567,0,-0.266667,1)) /*0.0962567 */
+CANVAS_COLOR(MuteButtonLED,"mute button: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MuteButtonLEDActive,"mute button: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MuteButtonText,"mute button: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(MuteButtonTextActive,"mute button: text active", "colorA", HSV(0,-1,-0.901961,1)) /*0 */
+CANVAS_COLOR(SoloButtonFill,"solo button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(SoloButtonFillActive,"solo button: fill active", "colorClight", HSV(-0.160428,0,-0.266667,1)) /*0.160428 */
+CANVAS_COLOR(SoloButtonLED,"solo button: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(SoloButtonLEDActive,"solo button: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(SoloButtonText,"solo button: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(SoloButtonTextActive,"solo button: text active", "colorA", HSV(0,-1,-0.901961,1)) /*0 */
+CANVAS_COLOR(RecEnableButtonFill,"record enable button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(RecEnableButtonFillActive,"record enable button: fill active", "colorA", HSV(0,-0.0773481,-0.290196,1)) /*0 */
+CANVAS_COLOR(RecEnableButtonLED,"record enable button: led", "colorAlight", HSV(36,-0.430894,-0.517647,1)) /*36 */
+CANVAS_COLOR(RecEnableButtonLEDActive,"record enable button: led active", "colorAlight", HSV(35.7391,-0.639216,0,1)) /*35.7391 */
+CANVAS_COLOR(RecEnableButtonText,"record enable button: text", "colorA", HSV(0,-1,-0.352941,1)) /*0 */
+CANVAS_COLOR(RecEnableButtonTextActive,"record enable button: text active", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(SendButtonFill,"send alert button: fill", "colorClight", HSV(2,-0.825581,-0.662745,1)) /*2 */
+CANVAS_COLOR(SendButtonFillActive,"send alert button: fill active", "colorClight", HSV(0.15544,-0.157205,-0.101961,1)) /*0.15544 */
+CANVAS_COLOR(SendButtonLED,"send alert button: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(SendButtonLEDActive,"send alert button: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(SendButtonText,"send alert button: text", "colorA", HSV(0,-1,-0.2,1)) /*0 */
+CANVAS_COLOR(SendButtonTextActive,"send alert button: text active", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(TransportButtonFill,"transport button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(TransportButtonFillActive,"transport button: fill active", "colorC", HSV(-0.110429,0,-0.360784,1)) /*0.110429 */
+CANVAS_COLOR(TransportButtonLED,"transport button: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(TransportButtonLEDActive,"transport button: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(TransportButtonText,"transport button: text", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(TransportButtonTextActive,"transport button: text active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(TransportRecenableButtonFill,"transport recenable button: fill", "colorA", HSV(0,-0.663158,-0.627451,1)) /*0 */
+CANVAS_COLOR(TransportRecenableButtonFillActive,"transport recenable button: fill active", "colorA", HSV(0,-0.0773481,-0.290196,1)) /*0 */
+CANVAS_COLOR(TransportRecenableButtonLED,"transport recenable button: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(TransportRecenableButtonLEDActive,"transport recenable button: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(TransportRecenableButtonText,"transport recenable button: text", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(TransportRecenableButtonTextActive,"transport recenable button: text active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(TransportOptionButtonFill,"transport option button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(TransportOptionButtonFillActive,"transport option button: fill active", "colorDdark", HSV(-2.57143,-0.91358,-0.682353,1)) /*2.57143 */
+CANVAS_COLOR(TransportOptionButtonLED,"transport option button: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(TransportOptionButtonLEDActive,"transport option button: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(TransportOptionButtonText,"transport option button: text", "colorDdark", HSV(-1.05882,-0.926724,-0.0901961,1)) /*1.05882 */
+CANVAS_COLOR(TransportOptionButtonTextActive,"transport option button: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(TransportActiveOptionButtonFill,"transport active option button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(TransportActiveOptionButtonFillActive,"transport active option button: fill active", "colorC", HSV(-0.110429,0,-0.360784,1)) /*0.110429 */
+CANVAS_COLOR(TransportActiveOptionButtonLED,"transport active option button: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(TransportActiveOptionButtonLEDActive,"transport active option button: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(TransportActiveOptionButtonText,"transport active option button: text", "colorDdark", HSV(-1.05882,-0.926724,-0.0901961,1)) /*1.05882 */
+CANVAS_COLOR(TransportActiveOptionButtonTextActive,"transport active option button: text active", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(TrackNumberLabelFill,"tracknumber label: fill", "colorA", HSV(0,-1,-0.733333,1)) /*0 */
+CANVAS_COLOR(TrackNumberLabelFillActive,"tracknumber label: fill active", "colorA", HSV(0,-1,-0.8,1)) /*0 */
+CANVAS_COLOR(TrackNumberLabelLED,"tracknumber label: led", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(TrackNumberLabelLEDActive,"tracknumber label: led active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(TrackNumberLabelText,"tracknumber label: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(TrackNumberLabelTextActive,"tracknumber label: text active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(PluginBypassButtonFill,"plugin bypass button: fill", "colorAB", HSV(-0.857143,-0.924731,-0.635294,1)) /*0.857143 */
+CANVAS_COLOR(PluginBypassButtonFillActive,"plugin bypass button: fill active", "colorAB", HSV(-0.857143,-0.837209,-0.662745,1)) /*0.857143 */
+CANVAS_COLOR(PluginBypassButtonLED,"plugin bypass button: led", "colorA", HSV(0,0,-0.6,1)) /*0 */
+CANVAS_COLOR(PluginBypassButtonLEDActive,"plugin bypass button: led active", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(PluginBypassButtonText,"plugin bypass button: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(PluginBypassButtonTextActive,"plugin bypass button: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(PunchButtonFill,"punch button: fill", "colorA", HSV(0,-0.65625,-0.623529,1)) /*0 */
+CANVAS_COLOR(PunchButtonFillActive,"punch button: fill active", "colorA", HSV(0,-0.133333,-0.0588235,1)) /*0 */
+CANVAS_COLOR(PunchButtonLED,"punch button: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(PunchButtonLEDActive,"punch button: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(PunchButtonText,"punch button: text", "colorA", HSV(0,-1,-0.352941,1)) /*0 */
+CANVAS_COLOR(PunchButtonTextActive,"punch button: text active", "colorA", HSV(0,-1,-0.152941,1)) /*0 */
+CANVAS_COLOR(MouseModeButtonFill,"mouse mode button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(MouseModeButtonFillActive,"mouse mode button: fill active", "colorC", HSV(0.0674157,0,-0.301961,1)) /*0.0674157 */
+CANVAS_COLOR(MouseModeButtonLED,"mouse mode button: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(MouseModeButtonLEDActive,"mouse mode button: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MouseModeButtonText,"mouse mode button: text", "colorDdark", HSV(-1.05882,-0.926724,-0.0901961,1)) /*1.05882 */
+CANVAS_COLOR(MouseModeButtonTextActive,"mouse mode button: text active", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(NudgeButtonFill,"nudge button: fill", "colorA", HSV(0,-0.653846,-0.592157,1)) /*0 */
+CANVAS_COLOR(NudgeButtonFillActive,"nudge button: fill active", "colorDdark", HSV(6,-0.927536,-0.729412,1)) /*6 */
+CANVAS_COLOR(NudgeButtonLED,"nudge button: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(NudgeButtonLEDActive,"nudge button: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(NudgeButtonText,"nudge button: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(NudgeButtonTextActive,"nudge button: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(ZoomButtonFill,"zoom button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(ZoomButtonFillActive,"zoom button: fill active", "colorC", HSV(-0.110429,0,-0.360784,1)) /*0.110429 */
+CANVAS_COLOR(ZoomButtonLED,"zoom button: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(ZoomButtonLEDActive,"zoom button: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(ZoomButtonText,"zoom button: text", "colorDdark", HSV(-1.05882,-0.926724,-0.0901961,1)) /*1.05882 */
+CANVAS_COLOR(ZoomButtonTextActive,"zoom button: text active", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(ZoomMenuFill,"zoom menu: fill", "colorB", HSV(0.375,-0.79085,-0.4,0.313725)) /*0.375 */
+CANVAS_COLOR(ZoomMenuFillActive,"zoom menu: fill active", "colorDdark", HSV(6,-0.927536,-0.729412,1)) /*6 */
+CANVAS_COLOR(ZoomMenuLED,"zoom menu: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(ZoomMenuLEDActive,"zoom menu: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(ZoomMenuText,"zoom menu: text", "colorDdark", HSV(-1.05882,-0.926724,-0.0901961,1)) /*1.05882 */
+CANVAS_COLOR(ZoomMenuTextActive,"zoom menu: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(RouteButtonFill,"route button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(RouteButtonFillActive,"route button: fill active", "colorA", HSV(0,-1,-0.929412,1)) /*0 */
+CANVAS_COLOR(RouteButtonLED,"route button: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(RouteButtonLEDActive,"route button: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(RouteButtonText,"route button: text", "colorDdark", HSV(-1.05882,-0.926724,-0.0901961,1)) /*1.05882 */
+CANVAS_COLOR(RouteButtonTextActive,"route button: text active", "colorA", HSV(0,-1,-0.901961,1)) /*0 */
+CANVAS_COLOR(MixerStripButtonFill,"mixer strip button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(MixerStripButtonFillActive,"mixer strip button: fill active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MixerStripButtonLED,"mixer strip button: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(MixerStripButtonLEDActive,"mixer strip button: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MixerStripButtonText,"mixer strip button: text", "colorDdark", HSV(-1.05882,-0.926724,-0.0901961,1)) /*1.05882 */
+CANVAS_COLOR(MixerStripButtonTextActive,"mixer strip button: text active", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(MixerStripNameButtonFill,"mixer strip name button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(MixerStripNameButtonFillActive,"mixer strip name button: fill active", "colorA", HSV(0,-1,-0.929412,1)) /*0 */
+CANVAS_COLOR(MixerStripNameButtonLED,"mixer strip name button: led", "colorABlight", HSV(-0.303797,0,-0.690196,1)) /*0.303797 */
+CANVAS_COLOR(MixerStripNameButtonLEDActive,"mixer strip name button: led active", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(MixerStripNameButtonText,"mixer strip name button: text", "colorDdark", HSV(-1.05882,-0.926724,-0.0901961,1)) /*1.05882 */
+CANVAS_COLOR(MixerStripNameButtonTextActive,"mixer strip name button: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(MidiInputButtonFill,"midi input button: fill", "colorCD", HSV(-2,-0.971154,-0.592157,1)) /*2 */
+CANVAS_COLOR(MidiInputButtonFillActive,"midi input button: fill active", "colorC", HSV(-0.110429,0,-0.360784,1)) /*0.110429 */
+CANVAS_COLOR(MidiInputButtonLED,"midi input button: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MidiInputButtonLEDActive,"midi input button: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MidiInputButtonText,"midi input button: text", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(MidiInputButtonTextActive,"midi input button: text active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(LockButtonFill,"lock button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(LockButtonFillActive,"lock button: fill active", "colorDdark", HSV(6,-0.927536,-0.729412,1)) /*6 */
+CANVAS_COLOR(LockButtonLED,"lock button: led", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(LockButtonLEDActive,"lock button: led active", "colorA", HSV(0,-1,-1,0)) /*0 */
+CANVAS_COLOR(LockButtonText,"lock button: text", "colorDdark", HSV(-0.666667,0,-0.858824,1)) /*0.666667 */
+CANVAS_COLOR(LockButtonTextActive,"lock button: text active", "colorDdark", HSV(-1.05882,-0.921659,-0.14902,1)) /*1.05882 */
+CANVAS_COLOR(GenericButtonFill,"generic button: fill", "colorDdark", HSV(-2.57143,-0.932692,-0.592157,1)) /*2.57143 */
+CANVAS_COLOR(GenericButtonFillActive,"generic button: fill active", "colorA", HSV(0,0,-0.00784314,1)) /*0 */
+CANVAS_COLOR(GenericButtonLED,"generic button: led", "colorDdark", HSV(-0.666667,-0.43038,-0.690196,1)) /*0.666667 */
+CANVAS_COLOR(GenericButtonLEDActive,"generic button: led active", "colorDdark", HSV(0.0271493,-0.133333,0,1)) /*0.0271493 */
+CANVAS_COLOR(GenericButtonText,"generic button: text", "colorDdark", HSV(-1.05882,-0.921296,-0.152941,1)) /*1.05882 */
+CANVAS_COLOR(GenericButtonTextActive,"generic button: text active", "colorA", HSV(0,-1,-0.901961,1)) /*0 */
+CANVAS_COLOR(TransportClockBackground,"transport clock: background", "colorA", HSV(0,-1,-0.85098,1)) /*0 */
+CANVAS_COLOR(TransportClockText,"transport clock: text", "colorClight", HSV(-0.140845,-0.141129,-0.027451,1)) /*0.140845 */
+CANVAS_COLOR(TransportClockEditedText,"transport clock: edited text", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(TransportClockCursor,"transport clock: cursor", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(SecondaryClockBackground,"secondary clock: background", "colorA", HSV(0,-1,-0.85098,1)) /*0 */
+CANVAS_COLOR(SecondaryClockText,"secondary clock: text", "colorClight", HSV(-0.140845,-0.141129,-0.027451,1)) /*0.140845 */
+CANVAS_COLOR(SecondaryClockEditedText,"secondary clock: edited text", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(SecondaryClockCursor,"secondary clock: cursor", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(TransportDeltaClockBackground,"transport delta clock: background", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(TransportDeltaClockText,"transport delta clock: text", "colorDlight", HSV(-0.222222,-0.564516,-0.027451,1)) /*0.222222 */
+CANVAS_COLOR(TransportDeltaClockEditedText,"transport delta clock: edited text", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(TransportDeltaClockCursor,"transport delta clock: cursor", "colorA", HSV(0,0,-0.054902,1)) /*0 */
+CANVAS_COLOR(SecondaryDeltaClockBackground,"secondary delta clock: background", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(SecondaryDeltaClockText,"secondary delta clock: text", "colorDlight", HSV(-0.222222,-0.564516,-0.027451,1)) /*0.222222 */
+CANVAS_COLOR(SecondaryDeltaClockEditedText,"secondary delta clock: edited text", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(SecondaryDeltaClockCursor,"secondary delta clock: cursor", "colorA", HSV(0,0,-0.054902,1)) /*0 */
+CANVAS_COLOR(BigClockBackground,"big clock: background", "colorA", HSV(0,-1,-0.992157,1)) /*0 */
+CANVAS_COLOR(BigClockText,"big clock: text", "colorA", HSV(0,-1,-0.0588235,1)) /*0 */
+CANVAS_COLOR(BigClockEditedText,"big clock: edited text", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(BigClockCursor,"big clock: cursor", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(BigClockActiveBackground,"big clock active: background", "colorA", HSV(0,-1,-0.992157,1)) /*0 */
+CANVAS_COLOR(BigClockActiveText,"big clock active: text", "colorA", HSV(0,0,-0.054902,1)) /*0 */
+CANVAS_COLOR(BigClockActiveEditedText,"big clock active: edited text", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(BigClockActiveCursor,"big clock active: cursor", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(PunchClockBackground,"punch clock: background", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(PunchClockText,"punch clock: text", "colorClight", HSV(0,-0.175824,-0.286275,1)) /*0 */
+CANVAS_COLOR(PunchClockEditedText,"punch clock: edited text", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(PunchClockCursor,"punch clock: cursor", "colorA", HSV(0,0,-0.054902,1)) /*0 */
+CANVAS_COLOR(SelectionClockBackground,"selection clock: background", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(SelectionClockText,"selection clock: text", "colorClight", HSV(0,-0.175824,-0.286275,1)) /*0 */
+CANVAS_COLOR(SelectionClockEditedText,"selection clock: edited text", "colorA", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(SelectionClockCursor,"selection clock: cursor", "colorA", HSV(0,0,-0.054902,1)) /*0 */
+CANVAS_COLOR(NudgeClockBackground,"nudge clock: background", "colorA", HSV(0,-1,-0.85098,1)) /*0 */
+CANVAS_COLOR(NudgeClockText,"nudge clock: text", "colorClight", HSV(0,-0.175824,-0.286275,1)) /*0 */
+CANVAS_COLOR(NudgeClockEditedText,"nudge clock: edited text", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(NudgeClockCursor,"nudge clock: cursor", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(GenericClockBackground,"clock: background", "colorA", HSV(0,-1,-1,1)) /*0 */
+CANVAS_COLOR(GenericClockText,"clock: text", "colorClight", HSV(0,-0.175824,-0.286275,1)) /*0 */
+CANVAS_COLOR(GenericClockEditedText,"clock: edited text", "colorABlight", HSV(0,0,0,1)) /*0 */
+CANVAS_COLOR(GenericClockCursor,"clock: cursor", "colorABlight", HSV(0,0,0,1)) /*0 */
diff --git a/gtk2_ardour/default_ui_config.in b/gtk2_ardour/default_ui_config.in
index 81bd773e9f..74fc202293 100644
--- a/gtk2_ardour/default_ui_config.in
+++ b/gtk2_ardour/default_ui_config.in
@@ -14,469 +14,6 @@
<Option name="draggable-playhead" value="1"/>
</UI>
<Canvas>
- <Option name="active crossfade" value="20b2af2e"/>
- <Option name="arrange base" value="595959ff"/>
- <Option name="audio bus base" value="73829968"/>
- <Option name="audio master bus base" value="00000000"/>
- <Option name="audio track base" value="9daac468"/>
- <Option name="automation line" value="44bc59ff"/>
- <Option name="automation track fill" value="a0a0ce68"/>
- <Option name="automation track outline" value="282828ff"/>
- <Option name="cd marker bar" value="9496a3cc"/>
- <Option name="crossfade editor base" value="282d49ff"/>
- <Option name="crossfade editor line" value="000000ff"/>
- <Option name="crossfade editor line shading" value="00a0d154"/>
- <Option name="crossfade editor point fill" value="00ff00ff"/>
- <Option name="crossfade editor point outline" value="0000ffff"/>
- <Option name="crossfade editor wave" value="ffffff28"/>
- <Option name="selected crossfade editor wave fill" value="00000000"/>
- <Option name="crossfade line" value="000000ff"/>
- <Option name="edit point" value="0000ffff"/>
- <Option name="entered automation line" value="dd6363ff"/>
- <Option name="control point fill" value="ffffff66"/>
- <Option name="control point outline" value="55ccccff"/>
- <Option name="control point selected" value="ff0000ee"/>
- <Option name="entered gain line" value="dd6363ff"/>
- <Option name="entered marker" value="dd6363ff"/>
- <Option name="frame handle" value="7c00ff96"/>
- <Option name="gain line" value="00bc20ff"/>
- <Option name="gain line inactive" value="9fbca4c5"/>
- <Option name="ghost track base" value="603e7cc6"/>
- <Option name="ghost track midi outline" value="00000000"/>
- <Option name="ghost track wave" value="202020d9"/>
- <Option name="ghost track wave fill" value="20202060"/>
- <Option name="ghost track wave clip" value="202020d9"/>
- <Option name="ghost track zero line" value="e500e566"/>
- <Option name="image track" value="ddddd8ff"/>
- <Option name="inactive crossfade" value="e8ed3d77"/>
- <Option name="inactive fade handle" value="bbbbbbaa"/>
- <Option name="inactive group tab" value="434343ff"/>
- <Option name="location cd marker" value="1ee8c4ff"/>
- <Option name="location loop" value="35964fff"/>
- <Option name="location marker" value="c4f411ff"/>
- <Option name="location punch" value="7c3a3aff"/>
- <Option name="location range" value="497a59ff"/>
- <Option name="marker bar" value="99a1adcc"/>
- <Option name="marker bar separator" value="555555ff"/>
- <Option name="marker drag line" value="004f00f9"/>
- <Option name="marker label" value="000000ff"/>
- <Option name="marker track" value="ddddd8ff"/>
- <Option name="measure line bar" value="ffffff9c"/>
- <Option name="measure line beat" value="a29e9e76"/>
- <Option name="meter bar" value="626470cc"/>
- <Option name="meter fill: 0" value="008800ff"/>
- <Option name="meter fill: 1" value="00aa00ff"/>
- <Option name="meter fill: 2" value="00ff00ff"/>
- <Option name="meter fill: 3" value="00ff00ff"/>
- <Option name="meter fill: 4" value="fff000ff"/>
- <Option name="meter fill: 5" value="fff000ff"/>
- <Option name="meter fill: 6" value="ff8000ff"/>
- <Option name="meter fill: 7" value="ff8000ff"/>
- <Option name="meter fill: 8" value="ff0000ff"/>
- <Option name="meter fill: 9" value="ff0000ff"/>
- <Option name="meter background: bottom" value="333333ff"/>
- <Option name="meter background: top" value="444444ff"/>
- <Option name="midi meter fill: 0" value="effaa1ff"/>
- <Option name="midi meter fill: 1" value="f2c97dff"/>
- <Option name="midi meter fill: 2" value="f2c97dff"/>
- <Option name="midi meter fill: 3" value="f48f52ff"/>
- <Option name="midi meter fill: 4" value="f48f52ff"/>
- <Option name="midi meter fill: 5" value="f83913ff"/>
- <Option name="midi meter fill: 6" value="f83913ff"/>
- <Option name="midi meter fill: 7" value="8fc78eff"/>
- <Option name="midi meter fill: 8" value="8fc78eff"/>
- <Option name="midi meter fill: 9" value="00f45600"/>
- <Option name="meterbridge peakindicator: fill" value="444444ff"/>
- <Option name="meterbridge peakindicator: fill active" value="ff0000ff"/>
- <Option name="meterbridge label: fill" value="444444ff"/>
- <Option name="meterbridge label: fill active" value="333333ff"/>
- <Option name="meterbridge label: text" value="c7c7d8ff"/>
- <Option name="meter marker" value="f2425bff"/>
- <Option name="midi bus base" value="00000000"/>
- <Option name="midi frame base" value="393d3766"/>
- <Option name="midi note inactive channel" value="00000000"/>
- <Option name="midi note color min" value="3f542aff"/>
- <Option name="midi note color mid" value="7ea854ff"/>
- <Option name="midi note color max" value="bfff80ff"/>
- <Option name="selected midi note color min" value="1e1e33ff"/>
- <Option name="selected midi note color mid" value="51518aff"/>
- <Option name="selected midi note color max" value="8383deff"/>
- <Option name="midi note selected" value="b2b2ffff"/>
- <Option name="midi note velocity text" value="f4f214bc"/>
- <Option name="midi patch change fill" value="50555aa0"/>
- <Option name="midi patch change outline" value="c0c5caff"/>
- <Option name="midi patch change inactive channel fill" value="50555ac0"/>
- <Option name="midi patch change inactive channel outline" value="20252ac0"/>
- <Option name="midi sysex fill" value="f1e139a0"/>
- <Option name="midi sysex outline" value="a7a7d4ff"/>
- <Option name="midi select rect fill" value="8888ff88"/>
- <Option name="midi select rect outline" value="5555ffff"/>
- <Option name="midi track base" value="b3cca35f"/>
- <Option name="name highlight fill" value="0000ffff"/>
- <Option name="name highlight outline" value="7c00ff96"/>
- <Option name="piano roll black outline" value="f4f4f476"/>
- <Option name="piano roll black" value="6c6e6a6b"/>
- <Option name="piano roll white" value="979b9565"/>
- <Option name="play head" value="ff0000ff"/>
- <Option name="processor automation line" value="7aa3f9ff"/>
- <Option name="punch line" value="a80000ff"/>
- <Option name="range drag bar rect" value="969696c6"/>
- <Option name="range drag rect" value="82c696c6"/>
- <Option name="range marker bar" value="7d7f8ccc"/>
- <Option name="recording rect" value="cc2828ff"/>
- <Option name="recorded waveform fill" value="ffffffd9"/>
- <Option name="recorded waveform outline" value="0f0f1fff"/>
- <Option name="rubber band rect" value="c6c6c659"/>
- <Option name="ruler base" value="2c2121ff"/>
- <Option name="ruler text" value="e5e5e5ff"/>
- <Option name="selected crossfade editor line" value="00dbdbff"/>
- <Option name="selected crossfade editor wave" value="f9ea14a0"/>
- <Option name="selected region base" value="585c61ff"/>
- <Option name="selected waveform fill" value="ffa500d9"/>
- <Option name="selected waveform outline" value="0f0f0fcc"/>
- <Option name="selection rect" value="e8f4d377"/>
- <Option name="selection" value="636363b2"/>
- <Option name="shuttle" value="6bb620ff"/>
- <Option name="silence" value="9efffd7a"/>
- <Option name="silence text" value="0e066cff"/>
- <Option name="mono panner outline" value="33445eff"/>
- <Option name="mono panner fill" value="7a9bccc9"/>
- <Option name="mono panner text" value="000000ff"/>
- <Option name="mono panner bg" value="2e2929ff"/>
- <Option name="mono panner position fill" value="7a89b3ff"/>
- <Option name="mono panner position outline" value="33445eff"/>
- <Option name="stereo panner outline" value="33445eff"/>
- <Option name="stereo panner fill" value="7a9accc9"/>
- <Option name="stereo panner text" value="000000ff"/>
- <Option name="stereo panner bg" value="2e2929ff"/>
- <Option name="stereo panner rule" value="455c7fff"/>
- <Option name="stereo panner mono outline" value="a05600ff"/>
- <Option name="stereo panner mono fill" value="e99668ca"/>
- <Option name="stereo panner mono text" value="000000ff"/>
- <Option name="stereo panner mono bg" value="2e2929ff"/>
- <Option name="stereo panner inverted outline" value="bf0a00ff"/>
- <Option name="stereo panner inverted fill" value="e4a19cc9"/>
- <Option name="stereo panner inverted text" value="000000ff"/>
- <Option name="stereo panner inverted bg" value="2e2929ff"/>
- <Option name="tempo bar" value="70727fcc"/>
- <Option name="tempo marker" value="f2425bff"/>
- <Option name="time axis frame" value="000000ff"/>
- <Option name="selected time axis frame" value="ee0000ff"/>
- <Option name="time stretch fill" value="e2b5b596"/>
- <Option name="time stretch outline" value="63636396"/>
- <Option name="tracknumber label: fill" value="444444ff"/>
- <Option name="tracknumber label: fill active" value="333333ff"/>
- <Option name="tracknumber label: text" value="c7c7d8ff"/>
- <Option name="transport drag rect" value="969696c6"/>
- <Option name="transport loop rect" value="1e7728f9"/>
- <Option name="transport marker bar" value="8c8e98cc"/>
- <Option name="transport punch rect" value="6d2828e5"/>
- <Option name="trim handle locked" value="ea0f0f28"/>
- <Option name="trim handle" value="1900ff44"/>
- <Option name="verbose canvas cursor" value="fffd2ebc"/>
- <Option name="vestigial frame" value="0000000f"/>
- <Option name="video timeline bar" value="303030ff"/>
- <Option name="region base" value="838890ff"/>
- <Option name="region area covered by another region" value="505050b0"/>
- <Option name="waveform outline" value="000000ff"/>
- <Option name="clipped waveform" value="ff0000e5"/>
- <Option name="waveform fill" value="ffffffd9"/>
- <Option name="zero line" value="7f7f7fe0"/>
- <Option name="zoom rect" value="c6d1b26d"/>
- <Option name="monitor knob" value="555050ff"/>
- <Option name="monitor knob: arc start" value="5d90b0ff"/>
- <Option name="monitor knob: arc end" value="154c6eff"/>
- <Option name="button border" value="000000f0"/>
- <Option name="border color" value="00000000"/>
- <Option name="processor prefader: fill" value="873c3cff"/>
- <Option name="processor prefader: fill active" value="603535ff"/>
- <Option name="processor prefader: led" value="26550eff"/>
- <Option name="processor prefader: led active" value="78cb4eff"/>
- <Option name="processor prefader: text" value="aaaaa3ff"/>
- <Option name="processor prefader: text active" value="eeeeecff"/>
- <Option name="processor fader: fill" value="5d90b0ff"/>
- <Option name="processor fader: fill active" value="256d8fff"/>
- <Option name="processor fader: led" value="26550eff"/>
- <Option name="processor fader: led active" value="78cb4eff"/>
- <Option name="processor fader: text" value="aaaaa3ff"/>
- <Option name="processor fader: text active" value="eeeeecff"/>
- <Option name="processor postfader: fill" value="455a3cff"/>
- <Option name="processor postfader: fill active" value="254528ff"/>
- <Option name="processor postfader: led" value="26550eff"/>
- <Option name="processor postfader: led active" value="78cb4eff"/>
- <Option name="processor postfader: text" value="aaaaa3ff"/>
- <Option name="processor postfader: text active" value="eeeeecff"/>
- <Option name="processor control button: fill" value="222222ff"/>
- <Option name="processor control button: fill active" value="333333ff"/>
- <Option name="processor control button: led" value="101010ff"/>
- <Option name="processor control button: led active" value="5d90b0ff"/>
- <Option name="processor control button: text" value="ffffffff"/>
- <Option name="processor control button: text active" value="ffffffff"/>
- <Option name="midi device: fill" value="54555dff"/>
- <Option name="midi device: fill active" value="45464cff"/>
- <Option name="midi device: led" value="006600ff"/>
- <Option name="midi device: led active" value="00ff00ff"/>
- <Option name="midi device: text" value="c7c7d8ff"/>
- <Option name="midi device: text active" value="eeeeecff"/>
- <Option name="monitor button: fill" value="616268ff"/>
- <Option name="monitor button: fill active" value="c56505ff"/>
- <Option name="monitor button: led" value="660000ff"/>
- <Option name="monitor button: led active" value="ff0000ff"/>
- <Option name="monitor button: text" value="c7c7d8ff"/>
- <Option name="monitor button: text active" value="1a1a1aff"/>
- <Option name="solo isolate: fill" value="616268ff"/>
- <Option name="solo isolate: fill active" value="564d48ff"/>
- <Option name="solo isolate: led" value="660000ff"/>
- <Option name="solo isolate: led active" value="ff0000ff"/>
- <Option name="solo isolate: text" value="c7c7d8ff"/>
- <Option name="solo isolate: text active" value="c8c8d9ff"/>
- <Option name="solo safe: fill" value="616268ff"/>
- <Option name="solo safe: fill active" value="564d48ff"/>
- <Option name="solo safe: led" value="660000ff"/>
- <Option name="solo safe: led active" value="ff0000ff"/>
- <Option name="solo safe: text" value="c7c7d8ff"/>
- <Option name="solo safe: text active" value="c8c8d9ff"/>
- <Option name="meterbridge peaklabel" value="ff1111ff"/>
- <Option name="meter color BBC" value="ffa500ff"/>
- <Option name="monitor section cut: fill" value="5f5a58ff"/>
- <Option name="monitor section cut: fill active" value="ffa500ff"/>
- <Option name="monitor section cut: led" value="473812ff"/>
- <Option name="monitor section cut: led active" value="78cb4eff"/>
- <Option name="monitor section cut: text" value="c7c7d8ff"/>
- <Option name="monitor section cut: text active" value="000000ff"/>
- <Option name="monitor section dim: fill" value="5f5a58ff"/>
- <Option name="monitor section dim: fill active" value="e58505ff"/>
- <Option name="monitor section dim: led" value="00000000"/>
- <Option name="monitor section dim: led active" value="78cb4eff"/>
- <Option name="monitor section dim: text" value="c8c8d9ff"/>
- <Option name="monitor section dim: text active" value="c8c8d9ff"/>
- <Option name="monitor section solo: fill" value="5f5a58ff"/>
- <Option name="monitor section solo: fill active" value="4dbb00ff"/>
- <Option name="monitor section solo: led" value="473812ff"/>
- <Option name="monitor section solo: led active" value="ffa500ff"/>
- <Option name="monitor section solo: text" value="00000000"/>
- <Option name="monitor section solo: text active" value="00000000"/>
- <Option name="monitor section invert: fill" value="5f5a58ff"/>
- <Option name="monitor section invert: fill active" value="4242d0ff"/>
- <Option name="monitor section invert: led" value="473812ff"/>
- <Option name="monitor section invert: led active" value="78cb4eff"/>
- <Option name="monitor section invert: text" value="00000000"/>
- <Option name="monitor section invert: text active" value="00000000"/>
- <Option name="monitor section mono: fill" value="5f5a58ff"/>
- <Option name="monitor section mono: fill active" value="3232c0ff"/>
- <Option name="monitor section mono: led" value="473812ff"/>
- <Option name="monitor section mono: led active" value="78cb4eff"/>
- <Option name="monitor section mono: text" value="c7c7d8ff"/>
- <Option name="monitor section mono: text active" value="c8c8d9ff"/>
- <Option name="monitor section solo model: fill" value="5d5856ff"/>
- <Option name="monitor section solo model: fill active" value="564d48ff"/>
- <Option name="monitor section solo model: led" value="4f3300ff"/>
- <Option name="monitor section solo model: led active" value="ffa500ff"/>
- <Option name="monitor section solo model: text" value="c7c7d8ff"/>
- <Option name="monitor section solo model: text active" value="c8c8d9ff"/>
- <Option name="monitor solo override: fill" value="5d5856ff"/>
- <Option name="monitor solo override: fill active" value="564d48ff"/>
- <Option name="monitor solo override: led" value="4f3300ff"/>
- <Option name="monitor solo override: led active" value="ffa500ff"/>
- <Option name="monitor solo override: text" value="c7c7d8ff"/>
- <Option name="monitor solo override: text active" value="c8c8d9ff"/>
- <Option name="monitor solo exclusive: fill" value="5d5856ff"/>
- <Option name="monitor solo exclusive: fill active" value="564c47ff"/>
- <Option name="monitor solo exclusive: led" value="4f3300ff"/>
- <Option name="monitor solo exclusive: led active" value="ffa500ff"/>
- <Option name="monitor solo exclusive: text" value="c7c7d8ff"/>
- <Option name="monitor solo exclusive: text active" value="c8c8d9ff"/>
- <Option name="rude solo: fill" value="684d4dff"/>
- <Option name="rude solo: fill active" value="e21b1bff"/>
- <Option name="rude solo: led" value="00000000"/>
- <Option name="rude solo: led active" value="00000000"/>
- <Option name="rude solo: text" value="969696ff"/>
- <Option name="rude solo: text active" value="e5e5e5ff"/>
- <Option name="rude isolate: fill" value="21414fff"/>
- <Option name="rude isolate: fill active" value="b6e5fdff"/>
- <Option name="rude isolate: led" value="00000000"/>
- <Option name="rude isolate: led active" value="000000ff"/>
- <Option name="rude isolate: text" value="979797ff"/>
- <Option name="rude isolate: text active" value="000000ff"/>
- <Option name="rude audition: fill" value="684d4dff"/>
- <Option name="rude audition: fill active" value="e21b1bff"/>
- <Option name="rude audition: led" value="00000000"/>
- <Option name="rude audition: led active" value="00000000"/>
- <Option name="rude audition: text" value="979797ff"/>
- <Option name="rude audition: text active" value="ffffffff"/>
- <Option name="feedback alert: fill" value="684d4dff"/>
- <Option name="feedback alert: fill active" value="e21b1bff"/>
- <Option name="feedback alert: led" value="00000000"/>
- <Option name="feedback alert: led active" value="00000000"/>
- <Option name="feedback alert: text" value="969696ff"/>
- <Option name="feedback alert: text active" value="e5e5e5ff"/>
- <Option name="mute button: fill" value="616268ff"/>
- <Option name="mute button: fill active" value="bbbb00ff"/>
- <Option name="mute button: led" value="00000000"/>
- <Option name="mute button: led active" value="00000000"/>
- <Option name="mute button: text" value="c7c7d8ff"/>
- <Option name="mute button: text active" value="191919ff"/>
- <Option name="solo button: fill" value="616268ff"/>
- <Option name="solo button: fill active" value="4dbb00ff"/>
- <Option name="solo button: led" value="00000000"/>
- <Option name="solo button: led active" value="00000000"/>
- <Option name="solo button: text" value="c7c7d8ff"/>
- <Option name="solo button: text active" value="191919ff"/>
- <Option name="invert button: fill" value="616268ff"/>
- <Option name="invert button: fill active" value="4242d0ff"/>
- <Option name="invert button: led" value="473812ff"/>
- <Option name="invert button: led active" value="78cb4eff"/>
- <Option name="invert button: text" value="d7d7e8ff"/>
- <Option name="invert button: text active" value="bfbfbfff"/>
- <Option name="record enable button: fill" value="616268ff"/>
- <Option name="record enable button: fill active" value="b50e0eff"/>
- <Option name="record enable button: led" value="7b3541ff"/>
- <Option name="record enable button: led active" value="ffa3b3ff"/>
- <Option name="record enable button: text" value="a5a5a5ff"/>
- <Option name="record enable button: text active" value="000000ff"/>
- <Option name="generic button: fill" value="616268ff"/>
- <Option name="generic button: fill active" value="fd0000ff"/>
- <Option name="generic button: led" value="22224fff"/>
- <Option name="generic button: led active" value="2222ffff"/>
- <Option name="generic button: text" value="c7c7d8ff"/>
- <Option name="generic button: text active" value="191919ff"/>
- <Option name="send alert button: fill" value="4e5647ff"/>
- <Option name="send alert button: fill active" value="85e524ff"/>
- <Option name="send alert button: led" value="00000000"/>
- <Option name="send alert button: led active" value="00000000"/>
- <Option name="send alert button: text" value="ccccccff"/>
- <Option name="send alert button: text active" value="000000ff"/>
- <Option name="transport button: fill" value="616268ff"/>
- <Option name="transport button: fill active" value="00a300ff"/>
- <Option name="transport button: led" value="00000000"/>
- <Option name="transport button: led active" value="00000000"/>
- <Option name="transport button: text" value="00000000"/>
- <Option name="transport button: text active" value="00000000"/>
- <Option name="transport recenable button: fill" value="5f3f3fff"/>
- <Option name="transport recenable button: fill active" value="b50e0eff"/>
- <Option name="transport recenable button: led" value="00000000"/>
- <Option name="transport recenable button: led active" value="00000000"/>
- <Option name="transport recenable button: text" value="00000000"/>
- <Option name="transport recenable button: text active" value="00000000"/>
- <Option name="transport option button: fill" value="616268ff"/>
- <Option name="transport option button: fill active" value="4a4b51ff"/>
- <Option name="transport option button: led" value="4f3300ff"/>
- <Option name="transport option button: led active" value="ffa500ff"/>
- <Option name="transport option button: text" value="d7d7e8ff"/>
- <Option name="transport option button: text active" value="c8c8d9ff"/>
- <Option name="transport active option button: fill" value="616268ff"/>
- <Option name="transport active option button: fill active" value="00a300ff"/>
- <Option name="transport active option button: led" value="4f3300ff"/>
- <Option name="transport active option button: led active" value="ffa500ff"/>
- <Option name="transport active option button: text" value="d7d7e8ff"/>
- <Option name="transport active option button: text active" value="000000ff"/>
- <Option name="plugin bypass button: fill" value="5d5856ff"/>
- <Option name="plugin bypass button: fill active" value="564d48ff"/>
- <Option name="plugin bypass button: led" value="660000ff"/>
- <Option name="plugin bypass button: led active" value="ff0000ff"/>
- <Option name="plugin bypass button: text" value="c7c7d8ff"/>
- <Option name="plugin bypass button: text active" value="c8c8d9ff"/>
- <Option name="punch button: fill" value="603f3fff"/>
- <Option name="punch button: fill active" value="f03020ff"/>
- <Option name="punch button: led" value="00000000"/>
- <Option name="punch button: led active" value="00000000"/>
- <Option name="punch button: text" value="a5a5a5ff"/>
- <Option name="punch button: text active" value="d8d8d8ff"/>
- <Option name="mouse mode button: fill" value="616268ff"/>
- <Option name="mouse mode button: fill active" value="00b200ff"/>
- <Option name="mouse mode button: led" value="4f3300ff"/>
- <Option name="mouse mode button: led active" value="ffa500ff"/>
- <Option name="mouse mode button: text" value="d7d7e8ff"/>
- <Option name="mouse mode button: text active" value="000000ff"/>
- <Option name="nudge button: fill" value="684744ff"/>
- <Option name="nudge button: fill active" value="404045ff"/>
- <Option name="nudge button: led" value="4f3300ff"/>
- <Option name="nudge button: led active" value="ffa500ff"/>
- <Option name="nudge button: text" value="c7c7d8ff"/>
- <Option name="nudge button: text active" value="c8c8d9ff"/>
- <Option name="zoom menu: fill" value="99997950"/>
- <Option name="zoom menu: fill active" value="404045ff"/>
- <Option name="zoom menu: led" value="4f3300ff"/>
- <Option name="zoom menu: led active" value="ffa500ff"/>
- <Option name="zoom menu: text" value="d7d7e8ff"/>
- <Option name="zoom menu: text active" value="c8c8d9ff"/>
- <Option name="zoom button: fill" value="616268ff"/>
- <Option name="zoom button: fill active" value="00a300ff"/>
- <Option name="zoom button: led" value="4f3300ff"/>
- <Option name="zoom button: led active" value="ffa500ff"/>
- <Option name="zoom button: text" value="d7d7e8ff"/>
- <Option name="zoom button: text active" value="000000ff"/>
- <Option name="route button: fill" value="616268ff"/>
- <Option name="route button: fill active" value="121212ff"/>
- <Option name="route button: led" value="4f3300ff"/>
- <Option name="route button: led active" value="ffa500ff"/>
- <Option name="route button: text" value="d7d7e8ff"/>
- <Option name="route button: text active" value="191919ff"/>
- <Option name="mixer strip button: fill" value="616268ff"/>
- <Option name="mixer strip button: fill active" value="ffa500ff"/>
- <Option name="mixer strip button: led" value="4f3300ff"/>
- <Option name="mixer strip button: led active" value="ffa500ff"/>
- <Option name="mixer strip button: text" value="d7d7e8ff"/>
- <Option name="mixer strip button: text active" value="000000ff"/>
- <Option name="mixer strip name button: fill" value="616268ff"/>
- <Option name="mixer strip name button: fill active" value="121212ff"/>
- <Option name="mixer strip name button: led" value="4f3300ff"/>
- <Option name="mixer strip name button: led active" value="ffa500ff"/>
- <Option name="mixer strip name button: text" value="d7d7e8ff"/>
- <Option name="mixer strip name button: text active" value="c8c8d9ff"/>
- <Option name="midi input button: fill" value="656867ff"/>
- <Option name="midi input button: fill active" value="00a300ff"/>
- <Option name="midi input button: led" value="00000000"/>
- <Option name="midi input button: led active" value="00000000"/>
- <Option name="midi input button: text" value="00000000"/>
- <Option name="midi input button: text active" value="00000000"/>
- <Option name="transport clock: background" value="262626ff"/>
- <Option name="transport clock: text" value="8df823ff"/>
- <Option name="transport clock: edited text" value="ffa500ff"/>
- <Option name="transport clock: cursor" value="ffa500ff"/>
- <Option name="secondary clock: background" value="262626ff"/>
- <Option name="secondary clock: text" value="8df823ff"/>
- <Option name="secondary clock: edited text" value="ffa500ff"/>
- <Option name="secondary clock: cursor" value="ffa500ff"/>
- <Option name="transport delta clock: background" value="000000ff"/>
- <Option name="transport delta clock: edited text" value="ff0000ff"/>
- <Option name="transport delta clock: cursor" value="f11000ff"/>
- <Option name="transport delta clock: text" value="8ce1f8ff"/>
- <Option name="secondary delta clock: edited text" value="ff0000ff"/>
- <Option name="secondary delta clock: cursor" value="f11000ff"/>
- <Option name="secondary delta clock: background" value="000000ff"/>
- <Option name="secondary delta clock: text" value="8ce1f8ff"/>
- <Option name="big clock: background" value="020202ff"/>
- <Option name="big clock: text" value="f0f0f0ff"/>
- <Option name="big clock: edited text" value="ffa500ff"/>
- <Option name="big clock: cursor" value="ffa500ff"/>
- <Option name="big clock active: background" value="020202ff"/>
- <Option name="big clock active: text" value="f11000ff"/>
- <Option name="big clock active: edited text" value="ffa500ff"/>
- <Option name="big clock active: cursor" value="ffa500ff"/>
- <Option name="punch clock: background" value="000000ff"/>
- <Option name="punch clock: text" value="6bb620ff"/>
- <Option name="punch clock: edited text" value="ff0000ff"/>
- <Option name="punch clock: cursor" value="f11000ff"/>
- <Option name="selection clock: background" value="000000ff"/>
- <Option name="selection clock: text" value="6bb620ff"/>
- <Option name="selection clock: edited text" value="ff0000ff"/>
- <Option name="selection clock: cursor" value="f11000ff"/>
- <Option name="nudge clock: background" value="262626ff"/>
- <Option name="nudge clock: text" value="6bb620ff"/>
- <Option name="nudge clock: edited text" value="ffa500ff"/>
- <Option name="nudge clock: cursor" value="ffa500ff"/>
- <Option name="clock: background" value="000000ff"/>
- <Option name="clock: text" value="6bb620ff"/>
- <Option name="clock: edited text" value="ffa500ff"/>
- <Option name="clock: cursor" value="ffa500ff"/>
- <Option name="lock button: fill" value="616268ff"/>
- <Option name="lock button: fill active" value="404045ff"/>
- <Option name="lock button: led" value="00000000"/>
- <Option name="lock button: led active" value="00000000"/>
- <Option name="lock button: text" value="000024ff"/>
- <Option name="lock button: text active" value="c8c8d9ff"/>
-
<Option name="small font" value="@FONT_SMALL@"/>
<Option name="smaller font" value="@FONT_SMALLER@"/>
<Option name="normal font" value="@FONT_NORMAL@"/>
diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc
index 1257c7a6b3..e7e16c8fc6 100644
--- a/gtk2_ardour/level_meter.cc
+++ b/gtk2_ardour/level_meter.cc
@@ -340,7 +340,7 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
break;
case MeterIEC2BBC:
c[0] = c[1] = c[2] = c[3] = c[4] = c[5] = c[6] = c[7] = c[8] = c[9] =
- ARDOUR_UI::config()->color_by_name ("meter color BBC");
+ ARDOUR_UI::config()->color ("meter color BBC");
stp[0] = stp[1] = stp[2] = stp[3] = 115.0;
break;
case MeterIEC2EBU:
diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc
index 16036ad83e..0158ff794c 100644
--- a/gtk2_ardour/meter_patterns.cc
+++ b/gtk2_ardour/meter_patterns.cc
@@ -328,7 +328,7 @@ meter_render_ticks (Gtk::Widget& w, MeterType type, vector<ARDOUR::DataType> typ
cairo_fill (cr);
height = min(max_pattern_metric_size, height);
- uint32_t peakcolor = ARDOUR_UI::config()->color_by_name ("meterbridge peaklabel");
+ uint32_t peakcolor = ARDOUR_UI::config()->color ("meterbridge peaklabel");
for (vector<DataType>::const_iterator i = types.begin(); i != types.end(); ++i) {
@@ -650,7 +650,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
cairo_set_line_width (cr, 1.0);
height = min(max_pattern_metric_size, height);
- uint32_t peakcolor = ARDOUR_UI::config()->color_by_name ("meterbridge peaklabel");
+ uint32_t peakcolor = ARDOUR_UI::config()->color ("meterbridge peaklabel");
Gdk::Color c; // default text color
for (vector<DataType>::const_iterator i = types.begin(); i != types.end(); ++i) {
diff --git a/gtk2_ardour/monitor_section.cc b/gtk2_ardour/monitor_section.cc
index 483933ec5d..1a18c4bc47 100644
--- a/gtk2_ardour/monitor_section.cc
+++ b/gtk2_ardour/monitor_section.cc
@@ -853,9 +853,9 @@ void
MonitorSection::solo_use_pfl ()
{
/* this is driven by a toggle on a radio group, and so is invoked twice,
- once for the item that became inactive and once for the one that became
- active.
- */
+ once for the item that became inactive and once for the one that became
+ active.
+ */
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Solo"), X_("solo-use-pfl"));
if (act) {
diff --git a/gtk2_ardour/stereo_panner.cc b/gtk2_ardour/stereo_panner.cc
index 4492c73cfc..a52e696e90 100644
--- a/gtk2_ardour/stereo_panner.cc
+++ b/gtk2_ardour/stereo_panner.cc
@@ -37,6 +37,8 @@
#include "ardour/panner.h"
#include "ardour/panner_shell.h"
+#include "canvas/colors.h"
+
#include "ardour_ui.h"
#include "global_signals.h"
#include "stereo_panner.h"
@@ -668,7 +670,8 @@ void
StereoPanner::set_colors ()
{
colors[Normal].fill = ARDOUR_UI::config()->get_StereoPannerFill();
- colors[Normal].outline = ARDOUR_UI::config()->get_StereoPannerOutline();
+ // colors[Normal].outline = ARDOUR_UI::config()->get_StereoPannerOutline();
+ colors[Normal].outline = ArdourCanvas::HSV (colors[Normal].fill).outline().color ();
colors[Normal].text = ARDOUR_UI::config()->get_StereoPannerText();
colors[Normal].background = ARDOUR_UI::config()->get_StereoPannerBackground();
colors[Normal].rule = ARDOUR_UI::config()->get_StereoPannerRule();
diff --git a/gtk2_ardour/styles.rc.in b/gtk2_ardour/styles.rc.in
index 7c7f5f9b05..329fdc92ea 100644
--- a/gtk2_ardour/styles.rc.in
+++ b/gtk2_ardour/styles.rc.in
@@ -22,12 +22,6 @@ style "default_button" = "small_text"
{
}
-style "mouse_mode_button" = "default_button"
-{
- bg[ACTIVE] = @@COLPREFIX@_contrasting_indicator
- fg[ACTIVE] = @@COLPREFIX@_darkest
-}
-
style "gain_fader"
{
bg[NORMAL] = shade (0.7, @@COLPREFIX@_bg)
@@ -39,10 +33,6 @@ style "gain_fader"
fg[ACTIVE] = shade(1.4, @@COLPREFIX@_bg)
}
-style "track_rec_enable_button" = "small_button"
-{
-}
-
style "default_menu" = "medium_text"
{
}
@@ -111,106 +101,11 @@ style "processor" = "small_text"
{
}
-style "mixer_invert_button" = "small_button"
-{
- bg[ACTIVE] = @@COLPREFIX@_not_so_bright_indicator
- fg[ACTIVE] = @@COLPREFIX@_darkest
-}
-
-style "monitor_mono_button" = "small_button"
-{
- bg[NORMAL] = mix(0.1,@@COLPREFIX@_mono,@@COLPREFIX@_bg)
- bg[ACTIVE] = @@COLPREFIX@_mono
- fg[ACTIVE] = @@COLPREFIX@_darkest
-}
-
-style "monitor_invert_button" = "small_button"
-{
- bg[NORMAL] = mix(0.1,@@COLPREFIX@_not_so_bright_indicator,@@COLPREFIX@_bg)
- bg[ACTIVE] = @@COLPREFIX@_not_so_bright_indicator
- fg[ACTIVE] = @@COLPREFIX@_darkest
-}
-
-style "monitor_mute_button" = "small_button"
-{
- bg[NORMAL] = mix(0.1,@@COLPREFIX@_mute,@@COLPREFIX@_bg)
- bg[ACTIVE] = @@COLPREFIX@_mute
- fg[ACTIVE] = @@COLPREFIX@_darkest
-}
-
-style "monitor_dim_button" = "small_button"
-{
- bg[NORMAL] = mix(0.1,lighter(@@COLPREFIX@_mute),@@COLPREFIX@_bg)
- bg[ACTIVE] = lighter(@@COLPREFIX@_mute)
- fg[ACTIVE] = @@COLPREFIX@_darkest
-}
-
-style "monitor_iso_button" = "small_button"
-{
- bg[NORMAL] = mix(0.1,@@COLPREFIX@_somewhat_bright_indicator,@@COLPREFIX@_bg)
- bg[ACTIVE] = @@COLPREFIX@_somewhat_bright_indicator
- fg[ACTIVE] = @@COLPREFIX@_darkest
-}
-
style "ruler_label" = "small_bold_text"
{
fg[NORMAL] = @@COLPREFIX@_light_text_on_dark
}
-style "transport_button"
-{
- bg[ACTIVE] = @@COLPREFIX@_contrasting_indicator
- fg[ACTIVE] = @@COLPREFIX@_darkest
-}
-
-style "transport_button_active"
-{
- bg[NORMAL] = @@COLPREFIX@_contrasting_indicator
- bg[ACTIVE] = @@COLPREFIX@_contrasting_indicator
- bg[SELECTED] = @@COLPREFIX@_contrasting_indicator
- bg[PRELIGHT] = @@COLPREFIX@_contrasting_indicator
-
- fg[NORMAL] = @@COLPREFIX@_darkest
- fg[PRELIGHT] = @@COLPREFIX@_darkest
- fg[SELECTED] = @@COLPREFIX@_darkest
- fg[ACTIVE] = @@COLPREFIX@_darkest
-}
-
-style "transport_button_alternate_two"
-{
- fg[SELECTED] = @@COLPREFIX@_darkest
- fg[ACTIVE] = @@COLPREFIX@_darkest
- fg[PRELIGHT] = @@COLPREFIX@_darkest
- fg[NORMAL] = @@COLPREFIX@_darkest
-
- bg[NORMAL] = shade(0.2,@@COLPREFIX@_bright_indicator)
- bg[ACTIVE] = shade(0.2,@@COLPREFIX@_bright_indicator)
- bg[SELECTED] = shade(0.2,@@COLPREFIX@_bright_indicator)
- bg[PRELIGHT] = shade(0.2,@@COLPREFIX@_bright_indicator)
-}
-
-style "transport_rec_button"
-{
- fg[ACTIVE] = @@COLPREFIX@_darkest
- bg[ACTIVE] = darker(@@COLPREFIX@_arm)
-}
-
-style "transport_rec_button_active"
-{
- bg[ACTIVE] = darker(@@COLPREFIX@_arm)
- bg[NORMAL] = darker(@@COLPREFIX@_arm)
- bg[SELECTED] = darker(@@COLPREFIX@_arm)
- bg[PRELIGHT] = darker(@@COLPREFIX@_arm)
-}
-
-style "transport_rec_button_alternate"
-{
- bg[PRELIGHT] = @@COLPREFIX@_arm
- bg[NORMAL] = @@COLPREFIX@_arm
- bg[SELECTED] = @@COLPREFIX@_arm
- bg[ACTIVE] = @@COLPREFIX@_arm
-}
-
style "midi_channel_selector_button"
{
bg[NORMAL] = @@COLPREFIX@_bg
diff --git a/gtk2_ardour/theme_manager.cc b/gtk2_ardour/theme_manager.cc
index 1a5aa0e7ce..9fdf7b24d2 100644
--- a/gtk2_ardour/theme_manager.cc
+++ b/gtk2_ardour/theme_manager.cc
@@ -398,7 +398,7 @@ ThemeManager::setup_theme ()
color_list->clear();
- for (std::map<std::string,ColorVariable<uint32_t> *>::iterator i = ARDOUR_UI::config()->canvas_colors.begin(); i != ARDOUR_UI::config()->canvas_colors.end(); i++) {
+ for (std::map<std::string,ColorVariable<uint32_t> *>::iterator i = ARDOUR_UI::config()->configurable_colors.begin(); i != ARDOUR_UI::config()->configurable_colors.end(); i++) {
ColorVariable<uint32_t>* var = i->second;
diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc
index 5948cebddd..0d5f649a99 100644
--- a/gtk2_ardour/time_axis_view_item.cc
+++ b/gtk2_ardour/time_axis_view_item.cc
@@ -818,7 +818,7 @@ TimeAxisViewItem::set_frame_gradient ()
v = min (1.0, v * (1.0 - ARDOUR_UI::config()->get_timeline_item_gradient_depth()));
- ArdourCanvas::Color darker = ArdourCanvas::hsv_to_color (h, s, v, a);
+ ArdourCanvas::Color darker = ArdourCanvas::hsva_to_color (h, s, v, a);
stops.push_back (std::make_pair (1.0, darker));
frame->set_gradient (stops, true);
diff --git a/gtk2_ardour/ui_config.cc b/gtk2_ardour/ui_config.cc
index 86e08d7fa6..28d7fcc392 100644
--- a/gtk2_ardour/ui_config.cc
+++ b/gtk2_ardour/ui_config.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 1999-2006 Paul Davis
+ Copyright (C) 1999-2014 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -32,6 +32,8 @@
#include "ardour/filesystem_paths.h"
+#include "ardour_ui.h"
+#include "global_signals.h"
#include "ui_config.h"
#include "i18n.h"
@@ -39,33 +41,588 @@
using namespace std;
using namespace PBD;
using namespace ARDOUR;
+using namespace ArdourCanvas;
static const char* ui_config_file_name = "ui_config";
static const char* default_ui_config_file_name = "default_ui_config";
+UIConfiguration* UIConfiguration::_instance = 0;
+
+static std::map<std::string,HSV> full_palette;
+static const double hue_cnt = 18.0;
+
UIConfiguration::UIConfiguration ()
:
#undef UI_CONFIG_VARIABLE
-#undef CANVAS_VARIABLE
#define UI_CONFIG_VARIABLE(Type,var,name,val) var (name,val),
-#define CANVAS_VARIABLE(var,name) var (name),
#define CANVAS_STRING_VARIABLE(var,name) var (name),
#define CANVAS_FONT_VARIABLE(var,name) var (name),
#include "ui_config_vars.h"
#include "canvas_vars.h"
#undef UI_CONFIG_VARIABLE
-#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
#undef CANVAS_FONT_VARIABLE
+
+ /* initialize all the base colors using default
+ colors for now. these will be reset when/if
+ we load the UI config file.
+ */
+
+#undef CANVAS_BASE_COLOR
+#define CANVAS_BASE_COLOR(var,name,val) var (name,val),
+#include "base_colors.h"
+#undef CANVAS_BASE_COLOR
+
+#undef CANVAS_COLOR
+#define CANVAS_COLOR(var,name,base,modifier) var (base,modifier),
+#include "colors.h"
+#undef CANVAS_COLOR
+
_dirty (false)
{
+ _instance = this;
+
+ /* pack all base colors into the configurable color map so that
+ derived colors can use them.
+ */
+
+#undef CANVAS_BASE_COLOR
+#define CANVAS_BASE_COLOR(var,name,color) configurable_colors.insert (make_pair (name,&var));
+#include "base_colors.h"
+#undef CANVAS_BASE_COLOR
+
+#undef CANVAS_COLOR
+#define CANVAS_COLOR(var,name,base,modifier) relative_colors.insert (make_pair (name,var));
+#include "colors.h"
+#undef CANVAS_COLOR
+
+ /* load up full palette with opposites */
+
+ map<string,ColorVariable<uint32_t>*>::iterator f;
+
+ for (f = configurable_colors.begin(); f != configurable_colors.end(); ++f) {
+ /* first the base tone */
+ full_palette.insert (make_pair (f->first, HSV (f->second->get())));
+ /* now its opposite */
+ // full_palette.insert (make_pair (f->first + " opposite", HSV (f->second->get()) + HSV(180.0, 0, 0)));
+ }
+
+ /* now quantize the hues */
+
+ for (map<string,HSV>::iterator fp = full_palette.begin(); fp != full_palette.end(); ++fp) {
+ fp->second.h = hue_cnt * (round (fp->second.h/hue_cnt));
+ }
+
load_state();
+
+ // original_colors ();
+
+ color_compute ();
+
+ ARDOUR_UI_UTILS::ColorsChanged.connect (boost::bind (&UIConfiguration::color_theme_changed, this));
}
UIConfiguration::~UIConfiguration ()
{
}
+void
+UIConfiguration::original_colors ()
+{
+ map<string,HSV> c;
+ c.insert (make_pair ("active crossfade", HSV (0x20b2af2e)));
+ c.insert (make_pair ("arrange base", HSV (0x595959ff)));
+ c.insert (make_pair ("audio bus base", HSV (0x73829968)));
+ c.insert (make_pair ("audio master bus base", HSV (0x00000000)));
+ c.insert (make_pair ("audio track base", HSV (0x9daac468)));
+ c.insert (make_pair ("automation line", HSV (0x44bc59ff)));
+ c.insert (make_pair ("automation track fill", HSV (0xa0a0ce68)));
+ c.insert (make_pair ("automation track outline", HSV (0x282828ff)));
+ c.insert (make_pair ("cd marker bar", HSV (0x9496a3cc)));
+ c.insert (make_pair ("crossfade editor base", HSV (0x282d49ff)));
+ c.insert (make_pair ("crossfade editor line", HSV (0x000000ff)));
+ c.insert (make_pair ("crossfade editor line shading", HSV (0x00a0d154)));
+ c.insert (make_pair ("crossfade editor point fill", HSV (0x00ff00ff)));
+ c.insert (make_pair ("crossfade editor point outline", HSV (0x0000ffff)));
+ c.insert (make_pair ("crossfade editor wave", HSV (0xffffff28)));
+ c.insert (make_pair ("selected crossfade editor wave fill", HSV (0x00000000)));
+ c.insert (make_pair ("crossfade line", HSV (0x000000ff)));
+ c.insert (make_pair ("edit point", HSV (0x0000ffff)));
+ c.insert (make_pair ("entered automation line", HSV (0xdd6363ff)));
+ c.insert (make_pair ("control point fill", HSV (0xffffff66)));
+ c.insert (make_pair ("control point outline", HSV (0xff0000ee)));
+ c.insert (make_pair ("control point selected", HSV (0x55ccccff)));
+ c.insert (make_pair ("entered gain line", HSV (0xdd6363ff)));
+ c.insert (make_pair ("entered marker", HSV (0xdd6363ff)));
+ c.insert (make_pair ("frame handle", HSV (0x7c00ff96)));
+ c.insert (make_pair ("gain line", HSV (0x00bc20ff)));
+ c.insert (make_pair ("gain line inactive", HSV (0x9fbca4c5)));
+ c.insert (make_pair ("ghost track base", HSV (0x603e7cc6)));
+ c.insert (make_pair ("ghost track midi outline", HSV (0x00000000)));
+ c.insert (make_pair ("ghost track wave", HSV (0x202020d9)));
+ c.insert (make_pair ("ghost track wave fill", HSV (0x20202060)));
+ c.insert (make_pair ("ghost track wave clip", HSV (0x202020d9)));
+ c.insert (make_pair ("ghost track zero line", HSV (0xe500e566)));
+ c.insert (make_pair ("image track", HSV (0xddddd8ff)));
+ c.insert (make_pair ("inactive crossfade", HSV (0xe8ed3d77)));
+ c.insert (make_pair ("inactive fade handle", HSV (0xbbbbbbaa)));
+ c.insert (make_pair ("inactive group tab", HSV (0x434343ff)));
+ c.insert (make_pair ("location cd marker", HSV (0x1ee8c4ff)));
+ c.insert (make_pair ("location loop", HSV (0x35964fff)));
+ c.insert (make_pair ("location marker", HSV (0xc4f411ff)));
+ c.insert (make_pair ("location punch", HSV (0x7c3a3aff)));
+ c.insert (make_pair ("location range", HSV (0x497a59ff)));
+ c.insert (make_pair ("marker bar", HSV (0x99a1adcc)));
+ c.insert (make_pair ("marker bar separator", HSV (0x555555ff)));
+ c.insert (make_pair ("marker drag line", HSV (0x004f00f9)));
+ c.insert (make_pair ("marker label", HSV (0x000000ff)));
+ c.insert (make_pair ("marker track", HSV (0xddddd8ff)));
+ c.insert (make_pair ("measure line bar", HSV (0xffffff9c)));
+ c.insert (make_pair ("measure line beat", HSV (0xa29e9e76)));
+ c.insert (make_pair ("meter bar", HSV (0x626470cc)));
+ c.insert (make_pair ("meter fill: 0", HSV (0x008800ff)));
+ c.insert (make_pair ("meter fill: 1", HSV (0x00aa00ff)));
+ c.insert (make_pair ("meter fill: 2", HSV (0x00ff00ff)));
+ c.insert (make_pair ("meter fill: 3", HSV (0x00ff00ff)));
+ c.insert (make_pair ("meter fill: 4", HSV (0xfff000ff)));
+ c.insert (make_pair ("meter fill: 5", HSV (0xfff000ff)));
+ c.insert (make_pair ("meter fill: 6", HSV (0xff8000ff)));
+ c.insert (make_pair ("meter fill: 7", HSV (0xff8000ff)));
+ c.insert (make_pair ("meter fill: 8", HSV (0xff0000ff)));
+ c.insert (make_pair ("meter fill: 9", HSV (0xff0000ff)));
+ c.insert (make_pair ("meter background: bottom", HSV (0x333333ff)));
+ c.insert (make_pair ("meter background: top", HSV (0x444444ff)));
+ c.insert (make_pair ("midi meter fill: 0", HSV (0xeffaa1ff)));
+ c.insert (make_pair ("midi meter fill: 1", HSV (0xf2c97dff)));
+ c.insert (make_pair ("midi meter fill: 2", HSV (0xf2c97dff)));
+ c.insert (make_pair ("midi meter fill: 3", HSV (0xf48f52ff)));
+ c.insert (make_pair ("midi meter fill: 4", HSV (0xf48f52ff)));
+ c.insert (make_pair ("midi meter fill: 5", HSV (0xf83913ff)));
+ c.insert (make_pair ("midi meter fill: 6", HSV (0xf83913ff)));
+ c.insert (make_pair ("midi meter fill: 7", HSV (0x8fc78eff)));
+ c.insert (make_pair ("midi meter fill: 8", HSV (0x8fc78eff)));
+ c.insert (make_pair ("midi meter fill: 9", HSV (0x00f45600)));
+ c.insert (make_pair ("meterbridge peakindicator: fill", HSV (0x444444ff)));
+ c.insert (make_pair ("meterbridge peakindicator: fill active", HSV (0xff0000ff)));
+ c.insert (make_pair ("meterbridge label: fill", HSV (0x444444ff)));
+ c.insert (make_pair ("meterbridge label: fill active", HSV (0x333333ff)));
+ c.insert (make_pair ("meterbridge label: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("meter marker", HSV (0xf2425bff)));
+ c.insert (make_pair ("midi bus base", HSV (0x00000000)));
+ c.insert (make_pair ("midi frame base", HSV (0x393d3766)));
+ c.insert (make_pair ("midi note inactive channel", HSV (0x00000000)));
+ c.insert (make_pair ("midi note color min", HSV (0x3f542aff)));
+ c.insert (make_pair ("midi note color mid", HSV (0x7ea854ff)));
+ c.insert (make_pair ("midi note color max", HSV (0xbfff80ff)));
+ c.insert (make_pair ("selected midi note color min", HSV (0x1e1e33ff)));
+ c.insert (make_pair ("selected midi note color mid", HSV (0x51518aff)));
+ c.insert (make_pair ("selected midi note color max", HSV (0x8383deff)));
+ c.insert (make_pair ("midi note selected", HSV (0xb2b2ffff)));
+ c.insert (make_pair ("midi note velocity text", HSV (0xf4f214bc)));
+ c.insert (make_pair ("midi patch change fill", HSV (0x50555aa0)));
+ c.insert (make_pair ("midi patch change outline", HSV (0xc0c5caff)));
+ c.insert (make_pair ("midi patch change inactive channel fill", HSV (0x50555ac0)));
+ c.insert (make_pair ("midi patch change inactive channel outline", HSV (0x20252ac0)));
+ c.insert (make_pair ("midi sysex fill", HSV (0xf1e139a0)));
+ c.insert (make_pair ("midi sysex outline", HSV (0xa7a7d4ff)));
+ c.insert (make_pair ("midi select rect fill", HSV (0x8888ff88)));
+ c.insert (make_pair ("midi select rect outline", HSV (0x5555ffff)));
+ c.insert (make_pair ("midi track base", HSV (0xb3cca35f)));
+ c.insert (make_pair ("name highlight fill", HSV (0x0000ffff)));
+ c.insert (make_pair ("name highlight outline", HSV (0x7c00ff96)));
+ c.insert (make_pair ("piano roll black outline", HSV (0xf4f4f476)));
+ c.insert (make_pair ("piano roll black", HSV (0x6c6e6a6b)));
+ c.insert (make_pair ("piano roll white", HSV (0x979b9565)));
+ c.insert (make_pair ("play head", HSV (0xff0000ff)));
+ c.insert (make_pair ("processor automation line", HSV (0x7aa3f9ff)));
+ c.insert (make_pair ("punch line", HSV (0xa80000ff)));
+ c.insert (make_pair ("range drag bar rect", HSV (0x969696c6)));
+ c.insert (make_pair ("range drag rect", HSV (0x82c696c6)));
+ c.insert (make_pair ("range marker bar", HSV (0x7d7f8ccc)));
+ c.insert (make_pair ("recording rect", HSV (0xcc2828ff)));
+ c.insert (make_pair ("recorded waveform fill", HSV (0xffffffd9)));
+ c.insert (make_pair ("recorded waveform outline", HSV (0x0f0f1fff)));
+ c.insert (make_pair ("rubber band rect", HSV (0xc6c6c659)));
+ c.insert (make_pair ("ruler base", HSV (0x2c2121ff)));
+ c.insert (make_pair ("ruler text", HSV (0xe5e5e5ff)));
+ c.insert (make_pair ("selected crossfade editor line", HSV (0x00dbdbff)));
+ c.insert (make_pair ("selected crossfade editor wave", HSV (0xf9ea14a0)));
+ c.insert (make_pair ("selected region base", HSV (0x585c61ff)));
+ c.insert (make_pair ("selected waveform fill", HSV (0xffa500d9)));
+ c.insert (make_pair ("selected waveform outline", HSV (0x0f0f0fcc)));
+ c.insert (make_pair ("selection rect", HSV (0xe8f4d377)));
+ c.insert (make_pair ("selection", HSV (0x636363b2)));
+ c.insert (make_pair ("shuttle", HSV (0x6bb620ff)));
+ c.insert (make_pair ("silence", HSV (0x9efffd7a)));
+ c.insert (make_pair ("silence text", HSV (0x0e066cff)));
+ c.insert (make_pair ("mono panner outline", HSV (0x33445eff)));
+ c.insert (make_pair ("mono panner fill", HSV (0x7a9bccc9)));
+ c.insert (make_pair ("mono panner text", HSV (0x000000ff)));
+ c.insert (make_pair ("mono panner bg", HSV (0x2e2929ff)));
+ c.insert (make_pair ("mono panner position fill", HSV (0x7a89b3ff)));
+ c.insert (make_pair ("mono panner position outline", HSV (0x33445eff)));
+ c.insert (make_pair ("stereo panner outline", HSV (0x33445eff)));
+ c.insert (make_pair ("stereo panner fill", HSV (0x7a9accc9)));
+ c.insert (make_pair ("stereo panner text", HSV (0x000000ff)));
+ c.insert (make_pair ("stereo panner bg", HSV (0x2e2929ff)));
+ c.insert (make_pair ("stereo panner rule", HSV (0x455c7fff)));
+ c.insert (make_pair ("stereo panner mono outline", HSV (0xa05600ff)));
+ c.insert (make_pair ("stereo panner mono fill", HSV (0xe99668ca)));
+ c.insert (make_pair ("stereo panner mono text", HSV (0x000000ff)));
+ c.insert (make_pair ("stereo panner mono bg", HSV (0x2e2929ff)));
+ c.insert (make_pair ("stereo panner inverted outline", HSV (0xbf0a00ff)));
+ c.insert (make_pair ("stereo panner inverted fill", HSV (0xe4a19cc9)));
+ c.insert (make_pair ("stereo panner inverted text", HSV (0x000000ff)));
+ c.insert (make_pair ("stereo panner inverted bg", HSV (0x2e2929ff)));
+ c.insert (make_pair ("tempo bar", HSV (0x70727fcc)));
+ c.insert (make_pair ("tempo marker", HSV (0xf2425bff)));
+ c.insert (make_pair ("time axis frame", HSV (0x000000ff)));
+ c.insert (make_pair ("selected time axis frame", HSV (0xee0000ff)));
+ c.insert (make_pair ("time stretch fill", HSV (0xe2b5b596)));
+ c.insert (make_pair ("time stretch outline", HSV (0x63636396)));
+ c.insert (make_pair ("tracknumber label: fill", HSV (0x444444ff)));
+ c.insert (make_pair ("tracknumber label: fill active", HSV (0x333333ff)));
+ c.insert (make_pair ("tracknumber label: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("transport drag rect", HSV (0x969696c6)));
+ c.insert (make_pair ("transport loop rect", HSV (0x1e7728f9)));
+ c.insert (make_pair ("transport marker bar", HSV (0x8c8e98cc)));
+ c.insert (make_pair ("transport punch rect", HSV (0x6d2828e5)));
+ c.insert (make_pair ("trim handle locked", HSV (0xea0f0f28)));
+ c.insert (make_pair ("trim handle", HSV (0x1900ff44)));
+ c.insert (make_pair ("verbose canvas cursor", HSV (0xfffd2ebc)));
+ c.insert (make_pair ("vestigial frame", HSV (0x0000000f)));
+ c.insert (make_pair ("video timeline bar", HSV (0x303030ff)));
+ c.insert (make_pair ("region base", HSV (0x838890ff)));
+ c.insert (make_pair ("region area covered by another region", HSV (0x505050b0)));
+ c.insert (make_pair ("waveform outline", HSV (0x000000ff)));
+ c.insert (make_pair ("clipped waveform", HSV (0xff0000e5)));
+ c.insert (make_pair ("waveform fill", HSV (0xffffffd9)));
+ c.insert (make_pair ("zero line", HSV (0x7f7f7fe0)));
+ c.insert (make_pair ("zoom rect", HSV (0xc6d1b26d)));
+ c.insert (make_pair ("monitor knob", HSV (0x555050ff)));
+ c.insert (make_pair ("monitor knob: arc start", HSV (0x5d90b0ff)));
+ c.insert (make_pair ("monitor knob: arc end", HSV (0x154c6eff)));
+ c.insert (make_pair ("button border", HSV (0x000000f0)));
+ c.insert (make_pair ("border color", HSV (0x00000000)));
+ c.insert (make_pair ("processor prefader: fill", HSV (0x873c3cff)));
+ c.insert (make_pair ("processor prefader: fill active", HSV (0x603535ff)));
+ c.insert (make_pair ("processor prefader: led", HSV (0x26550eff)));
+ c.insert (make_pair ("processor prefader: led active", HSV (0x78cb4eff)));
+ c.insert (make_pair ("processor prefader: text", HSV (0xaaaaa3ff)));
+ c.insert (make_pair ("processor prefader: text active", HSV (0xeeeeecff)));
+ c.insert (make_pair ("processor fader: fill", HSV (0x5d90b0ff)));
+ c.insert (make_pair ("processor fader: fill active", HSV (0x256d8fff)));
+ c.insert (make_pair ("processor fader: led", HSV (0x26550eff)));
+ c.insert (make_pair ("processor fader: led active", HSV (0x78cb4eff)));
+ c.insert (make_pair ("processor fader: text", HSV (0xaaaaa3ff)));
+ c.insert (make_pair ("processor fader: text active", HSV (0xeeeeecff)));
+ c.insert (make_pair ("processor postfader: fill", HSV (0x455a3cff)));
+ c.insert (make_pair ("processor postfader: fill active", HSV (0x254528ff)));
+ c.insert (make_pair ("processor postfader: led", HSV (0x26550eff)));
+ c.insert (make_pair ("processor postfader: led active", HSV (0x78cb4eff)));
+ c.insert (make_pair ("processor postfader: text", HSV (0xaaaaa3ff)));
+ c.insert (make_pair ("processor postfader: text active", HSV (0xeeeeecff)));
+ c.insert (make_pair ("processor control button: fill", HSV (0x222222ff)));
+ c.insert (make_pair ("processor control button: fill active", HSV (0x333333ff)));
+ c.insert (make_pair ("processor control button: led", HSV (0x101010ff)));
+ c.insert (make_pair ("processor control button: led active", HSV (0x5d90b0ff)));
+ c.insert (make_pair ("processor control button: text", HSV (0xffffffff)));
+ c.insert (make_pair ("processor control button: text active", HSV (0xffffffff)));
+ c.insert (make_pair ("midi device: fill", HSV (0x54555dff)));
+ c.insert (make_pair ("midi device: fill active", HSV (0x45464cff)));
+ c.insert (make_pair ("midi device: led", HSV (0x006600ff)));
+ c.insert (make_pair ("midi device: led active", HSV (0x00ff00ff)));
+ c.insert (make_pair ("midi device: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("midi device: text active", HSV (0xeeeeecff)));
+ c.insert (make_pair ("monitor button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("monitor button: fill active", HSV (0xc56505ff)));
+ c.insert (make_pair ("monitor button: led", HSV (0x660000ff)));
+ c.insert (make_pair ("monitor button: led active", HSV (0xff0000ff)));
+ c.insert (make_pair ("monitor button: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("monitor button: text active", HSV (0x1a1a1aff)));
+ c.insert (make_pair ("solo isolate: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("solo isolate: fill active", HSV (0x564d48ff)));
+ c.insert (make_pair ("solo isolate: led", HSV (0x660000ff)));
+ c.insert (make_pair ("solo isolate: led active", HSV (0xff0000ff)));
+ c.insert (make_pair ("solo isolate: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("solo isolate: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("solo safe: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("solo safe: fill active", HSV (0x564d48ff)));
+ c.insert (make_pair ("solo safe: led", HSV (0x660000ff)));
+ c.insert (make_pair ("solo safe: led active", HSV (0xff0000ff)));
+ c.insert (make_pair ("solo safe: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("solo safe: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("meterbridge peaklabel", HSV (0xff1111ff)));
+ c.insert (make_pair ("meter color BBC", HSV (0xffa500ff)));
+ c.insert (make_pair ("monitor section cut: fill", HSV (0x5f5a58ff)));
+ c.insert (make_pair ("monitor section cut: fill active", HSV (0xffa500ff)));
+ c.insert (make_pair ("monitor section cut: led", HSV (0x473812ff)));
+ c.insert (make_pair ("monitor section cut: led active", HSV (0x78cb4eff)));
+ c.insert (make_pair ("monitor section cut: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("monitor section cut: text active", HSV (0x000000ff)));
+ c.insert (make_pair ("monitor section dim: fill", HSV (0x5f5a58ff)));
+ c.insert (make_pair ("monitor section dim: fill active", HSV (0xe58505ff)));
+ c.insert (make_pair ("monitor section dim: led", HSV (0x00000000)));
+ c.insert (make_pair ("monitor section dim: led active", HSV (0x78cb4eff)));
+ c.insert (make_pair ("monitor section dim: text", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("monitor section dim: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("monitor section solo: fill", HSV (0x5f5a58ff)));
+ c.insert (make_pair ("monitor section solo: fill active", HSV (0x4dbb00ff)));
+ c.insert (make_pair ("monitor section solo: led", HSV (0x473812ff)));
+ c.insert (make_pair ("monitor section solo: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("monitor section solo: text", HSV (0x00000000)));
+ c.insert (make_pair ("monitor section solo: text active", HSV (0x00000000)));
+ c.insert (make_pair ("monitor section invert: fill", HSV (0x5f5a58ff)));
+ c.insert (make_pair ("monitor section invert: fill active", HSV (0x4242d0ff)));
+ c.insert (make_pair ("monitor section invert: led", HSV (0x473812ff)));
+ c.insert (make_pair ("monitor section invert: led active", HSV (0x78cb4eff)));
+ c.insert (make_pair ("monitor section invert: text", HSV (0x00000000)));
+ c.insert (make_pair ("monitor section invert: text active", HSV (0x00000000)));
+ c.insert (make_pair ("monitor section mono: fill", HSV (0x5f5a58ff)));
+ c.insert (make_pair ("monitor section mono: fill active", HSV (0x3232c0ff)));
+ c.insert (make_pair ("monitor section mono: led", HSV (0x473812ff)));
+ c.insert (make_pair ("monitor section mono: led active", HSV (0x78cb4eff)));
+ c.insert (make_pair ("monitor section mono: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("monitor section mono: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("monitor section solo model: fill", HSV (0x5d5856ff)));
+ c.insert (make_pair ("monitor section solo model: fill active", HSV (0x564d48ff)));
+ c.insert (make_pair ("monitor section solo model: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("monitor section solo model: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("monitor section solo model: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("monitor section solo model: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("monitor solo override: fill", HSV (0x5d5856ff)));
+ c.insert (make_pair ("monitor solo override: fill active", HSV (0x564d48ff)));
+ c.insert (make_pair ("monitor solo override: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("monitor solo override: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("monitor solo override: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("monitor solo override: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("monitor solo exclusive: fill", HSV (0x5d5856ff)));
+ c.insert (make_pair ("monitor solo exclusive: fill active", HSV (0x564c47ff)));
+ c.insert (make_pair ("monitor solo exclusive: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("monitor solo exclusive: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("monitor solo exclusive: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("monitor solo exclusive: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("rude solo: fill", HSV (0x684d4dff)));
+ c.insert (make_pair ("rude solo: fill active", HSV (0xe21b1bff)));
+ c.insert (make_pair ("rude solo: led", HSV (0x00000000)));
+ c.insert (make_pair ("rude solo: led active", HSV (0x00000000)));
+ c.insert (make_pair ("rude solo: text", HSV (0x969696ff)));
+ c.insert (make_pair ("rude solo: text active", HSV (0xe5e5e5ff)));
+ c.insert (make_pair ("rude isolate: fill", HSV (0x21414fff)));
+ c.insert (make_pair ("rude isolate: fill active", HSV (0xb6e5fdff)));
+ c.insert (make_pair ("rude isolate: led", HSV (0x00000000)));
+ c.insert (make_pair ("rude isolate: led active", HSV (0x000000ff)));
+ c.insert (make_pair ("rude isolate: text", HSV (0x979797ff)));
+ c.insert (make_pair ("rude isolate: text active", HSV (0x000000ff)));
+ c.insert (make_pair ("rude audition: fill", HSV (0x684d4dff)));
+ c.insert (make_pair ("rude audition: fill active", HSV (0xe21b1bff)));
+ c.insert (make_pair ("rude audition: led", HSV (0x00000000)));
+ c.insert (make_pair ("rude audition: led active", HSV (0x00000000)));
+ c.insert (make_pair ("rude audition: text", HSV (0x979797ff)));
+ c.insert (make_pair ("rude audition: text active", HSV (0xffffffff)));
+ c.insert (make_pair ("feedback alert: fill", HSV (0x684d4dff)));
+ c.insert (make_pair ("feedback alert: fill active", HSV (0xe21b1bff)));
+ c.insert (make_pair ("feedback alert: led", HSV (0x00000000)));
+ c.insert (make_pair ("feedback alert: led active", HSV (0x00000000)));
+ c.insert (make_pair ("feedback alert: text", HSV (0x969696ff)));
+ c.insert (make_pair ("feedback alert: text active", HSV (0xe5e5e5ff)));
+ c.insert (make_pair ("mute button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("mute button: fill active", HSV (0xbbbb00ff)));
+ c.insert (make_pair ("mute button: led", HSV (0x00000000)));
+ c.insert (make_pair ("mute button: led active", HSV (0x00000000)));
+ c.insert (make_pair ("mute button: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("mute button: text active", HSV (0x191919ff)));
+ c.insert (make_pair ("solo button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("solo button: fill active", HSV (0x4dbb00ff)));
+ c.insert (make_pair ("solo button: led", HSV (0x00000000)));
+ c.insert (make_pair ("solo button: led active", HSV (0x00000000)));
+ c.insert (make_pair ("solo button: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("solo button: text active", HSV (0x191919ff)));
+ c.insert (make_pair ("invert button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("invert button: fill active", HSV (0x4242d0ff)));
+ c.insert (make_pair ("invert button: led", HSV (0x473812ff)));
+ c.insert (make_pair ("invert button: led active", HSV (0x78cb4eff)));
+ c.insert (make_pair ("invert button: text", HSV (0xd7d7e8ff)));
+ c.insert (make_pair ("invert button: text active", HSV (0xbfbfbfff)));
+ c.insert (make_pair ("record enable button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("record enable button: fill active", HSV (0xb50e0eff)));
+ c.insert (make_pair ("record enable button: led", HSV (0x7b3541ff)));
+ c.insert (make_pair ("record enable button: led active", HSV (0xffa3b3ff)));
+ c.insert (make_pair ("record enable button: text", HSV (0xa5a5a5ff)));
+ c.insert (make_pair ("record enable button: text active", HSV (0x000000ff)));
+ c.insert (make_pair ("generic button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("generic button: fill active", HSV (0xfd0000ff)));
+ c.insert (make_pair ("generic button: led", HSV (0x22224fff)));
+ c.insert (make_pair ("generic button: led active", HSV (0x2222ffff)));
+ c.insert (make_pair ("generic button: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("generic button: text active", HSV (0x191919ff)));
+ c.insert (make_pair ("send alert button: fill", HSV (0x4e5647ff)));
+ c.insert (make_pair ("send alert button: fill active", HSV (0x85e524ff)));
+ c.insert (make_pair ("send alert button: led", HSV (0x00000000)));
+ c.insert (make_pair ("send alert button: led active", HSV (0x00000000)));
+ c.insert (make_pair ("send alert button: text", HSV (0xccccccff)));
+ c.insert (make_pair ("send alert button: text active", HSV (0x000000ff)));
+ c.insert (make_pair ("transport button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("transport button: fill active", HSV (0x00a300ff)));
+ c.insert (make_pair ("transport button: led", HSV (0x00000000)));
+ c.insert (make_pair ("transport button: led active", HSV (0x00000000)));
+ c.insert (make_pair ("transport button: text", HSV (0x00000000)));
+ c.insert (make_pair ("transport button: text active", HSV (0x00000000)));
+ c.insert (make_pair ("transport recenable button: fill", HSV (0x5f3f3fff)));
+ c.insert (make_pair ("transport recenable button: fill active", HSV (0xb50e0eff)));
+ c.insert (make_pair ("transport recenable button: led", HSV (0x00000000)));
+ c.insert (make_pair ("transport recenable button: led active", HSV (0x00000000)));
+ c.insert (make_pair ("transport recenable button: text", HSV (0x00000000)));
+ c.insert (make_pair ("transport recenable button: text active", HSV (0x00000000)));
+ c.insert (make_pair ("transport option button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("transport option button: fill active", HSV (0x4a4b51ff)));
+ c.insert (make_pair ("transport option button: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("transport option button: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("transport option button: text", HSV (0xd7d7e8ff)));
+ c.insert (make_pair ("transport option button: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("transport active option button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("transport active option button: fill active", HSV (0x00a300ff)));
+ c.insert (make_pair ("transport active option button: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("transport active option button: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("transport active option button: text", HSV (0xd7d7e8ff)));
+ c.insert (make_pair ("transport active option button: text active", HSV (0x000000ff)));
+ c.insert (make_pair ("plugin bypass button: fill", HSV (0x5d5856ff)));
+ c.insert (make_pair ("plugin bypass button: fill active", HSV (0x564d48ff)));
+ c.insert (make_pair ("plugin bypass button: led", HSV (0x660000ff)));
+ c.insert (make_pair ("plugin bypass button: led active", HSV (0xff0000ff)));
+ c.insert (make_pair ("plugin bypass button: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("plugin bypass button: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("punch button: fill", HSV (0x603f3fff)));
+ c.insert (make_pair ("punch button: fill active", HSV (0xf03020ff)));
+ c.insert (make_pair ("punch button: led", HSV (0x00000000)));
+ c.insert (make_pair ("punch button: led active", HSV (0x00000000)));
+ c.insert (make_pair ("punch button: text", HSV (0xa5a5a5ff)));
+ c.insert (make_pair ("punch button: text active", HSV (0xd8d8d8ff)));
+ c.insert (make_pair ("mouse mode button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("mouse mode button: fill active", HSV (0x00b200ff)));
+ c.insert (make_pair ("mouse mode button: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("mouse mode button: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("mouse mode button: text", HSV (0xd7d7e8ff)));
+ c.insert (make_pair ("mouse mode button: text active", HSV (0x000000ff)));
+ c.insert (make_pair ("nudge button: fill", HSV (0x684744ff)));
+ c.insert (make_pair ("nudge button: fill active", HSV (0x404045ff)));
+ c.insert (make_pair ("nudge button: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("nudge button: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("nudge button: text", HSV (0xc7c7d8ff)));
+ c.insert (make_pair ("nudge button: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("zoom menu: fill", HSV (0x99997950)));
+ c.insert (make_pair ("zoom menu: fill active", HSV (0x404045ff)));
+ c.insert (make_pair ("zoom menu: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("zoom menu: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("zoom menu: text", HSV (0xd7d7e8ff)));
+ c.insert (make_pair ("zoom menu: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("zoom button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("zoom button: fill active", HSV (0x00a300ff)));
+ c.insert (make_pair ("zoom button: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("zoom button: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("zoom button: text", HSV (0xd7d7e8ff)));
+ c.insert (make_pair ("zoom button: text active", HSV (0x000000ff)));
+ c.insert (make_pair ("route button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("route button: fill active", HSV (0x121212ff)));
+ c.insert (make_pair ("route button: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("route button: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("route button: text", HSV (0xd7d7e8ff)));
+ c.insert (make_pair ("route button: text active", HSV (0x191919ff)));
+ c.insert (make_pair ("mixer strip button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("mixer strip button: fill active", HSV (0xffa500ff)));
+ c.insert (make_pair ("mixer strip button: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("mixer strip button: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("mixer strip button: text", HSV (0xd7d7e8ff)));
+ c.insert (make_pair ("mixer strip button: text active", HSV (0x000000ff)));
+ c.insert (make_pair ("mixer strip name button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("mixer strip name button: fill active", HSV (0x121212ff)));
+ c.insert (make_pair ("mixer strip name button: led", HSV (0x4f3300ff)));
+ c.insert (make_pair ("mixer strip name button: led active", HSV (0xffa500ff)));
+ c.insert (make_pair ("mixer strip name button: text", HSV (0xd7d7e8ff)));
+ c.insert (make_pair ("mixer strip name button: text active", HSV (0xc8c8d9ff)));
+ c.insert (make_pair ("midi input button: fill", HSV (0x656867ff)));
+ c.insert (make_pair ("midi input button: fill active", HSV (0x00a300ff)));
+ c.insert (make_pair ("midi input button: led", HSV (0x00000000)));
+ c.insert (make_pair ("midi input button: led active", HSV (0x00000000)));
+ c.insert (make_pair ("midi input button: text", HSV (0x00000000)));
+ c.insert (make_pair ("midi input button: text active", HSV (0x00000000)));
+ c.insert (make_pair ("transport clock: background", HSV (0x262626ff)));
+ c.insert (make_pair ("transport clock: text", HSV (0x8df823ff)));
+ c.insert (make_pair ("transport clock: edited text", HSV (0xffa500ff)));
+ c.insert (make_pair ("transport clock: cursor", HSV (0xffa500ff)));
+ c.insert (make_pair ("secondary clock: background", HSV (0x262626ff)));
+ c.insert (make_pair ("secondary clock: text", HSV (0x8df823ff)));
+ c.insert (make_pair ("secondary clock: edited text", HSV (0xffa500ff)));
+ c.insert (make_pair ("secondary clock: cursor", HSV (0xffa500ff)));
+ c.insert (make_pair ("transport delta clock: background", HSV (0x000000ff)));
+ c.insert (make_pair ("transport delta clock: edited text", HSV (0xff0000ff)));
+ c.insert (make_pair ("transport delta clock: cursor", HSV (0xf11000ff)));
+ c.insert (make_pair ("transport delta clock: text", HSV (0x8ce1f8ff)));
+ c.insert (make_pair ("secondary delta clock: edited text", HSV (0xff0000ff)));
+ c.insert (make_pair ("secondary delta clock: cursor", HSV (0xf11000ff)));
+ c.insert (make_pair ("secondary delta clock: background", HSV (0x000000ff)));
+ c.insert (make_pair ("secondary delta clock: text", HSV (0x8ce1f8ff)));
+ c.insert (make_pair ("big clock: background", HSV (0x020202ff)));
+ c.insert (make_pair ("big clock: text", HSV (0xf0f0f0ff)));
+ c.insert (make_pair ("big clock: edited text", HSV (0xffa500ff)));
+ c.insert (make_pair ("big clock: cursor", HSV (0xffa500ff)));
+ c.insert (make_pair ("big clock active: background", HSV (0x020202ff)));
+ c.insert (make_pair ("big clock active: text", HSV (0xf11000ff)));
+ c.insert (make_pair ("big clock active: edited text", HSV (0xffa500ff)));
+ c.insert (make_pair ("big clock active: cursor", HSV (0xffa500ff)));
+ c.insert (make_pair ("punch clock: background", HSV (0x000000ff)));
+ c.insert (make_pair ("punch clock: text", HSV (0x6bb620ff)));
+ c.insert (make_pair ("punch clock: edited text", HSV (0xff0000ff)));
+ c.insert (make_pair ("punch clock: cursor", HSV (0xf11000ff)));
+ c.insert (make_pair ("selection clock: background", HSV (0x000000ff)));
+ c.insert (make_pair ("selection clock: text", HSV (0x6bb620ff)));
+ c.insert (make_pair ("selection clock: edited text", HSV (0xff0000ff)));
+ c.insert (make_pair ("selection clock: cursor", HSV (0xf11000ff)));
+ c.insert (make_pair ("nudge clock: background", HSV (0x262626ff)));
+ c.insert (make_pair ("nudge clock: text", HSV (0x6bb620ff)));
+ c.insert (make_pair ("nudge clock: edited text", HSV (0xffa500ff)));
+ c.insert (make_pair ("nudge clock: cursor", HSV (0xffa500ff)));
+ c.insert (make_pair ("clock: background", HSV (0x000000ff)));
+ c.insert (make_pair ("clock: text", HSV (0x6bb620ff)));
+ c.insert (make_pair ("clock: edited text", HSV (0xffa500ff)));
+ c.insert (make_pair ("clock: cursor", HSV (0xffa500ff)));
+ c.insert (make_pair ("lock button: fill", HSV (0x616268ff)));
+ c.insert (make_pair ("lock button: fill active", HSV (0x404045ff)));
+ c.insert (make_pair ("lock button: led", HSV (0x00000000)));
+ c.insert (make_pair ("lock button: led active", HSV (0x00000000)));
+ c.insert (make_pair ("lock button: text", HSV (0x000024ff)));
+ c.insert (make_pair ("lock button: text active", HSV (0xc8c8d9ff)));
+
+ for (map<string,HSV>::iterator fp = c.begin(); fp != c.end(); ++fp) {
+ const double hue_cnt = 18.0;
+
+ fp->second.h = hue_cnt * (round (fp->second.h/hue_cnt));
+ }
+
+#undef CANVAS_COLOR
+#define CANVAS_COLOR(var,name,base,modifier) print_relative_def (#var,name,c[name]);
+#include "colors.h"
+#undef CANVAS_COLOR
+}
+
+void
+UIConfiguration::color_theme_changed ()
+{
+ map<std::string,RelativeHSV>::iterator current_color;
+
+ /* we need to reset the quantized hues before we start, because
+ * otherwise when we call RelativeHSV::get() in color_compute()
+ * we don't get an answer based on the new base colors, but instead
+ * based on any existing hue quantization.
+ */
+
+ for (current_color = relative_colors.begin(); current_color != relative_colors.end(); ++current_color) {
+ current_color->second.quantized_hue = -1;
+ }
+
+ color_compute ();
+}
+
void
UIConfiguration::map_parameters (boost::function<void (std::string)>& functor)
{
@@ -146,10 +703,9 @@ UIConfiguration::load_state ()
_dirty = false;
}
- if (!found)
+ if (!found) {
error << _("could not find any ui configuration file, canvas will look broken.") << endmsg;
-
- pack_canvasvars();
+ }
return 0;
}
@@ -203,15 +759,12 @@ UIConfiguration::get_variables (std::string which_node)
node = new XMLNode(which_node);
#undef UI_CONFIG_VARIABLE
-#undef CANVAS_VARIABLE
#define UI_CONFIG_VARIABLE(Type,var,Name,value) if (node->name() == "UI") { var.add_to_node (*node); }
-#define CANVAS_VARIABLE(var,Name) if (node->name() == "Canvas") { var.add_to_node (*node); }
#define CANVAS_STRING_VARIABLE(var,Name) if (node->name() == "Canvas") { var.add_to_node (*node); }
#define CANVAS_FONT_VARIABLE(var,Name) if (node->name() == "Canvas") { var.add_to_node (*node); }
#include "ui_config_vars.h"
#include "canvas_vars.h"
#undef UI_CONFIG_VARIABLE
-#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
#undef CANVAS_FONT_VARIABLE
@@ -245,18 +798,51 @@ UIConfiguration::set_state (const XMLNode& root, int /*version*/)
}
void
+UIConfiguration::print_relative_def (string camelcase, string name, Color c)
+{
+ HSV variable (c);
+ HSV closest;
+ double shortest_distance = DBL_MAX;
+ string closest_name;
+
+ for (map<string,HSV>::iterator f = full_palette.begin(); f != full_palette.end(); ++f) {
+
+ double d;
+ HSV fixed (f->second);
+
+ // d = variable.distance (fixed);
+
+ d = fabs (variable.h - fixed.h);
+
+ if (d < shortest_distance) {
+ closest = fixed;
+ closest_name = f->first;
+ shortest_distance = d;
+ }
+ }
+
+ /* we now know the closest color of the fixed colors to
+ this variable color. Compute the HSV diff and
+ use it to redefine the variable color in terms of the
+ fixed one.
+ */
+
+ HSV delta = variable.delta (closest);
+
+ cerr << "CANVAS_COLOR(" << camelcase << ",\"" << name << "\", \"" << closest_name << "\", HSV("
+ << delta.h << ',' << delta.s << ',' << delta.v << ',' << variable.a << ")) /*"
+ << shortest_distance << " */" << endl;
+}
+
+
+void
UIConfiguration::set_variables (const XMLNode& node)
{
#undef UI_CONFIG_VARIABLE
-#undef CANVAS_VARIABLE
#define UI_CONFIG_VARIABLE(Type,var,name,val) \
if (var.set_from_node (node)) { \
ParameterChanged (name); \
}
-#define CANVAS_VARIABLE(var,name) \
- if (var.set_from_node (node)) { \
- ParameterChanged (name); \
- }
#define CANVAS_STRING_VARIABLE(var,name) \
if (var.set_from_node (node)) { \
ParameterChanged (name); \
@@ -268,32 +854,51 @@ UIConfiguration::set_variables (const XMLNode& node)
#include "ui_config_vars.h"
#include "canvas_vars.h"
#undef UI_CONFIG_VARIABLE
-#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
#undef CANVAS_FONT_VARIABLE
+
+ /* Reset base colors */
+
+#undef CANVAS_BASE_COLOR
+#define CANVAS_BASE_COLOR(var,name,val) \
+ var.set_from_node (node);
+#include "base_colors.h"
+#undef CANVAS_BASE_COLOR
+
}
void
-UIConfiguration::pack_canvasvars ()
+UIConfiguration::set_dirty ()
{
-#undef CANVAS_VARIABLE
-#define CANVAS_VARIABLE(var,name) canvas_colors.insert (std::pair<std::string,ColorVariable<uint32_t>* >(name,&var));
-#define CANVAS_STRING_VARIABLE(var,name)
-#define CANVAS_FONT_VARIABLE(var,name)
-#include "canvas_vars.h"
-#undef CANVAS_VARIABLE
-#undef CANVAS_STRING_VARIABLE
-#undef CANVAS_FONT_VARIABLE
+ _dirty = true;
+}
+
+bool
+UIConfiguration::dirty () const
+{
+ return _dirty;
}
-uint32_t
-UIConfiguration::color_by_name (const std::string& name)
+ArdourCanvas::Color
+UIConfiguration::base_color_by_name (const std::string& name) const
{
- map<std::string,ColorVariable<uint32_t>* >::iterator i = canvas_colors.find (name);
+ map<std::string,ColorVariable<uint32_t>* >::const_iterator i = configurable_colors.find (name);
- if (i != canvas_colors.end()) {
+ if (i != configurable_colors.end()) {
return i->second->get();
}
+
+ string::size_type opp;
+
+ if ((opp = name.find (X_(" opposite"))) != string::npos) {
+ string base = name.substr (0, opp);
+ i = configurable_colors.find (base);
+ if (i != configurable_colors.end()) {
+ HSV hsv (i->second->get());
+ return hsv.opposite().color ();
+ }
+ }
+
#if 0 // yet unsed experimental style postfix
/* Idea: use identical colors but different font/sizes
* for variants of the same 'widget'.
@@ -314,7 +919,7 @@ UIConfiguration::color_by_name (const std::string& name)
*/
const size_t name_len = name.size();
const size_t name_sep = name.find(':');
- for (i = canvas_colors.begin(); i != canvas_colors.end(), name_sep != string::npos; ++i) {
+ for (i = configurable_colors.begin(); i != configurable_colors.end(), name_sep != string::npos; ++i) {
const size_t cmp_len = i->first.size();
const size_t cmp_sep = i->first.find(':');
if (cmp_len >= name_len || cmp_sep == string::npos) continue;
@@ -324,18 +929,134 @@ UIConfiguration::color_by_name (const std::string& name)
}
#endif
- // cerr << string_compose (_("Color %1 not found"), name) << endl;
+ cerr << string_compose (_("Color %1 not found"), name) << endl;
return RGBA_TO_UINT (g_random_int()%256,g_random_int()%256,g_random_int()%256,0xff);
}
-void
-UIConfiguration::set_dirty ()
+ArdourCanvas::Color
+UIConfiguration::color (const std::string& name) const
{
- _dirty = true;
+ map<string,string>::const_iterator e = color_aliases.find (name);
+
+ if (e != color_aliases.end ()) {
+ map<string,HSV>::const_iterator ac = actual_colors.find (e->second);
+ if (ac != actual_colors.end()) {
+ return ac->second;
+ }
+ }
+
+ cerr << string_compose (_("Color %1 not found"), name) << endl;
+
+ return rgba_to_color ((g_random_int()%256)/255.0,
+ (g_random_int()%256)/255.0,
+ (g_random_int()%256)/255.0,
+ 0xff);
}
-bool
-UIConfiguration::dirty () const
+ArdourCanvas::HSV
+UIConfiguration::RelativeHSV::get() const
{
- return _dirty;
+ HSV base (UIConfiguration::instance()->base_color_by_name (base_color));
+
+ /* this operation is a little wierd. because of the way we originally
+ * computed the alpha specification for the modifiers used here
+ * we need to reset base's alpha to zero before adding the modifier.
+ */
+
+ base.a = 0.0;
+
+ HSV self (base + modifier);
+
+ if (quantized_hue >= 0.0) {
+ self.h = quantized_hue;
+ }
+
+ return self;
+}
+
+void
+UIConfiguration::color_compute ()
+{
+ using namespace ArdourCanvas;
+
+ map<std::string,ColorVariable<uint32_t>* >::iterator f;
+ map<std::string,HSV*>::iterator v;
+
+ /* now compute distances */
+
+ cerr << "Attempt to reduce " << relative_colors.size() << endl;
+
+ map<std::string,RelativeHSV>::iterator current_color;
+
+ color_aliases.clear ();
+
+ /* First quantize the hues.
+
+ This ought to use a perceptual model such as CIE94 or CIEDE2000 that
+ takes into account non-uniformity in human wavelength
+ discrimination.
+
+ For now (November 2014) simply divide the hue space (360 degrees)
+ into small pieces.
+ */
+
+ /* quantize all current relative color definitions */
+
+ for (current_color = relative_colors.begin(); current_color != relative_colors.end(); ++current_color) {
+
+ HSV hsv (current_color->second.get());
+
+ if (hsv.is_gray ()) {
+ continue;
+ }
+
+ current_color->second.quantized_hue = hue_cnt * (round (hsv.h/hue_cnt));
+ }
+
+ actual_colors.clear ();
+
+ for (current_color = relative_colors.begin(); current_color != relative_colors.end(); ++current_color) {
+
+ map<std::string,HSV>::iterator possible_match;
+ std::string equivalent_name;
+ bool matched;
+
+ matched = false;
+
+ for (possible_match = actual_colors.begin(); possible_match != actual_colors.end(); ++possible_match) {
+
+ HSV a (current_color->second.get());
+ HSV b (possible_match->second);
+
+ /* This uses perceptual distance to find visually
+ * similar colors.
+ */
+
+ if (a.distance (b) < 6.0) {
+ matched = true;
+ break;
+ }
+ }
+
+ if (!matched) {
+
+ /* color does not match any other, generate a generic
+ * name and store two aliases.
+ */
+
+ string alias = string_compose ("color %1", actual_colors.size() + 1);
+ actual_colors.insert (make_pair (alias, current_color->second.get()));
+ color_aliases.insert (make_pair (current_color->first, alias));
+
+ } else {
+
+ /* this color was within the JND CIE76 distance of
+ * another, so throw it away.
+ */
+
+ color_aliases.insert (make_pair (current_color->first, possible_match->first));
+ }
+ }
+
+ cerr << "Ended with " << actual_colors.size() << " colors" << endl;
}
diff --git a/gtk2_ardour/ui_config.h b/gtk2_ardour/ui_config.h
index 0000eb63f5..0754425c27 100644
--- a/gtk2_ardour/ui_config.h
+++ b/gtk2_ardour/ui_config.h
@@ -28,6 +28,8 @@
#include "pbd/xml++.h"
#include "ardour/configuration_variable.h"
+#include "canvas/colors.h"
+
#include "utils.h"
/* This is very similar to ARDOUR::ConfigVariable but expects numeric values to
@@ -81,7 +83,9 @@ class UIConfiguration : public PBD::Stateful
UIConfiguration();
~UIConfiguration();
- std::map<std::string,ColorVariable<uint32_t> *> canvas_colors;
+ static UIConfiguration* instance() { return _instance; }
+
+ std::map<std::string,ColorVariable<uint32_t> *> configurable_colors;
bool dirty () const;
void set_dirty ();
@@ -95,8 +99,11 @@ class UIConfiguration : public PBD::Stateful
XMLNode& get_variables (std::string);
void set_variables (const XMLNode&);
void pack_canvasvars ();
+ void reset_derived_colors ();
- uint32_t color_by_name (const std::string&);
+ ArdourCanvas::Color base_color_by_name (const std::string&) const;
+ ArdourCanvas::Color color (const std::string&) const;
+ ArdourCanvas::HSV color_hsv (const std::string&) const;
sigc::signal<void,std::string> ParameterChanged;
void map_parameters (boost::function<void (std::string)>&);
@@ -107,11 +114,7 @@ class UIConfiguration : public PBD::Stateful
bool set_##var (Type val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; }
#include "ui_config_vars.h"
#undef UI_CONFIG_VARIABLE
-#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
-#define CANVAS_VARIABLE(var,name) \
- uint32_t get_##var () const { return var.get(); } \
- bool set_##var (uint32_t val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; }
#define CANVAS_STRING_VARIABLE(var,name) \
std::string get_##var () const { return var.get(); } \
bool set_##var (const std::string& val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; }
@@ -119,12 +122,43 @@ class UIConfiguration : public PBD::Stateful
Pango::FontDescription get_##var () const { return ARDOUR_UI_UTILS::sanitized_font (var.get()); } \
bool set_##var (const std::string& val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; }
#include "canvas_vars.h"
-#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
#undef CANVAS_FONT_VARIABLE
+#undef CANVAS_BASE_COLOR
+#define CANVAS_BASE_COLOR(var,name,val) \
+ ArdourCanvas::Color get_##var() const { return var.get(); } \
+ bool set_##var (ArdourCanvas::Color v) { bool ret = var.set (v); if (ret) { ParameterChanged (#var); } return ret; } \
+ bool set_##var(const ArdourCanvas::HSV& v) const { return set_##var (v.color()); }
+#include "base_colors.h"
+#undef CANVAS_BASE_COLOR
+
+#undef CANVAS_COLOR
+#define CANVAS_COLOR(var,name,base,modifier) ArdourCanvas::Color get_##var() const { return var.get().color(); }
+#include "colors.h"
+#undef CANVAS_COLOR
+
private:
+ struct RelativeHSV {
+ RelativeHSV (const std::string& b, const ArdourCanvas::HSV& mod)
+ : base_color (b)
+ , modifier (mod)
+ , quantized_hue (-1.0) {}
+ std::string base_color;
+ ArdourCanvas::HSV modifier;
+ double quantized_hue;
+
+ ArdourCanvas::HSV get() const;
+ };
+
+ /* these are loaded from serialized state (e.g. XML) */
+ std::map<std::string,RelativeHSV> relative_colors;
+ /* these are computed during color_compute()*/
+ std::map<std::string,ArdourCanvas::HSV> actual_colors;
+ /* these map from the name/key of relative colors to the color/value of actual colors */
+ std::map<std::string,std::string> color_aliases;
+
/* declare variables */
#undef UI_CONFIG_VARIABLE
@@ -132,17 +166,34 @@ class UIConfiguration : public PBD::Stateful
#include "ui_config_vars.h"
#undef UI_CONFIG_VARIABLE
-#undef CANVAS_VARIABLE
-#define CANVAS_VARIABLE(var,name) ColorVariable<uint32_t> var;
#define CANVAS_STRING_VARIABLE(var,name) ARDOUR::ConfigVariable<std::string> var;
#define CANVAS_FONT_VARIABLE(var,name) ARDOUR::ConfigVariable<std::string> var;
#include "canvas_vars.h"
-#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
#undef CANVAS_FONT_VARIABLE
+ /* declare base color variables (these are modifiable by the user) */
+
+#undef CANVAS_BASE_COLOR
+#define CANVAS_BASE_COLOR(var,name,val) ColorVariable<uint32_t> var;
+#include "base_colors.h"
+#undef CANVAS_BASE_COLOR
+
+ /* declare relative color variables (not directly modifiable) */
+
+#undef CANVAS_COLOR
+#define CANVAS_COLOR(var,name,base,modifier) RelativeHSV var;
+#include "colors.h"
+#undef CANVAS_COLOR
+
XMLNode& state ();
bool _dirty;
+ static UIConfiguration* _instance;
+
+ void color_compute ();
+ void print_relative_def (std::string camelcase, std::string name, ArdourCanvas::Color c);
+ void color_theme_changed ();
+ void original_colors ();
};
#endif /* __ardour_ui_configuration_h__ */
diff --git a/gtk2_ardour/widget_list.rc b/gtk2_ardour/widget_list.rc
index 689bd7096a..2739eab9bf 100644
--- a/gtk2_ardour/widget_list.rc
+++ b/gtk2_ardour/widget_list.rc
@@ -128,12 +128,6 @@ widget "*MixerStripPeakDisplay*" style:highest "red_active_small_entry"
widget "*MixerStripPeakDisplayPeak*" style:highest "peak_display_peaked_entry"
widget "*MixerStripSelectedFrame" style:highest "selected_strip_frame"
widget "*MixerStripFrame" style:highest "base_frame"
-widget "*monitor section invert" style:highest "monitor_invert_button"
-widget "*monitor section cut" style:highest "monitor_mute_button"
-widget "*monitor section dim" style:highest "monitor_dim_button"
-widget "*monitor section mono" style:highest "monitor_mono_button"
-widget "*monitor solo exclusive" style:highest "monitor_mono_button"
-widget "*monitor solo override" style:highest "monitor_mono_button"
widget "*FadeCurve" style:highest "medium_bold_entry"
widget "*FadeCurve*" style:highest "medium_bold_entry"
widget "*RouteParamsListDisplay" style:highest "inspector_track_list_display"