- if (print_inverse) /* special mode for text gadgets */
- {
- /* first step: draw solid colored rectangle (use "cursor" character) */
- BlitBitmap(font_bitmap, bitmap, FONT_CHARS_PER_LINE * font_width,
- 3 * font_height + font_starty,
- font_width, font_height, x, y);
-
- /* second step: draw masked black rectangle (use "space" character) */
- SetClipOrigin(font_bitmap, font_bitmap->stored_clip_gc,
- dest_x - src_x, dest_y - src_y);
- BlitBitmapMasked(font_bitmap, bitmap,
- 0, 0, font_width, font_height, dest_x, dest_y);
- }
- else if (mask_mode == FONT_MASKED)
- {
- /* clear font character background */
- BlitBitmap(gfx.background_bitmap, bitmap,
- dest_x - gfx.real_sx, dest_y - gfx.real_sy,
- font_width, font_height, dest_x, dest_y);
-
- /* use special font tile clipmasks, if available */
- if (font_size == FS_BIG || font_size == FS_MEDIUM)
- {
- int font_nr = (font_size == FS_BIG ? 0 : 1);
- int font_char = (c >= 32 && c <= 95 ? c - 32 : 0);
-
- SetClipMask(font_bitmap, tile_clip_gc,
- tile_clipmask[font_nr][font_type][font_char]);
- SetClipOrigin(font_bitmap, tile_clip_gc, dest_x, dest_y);
- }
- else
- {
- SetClipOrigin(font_bitmap, font_bitmap->stored_clip_gc,
- dest_x - src_x, dest_y - src_y);
- }
-
- BlitBitmapMasked(font_bitmap, bitmap, src_x, src_y,
- font_width, font_height, dest_x, dest_y);
+ getFontCharSource(font_nr, FONT_ASCII_CURSOR, &cursor_bitmap,
+ &cursor_x, &cursor_y);
+
+ BlitBitmap(cursor_bitmap, dst_bitmap, cursor_x, cursor_y,
+ font_width, font_height, dst_x, dst_y);