1
0
Fork 0

(svn r20042) -Codechange: Add set methods to DrawStringParams.

release/1.1
alberth 2010-07-02 13:44:36 +00:00
parent d7a6ba4781
commit 3d329beb1b
1 changed files with 29 additions and 6 deletions

View File

@ -62,12 +62,36 @@ static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode,
/** /**
* Text drawing parameters, which can change while drawing a line, but are kept between multiple parts * Text drawing parameters, which can change while drawing a line, but are kept between multiple parts
* of the same text, e.g. on line breaks. * of the same text, e.g. on line breaks.
**/ */
struct DrawStringParams { struct DrawStringParams {
FontSize fontsize; FontSize fontsize;
TextColour cur_colour, prev_colour; TextColour cur_colour, prev_colour;
DrawStringParams(TextColour colour) : fontsize(FS_NORMAL), cur_colour(colour), prev_colour(colour) {} DrawStringParams(TextColour colour) : fontsize(FS_NORMAL), cur_colour(colour), prev_colour(colour) {}
/** Switch to new colour \a c.
* @param c New colour to use.
*/
FORCEINLINE void SetColour(TextColour c)
{
assert(c >= TC_BLUE && c <= TC_BLACK);
this->prev_colour = this->cur_colour;
this->cur_colour = c;
}
/** Switch to previous colour. */
FORCEINLINE void SetPreviousColour()
{
Swap(this->cur_colour, this->prev_colour);
}
/** Switch to using a new font \a f.
* @param f New font to use.
*/
FORCEINLINE void SetFontSize(FontSize f)
{
this->fontsize = f;
}
}; };
static ReusableBuffer<uint8> _cursor_backup; static ReusableBuffer<uint8> _cursor_backup;
@ -988,19 +1012,18 @@ skip_cont:;
y += GetCharacterHeight(params.fontsize); y += GetCharacterHeight(params.fontsize);
goto check_bounds; goto check_bounds;
} else if (c >= SCC_BLUE && c <= SCC_BLACK) { // change colour? } else if (c >= SCC_BLUE && c <= SCC_BLACK) { // change colour?
params.prev_colour = params.cur_colour; params.SetColour((TextColour)(c - SCC_BLUE));
params.cur_colour = (TextColour)(c - SCC_BLUE);
goto switch_colour; goto switch_colour;
} else if (c == SCC_PREVIOUS_COLOUR) { // revert to the previous colour } else if (c == SCC_PREVIOUS_COLOUR) { // revert to the previous colour
Swap(params.cur_colour, params.prev_colour); params.SetPreviousColour();
goto switch_colour; goto switch_colour;
} else if (c == SCC_SETX || c == SCC_SETXY) { // {SETX}/{SETXY} } else if (c == SCC_SETX || c == SCC_SETXY) { // {SETX}/{SETXY}
/* The characters are handled before calling this. */ /* The characters are handled before calling this. */
NOT_REACHED(); NOT_REACHED();
} else if (c == SCC_TINYFONT) { // {TINYFONT} } else if (c == SCC_TINYFONT) { // {TINYFONT}
params.fontsize = FS_SMALL; params.SetFontSize(FS_SMALL);
} else if (c == SCC_BIGFONT) { // {BIGFONT} } else if (c == SCC_BIGFONT) { // {BIGFONT}
params.fontsize = FS_LARGE; params.SetFontSize(FS_LARGE);
} else { } else {
DEBUG(misc, 0, "[utf8] unknown string command character %d", c); DEBUG(misc, 0, "[utf8] unknown string command character %d", c);
} }