return gfx.font_bitmap_info[font_bitmap_id].height;
}
+int getTextWidth(char *text, int font_nr)
+{
+ return (text != NULL ? strlen(text) * getFontWidth(font_nr) : 0);
+}
+
static char getFontCharPosition(int font_nr, char c)
{
int font_bitmap_id = gfx.select_font_function(font_nr);
gfx.num_fonts > 0 &&
gfx.font_bitmap_info[font_nr].bitmap != NULL)
{
- int text_width = strlen(text) * getFontWidth(font_nr);
-
ClearRectangle(window, 0, ypos, video.width, getFontHeight(font_nr));
- DrawTextExt(window, (video.width - text_width) / 2, ypos, text, font_nr,
- BLIT_OPAQUE);
+ DrawTextExt(window, (video.width - getTextWidth(text, font_nr)) / 2, ypos,
+ text, font_nr, BLIT_OPAQUE);
FlushDisplay();
}
}
if (strlen(buffer) > MAX_OUTPUT_LINESIZE)
Error(ERR_EXIT, "string too long in DrawTextFCentered() -- aborting");
- DrawText(gfx.sx + (gfx.sxsize - strlen(buffer) * getFontWidth(font_nr)) / 2,
+ DrawText(gfx.sx + (gfx.sxsize - getTextWidth(buffer, font_nr)) / 2,
gfx.sy + y, buffer, font_nr);
}
{
char c = *text_ptr++;
+ if (c == '\n')
+ c = ' '; /* print space instaed of newline */
+
getFontCharSource(font_nr, c, &src_bitmap, &src_x, &src_y);
if (mask_mode == BLIT_INVERSE) /* special mode for text gadgets */
dst_x += font_width;
}
}
+
+void DrawTextToTextArea(int x, int y, char *text, int font_nr,
+ int area_xsize, int area_ysize)
+{
+ int area_line = 0;
+ int font_height = getFontWidth(font_nr);
+
+ if (text == NULL)
+ return;
+
+ while (*text && area_line < area_ysize)
+ {
+ char buffer[MAX_OUTPUT_LINESIZE + 1];
+ int i;
+
+ for (i=0; i < area_xsize && *text; i++)
+ if ((buffer[i] = *text++) == '\n')
+ break;
+ buffer[i] = '\0';
+
+ DrawText(x, y + area_line * font_height, buffer, font_nr);
+
+ area_line++;
+ }
+}