/* functions from SGE library */
void sge_Line(SDL_Surface *, Sint16, Sint16, Sint16, Sint16, Uint32);
+#if defined(USE_TOUCH_INPUT_OVERLAY)
/* functions to draw overlay graphics for touch device input */
static void DrawTouchInputOverlay();
+#endif
void SDLLimitScreenUpdates(boolean enable)
{
SDL_RenderCopy(sdl_renderer, sdl_texture_target, src_rect2, dst_rect2);
}
+#if defined(USE_TOUCH_INPUT_OVERLAY)
// draw overlay graphics for touch device input, if needed
DrawTouchInputOverlay();
+#endif
+
#endif
// global synchronization point of the game to align video frame delay
it will crash if flags are *not* set to SDL_RENDERER_SOFTWARE (because
it will try to use accelerated graphics and apparently fails miserably) */
int renderer_flags = SDL_RENDERER_SOFTWARE;
-#endif
#endif
SDLSetScreenSizeAndOffsets(video.width, video.height);
+#endif
int width = video.width;
int height = video.height;
return TRUE;
}
+#if defined(USE_TOUCH_INPUT_OVERLAY)
static void DrawTouchInputOverlay()
{
-#if defined(USE_TOUCH_INPUT_OVERLAY)
static SDL_Texture *texture = NULL;
static boolean initialized = FALSE;
static boolean deactivated = TRUE;
alpha_last = alpha;
+ float ratio_overlay = (float) width / height;
+ float ratio_screen = (float) video.screen_width / video.screen_height;
+ int width_scaled, height_scaled;
+ int xpos, ypos;
+
+ if (ratio_overlay > ratio_screen)
+ {
+ width_scaled = video.screen_width;
+ height_scaled = video.screen_height * ratio_screen / ratio_overlay;
+ xpos = 0;
+ ypos = video.screen_height - height_scaled;
+ }
+ else
+ {
+ width_scaled = video.screen_width * ratio_overlay / ratio_screen;
+ height_scaled = video.screen_height;
+ xpos = (video.screen_width - width_scaled) / 2;
+ ypos = 0;
+ }
+
SDL_Rect src_rect = { 0, 0, width, height };
- SDL_Rect dst_rect = { 0, 0, video.screen_width, video.screen_height };
+ SDL_Rect dst_rect = { xpos, ypos, width_scaled, height_scaled };
SDL_RenderCopy(sdl_renderer, texture, &src_rect, &dst_rect);
-#endif
}
+#endif