(svn r20042) -Codechange: Add set methods to DrawStringParams.
This commit is contained in:
		
							
								
								
									
										35
									
								
								src/gfx.cpp
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								src/gfx.cpp
									
									
									
									
									
								
							| @@ -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); | ||||||
| 		} | 		} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 alberth
					alberth