From 3e367cd0875b036e51789fb77cfbc9a4af06714f Mon Sep 17 00:00:00 2001 From: frosch Date: Wed, 7 Nov 2012 21:23:26 +0000 Subject: (svn r24668) -Feature(ette) [FS#5311]: Draw cargo labels in the station list black or white depending on the background colour. (sbr) --- src/gfx.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/gfx.cpp') diff --git a/src/gfx.cpp b/src/gfx.cpp index 93335de8a..eb62e56fb 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -1546,6 +1546,20 @@ void DoPaletteAnimations() } } +/** + * Determine a contrasty text colour for a coloured background. + * @param background Background colour. + * @return TC_BLACK or TC_WHITE depending on what gives a better contrast. + */ +TextColour GetContrastColour(uint8 background) +{ + Colour c = _cur_palette.palette[background]; + /* Compute brightness according to http://www.w3.org/TR/AERT#color-contrast. + * The following formula computes 1000 * brightness^2, with brightness being in range 0 to 255. */ + uint sq1000_brightness = c.r * c.r * 299 + c.g * c.g * 587 + c.b * c.b * 114; + /* Compare with threshold brightness 128 (50%) */ + return sq1000_brightness < 128 * 128 * 1000 ? TC_WHITE : TC_BLACK; +} /** * Initialize _stringwidth_table cache -- cgit v1.2.3-54-g00ecf