aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2010-03-08 10:29:00 +0000
committerMax Horn2010-03-08 10:29:00 +0000
commit28c6c600d45b4ce16f13d08cfc7c9fbcc8461a63 (patch)
treee76ab0466cd13402b343b63ed814bc38d0774717
parent9fb27a26f86dcf888cb26cc1b4622c5a10de3fb5 (diff)
downloadscummvm-rg350-28c6c600d45b4ce16f13d08cfc7c9fbcc8461a63.tar.gz
scummvm-rg350-28c6c600d45b4ce16f13d08cfc7c9fbcc8461a63.tar.bz2
scummvm-rg350-28c6c600d45b4ce16f13d08cfc7c9fbcc8461a63.zip
Move some aspect ratio related stuff to graphics/scaler/aspect.h
svn-id: r48186
-rw-r--r--backends/platform/gp2x/events.cpp1
-rw-r--r--backends/platform/gp2x/graphics.cpp1
-rw-r--r--backends/platform/gp2xwiz/gp2xwiz-graphics.cpp1
-rw-r--r--backends/platform/linuxmoto/linuxmoto-events.cpp2
-rw-r--r--backends/platform/linuxmoto/linuxmoto-graphics.cpp1
-rw-r--r--backends/platform/sdl/events.cpp1
-rw-r--r--backends/platform/sdl/graphics.cpp7
-rw-r--r--backends/platform/sdl/sdl.h5
-rw-r--r--graphics/scaler.cpp5
-rw-r--r--graphics/scaler.h12
-rw-r--r--graphics/scaler/aspect.cpp2
-rw-r--r--graphics/scaler/aspect.h63
12 files changed, 80 insertions, 21 deletions
diff --git a/backends/platform/gp2x/events.cpp b/backends/platform/gp2x/events.cpp
index e0117e9313..496e045ab0 100644
--- a/backends/platform/gp2x/events.cpp
+++ b/backends/platform/gp2x/events.cpp
@@ -33,6 +33,7 @@
#include "backends/keymapper/keymapper.h"
#include "common/util.h"
#include "common/events.h"
+#include "graphics/scaler/aspect.h" // for aspect2Real
// FIXME move joystick defines out and replace with confile file options
// we should really allow users to map any key to a joystick button using the keymapper.
diff --git a/backends/platform/gp2x/graphics.cpp b/backends/platform/gp2x/graphics.cpp
index 27732007bc..cae596b9ff 100644
--- a/backends/platform/gp2x/graphics.cpp
+++ b/backends/platform/gp2x/graphics.cpp
@@ -34,6 +34,7 @@
#include "graphics/font.h"
#include "graphics/fontman.h"
#include "graphics/scaler.h"
+#include "graphics/scaler/aspect.h"
#include "graphics/surface.h"
static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
diff --git a/backends/platform/gp2xwiz/gp2xwiz-graphics.cpp b/backends/platform/gp2xwiz/gp2xwiz-graphics.cpp
index 18b9fc133b..b23c3388e1 100644
--- a/backends/platform/gp2xwiz/gp2xwiz-graphics.cpp
+++ b/backends/platform/gp2xwiz/gp2xwiz-graphics.cpp
@@ -29,6 +29,7 @@
#include "graphics/font.h"
#include "graphics/fontman.h"
#include "graphics/scaler.h"
+#include "graphics/scaler/aspect.h"
#include "graphics/scaler/downscaler.h"
#include "graphics/surface.h"
diff --git a/backends/platform/linuxmoto/linuxmoto-events.cpp b/backends/platform/linuxmoto/linuxmoto-events.cpp
index 007f7c732b..4bb3568ebd 100644
--- a/backends/platform/linuxmoto/linuxmoto-events.cpp
+++ b/backends/platform/linuxmoto/linuxmoto-events.cpp
@@ -24,7 +24,7 @@
*/
#include "backends/platform/linuxmoto/linuxmoto-sdl.h"
-#include "backends/platform/sdl/sdl.h"
+#include "graphics/scaler/aspect.h" // for aspect2Real
static int mapKey(SDLKey key, SDLMod mod, Uint16 unicode) {
if (key >= SDLK_F1 && key <= SDLK_F9) {
diff --git a/backends/platform/linuxmoto/linuxmoto-graphics.cpp b/backends/platform/linuxmoto/linuxmoto-graphics.cpp
index b25dc16b91..01d954f9b9 100644
--- a/backends/platform/linuxmoto/linuxmoto-graphics.cpp
+++ b/backends/platform/linuxmoto/linuxmoto-graphics.cpp
@@ -29,6 +29,7 @@
#include "graphics/font.h"
#include "graphics/fontman.h"
#include "graphics/scaler.h"
+#include "graphics/scaler/aspect.h"
#include "graphics/scaler/downscaler.h"
#include "graphics/surface.h"
diff --git a/backends/platform/sdl/events.cpp b/backends/platform/sdl/events.cpp
index fe7fd7e5f9..0eff23778b 100644
--- a/backends/platform/sdl/events.cpp
+++ b/backends/platform/sdl/events.cpp
@@ -26,6 +26,7 @@
#include "backends/platform/sdl/sdl.h"
#include "common/util.h"
#include "common/events.h"
+#include "graphics/scaler/aspect.h" // for aspect2Real
// FIXME move joystick defines out and replace with confile file options
// we should really allow users to map any key to a joystick button
diff --git a/backends/platform/sdl/graphics.cpp b/backends/platform/sdl/graphics.cpp
index 10716fe89a..705b44215e 100644
--- a/backends/platform/sdl/graphics.cpp
+++ b/backends/platform/sdl/graphics.cpp
@@ -32,6 +32,7 @@
#include "graphics/font.h"
#include "graphics/fontman.h"
#include "graphics/scaler.h"
+#include "graphics/scaler/aspect.h"
#include "graphics/surface.h"
static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
@@ -476,6 +477,12 @@ void OSystem_SDL::initSize(uint w, uint h, const Graphics::PixelFormat *format)
_dirtyChecksums = (uint32 *)calloc(_cksumNum * 2, sizeof(uint32));
}
+int OSystem_SDL::effectiveScreenHeight() const {
+ return _videoMode.scaleFactor *
+ (_videoMode.aspectRatioCorrection
+ ? real2Aspect(_videoMode.screenHeight)
+ : _videoMode.screenHeight);
+}
static void fixupResolutionForAspectRatio(AspectRatio desiredAspectRatio, int &width, int &height) {
assert(&width != &height);
diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h
index 78793d4aad..2c1a22e7d6 100644
--- a/backends/platform/sdl/sdl.h
+++ b/backends/platform/sdl/sdl.h
@@ -485,10 +485,7 @@ protected:
virtual bool saveScreenshot(const char *filename); // overloaded by CE backend
- int effectiveScreenHeight() const {
- return (_videoMode.aspectRatioCorrection ? real2Aspect(_videoMode.screenHeight) : _videoMode.screenHeight)
- * _videoMode.scaleFactor;
- }
+ int effectiveScreenHeight() const;
void setupIcon();
void handleKbdMouse();
diff --git a/graphics/scaler.cpp b/graphics/scaler.cpp
index a6ae544ff5..876be270ec 100644
--- a/graphics/scaler.cpp
+++ b/graphics/scaler.cpp
@@ -184,9 +184,8 @@ extern "C" void Normal2xAspectMask(const uint8 *srcPtr,
/**
* A 2x scaler which also does aspect ratio correction.
- * Presumably this is Normal2x combined with vertical
- * stretching, so it will scale a 320x200 surface to
- * a 640x480 surface.
+ * This is Normal2x combined with vertical stretching,
+ * so it will scale a 320x200 surface to a 640x480 surface.
*/
void Normal2xAspect(const uint8 *srcPtr,
uint32 srcPitch,
diff --git a/graphics/scaler.h b/graphics/scaler.h
index bdae161bd1..9d2e578bde 100644
--- a/graphics/scaler.h
+++ b/graphics/scaler.h
@@ -58,18 +58,6 @@ DECLARE_SCALER(HQ2x);
DECLARE_SCALER(HQ3x);
#endif
-FORCEINLINE int real2Aspect(int y) {
- return y + (y + 1) / 5;
-}
-
-FORCEINLINE int aspect2Real(int y) {
- return (y * 5 + 4) / 6;
-}
-
-extern void makeRectStretchable(int &x, int &y, int &w, int &h);
-
-extern int stretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY);
-
// creates a 160x100 thumbnail for 320x200 games
// and 160x120 thumbnail for 320x240 and 640x480 games
// only 565 mode
diff --git a/graphics/scaler/aspect.cpp b/graphics/scaler/aspect.cpp
index 4b3f194244..5f8f5f8279 100644
--- a/graphics/scaler/aspect.cpp
+++ b/graphics/scaler/aspect.cpp
@@ -24,7 +24,7 @@
*/
#include "graphics/scaler/intern.h"
-#include "graphics/scaler.h"
+#include "graphics/scaler/aspect.h"
#define kVeryFastAndUglyAspectMode 0 // No interpolation at all, but super-fast
diff --git a/graphics/scaler/aspect.h b/graphics/scaler/aspect.h
new file mode 100644
index 0000000000..ebe922ef00
--- /dev/null
+++ b/graphics/scaler/aspect.h
@@ -0,0 +1,63 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#ifndef GRAPHICS_SCALER_ASPECT_H
+#define GRAPHICS_SCALER_ASPECT_H
+
+#include "common/scummsys.h"
+
+/**
+ * TODO: explain
+ */
+FORCEINLINE int real2Aspect(int y) {
+ return y + (y + 1) / 5;
+}
+
+/**
+ * TODO: explain
+ */
+FORCEINLINE int aspect2Real(int y) {
+ return (y * 5 + 4) / 6;
+}
+
+/**
+ * TODO: explain
+ */
+void makeRectStretchable(int &x, int &y, int &w, int &h);
+
+/**
+ * TODO: explain
+ */
+int stretch200To240(uint8 *buf,
+ uint32 pitch,
+ int width,
+ int height,
+ int srcX,
+ int srcY,
+ int origSrcY);
+
+// TODO: Move Normal2xAspect & PocketPCLandscapeAspect here;
+// also rename the latter to Normal1xAspect
+
+#endif