diff options
author | tron <tron@openttd.org> | 2006-08-29 06:07:57 +0000 |
---|---|---|
committer | tron <tron@openttd.org> | 2006-08-29 06:07:57 +0000 |
commit | 17c610c0f49142168d834cdb34c780d79b9ccfd1 (patch) | |
tree | 164b9142d238f73a8ae387c96a49c99228de05e2 | |
parent | fc7a80c4707ce31181b047e73ca9ceea56cb9e2d (diff) | |
download | openttd-17c610c0f49142168d834cdb34c780d79b9ccfd1.tar.xz |
(svn r6209) Move DrawFrameRect() out of gfx.[ch], because it uses data (_color_list) which the renderer shouldn't have know about
-rw-r--r-- | gfx.c | 33 | ||||
-rw-r--r-- | gfx.h | 1 | ||||
-rw-r--r-- | settings_gui.c | 4 | ||||
-rw-r--r-- | widget.c | 36 | ||||
-rw-r--r-- | window.h | 6 |
5 files changed, 42 insertions, 38 deletions
@@ -557,39 +557,6 @@ int GetStringWidth(const char *str) return w; } -void DrawFrameRect(int left, int top, int right, int bottom, int ctab, int flags) -{ - byte color_2 = _color_list[ctab].window_color_1a; - byte color_interior = _color_list[ctab].window_color_bga; - byte color_3 = _color_list[ctab].window_color_bgb; - byte color = _color_list[ctab].window_color_2; - - if (!(flags & 0x8)) { - if (!(flags & 0x20)) { - GfxFillRect(left, top, left, bottom - 1, color); - GfxFillRect(left + 1, top, right - 1, top, color); - GfxFillRect(right, top, right, bottom - 1, color_2); - GfxFillRect(left, bottom, right, bottom, color_2); - if (!(flags & 0x10)) { - GfxFillRect(left + 1, top + 1, right - 1, bottom - 1, color_interior); - } - } else { - GfxFillRect(left, top, left, bottom, color_2); - GfxFillRect(left + 1, top, right, top, color_2); - GfxFillRect(right, top + 1, right, bottom - 1, color); - GfxFillRect(left + 1, bottom, right, bottom, color); - if (!(flags & 0x10)) { - GfxFillRect(left + 1, top + 1, right - 1, bottom - 1, - flags & 0x40 ? color_interior : color_3); - } - } - } else if (flags & 0x1) { - // transparency - GfxFillRect(left, top, right, bottom, 0x322 | USE_COLORTABLE); - } else { - GfxFillRect(left, top, right, bottom, color_interior); - } -} int DoDrawString(const char *string, int x, int y, uint16 real_color) { @@ -73,7 +73,6 @@ void DrawStringRightAlignedUnderline(int x, int y, StringID str, uint16 color); void GfxFillRect(int left, int top, int right, int bottom, int color); void GfxDrawLine(int left, int top, int right, int bottom, int color); -void DrawFrameRect(int left, int top, int right, int bottom, int color, int flags); int GetStringWidth(const char *str); void LoadStringWidthTable(void); diff --git a/settings_gui.c b/settings_gui.c index 85803631f..33a14de37 100644 --- a/settings_gui.c +++ b/settings_gui.c @@ -410,8 +410,8 @@ static void GameDifficultyWndProc(Window *w, WindowEvent *e) y = GAMEDIFF_WND_TOP_OFFSET; for (i = 0; i != GAME_DIFFICULTY_NUM; i++) { - DrawFrameRect( 5, y, 5 + 8, y + 8, 3, GetBitAndShift(&click_a) ? (1 << 5) : 0); - DrawFrameRect(15, y, 15 + 8, y + 8, 3, GetBitAndShift(&click_b) ? (1 << 5) : 0); + DrawFrameRect( 5, y, 5 + 8, y + 8, 3, GetBitAndShift(&click_a) ? FR_LOWERED : 0); + DrawFrameRect(15, y, 15 + 8, y + 8, 3, GetBitAndShift(&click_b) ? FR_LOWERED : 0); if (GetBitAndShift(&disabled) || (_networking && !_network_server)) { int color = PALETTE_MODIFIER_GREYOUT | _color_list[3].unk2; GfxFillRect( 6, y + 1, 6 + 8, y + 8, color); @@ -150,6 +150,42 @@ int GetWidgetFromPos(const Window *w, int x, int y) } +void DrawFrameRect(int left, int top, int right, int bottom, int ctab, FrameFlags flags) +{ + uint dark = _color_list[ctab].window_color_1a; + uint medium_dark = _color_list[ctab].window_color_bga; + uint medium_light = _color_list[ctab].window_color_bgb; + uint light = _color_list[ctab].window_color_2; + + if (flags & FR_NOBORDER) { + if (flags & FR_TRANSPARENT) { + GfxFillRect(left, top, right, bottom, 0x322 | USE_COLORTABLE); + } else { + GfxFillRect(left, top, right, bottom, medium_dark); + } + } else { + uint interior; + + if (flags & FR_LOWERED) { + GfxFillRect(left, top, left, bottom, dark); + GfxFillRect(left + 1, top, right, top, dark); + GfxFillRect(right, top + 1, right, bottom - 1, light); + GfxFillRect(left + 1, bottom, right, bottom, light); + interior = (flags & FR_DARKENED ? medium_dark : medium_light); + } else { + GfxFillRect(left, top, left, bottom - 1, light); + GfxFillRect(left + 1, top, right - 1, top, light); + GfxFillRect(right, top, right, bottom - 1, dark); + GfxFillRect(left, bottom, right, bottom, dark); + interior = medium_dark; + } + if (!(flags & FR_BORDERONLY)) { + GfxFillRect(left + 1, top + 1, right - 1, bottom - 1, interior); + } + } +} + + void DrawWindowWidgets(const Window *w) { const Widget *wi; @@ -61,13 +61,15 @@ typedef struct Widget { StringID tooltips; } Widget; -enum FrameFlags { +typedef enum FrameFlags { FR_TRANSPARENT = 0x01, ///< Makes the background transparent if set FR_NOBORDER = 0x08, ///< Hide border (draws just a solid box) FR_BORDERONLY = 0x10, ///< Draw border only, no background FR_LOWERED = 0x20, ///< If set the frame is lowered and the background color brighter (ie. buttons when pressed) FR_DARKENED = 0x40, ///< If set the background is darker, allows for lowered frames with normal background color when used with FR_LOWERED (ie. dropdown boxes) -}; +} FrameFlags; + +void DrawFrameRect(int left, int top, int right, int bottom, int color, FrameFlags flags); /* XXX - outside "byte event" so you can set event directly without going into * the union elements at first. Because of this every first element of the union |