Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

* SDL_IOS_ORIENTATIONS hint

  • Loading branch information
Tim Angus committed Jun 10, 2011
1 parent 1049c3b commit e1b5a1eda2c86886e1eb9cab00bcf028efc9d042
Showing with 43 additions and 0 deletions.
  1. +11 −0 include/SDL_hints.h
  2. +32 −0 src/video/uikit/SDL_uikitwindow.m
@@ -118,6 +118,17 @@ extern "C" {
* By default SDL does not sync screen surface updates with vertical refresh.
*/
#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC"

/**
* \brief A variable controlling which orientations are allowed on iOS.
*
* In some circumstances it is necessary to be able to explicitly control
* which UI orientations are allowed.
*
* This variable is a space delimited list of the following values:
* "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
*/
#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"


/**
@@ -24,6 +24,7 @@
#include "SDL_video.h"
#include "SDL_mouse.h"
#include "SDL_assert.h"
#include "SDL_hints.h"
#include "../SDL_sysvideo.h"
#include "../SDL_pixels_c.h"
#include "../../events/SDL_events_c.h"
@@ -48,6 +49,37 @@ - (id)initWithSDLWindow:(SDL_Window *)_window {
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orient {
const char *orientationsCString;
if ((orientationsCString = SDL_GetHint(SDL_HINT_ORIENTATIONS)) != NULL) {
BOOL rotate = NO;
NSString *orientationsNSString = [NSString stringWithCString:orientationsCString
encoding:NSUTF8StringEncoding];
NSArray *orientations = [orientationsNSString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@" "]];

switch (orient) {
case UIInterfaceOrientationLandscapeLeft:
rotate = [orientations containsObject:@"LandscapeLeft"];
break;

case UIInterfaceOrientationLandscapeRight:
rotate = [orientations containsObject:@"LandscapeRight"];
break;

case UIInterfaceOrientationPortrait:
rotate = [orientations containsObject:@"Portrait"];
break;

case UIInterfaceOrientationPortraitUpsideDown:
rotate = [orientations containsObject:@"PortraitUpsideDown"];
break;

default: break;
}

return rotate;
}

if (self->window->flags & SDL_WINDOW_RESIZABLE) {
return YES; // any orientation is okay.
}

0 comments on commit e1b5a1e

Please sign in to comment.