aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2010-03-08 10:31:09 +0000
committerMax Horn2010-03-08 10:31:09 +0000
commit0fc137cdf2f04d676b196efb6bc0599efd53e84f (patch)
treeef07f5609bb3b2da9c212535ce018310347e21d2
parentdeec3408a1b6e40144fc3b6cf75fa701d7e7f774 (diff)
downloadscummvm-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.cpp35
-rw-r--r--backends/platform/wince/CEScaler.h6
-rw-r--r--backends/platform/wince/wince-sdl.cpp2
-rw-r--r--graphics/scaler/downscaler.cpp41
-rw-r--r--graphics/scaler/downscaler.h6
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