[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