From 80591d73c1d0827f1f20685ae7c93172a7fea217 Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 3 Jan 2011 20:54:20 +0000 Subject: (svn r21707) -Fix [FS#4371]: bit too strict assertion on validness of console colours --- src/console_func.h | 2 ++ src/console_gui.cpp | 21 +++++++++++++++++++++ src/console_type.h | 6 ------ 3 files changed, 23 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/console_func.h b/src/console_func.h index aa220a998..6f58bdf54 100644 --- a/src/console_func.h +++ b/src/console_func.h @@ -32,4 +32,6 @@ void IConsoleError(const char *string); /* Parser */ void IConsoleCmdExec(const char *cmdstr); +bool IsValidConsoleColour(TextColour c); + #endif /* CONSOLE_FUNC_H */ diff --git a/src/console_gui.cpp b/src/console_gui.cpp index 875e78d05..dd3f065ef 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -494,3 +494,24 @@ void IConsoleGUIPrint(TextColour colour_code, char *str) new IConsoleLine(str, colour_code); SetWindowDirty(WC_CONSOLE, 0); } + + +/** + * Check whether the given TextColour is valid for console usage. + * @param c The text colour to compare to. + * @return true iff the TextColour is valid for console usage. + */ +bool IsValidConsoleColour(TextColour c) +{ + /* A normal text colour is used. */ + if (!(c & TC_IS_PALETTE_COLOUR)) return TC_BEGIN <= c && c < TC_END; + + /* A text colour from the palette is used; must be the company + * colour gradient, so it must be one of those. */ + c &= ~TC_IS_PALETTE_COLOUR; + for (uint i = TC_BEGIN; i < TC_END; i++) { + if (_colour_gradient[i][4] == c) return true; + } + + return false; +} diff --git a/src/console_type.h b/src/console_type.h index 2a99a7038..b62d5d9c4 100644 --- a/src/console_type.h +++ b/src/console_type.h @@ -30,10 +30,4 @@ static const TextColour CC_DEBUG = TC_LIGHT_BROWN; ///< Colour for debug outpu static const TextColour CC_COMMAND = TC_GOLD; ///< Colour for the console's commands. static const TextColour CC_WHITE = TC_WHITE; ///< White console lines for various things such as the welcome. -static inline bool IsValidConsoleColour(uint c) -{ - return c == CC_DEFAULT || c == CC_ERROR || c == CC_WARNING || c == CC_INFO || - c == CC_DEBUG || c == CC_COMMAND || c == CC_WHITE; -} - #endif /* CONSOLE_TYPE_H */ -- cgit v1.2.3-54-g00ecf