mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-13 21:31:53 +00:00
Merge pull request #197 from phoenixtail26/cleanedARCorrection.
This is a manual merge with some conflict fixups. Conflicts: backends/platform/iphone/iphone_video.mm
This commit is contained in:
commit
7fe3bdebc0
@ -86,6 +86,8 @@ 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();
|
||||
|
@ -41,6 +41,8 @@ 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) {
|
||||
@ -56,6 +58,14 @@ 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;
|
||||
}
|
||||
@ -478,10 +488,22 @@ 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) {
|
||||
adjustedHeight = 240;
|
||||
}
|
||||
if (_videoContext.screenHeight == 400) {
|
||||
adjustedHeight = 480;
|
||||
}
|
||||
}
|
||||
|
||||
float overlayPortraitRatio;
|
||||
|
||||
if (_orientation == UIDeviceOrientationLandscapeLeft || _orientation == UIDeviceOrientationLandscapeRight) {
|
||||
GLfloat gameScreenRatio = (GLfloat)_videoContext.screenWidth / (GLfloat)_videoContext.screenHeight;
|
||||
GLfloat gameScreenRatio = (GLfloat)adjustedWidth / (GLfloat)adjustedHeight;
|
||||
GLfloat screenRatio = (GLfloat)screenWidth / (GLfloat)screenHeight;
|
||||
|
||||
// These are the width/height according to the portrait layout!
|
||||
@ -510,7 +532,7 @@ const char *iPhone_getDocumentsDir() {
|
||||
_gameScreenRect = CGRectMake(xOffset, yOffset, rectWidth, rectHeight);
|
||||
overlayPortraitRatio = 1.0f;
|
||||
} else {
|
||||
float ratio = (float)_videoContext.screenHeight / (float)_videoContext.screenWidth;
|
||||
float ratio = (float)adjustedHeight / (float)adjustedWidth;
|
||||
int height = (int)(screenWidth * ratio);
|
||||
//printf("Making rect (%u, %u)\n", screenWidth, height);
|
||||
_gameScreenRect = CGRectMake(0, 0, screenWidth, height);
|
||||
|
@ -118,6 +118,9 @@ void OSystem_IPHONE::setFeatureState(Feature f, bool enable) {
|
||||
_mouseCursorPaletteEnabled = enable;
|
||||
}
|
||||
break;
|
||||
case kFeatureAspectRatioCorrection:
|
||||
iPhone_setAspectRatioState(enable);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
@ -128,6 +131,8 @@ bool OSystem_IPHONE::getFeatureState(Feature f) {
|
||||
switch (f) {
|
||||
case kFeatureCursorPalette:
|
||||
return _mouseCursorPaletteEnabled;
|
||||
case kFeatureAspectRatioCorrection:
|
||||
return iPhone_getAspectRatioState();
|
||||
|
||||
default:
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user