Move some aspect ratio related stuff to graphics/scaler/aspect.h

svn-id: r48186
This commit is contained in:
Max Horn 2010-03-08 10:29:00 +00:00
parent 9fb27a26f8
commit 28c6c600d4
12 changed files with 80 additions and 21 deletions

View File

@ -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.

View File

@ -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[] = {

View File

@ -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"

View File

@ -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) {

View File

@ -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"

View File

@ -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

View File

@ -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);

View File

@ -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();

View File

@ -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,

View File

@ -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

View File

@ -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

63
graphics/scaler/aspect.h Normal file
View File

@ -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