21 #include "../../SDL_internal.h" 23 #if SDL_VIDEO_DRIVER_UIKIT 47 if (uiscreenmode != nil) {
57 mode->
driverdata = (
void *) CFBridgingRetain(data);
72 UIKit_GetDisplayModeRefreshRate(UIScreen *uiscreen)
75 if ([uiscreen respondsToSelector:
@selector(maximumFramesPerSecond)]) {
76 return uiscreen.maximumFramesPerSecond;
84 UIScreen * uiscreen, UIScreenMode * uiscreenmode)
89 if (UIKit_AllocateDisplayModeData(&mode, uiscreenmode) < 0) {
94 mode.
refresh_rate = (int) UIKit_GetDisplayModeRefreshRate(uiscreen);
101 UIKit_FreeDisplayModeData(&mode);
107 UIKit_AddDisplayMode(
SDL_VideoDisplay * display,
int w,
int h, UIScreen * uiscreen,
108 UIScreenMode * uiscreenmode,
SDL_bool addRotation)
110 if (UIKit_AddSingleDisplayMode(display, w, h, uiscreen, uiscreenmode) < 0) {
116 if (UIKit_AddSingleDisplayMode(display, h, w, uiscreen, uiscreenmode) < 0) {
125 UIKit_AddDisplay(UIScreen *uiscreen)
127 UIScreenMode *uiscreenmode = uiscreen.currentMode;
128 CGSize
size = uiscreen.bounds.size;
135 CGFloat
height = size.width;
136 size.width = size.height;
141 mode.
refresh_rate = (int) UIKit_GetDisplayModeRefreshRate(uiscreen);
142 mode.
w = (int) size.width;
143 mode.
h = (
int) size.height;
145 if (UIKit_AllocateDisplayModeData(&mode, uiscreenmode) < 0) {
162 display.
driverdata = (
void *) CFBridgingRetain(data);
172 if (uiscreen == [UIScreen mainScreen]) {
173 return UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation);
177 CGSize size = uiscreen.bounds.size;
178 return (size.width > size.height);
186 for (UIScreen *uiscreen
in [UIScreen screens]) {
187 if (UIKit_AddDisplay(uiscreen) < 0) {
205 NSArray *availableModes = nil;
209 availableModes = @[data.uiscreen.currentMode];
211 availableModes = data.
uiscreen.availableModes;
217 if ([data.
uiscreen respondsToSelector:
@selector(nativeScale)]) {
222 for (UIScreenMode *uimode
in availableModes) {
225 int w = (int)(uimode.size.width / scale);
226 int h = (int)(uimode.size.height / scale);
229 if (isLandscape != (w > h)) {
235 UIKit_AddDisplayMode(display, w, h, data.
uiscreen, uimode, addRotation);
248 [data.uiscreen setCurrentMode:modedata.uiscreenmode];
251 if (data.
uiscreen == [UIScreen mainScreen]) {
255 if (mode->
w > mode->
h) {
257 return SDL_SetError(
"Screen orientation does not match display mode size");
259 }
else if (mode->
w < mode->
h) {
261 return SDL_SetError(
"Screen orientation does not match display mode size");
284 #if !TARGET_OS_TV && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0 286 frame = [data.uiscreen applicationFrame];
292 rect->
w =
frame.size.width;
293 rect->
h =
frame.size.height;
311 UIKit_FreeDisplayModeData(mode);
int UIKit_InitModes(_THIS)
GLenum GLenum GLenum GLenum GLenum scale
SDL_bool UIKit_IsSystemVersionAtLeast(double version)
void UIKit_QuitModes(_THIS)
GLint GLint GLint GLint GLint x
SDL_bool UIKit_IsDisplayLandscape(UIScreen *uiscreen)
GLfloat GLfloat GLfloat GLfloat h
The structure that defines a display mode.
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
void UIKit_GetDisplayModes(_THIS, SDL_VideoDisplay *display)
int SDL_AddVideoDisplay(const SDL_VideoDisplay *display)
static SDL_VideoDevice * _this
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int int in j)
SDL_DisplayMode * display_modes
SDL_DisplayMode current_mode
GLubyte GLubyte GLubyte GLubyte w
SDL_VideoDisplay * displays
#define SDL_GetDisplayBounds
GLint GLint GLint GLint GLint GLint y
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
int UIKit_GetDisplayUsableBounds(_THIS, SDL_VideoDisplay *display, SDL_Rect *rect)
#define SDL_OutOfMemory()
SDL_DisplayMode desktop_mode
GLint GLint GLsizei GLsizei height
UIScreenMode * uiscreenmode
SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode *mode)
A rectangle, with the origin at the upper left.
int UIKit_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)