aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/wince
diff options
context:
space:
mode:
authorNorbert Lange2009-08-24 17:51:47 +0000
committerNorbert Lange2009-08-24 17:51:47 +0000
commit917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5 (patch)
treee652563203a00f8acecfaafbf93c64dbfbd13f25 /backends/platform/wince
parent5f87d5090cfcb34cda3c1f5d430e0865344d7366 (diff)
parentdd7868acc2512c9761d892e67a4837f4dc38bdc0 (diff)
downloadscummvm-rg350-917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5.tar.gz
scummvm-rg350-917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5.tar.bz2
scummvm-rg350-917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5.zip
Merge with trunk
svn-id: r43701
Diffstat (limited to 'backends/platform/wince')
-rw-r--r--backends/platform/wince/CEScaler.cpp74
-rw-r--r--backends/platform/wince/wince-sdl.cpp4
-rw-r--r--backends/platform/wince/wince-sdl.h2
3 files changed, 38 insertions, 42 deletions
diff --git a/backends/platform/wince/CEScaler.cpp b/backends/platform/wince/CEScaler.cpp
index d26db3190f..0a71fda167 100644
--- a/backends/platform/wince/CEScaler.cpp
+++ b/backends/platform/wince/CEScaler.cpp
@@ -27,25 +27,25 @@
template<int bitFormat>
void PocketPCPortraitTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
- uint8 *work;
- int i;
+ uint16 *work;
+ // Various casts below go via (void *) to avoid warning. This is
+ // safe as these are all even addresses.
while (height--) {
- i = 0;
- work = dstPtr;
+ work = (uint16 *)(void *)dstPtr;
for (int i=0; i<width; i+=4) {
// Work with 4 pixels
- uint16 color1 = *(((const uint16 *)srcPtr) + i);
- uint16 color2 = *(((const uint16 *)srcPtr) + (i + 1));
- uint16 color3 = *(((const uint16 *)srcPtr) + (i + 2));
- uint16 color4 = *(((const uint16 *)srcPtr) + (i + 3));
+ 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));
- *(((uint16 *)work) + 0) = interpolate32_3_1<bitFormat>(color1, color2);
- *(((uint16 *)work) + 1) = interpolate32_1_1<bitFormat>(color2, color3);
- *(((uint16 *)work) + 2) = interpolate32_3_1<bitFormat>(color4, color3);
+ work[0] = interpolate32_3_1<bitFormat>(color1, color2);
+ work[1] = interpolate32_1_1<bitFormat>(color2, color3);
+ work[2] = interpolate32_3_1<bitFormat>(color4, color3);
- work += 3 * sizeof(uint16);
+ work += 3;
}
srcPtr += srcPitch;
dstPtr += dstPitch;
@@ -65,7 +65,8 @@ void PocketPCLandscapeAspect(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr
int i,j;
unsigned int p1, p2;
- uint8 *inbuf, *outbuf, *instart, *outstart;
+ const uint8 *inbuf, *instart;
+ uint8 *outbuf, *outstart;
#define RB(x) ((x & RBM)<<8)
#define G(x) ((x & GM)<<3)
@@ -77,34 +78,36 @@ void PocketPCLandscapeAspect(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr
#define MAKEPIXEL(rb,g) ((((rb)>>8) & RBM | ((g)>>3) & GM))
- inbuf = (uint8 *)srcPtr;
+ inbuf = (const uint8 *)srcPtr;
outbuf = (uint8 *)dstPtr;
height /= 5;
+ // Various casts below go via (void *) to avoid warning. This is
+ // safe as these are all even addresses.
for (i = 0; i < height; i++) {
instart = inbuf;
outstart = outbuf;
for (j=0; j < width; j++) {
- p1 = *(uint16*)inbuf; inbuf += srcPitch;
- *(uint16*)outbuf = p1; outbuf += dstPitch;
+ p1 = *(const uint16*)(const void *)inbuf; inbuf += srcPitch;
+ *(uint16*)(void *)outbuf = p1; outbuf += dstPitch;
- p2 = *(uint16*)inbuf; inbuf += srcPitch;
- *(uint16*)outbuf = MAKEPIXEL(P20(RB(p1))+P80(RB(p2)),P20(G(p1))+P80(G(p2))); outbuf += dstPitch;
+ p2 = *(const uint16*)(const void *)inbuf; inbuf += srcPitch;
+ *(uint16*)(void *)outbuf = MAKEPIXEL(P20(RB(p1))+P80(RB(p2)),P20(G(p1))+P80(G(p2))); outbuf += dstPitch;
p1 = p2;
- p2 = *(uint16*)inbuf; inbuf += srcPitch;
- *(uint16*)outbuf = MAKEPIXEL(P40(RB(p1))+P60(RB(p2)),P40(G(p1))+P60(G(p2))); outbuf += dstPitch;
+ p2 = *(const uint16*)(const void *)inbuf; inbuf += srcPitch;
+ *(uint16*)(void *)outbuf = MAKEPIXEL(P40(RB(p1))+P60(RB(p2)),P40(G(p1))+P60(G(p2))); outbuf += dstPitch;
p1 = p2;
- p2 = *(uint16*)inbuf; inbuf += srcPitch;
- *(uint16*)outbuf = MAKEPIXEL(P60(RB(p1))+P40(RB(p2)),P60(G(p1))+P40(G(p2))); outbuf += dstPitch;
+ p2 = *(const uint16*)(const void *)inbuf; inbuf += srcPitch;
+ *(uint16*)(void *)outbuf = MAKEPIXEL(P60(RB(p1))+P40(RB(p2)),P60(G(p1))+P40(G(p2))); outbuf += dstPitch;
p1 = p2;
- p2 = *(uint16*)inbuf;
- *(uint16*)outbuf = MAKEPIXEL(P80(RB(p1))+P20(RB(p2)),P80(G(p1))+P20(G(p2))); outbuf += dstPitch;
+ p2 = *(const uint16*)(const void *)inbuf;
+ *(uint16*)(void *)outbuf = MAKEPIXEL(P80(RB(p1))+P20(RB(p2)),P80(G(p1))+P20(G(p2))); outbuf += dstPitch;
- *(uint16*)outbuf = p2;
+ *(uint16*)(void *)outbuf = p2;
inbuf = inbuf - srcPitch*4 + sizeof(uint16);
outbuf = outbuf - dstPitch*5 + sizeof(uint16);
@@ -127,11 +130,9 @@ extern "C" {
template<int bitFormat>
void PocketPCHalfTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
uint8 *work;
- int i;
uint16 srcPitch16 = (uint16)(srcPitch / sizeof(uint16));
while ((height -= 2) >= 0) {
- i = 0;
work = dstPtr;
for (int i=0; i<width; i+=2) {
@@ -163,23 +164,20 @@ void PocketPCHalf(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 ds
template<int bitFormat>
void PocketPCHalfZoomTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
- uint8 *work;
- int i;
- uint16 srcPitch16 = (uint16)(srcPitch / sizeof(uint16));
+ uint16 *work;
if (!height)
return;
+ // Various casts below go via (void *) to avoid warning. This is
+ // safe as these are all even addresses.
while (height--) {
- i = 0;
- work = dstPtr;
+ work = (uint16 *)(void *)dstPtr;
for (int i = 0; i < width; i += 2) {
- uint16 color1 = *(((const uint16 *)srcPtr) + i);
- uint16 color2 = *(((const uint16 *)srcPtr) + (i + 1));
- *(((uint16 *)work) + 0) = interpolate32_1_1<bitFormat>(color1, color2);
-
- work += sizeof(uint16);
+ uint16 color1 = *(((const uint16 *)(const void *)srcPtr) + i);
+ uint16 color2 = *(((const uint16 *)(const void *)srcPtr) + (i + 1));
+ *work++ = interpolate32_1_1<bitFormat>(color1, color2);
}
srcPtr += srcPitch;
dstPtr += dstPitch;
@@ -190,11 +188,9 @@ MAKE_WRAPPER(PocketPCHalfZoom)
template<int bitFormat>
void SmartphoneLandscapeTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
uint8 *work;
- int i;
int line = 0;
while (height--) {
- i = 0;
work = dstPtr;
for (int i = 0; i < width; i += 3) {
diff --git a/backends/platform/wince/wince-sdl.cpp b/backends/platform/wince/wince-sdl.cpp
index 65082014da..ab7860dd85 100644
--- a/backends/platform/wince/wince-sdl.cpp
+++ b/backends/platform/wince/wince-sdl.cpp
@@ -1084,7 +1084,7 @@ void OSystem_WINCE3::update_game_settings() {
_noDoubleTapRMB = ConfMan.getBool("no_doubletap_rightclick");
}
-void OSystem_WINCE3::initSize(uint w, uint h) {
+void OSystem_WINCE3::initSize(uint w, uint h, const Graphics::PixelFormat *format) {
if (_hasSmartphoneResolution && h == 240)
h = 200; // mainly for the launcher
@@ -1120,7 +1120,7 @@ void OSystem_WINCE3::initSize(uint w, uint h) {
_videoMode.overlayWidth = w;
_videoMode.overlayHeight = h;
- OSystem_SDL::initSize(w, h);
+ OSystem_SDL::initSize(w, h, format);
if (_scalersChanged) {
unloadGFXMode();
diff --git a/backends/platform/wince/wince-sdl.h b/backends/platform/wince/wince-sdl.h
index deafde6d80..7b4d0f2b25 100644
--- a/backends/platform/wince/wince-sdl.h
+++ b/backends/platform/wince/wince-sdl.h
@@ -66,7 +66,7 @@ public:
void internUpdateScreen();
void setGraphicsModeIntern();
- void initSize(uint w, uint h);
+ void initSize(uint w, uint h, const Graphics::PixelFormat *format);
void initBackend();
// Overloaded from SDL backend (toolbar handling)