static void DrawMaskedBorderExt_Rect(int x, int y, int width, int height,
int draw_target)
{
- Bitmap *bitmap = getGlobalBorderBitmapFromStatus(global.border_status);
+ Bitmap *src_bitmap = getGlobalBorderBitmapFromStatus(global.border_status);
+ Bitmap *dst_bitmap = gfx.masked_border_bitmap_ptr;
if (x == -1 && y == -1)
return;
if (draw_target == DRAW_BORDER_TO_SCREEN)
- BlitToScreenMasked(bitmap, x, y, width, height, x, y);
+ BlitToScreenMasked(src_bitmap, x, y, width, height, x, y);
else
- BlitBitmapMasked(bitmap, backbuffer, x, y, width, height, x, y);
+ BlitBitmapMasked(src_bitmap, dst_bitmap, x, y, width, height, x, y);
}
static void DrawMaskedBorderExt_FIELD(int draw_target)
DrawMaskedBorderExt(redraw_mask, DRAW_BORDER_TO_BACKBUFFER);
}
-void DrawMaskedBorderToScreen(int draw_target)
+void DrawMaskedBorderToTarget(int draw_target)
{
- DrawMaskedBorderExt(REDRAW_ALL, draw_target);
+ if (draw_target == DRAW_BORDER_TO_SCREEN)
+ {
+ DrawMaskedBorderExt(REDRAW_ALL, draw_target);
+ }
+ else
+ {
+ int last_border_status = global.border_status;
+
+ if (draw_target == DRAW_BORDER_TO_FADE_SOURCE)
+ {
+ global.border_status = gfx.fade_border_source_status;
+ gfx.masked_border_bitmap_ptr = gfx.fade_bitmap_source;
+ }
+ else
+ {
+ global.border_status = gfx.fade_border_target_status;
+ gfx.masked_border_bitmap_ptr = gfx.fade_bitmap_target;
+ }
+
+ DrawMaskedBorderExt(REDRAW_ALL, draw_target);
+
+ global.border_status = last_border_status;
+ gfx.masked_border_bitmap_ptr = backbuffer;
+ }
}
void BlitScreenToBitmap_RND(Bitmap *target_bitmap)
static void SetScreenStates_AfterFadingIn()
{
+ // store new source screen (to use correct masked border for fading)
+ gfx.fade_border_source_status = global.border_status;
+
global.anim_status = global.anim_status_next;
// force update of global animation status in case of rapid screen changes
static void SetScreenStates_BeforeFadingOut()
{
+ // store new target screen (to use correct masked border for fading)
+ gfx.fade_border_target_status = game_status;
+
global.anim_status = GAME_MODE_PSEUDO_FADING;
}