[Scummvm-cvs-logs] CVS: scummvm/common/scaler scale2x.cpp,1.1,1.2 scale3x.cpp,1.1,1.2 scalebit.cpp,1.2,1.3

Max Horn fingolfin at users.sourceforge.net
Sat Aug 7 09:48:05 CEST 2004


Update of /cvsroot/scummvm/scummvm/common/scaler
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18154

Modified Files:
	scale2x.cpp scale3x.cpp scalebit.cpp 
Log Message:
Fix scaling of the borders of each given rect (for non-ASM version)

Index: scale2x.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scaler/scale2x.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- scale2x.cpp	7 Aug 2004 16:04:43 -0000	1.1
+++ scale2x.cpp	7 Aug 2004 16:47:25 -0000	1.2
@@ -45,21 +45,7 @@
 
 static inline void scale2x_8_def_single(scale2x_uint8* __restrict__ dst, const scale2x_uint8* __restrict__ src0, const scale2x_uint8* __restrict__ src1, const scale2x_uint8* __restrict__ src2, unsigned count)
 {
-	assert(count >= 2);
-
-	/* first pixel */
-	dst[0] = src1[0];
-	if (src1[1] == src0[0] && src2[0] != src0[0])
-		dst[1] = src0[0];
-	else
-		dst[1] = src1[0];
-	++src0;
-	++src1;
-	++src2;
-	dst += 2;
-
 	/* central pixels */
-	count -= 2;
 	while (count) {
 		if (src0[0] != src2[0] && src1[-1] != src1[1]) {
 			dst[0] = src1[-1] == src0[0] ? src0[0] : src1[0];
@@ -75,32 +61,11 @@
 		dst += 2;
 		--count;
 	}
-
-	/* last pixel */
-	if (src1[-1] == src0[0] && src2[0] != src0[0])
-		dst[0] = src0[0];
-	else
-		dst[0] = src1[0];
-	dst[1] = src1[0];
 }
 
 static inline void scale2x_16_def_single(scale2x_uint16* __restrict__ dst, const scale2x_uint16* __restrict__ src0, const scale2x_uint16* __restrict__ src1, const scale2x_uint16* __restrict__ src2, unsigned count)
 {
-	assert(count >= 2);
-
-	/* first pixel */
-	dst[0] = src1[0];
-	if (src1[1] == src0[0] && src2[0] != src0[0])
-		dst[1] = src0[0];
-	else
-		dst[1] = src1[0];
-	++src0;
-	++src1;
-	++src2;
-	dst += 2;
-
 	/* central pixels */
-	count -= 2;
 	while (count) {
 		if (src0[0] != src2[0] && src1[-1] != src1[1]) {
 			dst[0] = src1[-1] == src0[0] ? src0[0] : src1[0];
@@ -116,32 +81,11 @@
 		dst += 2;
 		--count;
 	}
-
-	/* last pixel */
-	if (src1[-1] == src0[0] && src2[0] != src0[0])
-		dst[0] = src0[0];
-	else
-		dst[0] = src1[0];
-	dst[1] = src1[0];
 }
 
 static inline void scale2x_32_def_single(scale2x_uint32* __restrict__ dst, const scale2x_uint32* __restrict__ src0, const scale2x_uint32* __restrict__ src1, const scale2x_uint32* __restrict__ src2, unsigned count)
 {
-	assert(count >= 2);
-
-	/* first pixel */
-	dst[0] = src1[0];
-	if (src1[1] == src0[0] && src2[0] != src0[0])
-		dst[1] = src0[0];
-	else
-		dst[1] = src1[0];
-	++src0;
-	++src1;
-	++src2;
-	dst += 2;
-
 	/* central pixels */
-	count -= 2;
 	while (count) {
 		if (src0[0] != src2[0] && src1[-1] != src1[1]) {
 			dst[0] = src1[-1] == src0[0] ? src0[0] : src1[0];
@@ -157,13 +101,6 @@
 		dst += 2;
 		--count;
 	}
-
-	/* last pixel */
-	if (src1[-1] == src0[0] && src2[0] != src0[0])
-		dst[0] = src0[0];
-	else
-		dst[0] = src1[0];
-	dst[1] = src1[0];
 }
 
 /**
@@ -181,8 +118,6 @@
  */
 void scale2x_8_def(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count)
 {
-	assert(count >= 2);
-
 	scale2x_8_def_single(dst0, src0, src1, src2, count);
 	scale2x_8_def_single(dst1, src2, src1, src0, count);
 }
@@ -200,8 +135,6 @@
  */
 void scale2x_16_def(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count)
 {
-	assert(count >= 2);
-
 	scale2x_16_def_single(dst0, src0, src1, src2, count);
 	scale2x_16_def_single(dst1, src2, src1, src0, count);
 }
@@ -219,8 +152,6 @@
  */
 void scale2x_32_def(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count)
 {
-	assert(count >= 2);
-
 	scale2x_32_def_single(dst0, src0, src1, src2, count);
 	scale2x_32_def_single(dst1, src2, src1, src0, count);
 }

Index: scale3x.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scaler/scale3x.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- scale3x.cpp	7 Aug 2004 16:04:43 -0000	1.1
+++ scale3x.cpp	7 Aug 2004 16:47:25 -0000	1.2
@@ -45,22 +45,7 @@
 
 static inline void scale3x_8_def_border(scale3x_uint8* __restrict__ dst, const scale3x_uint8* __restrict__ src0, const scale3x_uint8* __restrict__ src1, const scale3x_uint8* __restrict__ src2, unsigned count)
 {
-	assert(count >= 2);
-
-	/* first pixel */
-	dst[0] = src1[0];
-	dst[1] = src1[0];
-	if (src1[1] == src0[0] && src2[0] != src0[0])
-		dst[2] = src0[0];
-	else
-		dst[2] = src1[0];
-	++src0;
-	++src1;
-	++src2;
-	dst += 3;
-
 	/* central pixels */
-	count -= 2;
 	while (count) {
 		if (src0[0] != src2[0] && src1[-1] != src1[1]) {
 			dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0];
@@ -78,35 +63,11 @@
 		dst += 3;
 		--count;
 	}
-
-	/* last pixel */
-	if (src1[-1] == src0[0] && src2[0] != src0[0])
-		dst[0] = src0[0];
-	else
-		dst[0] = src1[0];
-	dst[1] = src1[0];
-	dst[2] = src1[0];
 }
 
 static inline void scale3x_8_def_center(scale3x_uint8* __restrict__ dst, const scale3x_uint8* __restrict__ src0, const scale3x_uint8* __restrict__ src1, const scale3x_uint8* __restrict__ src2, unsigned count)
 {
-	assert(count >= 2);
-
-	/* first pixel */
-	dst[0] = src1[0];
-	dst[1] = src1[0];
-	if (src0[0] != src2[0]) {
-		dst[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0];
-	} else {
-		dst[2] = src1[0];
-	}
-	++src0;
-	++src1;
-	++src2;
-	dst += 3;
-
 	/* central pixels */
-	count -= 2;
 	while (count) {
 		if (src0[0] != src2[0] && src1[-1] != src1[1]) {
 			dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0];
@@ -124,35 +85,11 @@
 		dst += 3;
 		--count;
 	}
-
-	/* last pixel */
-	if (src0[0] != src2[0]) {
-		dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0];
-	} else {
-		dst[0] = src1[0];
-	}
-	dst[1] = src1[0];
-	dst[2] = src1[0];
 }
 
 static inline void scale3x_16_def_border(scale3x_uint16* __restrict__ dst, const scale3x_uint16* __restrict__ src0, const scale3x_uint16* __restrict__ src1, const scale3x_uint16* __restrict__ src2, unsigned count)
 {
-	assert(count >= 2);
-
-	/* first pixel */
-	dst[0] = src1[0];
-	dst[1] = src1[0];
-	if (src1[1] == src0[0] && src2[0] != src0[0])
-		dst[2] = src0[0];
-	else
-		dst[2] = src1[0];
-	++src0;
-	++src1;
-	++src2;
-	dst += 3;
-
 	/* central pixels */
-	count -= 2;
 	while (count) {
 		if (src0[0] != src2[0] && src1[-1] != src1[1]) {
 			dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0];
@@ -170,35 +107,11 @@
 		dst += 3;
 		--count;
 	}
-
-	/* last pixel */
-	if (src1[-1] == src0[0] && src2[0] != src0[0])
-		dst[0] = src0[0];
-	else
-		dst[0] = src1[0];
-	dst[1] = src1[0];
-	dst[2] = src1[0];
 }
 
 static inline void scale3x_16_def_center(scale3x_uint16* __restrict__ dst, const scale3x_uint16* __restrict__ src0, const scale3x_uint16* __restrict__ src1, const scale3x_uint16* __restrict__ src2, unsigned count)
 {
-	assert(count >= 2);
-
-	/* first pixel */
-	dst[0] = src1[0];
-	dst[1] = src1[0];
-	if (src0[0] != src2[0]) {
-		dst[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0];
-	} else {
-		dst[2] = src1[0];
-	}
-	++src0;
-	++src1;
-	++src2;
-	dst += 3;
-
 	/* central pixels */
-	count -= 2;
 	while (count) {
 		if (src0[0] != src2[0] && src1[-1] != src1[1]) {
 			dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0];
@@ -216,35 +129,11 @@
 		dst += 3;
 		--count;
 	}
-
-	/* last pixel */
-	if (src0[0] != src2[0]) {
-		dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0];
-	} else {
-		dst[0] = src1[0];
-	}
-	dst[1] = src1[0];
-	dst[2] = src1[0];
 }
 
 static inline void scale3x_32_def_border(scale3x_uint32* __restrict__ dst, const scale3x_uint32* __restrict__ src0, const scale3x_uint32* __restrict__ src1, const scale3x_uint32* __restrict__ src2, unsigned count)
 {
-	assert(count >= 2);
-
-	/* first pixel */
-	dst[0] = src1[0];
-	dst[1] = src1[0];
-	if (src1[1] == src0[0] && src2[0] != src0[0])
-		dst[2] = src0[0];
-	else
-		dst[2] = src1[0];
-	++src0;
-	++src1;
-	++src2;
-	dst += 3;
-
 	/* central pixels */
-	count -= 2;
 	while (count) {
 		if (src0[0] != src2[0] && src1[-1] != src1[1]) {
 			dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0];
@@ -262,35 +151,11 @@
 		dst += 3;
 		--count;
 	}
-
-	/* last pixel */
-	if (src1[-1] == src0[0] && src2[0] != src0[0])
-		dst[0] = src0[0];
-	else
-		dst[0] = src1[0];
-	dst[1] = src1[0];
-	dst[2] = src1[0];
 }
 
 static inline void scale3x_32_def_center(scale3x_uint32* __restrict__ dst, const scale3x_uint32* __restrict__ src0, const scale3x_uint32* __restrict__ src1, const scale3x_uint32* __restrict__ src2, unsigned count)
 {
-	assert(count >= 2);
-
-	/* first pixel */
-	dst[0] = src1[0];
-	dst[1] = src1[0];
-	if (src0[0] != src2[0]) {
-		dst[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0];
-	} else {
-		dst[2] = src1[0];
-	}
-	++src0;
-	++src1;
-	++src2;
-	dst += 3;
-
 	/* central pixels */
-	count -= 2;
 	while (count) {
 		if (src0[0] != src2[0] && src1[-1] != src1[1]) {
 			dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0];
@@ -308,15 +173,6 @@
 		dst += 3;
 		--count;
 	}
-
-	/* last pixel */
-	if (src0[0] != src2[0]) {
-		dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0];
-	} else {
-		dst[0] = src1[0];
-	}
-	dst[1] = src1[0];
-	dst[2] = src1[0];
 }
 
 /**
@@ -335,8 +191,6 @@
  */
 void scale3x_8_def(scale3x_uint8* dst0, scale3x_uint8* dst1, scale3x_uint8* dst2, const scale3x_uint8* src0, const scale3x_uint8* src1, const scale3x_uint8* src2, unsigned count)
 {
-	assert(count >= 2);
-
 	scale3x_8_def_border(dst0, src0, src1, src2, count);
 	scale3x_8_def_center(dst1, src0, src1, src2, count);
 	scale3x_8_def_border(dst2, src2, src1, src0, count);
@@ -356,8 +210,6 @@
  */
 void scale3x_16_def(scale3x_uint16* dst0, scale3x_uint16* dst1, scale3x_uint16* dst2, const scale3x_uint16* src0, const scale3x_uint16* src1, const scale3x_uint16* src2, unsigned count)
 {
-	assert(count >= 2);
-
 	scale3x_16_def_border(dst0, src0, src1, src2, count);
 	scale3x_16_def_center(dst1, src0, src1, src2, count);
 	scale3x_16_def_border(dst2, src2, src1, src0, count);
@@ -377,8 +229,6 @@
  */
 void scale3x_32_def(scale3x_uint32* dst0, scale3x_uint32* dst1, scale3x_uint32* dst2, const scale3x_uint32* src0, const scale3x_uint32* src1, const scale3x_uint32* src2, unsigned count)
 {
-	assert(count >= 2);
-
 	scale3x_32_def_border(dst0, src0, src1, src2, count);
 	scale3x_32_def_center(dst1, src0, src1, src2, count);
 	scale3x_32_def_border(dst2, src2, src1, src0, count);

Index: scalebit.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scaler/scalebit.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- scalebit.cpp	7 Aug 2004 16:23:16 -0000	1.2
+++ scalebit.cpp	7 Aug 2004 16:47:25 -0000	1.3
@@ -120,11 +120,6 @@
 
 	count = height;
 
-	stage_scale2x(SCDST(0), SCDST(1), SCSRC(0), SCSRC(0), SCSRC(1), pixel, width);
-
-	dst = SCDST(2);
-
-	count -= 2;
 	while (count) {
 		stage_scale2x(SCDST(0), SCDST(1), SCSRC(0), SCSRC(1), SCSRC(2), pixel, width);
 
@@ -134,8 +129,6 @@
 		--count;
 	}
 
-	stage_scale2x(SCDST(0), SCDST(1), SCSRC(1-1), SCSRC(2-1), SCSRC(2-1), pixel, width);
-
 #if defined(__GNUC__) && defined(__i386__)
 	scale2x_mmx_emms();
 #endif
@@ -165,11 +158,6 @@
 
 	count = height;
 
-	stage_scale3x(SCDST(0), SCDST(1), SCDST(2), SCSRC(0), SCSRC(0), SCSRC(1), pixel, width);
-
-	dst = SCDST(3);
-
-	count -= 2;
 	while (count) {
 		stage_scale3x(SCDST(0), SCDST(1), SCDST(2), SCSRC(0), SCSRC(1), SCSRC(2), pixel, width);
 
@@ -178,8 +166,6 @@
 
 		--count;
 	}
-
-	stage_scale3x(SCDST(0), SCDST(1), SCDST(2), SCSRC(1-1), SCSRC(2-1), SCSRC(2-1), pixel, width);
 }
 
 /**
@@ -222,18 +208,6 @@
 	mid[4] = mid[3] + mid_slice;
 	mid[5] = mid[4] + mid_slice;
 
-	stage_scale2x(SCMID(-2+6), SCMID(-1+6), SCSRC(0), SCSRC(0), SCSRC(1), pixel, width);
-	stage_scale2x(SCMID(0), SCMID(1), SCSRC(0), SCSRC(1), SCSRC(2), pixel, width);
-	stage_scale2x(SCMID(2), SCMID(3), SCSRC(1), SCSRC(2), SCSRC(3), pixel, width);
-	stage_scale4x(SCDST(0), SCDST(1), SCDST(2), SCDST(3), SCMID(-2+6), SCMID(-2+6), SCMID(-1+6), SCMID(0), pixel, width);
-
-	dst = SCDST(4);
-
-	stage_scale4x(SCDST(0), SCDST(1), SCDST(2), SCDST(3), SCMID(-1+6), SCMID(0), SCMID(1), SCMID(2), pixel, width);
-
-	dst = SCDST(4);
-
-	count -= 4;
 	while (count) {
 		unsigned char* tmp;
 
@@ -255,13 +229,6 @@
 		--count;
 	}
 
-	stage_scale2x(SCMID(4), SCMID(5), SCSRC(2), SCSRC(3), SCSRC(3), pixel, width);
-	stage_scale4x(SCDST(0), SCDST(1), SCDST(2), SCDST(3), SCMID(1), SCMID(2), SCMID(3), SCMID(4), pixel, width);
-
-	dst = SCDST(4);
-
-	stage_scale4x(SCDST(0), SCDST(1), SCDST(2), SCDST(3), SCMID(3), SCMID(4), SCMID(5), SCMID(5), pixel, width);
-
 #if defined(__GNUC__) && defined(__i386__)
 	scale2x_mmx_emms();
 #endif





More information about the Scummvm-git-logs mailing list