struct VideoSystemInfo video;
struct AudioSystemInfo audio;
struct GfxInfo gfx;
+struct OverlayInfo overlay;
struct ArtworkInfo artwork;
struct JoystickInfo joystick;
struct SetupInfo setup;
int button_status = MB_NOT_PRESSED;
boolean motion_status = FALSE;
+int wheel_steps = DEFAULT_WHEEL_STEPS;
#if defined(TARGET_SDL2)
boolean keyrepeat_status = TRUE;
#endif
{
if (win_xsize != gfx.win_xsize || win_ysize != gfx.win_ysize)
{
- ReCreateBitmap(&gfx.background_bitmap, win_xsize, win_ysize, DEFAULT_DEPTH);
+ ReCreateBitmap(&gfx.background_bitmap, win_xsize, win_ysize);
#if defined(TARGET_SDL2)
- ReCreateBitmap(&gfx.final_screen_bitmap, win_xsize, win_ysize, DEFAULT_DEPTH);
+ ReCreateBitmap(&gfx.final_screen_bitmap, win_xsize, win_ysize);
#endif
- ReCreateBitmap(&gfx.fade_bitmap_backup, win_xsize, win_ysize, DEFAULT_DEPTH);
- ReCreateBitmap(&gfx.fade_bitmap_source, win_xsize, win_ysize, DEFAULT_DEPTH);
- ReCreateBitmap(&gfx.fade_bitmap_target, win_xsize, win_ysize, DEFAULT_DEPTH);
- ReCreateBitmap(&gfx.fade_bitmap_black, win_xsize, win_ysize, DEFAULT_DEPTH);
+ ReCreateBitmap(&gfx.fade_bitmap_backup, win_xsize, win_ysize);
+ ReCreateBitmap(&gfx.fade_bitmap_source, win_xsize, win_ysize);
+ ReCreateBitmap(&gfx.fade_bitmap_target, win_xsize, win_ysize);
+ ReCreateBitmap(&gfx.fade_bitmap_black, win_xsize, win_ysize);
ClearRectangle(gfx.fade_bitmap_black, 0, 0, win_xsize, win_ysize);
}
gfx.cursor_mode = CURSOR_DEFAULT;
}
+void InitOverlayInfo()
+{
+ overlay.active = FALSE;
+}
+
+void SetOverlayActive(boolean active)
+{
+ overlay.active = active;
+}
+
+boolean GetOverlayActive()
+{
+ return overlay.active;
+}
+
void SetDrawDeactivationMask(int draw_deactivation_mask)
{
gfx.draw_deactivation_mask = draw_deactivation_mask;
void InitVideoDisplay(void)
{
SDLInitVideoDisplay();
+#if defined(TARGET_SDL2)
+ SDLSetDisplaySize();
+#endif
}
void CloseVideoDisplay(void)
video.height = height;
video.depth = GetRealDepth(depth);
+ video.screen_width = width;
+ video.screen_height = height;
+ video.screen_xoffset = 0;
+ video.screen_yoffset = 0;
+
video.fullscreen_available = FULLSCREEN_STATUS;
video.fullscreen_enabled = FALSE;
video.frame_delay = 0;
video.frame_delay_value = GAME_FRAME_DELAY;
+ video.shifted_up = FALSE;
+ video.shifted_up_pos = 0;
+ video.shifted_up_pos_last = 0;
+ video.shifted_up_delay = 0;
+ video.shifted_up_delay_value = ONE_SECOND_DELAY / 4;
+
SDLInitVideoBuffer(fullscreen);
video.initialized = TRUE;
return new_bitmap;
}
-void ReCreateBitmap(Bitmap **bitmap, int width, int height, int depth)
+void ReCreateBitmap(Bitmap **bitmap, int width, int height)
{
- Bitmap *new_bitmap = CreateBitmap(width, height, depth);
+ Bitmap *new_bitmap = CreateBitmap(width, height, DEFAULT_DEPTH);
if (*bitmap == NULL)
{
free(new_bitmap);
}
-Bitmap *ZoomBitmap(Bitmap *src_bitmap, int zoom_width, int zoom_height)
+static Bitmap *ZoomBitmap(Bitmap *src_bitmap, int zoom_width, int zoom_height)
{
- Bitmap *dst_bitmap = SDLZoomBitmap(src_bitmap, zoom_width, zoom_height);
-
- return dst_bitmap;
-}
-
-static void SetMaskedBitmapSurface(Bitmap *bitmap)
-{
- if (bitmap == NULL)
- return;
-
- SDL_Surface *surface = bitmap->surface;
-
- if (bitmap->surface_masked)
- SDL_FreeSurface(bitmap->surface_masked);
-
- SDL_SetColorKey(surface, SET_TRANSPARENT_PIXEL,
- SDL_MapRGB(surface->format, 0x00, 0x00, 0x00));
-
- if ((bitmap->surface_masked = SDLGetNativeSurface(surface)) == NULL)
- Error(ERR_EXIT, "SDL_DisplayFormat() failed");
-
- SDL_SetColorKey(surface, UNSET_TRANSPARENT_PIXEL, 0);
+ return SDLZoomBitmap(src_bitmap, zoom_width, zoom_height);
}
void ReCreateGameTileSizeBitmap(Bitmap **bitmaps)
bitmaps[IMG_BITMAP_CUSTOM] = bitmap_new;
bitmaps[IMG_BITMAP_GAME] = bitmap_new;
-
- SetMaskedBitmapSurface(bitmap_new);
}
static void CreateScaledBitmaps(Bitmap **bitmaps, int zoom_factor,
bitmaps[IMG_BITMAP_32x32] = tmp_bitmap_1;
}
- // create corresponding bitmaps for masked blitting
- for (i = 0; i < NUM_IMG_BITMAPS; i++)
- if (bitmaps[i] != NULL &&
- bitmaps[i] != old_bitmap)
- SetMaskedBitmapSurface(bitmaps[i]);
-
UPDATE_BUSY_STATE();
print_timestamp_done("CreateScaledBitmaps");
/* event functions */
/* ========================================================================= */
-void InitEventFilter(EventFilter filter_function)
-{
- /* set event filter to filter out certain events */
-#if defined(TARGET_SDL2)
- SDL_SetEventFilter(filter_function, NULL);
-#else
- SDL_SetEventFilter(filter_function);
-#endif
-}
-
boolean PendingEvent(void)
{
return (SDL_PollEvent(NULL) ? TRUE : FALSE);
return HandleKeyModState(KSYM_UNDEFINED, 0);
}
+void StartTextInput(int x, int y, int width, int height)
+{
+#if defined(TARGET_SDL2)
+ SDL_StartTextInput();
+
+#if defined(HAS_SCREEN_KEYBOARD)
+ if (y + height > SCREEN_KEYBOARD_POS(video.height))
+ {
+ video.shifted_up_pos = y + height - SCREEN_KEYBOARD_POS(video.height);
+ video.shifted_up_delay = SDL_GetTicks();
+ video.shifted_up = TRUE;
+ }
+#endif
+#endif
+}
+
+void StopTextInput()
+{
+#if defined(TARGET_SDL2)
+ SDL_StopTextInput();
+
+#if defined(HAS_SCREEN_KEYBOARD)
+ if (video.shifted_up)
+ {
+ video.shifted_up_pos = 0;
+ video.shifted_up_delay = SDL_GetTicks();
+ video.shifted_up = FALSE;
+ }
+#endif
+#endif
+}
+
boolean CheckCloseWindowEvent(ClientMessageEvent *event)
{
if (event->type != EVENT_CLIENTMESSAGE)