struct VideoSystemInfo video;
struct AudioSystemInfo audio;
struct GfxInfo gfx;
+struct FontInfo font;
struct ArtworkInfo artwork;
struct JoystickInfo joystick;
struct SetupInfo setup;
gfx.draw_deactivation_mask = draw_deactivation_mask;
}
+void SetBackgroundBitmap(Bitmap *background_bitmap)
+{
+ gfx.background_bitmap = background_bitmap;
+}
+
/* ========================================================================= */
/* video functions */
return FALSE;
}
+inline boolean DrawingOnBackground(int x, int y)
+{
+ return (gfx.background_bitmap != NULL && x < gfx.sx + gfx.sxsize);
+}
+
inline void BlitBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap,
int src_x, int src_y,
int width, int height,
#endif
}
+inline void ClearRectangleOnBackground(Bitmap *bitmap, int x, int y,
+ int width, int height)
+{
+ if (!DrawingOnBackground(x, y))
+ ClearRectangle(bitmap, x, y, width, height);
+ else
+ BlitBitmap(gfx.background_bitmap, bitmap,
+ x - gfx.real_sx, y - gfx.real_sy, width, height, x, y);
+}
+
#if 0
#ifndef TARGET_SDL
static GC last_clip_gc = 0; /* needed for XCopyArea() through clip mask */
#endif
}
+inline void BlitBitmapOnBackground(Bitmap *src_bitmap, Bitmap *dst_bitmap,
+ int src_x, int src_y,
+ int width, int height,
+ int dst_x, int dst_y)
+{
+ if (!DrawingOnBackground(src_x, src_y))
+ BlitBitmap(src_bitmap, dst_bitmap, src_x, src_y, width, height,
+ dst_x, dst_y);
+ else
+ {
+ /* draw background */
+ BlitBitmap(gfx.background_bitmap, dst_bitmap,
+ dst_x - gfx.real_sx, dst_y - gfx.real_sy, width, height,
+ dst_x, dst_y);
+
+ /* draw foreground */
+ SetClipOrigin(src_bitmap, src_bitmap->stored_clip_gc,
+ dst_x - src_x, dst_y - src_y);
+ BlitBitmapMasked(src_bitmap, dst_bitmap, src_x, src_y, width, height,
+ dst_x, dst_y);
+ }
+}
+
inline void DrawSimpleWhiteLine(Bitmap *bitmap, int from_x, int from_y,
int to_x, int to_y)
{