@ -521,9 +521,22 @@ static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int righ
* will be drawn in the right direction .
* @ param underline Whether to underline what has been drawn or not .
* @ param fontsize The size of the initial characters .
* @ return In case of left or center alignment the right most pixel we have drawn to .
* In case of right alignment the left most pixel we have drawn to .
*/
int DrawString ( int left , int right , int top , const char * str , TextColour colour , StringAlignment align , bool underline , FontSize fontsize )
{
/* The string may contain control chars to change the font, just use the biggest font for clipping. */
int max_height = max ( max ( FONT_HEIGHT_SMALL , FONT_HEIGHT_NORMAL ) , max ( FONT_HEIGHT_LARGE , FONT_HEIGHT_MONO ) ) ;
/* Funny glyphs may extent outside the usual bounds, so relax the clipping somewhat. */
int extra = max_height / 2 ;
if ( _cur_dpi - > top + _cur_dpi - > height + extra < top | | _cur_dpi - > top > top + max_height + extra | |
_cur_dpi - > left + _cur_dpi - > width + extra < left | | _cur_dpi - > left > right + extra ) {
return 0 ;
}
Layouter layout ( str , INT32_MAX , colour , fontsize ) ;
if ( layout . Length ( ) = = 0 ) return 0 ;
@ -543,6 +556,8 @@ int DrawString(int left, int right, int top, const char *str, TextColour colour,
* will be drawn in the right direction .
* @ param underline Whether to underline what has been drawn or not .
* @ param fontsize The size of the initial characters .
* @ return In case of left or center alignment the right most pixel we have drawn to .
* In case of right alignment the left most pixel we have drawn to .
*/
int DrawString ( int left , int right , int top , StringID str , TextColour colour , StringAlignment align , bool underline , FontSize fontsize )
{