redraw_mask |= REDRAW_FIELD;
}
+int getFontWidth(int font_size, int font_type)
+{
+ return (font_size == FS_BIG ? FONT1_XSIZE :
+ font_type == FC_SPECIAL1 ? FONT3_XSIZE :
+ font_type == FC_SPECIAL2 ? FONT4_XSIZE :
+ font_type == FC_SPECIAL3 ? FONT5_XSIZE :
+ FONT2_XSIZE);
+}
+
+int getFontHeight(int font_size, int font_type)
+{
+ return (font_size == FS_BIG ? FONT1_YSIZE :
+ font_type == FC_SPECIAL1 ? FONT3_YSIZE :
+ font_type == FC_SPECIAL2 ? FONT4_YSIZE :
+ font_type == FC_SPECIAL3 ? FONT5_YSIZE :
+ FONT2_YSIZE);
+}
+
void DrawTextFCentered(int y, int font_type, char *format, ...)
{
- char buffer[FULL_SXSIZE / FONT3_XSIZE + 10];
- int font_xsize;
+ char buffer[FULL_SXSIZE / FONT5_XSIZE + 10];
+ int font_width = getFontWidth(FS_SMALL, font_type);
va_list ap;
- font_xsize = (font_type < FC_SPECIAL1 ? FONT2_XSIZE :
- font_type < FC_SPECIAL2 ? FONT3_XSIZE : FONT4_XSIZE);
-
va_start(ap, format);
vsprintf(buffer, format, ap);
va_end(ap);
- DrawText(SX + (SXSIZE - strlen(buffer) * font_xsize) / 2, SY + y,
+ DrawText(SX + (SXSIZE - strlen(buffer) * font_width) / 2, SY + y,
buffer, FS_SMALL, font_type);
}
void DrawTextF(int x, int y, int font_type, char *format, ...)
{
- char buffer[FULL_SXSIZE / FONT3_XSIZE + 10];
+ char buffer[FULL_SXSIZE / FONT5_XSIZE + 10];
va_list ap;
va_start(ap, format);
if (font_size != FS_SMALL && font_size != FS_BIG)
font_size = FS_SMALL;
- if (font_type < FC_RED || font_type > FC_SPECIAL2)
+ if (font_type < FC_RED || font_type > FC_SPECIAL3)
font_type = FC_RED;
- font_width = (font_size == FS_BIG ? FONT1_XSIZE :
- font_type < FC_SPECIAL1 ? FONT2_XSIZE :
- font_type < FC_SPECIAL2 ? FONT3_XSIZE : FONT4_XSIZE);
- font_height = (font_size == FS_BIG ? FONT1_XSIZE :
- font_type < FC_SPECIAL2 ? FONT2_XSIZE : FONT4_XSIZE);
+ font_width = getFontWidth(font_size, font_type);
+ font_height = getFontHeight(font_size, font_type);
+
font_pixmap = (font_size == FS_BIG ? PIX_BIGFONT : PIX_SMALLFONT);
font_start = (font_type * (font_size == FS_BIG ? FONT1_YSIZE : FONT2_YSIZE) *
FONT_LINES_PER_FONT);
+ if (font_type == FC_SPECIAL3)
+ font_start += (FONT4_YSIZE - FONT2_YSIZE) * FONT_LINES_PER_FONT;
+
while (*text)
{
char c = *text++;
- if (c == '~' && font_size == FS_SMALL && font_type <= FC_YELLOW)
+ if (c == '~' && font_size == FS_SMALL)
{
print_inverse = TRUE;
continue;
for(y=BY1; y<=BY2; y++)
DrawScreenField(x, y);
-
-#if 1
-
redraw_mask |= REDRAW_FIELD;
-
-#else
-
- if (setup.soft_scrolling)
- XCopyArea(display, fieldbuffer, backbuffer, gc,
- FX, FY, SXSIZE, SYSIZE, SX, SY);
-
- redraw_mask |= (REDRAW_FIELD | REDRAW_FROM_BACKBUFFER);
-
-#endif
-
}
void DrawMiniLevel(int size_x, int size_y, int scroll_x, int scroll_y)
{
int x, y;
- /* determine border element for this level */
- SetBorderElement();
-
XFillRectangle(display, drawto, gc,
xpos, ypos, MICROLEV_XSIZE, MICROLEV_YSIZE);
DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
OpenDoor(DOOR_OPEN_1);
+
+#if 0
ClearEventQueue();
+#endif
if (!(req_state & REQUEST_WAIT_FOR))
return(FALSE);
if (door_state & DOOR_ACTION_2)
door2 = door_state & DOOR_ACTION_2;
- return(door1 | door2);
+ return (door1 | door2);
+}
+
+void DrawSpecialEditorDoor()
+{
+ /* draw bigger toolbox window */
+ XCopyArea(display, pix[PIX_DOOR], drawto, gc,
+ DOOR_GFX_PAGEX7, 0, 108, 56, EX - 4, EY - 12);
+
+ redraw_mask |= REDRAW_ALL;
+}
+
+void UndrawSpecialEditorDoor()
+{
+ /* draw normal tape recorder window */
+ XCopyArea(display, pix[PIX_BACK], drawto, gc,
+ 562, 344, 108, 56, EX - 4, EY - 12);
+
+ redraw_mask |= REDRAW_ALL;
}
int ReadPixel(Drawable d, int x, int y)
}
};
+static void DoNotDisplayInfoText(void *ptr)
+{
+ return;
+}
+
void CreateToolButtons()
{
int i;
GDI_DECORATION_SHIFTING, 1, 1,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_ACTION, HandleToolButtons,
+ GDI_CALLBACK_INFO, DoNotDisplayInfoText,
GDI_END);
if (gi == NULL)