summaryrefslogtreecommitdiff
path: root/gtk2_ardour/time_axis_view_item.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-06-05 12:00:24 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-06-05 12:04:42 -0400
commit39eec5ac1b4d6c76e064ad7599d0d1efd626b146 (patch)
tree4f6bb39a33e68316e3633f7c7d23f559379ec528 /gtk2_ardour/time_axis_view_item.cc
parent8c79f70eef25cf62bf2cd1d643e546e19b56cc48 (diff)
hopefully fix up selection of color for region name text, under all conditions
Diffstat (limited to 'gtk2_ardour/time_axis_view_item.cc')
-rw-r--r--gtk2_ardour/time_axis_view_item.cc89
1 files changed, 44 insertions, 45 deletions
diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc
index b697db733f..051f983ea7 100644
--- a/gtk2_ardour/time_axis_view_item.cc
+++ b/gtk2_ardour/time_axis_view_item.cc
@@ -772,61 +772,60 @@ TimeAxisViewItem::set_colors()
name_highlight->set_fill_color (fill_color);
}
- if (name_text) {
- double r, g, b, a;
-
- const double black_r = 0.0;
- const double black_g = 0.0;
- const double black_b = 0.0;
-
- const double white_r = 1.0;
- const double white_g = 1.0;
- const double white_b = 1.0;
-
- ArdourCanvas::color_to_rgba (fill_color, r, g, b, a);
-
- /* Use W3C contrast guideline calculation */
+ set_name_text_color ();
+ set_trim_handle_colors();
+}
- double white_contrast = (max (r, white_r) - min (r, white_r)) +
- (max (g, white_g) - min (g, white_g)) +
- (max (b, white_b) - min (b, white_b));
+void
+TimeAxisViewItem::set_name_text_color ()
+{
+ if (!name_text) {
+ return;
+ }
+
+ double r, g, b, a;
- double black_contrast = (max (r, black_r) - min (r, black_r)) +
- (max (g, black_g) - min (g, black_g)) +
- (max (b, black_b) - min (b, black_b));
+ const double black_r = 0.0;
+ const double black_g = 0.0;
+ const double black_b = 0.0;
- if (white_contrast > black_contrast) {
- /* use white */
- name_text->set_color (ArdourCanvas::rgba_to_color (1.0, 1.0, 1.0, 1.0));
- } else {
- /* use black */
- name_text->set_color (ArdourCanvas::rgba_to_color (0.0, 0.0, 0.0, 1.0));
- }
+ const double white_r = 1.0;
+ const double white_g = 1.0;
+ const double white_b = 1.0;
-#if 0
- double h, s, v;
+ uint32_t f;
+
+ if (Config->get_show_name_highlight()) {
+ /* name text will always be on top of name highlight, which
+ will always use our fill color.
+ */
+ f = fill_color;
+ } else {
+ /* name text will be on top of the item, whose color
+ may vary depending on various conditions.
+ */
+ f = get_fill_color ();
+ }
- ArdourCanvas::color_to_hsv (fill_color, h, s, v);
+ ArdourCanvas::color_to_rgba (f, r, g, b, a);
- if (v == 0.0) {
- /* fill is black, set text to white */
- name_text->set_color (ArdourCanvas::rgba_to_color (1.0, 1.0, 1.0, 1.0));
- } else if (v == 1.0) {
- /* fill is white, set text to black */
- name_text->set_color (ArdourCanvas::rgba_to_color (0.0, 0.0, 0.0, 1.0));
- } else {
+ /* Use W3C contrast guideline calculation */
- h = fabs (fmod ((h - 180), 360.0)); /* complementary color */
- s = 1.0; /* fully saturate */
- v = 0.9; /* increase lightness/brightness/value */
+ double white_contrast = (max (r, white_r) - min (r, white_r)) +
+ (max (g, white_g) - min (g, white_g)) +
+ (max (b, white_b) - min (b, white_b));
- name_text->set_color (ArdourCanvas::hsv_to_color (h, s, v, 1.0));
- }
-#endif
+ double black_contrast = (max (r, black_r) - min (r, black_r)) +
+ (max (g, black_g) - min (g, black_g)) +
+ (max (b, black_b) - min (b, black_b));
+ if (white_contrast > black_contrast) {
+ /* use white */
+ name_text->set_color (ArdourCanvas::rgba_to_color (1.0, 1.0, 1.0, 1.0));
+ } else {
+ /* use black */
+ name_text->set_color (ArdourCanvas::rgba_to_color (0.0, 0.0, 0.0, 1.0));
}
-
- set_trim_handle_colors();
}
uint32_t