From 39eec5ac1b4d6c76e064ad7599d0d1efd626b146 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Jun 2014 12:00:24 -0400 Subject: hopefully fix up selection of color for region name text, under all conditions --- gtk2_ardour/audio_region_view.cc | 6 --- gtk2_ardour/region_view.cc | 6 --- gtk2_ardour/region_view.h | 2 - gtk2_ardour/time_axis_view_item.cc | 89 +++++++++++++++++++------------------- gtk2_ardour/time_axis_view_item.h | 1 + 5 files changed, 45 insertions(+), 59 deletions(-) diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 256c777cd4..db5c609e7c 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -1455,12 +1455,6 @@ AudioRegionView::set_one_waveform_color (ArdourCanvas::WaveView* wave) ArdourCanvas::color_to_rgba (fill, r, g, b, a); fill = ArdourCanvas::rgba_to_color (r, g, b, 0.85); /* magic number, not user controllable */ outline = ARDOUR_UI::config()->get_canvasvar_WaveForm(); - - if (!Config->get_show_name_highlight()) { - /* recolor name text because it needs to contrast with - the waveform background, not the name highlight. - */ - } } wave->set_fill_color (fill); diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index dfdf0651f6..d6c006a77b 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -740,12 +740,6 @@ RegionView::remove_ghost (GhostRegion* ghost) } } -uint32_t -RegionView::get_fill_color () -{ - return fill_color; -} - void RegionView::set_height (double h) { diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index a5d5fddbd0..59c1e364b8 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -90,8 +90,6 @@ class RegionView : public TimeAxisViewItem void remove_ghost_in (TimeAxisView&); void remove_ghost (GhostRegion*); - uint32_t get_fill_color (); - virtual void entered (bool) {} virtual void exited () {} 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 diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index ff35373995..87101aad3b 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -73,6 +73,7 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList virtual void set_height(double h); void set_y (double); void set_color (Gdk::Color const &); + void set_name_text_color (); uint32_t get_fill_color () const; -- cgit v1.2.3