aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/iphone
diff options
context:
space:
mode:
authorJohannes Schickel2012-02-24 22:43:02 +0100
committerJohannes Schickel2012-02-24 22:43:02 +0100
commitf1a4f508afb7552629b8278d3cef8ed23c05998e (patch)
treeb9afdc73ae68e54a76485dad80dcf2ea9c827924 /backends/platform/iphone
parent7fe3bdebc05252c02efdf5ba2680b54e2eca4263 (diff)
downloadscummvm-rg350-f1a4f508afb7552629b8278d3cef8ed23c05998e.tar.gz
scummvm-rg350-f1a4f508afb7552629b8278d3cef8ed23c05998e.tar.bz2
scummvm-rg350-f1a4f508afb7552629b8278d3cef8ed23c05998e.zip
IPHONE: Move aspect ratio settings to VideoContext.
Diffstat (limited to 'backends/platform/iphone')
-rw-r--r--backends/platform/iphone/iphone_common.h5
-rw-r--r--backends/platform/iphone/iphone_video.mm27
-rw-r--r--backends/platform/iphone/osys_main.cpp4
3 files changed, 11 insertions, 25 deletions
diff --git a/backends/platform/iphone/iphone_common.h b/backends/platform/iphone/iphone_common.h
index 3c0365eff5..19e4f2ce9b 100644
--- a/backends/platform/iphone/iphone_common.h
+++ b/backends/platform/iphone/iphone_common.h
@@ -58,13 +58,14 @@ enum GraphicsModes {
};
struct VideoContext {
- VideoContext() : screenWidth(), screenHeight(), overlayVisible(false),
+ VideoContext() : asprectRatioCorrection(), screenWidth(), screenHeight(), overlayVisible(false),
overlayWidth(), overlayHeight(), mouseX(), mouseY(),
mouseHotspotX(), mouseHotspotY(), mouseWidth(), mouseHeight(),
mouseIsVisible(), graphicsMode(kGraphicsModeLinear), shakeOffsetY() {
}
// Game screen state
+ bool asprectRatioCorrection;
uint screenWidth, screenHeight;
Graphics::Surface screenTexture;
@@ -86,8 +87,6 @@ struct VideoContext {
};
// On the ObjC side
-void iPhone_setAspectRatioState(bool enable);
-bool iPhone_getAspectRatioState();
void iPhone_updateScreen();
bool iPhone_fetchEvent(int *outEvent, int *outX, int *outY);
const char *iPhone_getDocumentsDir();
diff --git a/backends/platform/iphone/iphone_video.mm b/backends/platform/iphone/iphone_video.mm
index ecb514d633..0ddb90bece 100644
--- a/backends/platform/iphone/iphone_video.mm
+++ b/backends/platform/iphone/iphone_video.mm
@@ -41,8 +41,6 @@ static long lastTick = 0;
static int frames = 0;
#endif
-static bool _aspectRatioCorrect = false;
-
#define printOpenGLError() printOglError(__FILE__, __LINE__)
int printOglError(const char *file, int line) {
@@ -58,14 +56,6 @@ int printOglError(const char *file, int line) {
return retCode;
}
-void iPhone_setAspectRatioState(bool enable) {
- _aspectRatioCorrect = enable;
-}
-
-bool iPhone_getAspectRatioState() {
- return _aspectRatioCorrect;
-}
-
bool iPhone_isHighResDevice() {
return _fullHeight > 480;
}
@@ -488,22 +478,19 @@ const char *iPhone_getDocumentsDir() {
[[_keyboardView inputView] removeFromSuperview];
}
- float adjustedWidth = _videoContext.screenWidth;
- float adjustedHeight = _videoContext.screenHeight;
- if (_aspectRatioCorrect && ((_videoContext.screenWidth == 320 && _videoContext.screenHeight == 200)
- || (_videoContext.screenWidth == 640 && _videoContext.screenHeight == 400)) ) {
- if (_videoContext.screenHeight == 200) {
+ GLfloat adjustedWidth = _videoContext.screenWidth;
+ GLfloat adjustedHeight = _videoContext.screenHeight;
+ if (_videoContext.asprectRatioCorrection) {
+ if (_videoContext.screenWidth == 320 && _videoContext.screenHeight == 200)
adjustedHeight = 240;
- }
- if (_videoContext.screenHeight == 400) {
+ else if (_videoContext.screenWidth == 640 && _videoContext.screenHeight == 400)
adjustedHeight = 480;
- }
}
float overlayPortraitRatio;
if (_orientation == UIDeviceOrientationLandscapeLeft || _orientation == UIDeviceOrientationLandscapeRight) {
- GLfloat gameScreenRatio = (GLfloat)adjustedWidth / (GLfloat)adjustedHeight;
+ GLfloat gameScreenRatio = adjustedWidth / adjustedHeight;
GLfloat screenRatio = (GLfloat)screenWidth / (GLfloat)screenHeight;
// These are the width/height according to the portrait layout!
@@ -532,7 +519,7 @@ const char *iPhone_getDocumentsDir() {
_gameScreenRect = CGRectMake(xOffset, yOffset, rectWidth, rectHeight);
overlayPortraitRatio = 1.0f;
} else {
- float ratio = (float)adjustedHeight / (float)adjustedWidth;
+ GLfloat ratio = adjustedHeight / adjustedWidth;
int height = (int)(screenWidth * ratio);
//printf("Making rect (%u, %u)\n", screenWidth, height);
_gameScreenRect = CGRectMake(0, 0, screenWidth, height);
diff --git a/backends/platform/iphone/osys_main.cpp b/backends/platform/iphone/osys_main.cpp
index 71404dcd9e..dd34e95c72 100644
--- a/backends/platform/iphone/osys_main.cpp
+++ b/backends/platform/iphone/osys_main.cpp
@@ -119,7 +119,7 @@ void OSystem_IPHONE::setFeatureState(Feature f, bool enable) {
}
break;
case kFeatureAspectRatioCorrection:
- iPhone_setAspectRatioState(enable);
+ _videoContext->asprectRatioCorrection = enable;
break;
default:
@@ -132,7 +132,7 @@ bool OSystem_IPHONE::getFeatureState(Feature f) {
case kFeatureCursorPalette:
return _mouseCursorPaletteEnabled;
case kFeatureAspectRatioCorrection:
- return iPhone_getAspectRatioState();
+ return _videoContext->asprectRatioCorrection;
default:
return false;