From 42144ecd562ee05423e16452cc999929296b138c Mon Sep 17 00:00:00 2001 From: glx Date: Tue, 26 Nov 2019 01:28:03 +0100 Subject: Add: a TextColour flag to ignore colour changes from strings --- src/gfx.cpp | 2 +- src/gfx_layout.h | 2 +- src/gfx_type.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gfx.cpp b/src/gfx.cpp index 478acc1f2..db024c9c7 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -316,7 +316,7 @@ static void SetColourRemap(TextColour colour) * would be invisible at best, but it actually makes it illegible. */ bool no_shade = (colour & TC_NO_SHADE) != 0 || colour == TC_BLACK; bool raw_colour = (colour & TC_IS_PALETTE_COLOUR) != 0; - colour &= ~(TC_NO_SHADE | TC_IS_PALETTE_COLOUR); + colour &= ~(TC_NO_SHADE | TC_IS_PALETTE_COLOUR | TC_FORCED); _string_colourremap[1] = raw_colour ? (byte)colour : _string_colourmap[colour]; _string_colourremap[2] = no_shade ? 0 : 1; diff --git a/src/gfx_layout.h b/src/gfx_layout.h index c8f563591..4854be6e5 100644 --- a/src/gfx_layout.h +++ b/src/gfx_layout.h @@ -46,7 +46,7 @@ struct FontState { inline void SetColour(TextColour c) { assert(c >= TC_BLUE && c <= TC_BLACK); - this->cur_colour = c; + if ((this->cur_colour & TC_FORCED) == 0) this->cur_colour = c; } /** diff --git a/src/gfx_type.h b/src/gfx_type.h index 1dac6729b..6fca2228d 100644 --- a/src/gfx_type.h +++ b/src/gfx_type.h @@ -267,6 +267,7 @@ enum TextColour { TC_IS_PALETTE_COLOUR = 0x100, ///< Colour value is already a real palette colour index, not an index of a StringColour. TC_NO_SHADE = 0x200, ///< Do not add shading to this text colour. + TC_FORCED = 0x400, ///< Ignore colour changes from strings. }; DECLARE_ENUM_AS_BIT_SET(TextColour) -- cgit v1.2.3-70-g09d2