diff --git a/src/video/uikit/SDL_uikitmodes.h b/src/video/uikit/SDL_uikitmodes.h index d6faa11fe..cbe01a271 100644 --- a/src/video/uikit/SDL_uikitmodes.h +++ b/src/video/uikit/SDL_uikitmodes.h @@ -41,6 +41,7 @@ extern SDL_bool UIKit_IsDisplayLandscape(UIScreen *uiscreen); extern int UIKit_InitModes(_THIS); extern void UIKit_GetDisplayModes(_THIS, SDL_VideoDisplay * display); +extern int UIKit_GetDisplayDPI(_THIS, SDL_VideoDisplay * display, float * ddpi, float * hdpi, float * vdpi); extern int UIKit_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode); extern void UIKit_QuitModes(_THIS); extern int UIKit_GetDisplayUsableBounds(_THIS, SDL_VideoDisplay * display, SDL_Rect * rect); diff --git a/src/video/uikit/SDL_uikitmodes.m b/src/video/uikit/SDL_uikitmodes.m index be34b0691..f566c7f32 100644 --- a/src/video/uikit/SDL_uikitmodes.m +++ b/src/video/uikit/SDL_uikitmodes.m @@ -243,6 +243,31 @@ UIKit_GetDisplayModes(_THIS, SDL_VideoDisplay * display) } } +int +UIKit_GetDisplayDPI(_THIS, SDL_VideoDisplay * display, float * ddpi, float * hdpi, float * vdpi) +{ + @autoreleasepool { + SDL_DisplayData *data = (__bridge SDL_DisplayData *) display->driverdata; + + float scale = (float)data.uiscreen.scale; + /* Default DPI, based on iPhone 1: no direct way to get pixel size. */ + const float defaultDPI = 165.0; + float dpi = scale * defaultDPI; + + if (ddpi) { + *ddpi = dpi * (float)SDL_sqrt(2.0); + } + if (hdpi) { + *hdpi = dpi; + } + if (vdpi) { + *vdpi = dpi; + } + } + + return 0; +} + int UIKit_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode) { diff --git a/src/video/uikit/SDL_uikitvideo.m b/src/video/uikit/SDL_uikitvideo.m index cea40b239..b9824ded0 100644 --- a/src/video/uikit/SDL_uikitvideo.m +++ b/src/video/uikit/SDL_uikitvideo.m @@ -88,6 +88,7 @@ UIKit_CreateDevice(int devindex) device->VideoInit = UIKit_VideoInit; device->VideoQuit = UIKit_VideoQuit; device->GetDisplayModes = UIKit_GetDisplayModes; + device->GetDisplayDPI = UIKit_GetDisplayDPI; device->SetDisplayMode = UIKit_SetDisplayMode; device->PumpEvents = UIKit_PumpEvents; device->SuspendScreenSaver = UIKit_SuspendScreenSaver;