[Scummvm-cvs-logs] SF.net SVN: scummvm: [23003] scummvm/trunk/backends/wince
knakos at users.sourceforge.net
knakos at users.sourceforge.net
Sat Jun 10 13:08:42 CEST 2006
Revision: 23003
Author: knakos
Date: 2006-06-10 04:08:34 -0700 (Sat, 10 Jun 2006)
ViewCVS: http://svn.sourceforge.net/scummvm/?rev=23003&view=rev
Log Message:
-----------
new landscape aspect scaler (n0p)
Modified Paths:
--------------
scummvm/trunk/backends/wince/CEScaler.cpp
scummvm/trunk/backends/wince/CEScaler.h
Modified: scummvm/trunk/backends/wince/CEScaler.cpp
===================================================================
--- scummvm/trunk/backends/wince/CEScaler.cpp 2006-06-10 11:07:28 UTC (rev 23002)
+++ scummvm/trunk/backends/wince/CEScaler.cpp 2006-06-10 11:08:34 UTC (rev 23003)
@@ -72,6 +72,63 @@
}
}
+void PocketPCLandscapeAspect(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
+
+#define RB(x) ((x & redblueMasks[maskUsed])<<8)
+#define G(x) ((x & greenMasks[maskUsed])<<3)
+
+#define P20(x) (((x)>>2)-((x)>>4))
+#define P40(x) (((x)>>1)-((x)>>3))
+#define P60(x) (((x)>>1)+((x)>>3))
+#define P80(x) (((x)>>1)+((x)>>2)+((x)>>4))
+
+#define MAKEPIXEL(rb,g) ((((rb)>>8) & redblueMasks[maskUsed] | ((g)>>3) & greenMasks[maskUsed]))
+
+ int i,j;
+ unsigned int p1;
+ unsigned int p2;
+ uint16 * inbuf;
+ uint16 * outbuf;
+ inbuf=(uint16 *)srcPtr;
+ outbuf=(uint16 *)dstPtr;
+
+ uint16 srcPitch16 = (uint16)(srcPitch / sizeof(uint16));
+ uint16 dstPitch16 = (uint16)(dstPitch / sizeof(uint16));
+
+ for (i=0; i<((height)/6); i++) {
+ for (j=0; j<width; j++) {
+ p1=*((uint16*)inbuf+j);
+ inbuf+=srcPitch16;
+ *((uint16*)outbuf+j)=p1;
+ outbuf+=dstPitch16;
+ p2=*((uint16*)inbuf+j);
+ inbuf+=srcPitch16;
+ *((uint16*)outbuf+j)=MAKEPIXEL(P20(RB(p1))+P80(RB(p2)),P20(G(p1))+P80(G(p2)));
+ outbuf+=dstPitch16;
+ p1=p2;
+ p2=*((uint16*)inbuf+j);
+ inbuf+=srcPitch16;
+ *((uint16*)outbuf+j)=MAKEPIXEL(P40(RB(p1))+P60(RB(p2)),P40(G(p1))+P60(G(p2)));
+ outbuf+=dstPitch16;
+ p1=p2;
+ p2=*((uint16*)inbuf+j);
+ inbuf+=srcPitch16;
+ *((uint16*)outbuf+j)=MAKEPIXEL(P60(RB(p1))+P40(RB(p2)),P60(G(p1))+P40(G(p2)));
+ outbuf+=dstPitch16;
+ p1=p2;
+ p2=*((uint16*)inbuf+j);
+ *((uint16*)outbuf+j)=MAKEPIXEL(P80(RB(p1))+P20(RB(p2)),P80(G(p1))+P20(G(p2)));
+ outbuf+=dstPitch16;
+ *((uint16*)outbuf+j)=p2;
+ inbuf=inbuf-srcPitch16*4;
+ outbuf=outbuf-dstPitch16*5;
+ }
+ inbuf=inbuf+srcPitch16*5;
+ outbuf=outbuf+dstPitch16*6;
+ }
+}
+
+
void PocketPCHalf(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
uint8 *work;
int i;
Modified: scummvm/trunk/backends/wince/CEScaler.h
===================================================================
--- scummvm/trunk/backends/wince/CEScaler.h 2006-06-10 11:07:28 UTC (rev 23002)
+++ scummvm/trunk/backends/wince/CEScaler.h 2006-06-10 11:08:34 UTC (rev 23003)
@@ -30,6 +30,7 @@
#include "graphics/scaler/intern.h"
DECLARE_SCALER(PocketPCPortrait);
+DECLARE_SCALER(PocketPCLandscapeAspect);
DECLARE_SCALER(PocketPCHalf);
DECLARE_SCALER(PocketPCHalfZoom);
//#ifdef WIN32_PLATFORM_WFSP
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list