iOS: implement SDL_GetWindowSizeInPixels.

This commit is contained in:
slime 2022-10-05 21:42:26 -03:00 committed by Sam Lantinga
parent fa7ffa4e88
commit d2160c29d1
3 changed files with 21 additions and 0 deletions

View File

@ -98,6 +98,7 @@ UIKit_CreateDevice(void)
device->GetWindowWMInfo = UIKit_GetWindowWMInfo; device->GetWindowWMInfo = UIKit_GetWindowWMInfo;
device->GetDisplayUsableBounds = UIKit_GetDisplayUsableBounds; device->GetDisplayUsableBounds = UIKit_GetDisplayUsableBounds;
device->GetDisplayDPI = UIKit_GetDisplayDPI; device->GetDisplayDPI = UIKit_GetDisplayDPI;
device->GetWindowSizeInPixels = UIKit_GetWindowSizeInPixels;
#if SDL_IPHONE_KEYBOARD #if SDL_IPHONE_KEYBOARD
device->HasScreenKeyboardSupport = UIKit_HasScreenKeyboardSupport; device->HasScreenKeyboardSupport = UIKit_HasScreenKeyboardSupport;

View File

@ -36,6 +36,7 @@ extern void UIKit_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDispl
extern void UIKit_SetWindowMouseGrab(_THIS, SDL_Window * window, SDL_bool grabbed); extern void UIKit_SetWindowMouseGrab(_THIS, SDL_Window * window, SDL_bool grabbed);
extern void UIKit_UpdatePointerLock(_THIS, SDL_Window * window); extern void UIKit_UpdatePointerLock(_THIS, SDL_Window * window);
extern void UIKit_DestroyWindow(_THIS, SDL_Window * window); extern void UIKit_DestroyWindow(_THIS, SDL_Window * window);
extern void UIKit_GetWindowSizeInPixels(_THIS, SDL_Window * window, int *w, int *h);
extern SDL_bool UIKit_GetWindowWMInfo(_THIS, SDL_Window * window, extern SDL_bool UIKit_GetWindowWMInfo(_THIS, SDL_Window * window,
struct SDL_SysWMinfo * info); struct SDL_SysWMinfo * info);

View File

@ -369,6 +369,25 @@ UIKit_DestroyWindow(_THIS, SDL_Window * window)
window->driverdata = NULL; window->driverdata = NULL;
} }
void
UIKit_GetWindowSizeInPixels(_THIS, SDL_Window * window, int *w, int *h)
{ @autoreleasepool
{
SDL_WindowData *windata = (__bridge SDL_WindowData *) window->driverdata;
UIView *view = windata.viewcontroller.view;
CGSize size = view.bounds.size;
CGFloat scale = 1.0;
if (window->flags & SDL_WINDOW_ALLOW_HIGHDPI) {
scale = windata.uiwindow.screen.nativeScale;
}
/* Integer truncation of fractional values matches SDL_uikitmetalview and
* SDL_uikitopenglview. */
*w = size.width * scale;
*h = size.height * scale;
}}
SDL_bool SDL_bool
UIKit_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info) UIKit_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info)
{ {