21 #include "../../SDL_internal.h" 23 #if SDL_VIDEO_DRIVER_UIKIT 47 if (uiscreenmode != nil) {
57 mode->
driverdata = (
void *) CFBridgingRetain(data);
73 UIScreenMode * uiscreenmode)
80 if (UIKit_AllocateDisplayModeData(&mode, uiscreenmode) < 0) {
89 UIKit_FreeDisplayModeData(&mode);
96 UIScreenMode * uiscreenmode,
SDL_bool addRotation)
98 if (UIKit_AddSingleDisplayMode(display, w, h, uiscreenmode) < 0) {
104 if (UIKit_AddSingleDisplayMode(display, h, w, uiscreenmode) < 0) {
113 UIKit_AddDisplay(UIScreen *uiscreen)
115 CGSize
size = uiscreen.bounds.size;
119 CGFloat
height = size.width;
120 size.width = size.height;
128 mode.
w = (int) size.width;
129 mode.
h = (
int) size.height;
131 UIScreenMode *uiscreenmode = uiscreen.currentMode;
133 if (UIKit_AllocateDisplayModeData(&mode, uiscreenmode) < 0) {
150 display.
driverdata = (
void *) CFBridgingRetain(data);
160 if (uiscreen == [UIScreen mainScreen]) {
161 return UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation);
165 CGSize size = uiscreen.bounds.size;
166 return (size.width > size.height);
174 for (UIScreen *uiscreen
in [UIScreen screens]) {
175 if (UIKit_AddDisplay(uiscreen) < 0) {
193 NSArray *availableModes = nil;
197 availableModes = @[data.uiscreen.currentMode];
199 availableModes = data.
uiscreen.availableModes;
205 if ([data.
uiscreen respondsToSelector:
@selector(nativeScale)]) {
210 for (UIScreenMode *uimode
in availableModes) {
213 int w = (int)(uimode.size.width / scale);
214 int h = (int)(uimode.size.height / scale);
217 if (isLandscape != (w > h)) {
223 UIKit_AddDisplayMode(display, w, h, uimode, addRotation);
236 [data.uiscreen setCurrentMode:modedata.uiscreenmode];
239 if (data.
uiscreen == [UIScreen mainScreen]) {
243 if (mode->
w > mode->
h) {
245 return SDL_SetError(
"Screen orientation does not match display mode size");
247 }
else if (mode->
w < mode->
h) {
249 return SDL_SetError(
"Screen orientation does not match display mode size");
275 frame = [data.uiscreen applicationFrame];
279 rect->
x += frame.origin.
x;
280 rect->
y += frame.origin.
y;
281 rect->
w = frame.size.width;
282 rect->
h = frame.size.height;
300 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)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
The structure that defines a display mode.
GLint GLint GLsizei GLsizei height
void UIKit_GetDisplayModes(_THIS, SDL_VideoDisplay *display)
int SDL_AddVideoDisplay(const SDL_VideoDisplay *display)
static SDL_VideoDevice * _this
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 int in j)
SDL_DisplayMode * display_modes
SDL_DisplayMode current_mode
SDL_VideoDisplay * displays
#define SDL_GetDisplayBounds
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
UIScreenMode * uiscreenmode
SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode *mode)
GLubyte GLubyte GLubyte GLubyte w
GLfloat GLfloat GLfloat GLfloat h
A rectangle, with the origin at the upper left.
int UIKit_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)