diff options
author | Max Horn | 2010-03-08 10:31:09 +0000 |
---|---|---|
committer | Max Horn | 2010-03-08 10:31:09 +0000 |
commit | 0fc137cdf2f04d676b196efb6bc0599efd53e84f (patch) | |
tree | ef07f5609bb3b2da9c212535ce018310347e21d2 | |
parent | deec3408a1b6e40144fc3b6cf75fa701d7e7f774 (diff) | |
download | scummvm-rg350-0fc137cdf2f04d676b196efb6bc0599efd53e84f.tar.gz scummvm-rg350-0fc137cdf2f04d676b196efb6bc0599efd53e84f.tar.bz2 scummvm-rg350-0fc137cdf2f04d676b196efb6bc0599efd53e84f.zip |
Rename PocketPCPortrait scaler to DownscaleHorizByThreeQuarters,
and move it to graphics/scaler.
svn-id: r48191
-rw-r--r-- | backends/platform/wince/CEScaler.cpp | 35 | ||||
-rw-r--r-- | backends/platform/wince/CEScaler.h | 6 | ||||
-rw-r--r-- | backends/platform/wince/wince-sdl.cpp | 2 | ||||
-rw-r--r-- | graphics/scaler/downscaler.cpp | 41 | ||||
-rw-r--r-- | graphics/scaler/downscaler.h | 6 |
5 files changed, 48 insertions, 42 deletions
diff --git a/backends/platform/wince/CEScaler.cpp b/backends/platform/wince/CEScaler.cpp index 4e321e527e..8334ba7a04 100644 --- a/backends/platform/wince/CEScaler.cpp +++ b/backends/platform/wince/CEScaler.cpp @@ -25,41 +25,6 @@ #include "graphics/scaler/intern.h" #include "CEScaler.h" -template<typename ColorMask> -void PocketPCPortraitTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) { - uint16 *work; - - // Various casts below go via (void *) to avoid warning. This is - // safe as these are all even addresses. - while (height--) { - work = (uint16 *)(void *)dstPtr; - - for (int i=0; i<width; i+=4) { - // Work with 4 pixels - uint16 color1 = *(((const uint16 *)(const void *)srcPtr) + i); - uint16 color2 = *(((const uint16 *)(const void *)srcPtr) + (i + 1)); - uint16 color3 = *(((const uint16 *)(const void *)srcPtr) + (i + 2)); - uint16 color4 = *(((const uint16 *)(const void *)srcPtr) + (i + 3)); - - work[0] = interpolate32_3_1<ColorMask>(color1, color2); - work[1] = interpolate32_1_1<ColorMask>(color2, color3); - work[2] = interpolate32_3_1<ColorMask>(color4, color3); - - work += 3; - } - srcPtr += srcPitch; - dstPtr += dstPitch; - } -} - -void PocketPCPortrait(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) { - extern int gBitFormat; - if (gBitFormat == 565) - PocketPCPortraitTemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height); - else - PocketPCPortraitTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height); -} - void PocketPCLandscapeAspect(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) { const int redblueMasks[] = { 0x7C1F, 0xF81F }; diff --git a/backends/platform/wince/CEScaler.h b/backends/platform/wince/CEScaler.h index 548c0c99c1..b806630d31 100644 --- a/backends/platform/wince/CEScaler.h +++ b/backends/platform/wince/CEScaler.h @@ -32,12 +32,6 @@ #include "graphics/scaler/intern.h" /** - * This filter (down)scales the source image horizontally by a factor of 3/4. - * For example, a 320x200 image is scaled to 240x200. - */ -DECLARE_SCALER(PocketPCPortrait); - -/** * This filter (up)scales the source image vertically by a factor of 6/5. * For example, a 320x200 image is scaled to 320x240. * diff --git a/backends/platform/wince/wince-sdl.cpp b/backends/platform/wince/wince-sdl.cpp index 75e882f43e..02538f879f 100644 --- a/backends/platform/wince/wince-sdl.cpp +++ b/backends/platform/wince/wince-sdl.cpp @@ -1150,7 +1150,7 @@ bool OSystem_WINCE3::update_scalers() { _scaleFactorXd = 4; _scaleFactorYm = 1; _scaleFactorYd = 1; - _scalerProc = PocketPCPortrait; + _scalerProc = DownscaleHorizByThreeQuarters; _modeFlags = 0; } else { _scaleFactorXm = 1; diff --git a/graphics/scaler/downscaler.cpp b/graphics/scaler/downscaler.cpp index 7b2e7c70c4..53e90bb996 100644 --- a/graphics/scaler/downscaler.cpp +++ b/graphics/scaler/downscaler.cpp @@ -35,6 +35,8 @@ void DownscaleAllByHalf(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uin static const int roundingconstants[] = { 0x00200802, 0x00201002 }; static const int redbluegreenMasks[] = { 0x03E07C1F, 0x07E0F81F }; + extern int gBitFormat; + const int maskUsed = (gBitFormat == 565); DownscaleAllByHalfARM(srcPtr, srcPitch, dstPtr, dstPitch, width, height, redbluegreenMasks[maskUsed], roundingconstants[maskUsed]); } @@ -108,3 +110,42 @@ void DownscaleHorizByHalf(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, u else DownscaleHorizByHalfTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height); } + +/** + * This filter (down)scales the source image horizontally by a factor of 3/4. + * For example, a 320x200 image is scaled to 240x200. + */ +template<typename ColorMask> +void DownscaleHorizByThreeQuartersTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) { + uint16 *work; + + // Various casts below go via (void *) to avoid warning. This is + // safe as these are all even addresses. + while (height--) { + work = (uint16 *)(void *)dstPtr; + + for (int i = 0; i < width; i += 4) { + // Work with 4 pixels + uint16 color1 = *(((const uint16 *)(const void *)srcPtr) + i); + uint16 color2 = *(((const uint16 *)(const void *)srcPtr) + (i + 1)); + uint16 color3 = *(((const uint16 *)(const void *)srcPtr) + (i + 2)); + uint16 color4 = *(((const uint16 *)(const void *)srcPtr) + (i + 3)); + + work[0] = interpolate32_3_1<ColorMask>(color1, color2); + work[1] = interpolate32_1_1<ColorMask>(color2, color3); + work[2] = interpolate32_3_1<ColorMask>(color4, color3); + + work += 3; + } + srcPtr += srcPitch; + dstPtr += dstPitch; + } +} + +void DownscaleHorizByThreeQuarters(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) { + extern int gBitFormat; + if (gBitFormat == 565) + DownscaleHorizByThreeQuartersTemplate<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height); + else + DownscaleHorizByThreeQuartersTemplate<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height); +} diff --git a/graphics/scaler/downscaler.h b/graphics/scaler/downscaler.h index 115ad945e5..158b187940 100644 --- a/graphics/scaler/downscaler.h +++ b/graphics/scaler/downscaler.h @@ -41,4 +41,10 @@ DECLARE_SCALER(DownscaleAllByHalf); */ DECLARE_SCALER(DownscaleHorizByHalf); +/** + * This filter (down)scales the source image horizontally by a factor of 3/4. + * For example, a 320x200 image is scaled to 240x200. + */ +DECLARE_SCALER(DownscaleHorizByThreeQuarters); + #endif |