From ceec32d2cc46db240fb5deee4d86b378558d220e Mon Sep 17 00:00:00 2001 From: frosch Date: Fri, 1 Jun 2012 14:41:47 +0000 Subject: [PATCH] (svn r24311) -Add: DrawDropDownButton() to draw dropdown buttons independent of actual widgets. --- src/settings_gui.cpp | 22 ++++++++++++++++++++++ src/settings_gui.h | 1 + 2 files changed, 23 insertions(+) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 55dcf9b8fb..b9a1d974aa 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -2005,6 +2005,28 @@ void DrawArrowButtons(int x, int y, Colours button_colour, byte state, bool clic } } +/** + * Draw a dropdown button. + * @param x the x position to draw + * @param y the y position to draw + * @param button_colour the colour of the button + * @param state true = lowered + * @param clickable is the button clickable? + */ +void DrawDropDownButton(int x, int y, Colours button_colour, bool state, bool clickable) +{ + static const char *DOWNARROW = "\xEE\x8A\xAA"; + + int colour = _colour_gradient[button_colour][2]; + + DrawFrameRect(x, y, x + SETTING_BUTTON_WIDTH - 1, y + SETTING_BUTTON_HEIGHT - 1, button_colour, state ? FR_LOWERED : FR_NONE); + DrawString(x + (state ? 1 : 0), x + SETTING_BUTTON_WIDTH - (state ? 0 : 1), y + (state ? 2 : 1), DOWNARROW, TC_BLACK, SA_HOR_CENTER); + + if (!clickable) { + GfxFillRect(x + 1, y, x + SETTING_BUTTON_WIDTH - 1, y + SETTING_BUTTON_HEIGHT - 2, colour, FILLRECT_CHECKER); + } +} + /** * Draw a toggle button. * @param x the x position to draw diff --git a/src/settings_gui.h b/src/settings_gui.h index 5d6cfe8a9b..2ca418b11f 100644 --- a/src/settings_gui.h +++ b/src/settings_gui.h @@ -18,6 +18,7 @@ static const int SETTING_BUTTON_WIDTH = 20; ///< Width of setting buttons static const int SETTING_BUTTON_HEIGHT = 10; ///< Height of setting buttons void DrawArrowButtons(int x, int y, Colours button_colour, byte state, bool clickable_left, bool clickable_right); +void DrawDropDownButton(int x, int y, Colours button_colour, bool state, bool clickable); void DrawBoolButton(int x, int y, bool state, bool clickable); #endif /* SETTING_GUI_H */