From 7e7ad149c29e14aab82906384676bdae436b6b4e Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sun, 7 Nov 2010 00:37:04 +0000 Subject: GRAPHICS: Cleanup advmame scaler code; don't include assert.h svn-id: r54104 --- graphics/scaler/scale2x.cpp | 110 +++++++++++++++------------------- graphics/scaler/scale3x.cpp | 71 ++++++++++------------ graphics/scaler/scalebit.cpp | 136 +++++++++++++++++++------------------------ 3 files changed, 139 insertions(+), 178 deletions(-) diff --git a/graphics/scaler/scale2x.cpp b/graphics/scaler/scale2x.cpp index 877bbb9509..deae44c1c7 100644 --- a/graphics/scaler/scale2x.cpp +++ b/graphics/scaler/scale2x.cpp @@ -37,13 +37,10 @@ #include "graphics/scaler/intern.h" #include "graphics/scaler/scale2x.h" -#include - /***************************************************************************/ /* Scale2x C implementation */ -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) -{ +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) { /* central pixels */ while (count) { if (src0[0] != src2[0] && src1[-1] != src1[1]) { @@ -62,8 +59,7 @@ static inline void scale2x_8_def_single(scale2x_uint8* __restrict__ dst, const s } } -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) -{ +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) { /* central pixels */ while (count) { if (src0[0] != src2[0] && src1[-1] != src1[1]) { @@ -82,8 +78,7 @@ static inline void scale2x_16_def_single(scale2x_uint16* __restrict__ dst, const } } -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) -{ +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) { /* central pixels */ while (count) { if (src0[0] != src2[0] && src1[-1] != src1[1]) { @@ -107,16 +102,15 @@ static inline void scale2x_32_def_single(scale2x_uint32* __restrict__ dst, const * The function is implemented in C. * The pixels over the left and right borders are assumed of the same color of * the pixels on the border. - * \param src0 Pointer at the first pixel of the previous row. - * \param src1 Pointer at the first pixel of the current row. - * \param src2 Pointer at the first pixel of the next row. - * \param count Length in pixels of the src0, src1 and src2 rows. + * @param src0 Pointer at the first pixel of the previous row. + * @param src1 Pointer at the first pixel of the current row. + * @param src2 Pointer at the first pixel of the next row. + * @param count Length in pixels of the src0, src1 and src2 rows. * It must be at least 2. - * \param dst0 First destination row, double length in pixels. - * \param dst1 Second destination row, double length in pixels. + * @param dst0 First destination row, double length in pixels. + * @param dst1 Second destination row, double length in pixels. */ -void scale2x_8_def(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) -{ +void scale2x_8_def(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) { scale2x_8_def_single(dst0, src0, src1, src2, count); scale2x_8_def_single(dst1, src2, src1, src0, count); } @@ -124,16 +118,15 @@ void scale2x_8_def(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8 /** * Scale by a factor of 2 a row of pixels of 16 bits. * This function operates like scale2x_8_def() but for 16 bits pixels. - * \param src0 Pointer at the first pixel of the previous row. - * \param src1 Pointer at the first pixel of the current row. - * \param src2 Pointer at the first pixel of the next row. - * \param count Length in pixels of the src0, src1 and src2 rows. + * @param src0 Pointer at the first pixel of the previous row. + * @param src1 Pointer at the first pixel of the current row. + * @param src2 Pointer at the first pixel of the next row. + * @param count Length in pixels of the src0, src1 and src2 rows. * It must be at least 2. - * \param dst0 First destination row, double length in pixels. - * \param dst1 Second destination row, double length in pixels. + * @param dst0 First destination row, double length in pixels. + * @param dst1 Second destination row, double length in pixels. */ -void scale2x_16_def(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) -{ +void scale2x_16_def(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) { scale2x_16_def_single(dst0, src0, src1, src2, count); scale2x_16_def_single(dst1, src2, src1, src0, count); } @@ -141,16 +134,15 @@ void scale2x_16_def(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_ui /** * Scale by a factor of 2 a row of pixels of 32 bits. * This function operates like scale2x_8_def() but for 32 bits pixels. - * \param src0 Pointer at the first pixel of the previous row. - * \param src1 Pointer at the first pixel of the current row. - * \param src2 Pointer at the first pixel of the next row. - * \param count Length in pixels of the src0, src1 and src2 rows. + * @param src0 Pointer at the first pixel of the previous row. + * @param src1 Pointer at the first pixel of the current row. + * @param src2 Pointer at the first pixel of the next row. + * @param count Length in pixels of the src0, src1 and src2 rows. * It must be at least 2. - * \param dst0 First destination row, double length in pixels. - * \param dst1 Second destination row, double length in pixels. + * @param dst0 First destination row, double length in pixels. + * @param dst1 Second destination row, double length in pixels. */ -void scale2x_32_def(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) -{ +void scale2x_32_def(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) { scale2x_32_def_single(dst0, src0, src1, src2, count); scale2x_32_def_single(dst1, src2, src1, src0, count); } @@ -198,8 +190,7 @@ void scale2x_32_def(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_ui * %mm6 -> *current_upper * %mm7 -> *current */ -static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) -{ +static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) { assert(count >= 16); assert(count % 8 == 0); @@ -276,8 +267,7 @@ static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* ); } -static inline void scale2x_16_mmx_single(scale2x_uint16* dst, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) -{ +static inline void scale2x_16_mmx_single(scale2x_uint16* dst, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) { assert(count >= 8); assert(count % 4 == 0); @@ -354,8 +344,7 @@ static inline void scale2x_16_mmx_single(scale2x_uint16* dst, const scale2x_uint ); } -static inline void scale2x_32_mmx_single(scale2x_uint32* dst, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) -{ +static inline void scale2x_32_mmx_single(scale2x_uint32* dst, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) { assert(count >= 4); assert(count % 2 == 0); @@ -445,16 +434,15 @@ static inline void scale2x_32_mmx_single(scale2x_uint32* dst, const scale2x_uint * instruction before any floating-point operation. * The pixels over the left and right borders are assumed of the same color of * the pixels on the border. - * \param src0 Pointer at the first pixel of the previous row. - * \param src1 Pointer at the first pixel of the current row. - * \param src2 Pointer at the first pixel of the next row. - * \param count Length in pixels of the src0, src1 and src2 rows. It must + * @param src0 Pointer at the first pixel of the previous row. + * @param src1 Pointer at the first pixel of the current row. + * @param src2 Pointer at the first pixel of the next row. + * @param count Length in pixels of the src0, src1 and src2 rows. It must * be at least 16 and a multiple of 8. - * \param dst0 First destination row, double length in pixels. - * \param dst1 Second destination row, double length in pixels. + * @param dst0 First destination row, double length in pixels. + * @param dst1 Second destination row, double length in pixels. */ -void scale2x_8_mmx(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) -{ +void scale2x_8_mmx(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) { if (count % 8 != 0 || count < 16) { scale2x_8_def(dst0, dst1, src0, src1, src2, count); } else { @@ -469,16 +457,15 @@ void scale2x_8_mmx(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8 /** * Scale by a factor of 2 a row of pixels of 16 bits. * This function operates like scale2x_8_mmx() but for 16 bits pixels. - * \param src0 Pointer at the first pixel of the previous row. - * \param src1 Pointer at the first pixel of the current row. - * \param src2 Pointer at the first pixel of the next row. - * \param count Length in pixels of the src0, src1 and src2 rows. It must + * @param src0 Pointer at the first pixel of the previous row. + * @param src1 Pointer at the first pixel of the current row. + * @param src2 Pointer at the first pixel of the next row. + * @param count Length in pixels of the src0, src1 and src2 rows. It must * be at least 8 and a multiple of 4. - * \param dst0 First destination row, double length in pixels. - * \param dst1 Second destination row, double length in pixels. + * @param dst0 First destination row, double length in pixels. + * @param dst1 Second destination row, double length in pixels. */ -void scale2x_16_mmx(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) -{ +void scale2x_16_mmx(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) { if (count % 4 != 0 || count < 8) { scale2x_16_def(dst0, dst1, src0, src1, src2, count); } else { @@ -493,16 +480,15 @@ void scale2x_16_mmx(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_ui /** * Scale by a factor of 2 a row of pixels of 32 bits. * This function operates like scale2x_8_mmx() but for 32 bits pixels. - * \param src0 Pointer at the first pixel of the previous row. - * \param src1 Pointer at the first pixel of the current row. - * \param src2 Pointer at the first pixel of the next row. - * \param count Length in pixels of the src0, src1 and src2 rows. It must + * @param src0 Pointer at the first pixel of the previous row. + * @param src1 Pointer at the first pixel of the current row. + * @param src2 Pointer at the first pixel of the next row. + * @param count Length in pixels of the src0, src1 and src2 rows. It must * be at least 4 and a multiple of 2. - * \param dst0 First destination row, double length in pixels. - * \param dst1 Second destination row, double length in pixels. + * @param dst0 First destination row, double length in pixels. + * @param dst1 Second destination row, double length in pixels. */ -void scale2x_32_mmx(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) -{ +void scale2x_32_mmx(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) { if (count % 2 != 0 || count < 4) { scale2x_32_def(dst0, dst1, src0, src1, src2, count); } else { diff --git a/graphics/scaler/scale3x.cpp b/graphics/scaler/scale3x.cpp index 8aa33dd170..4e78796ee7 100644 --- a/graphics/scaler/scale3x.cpp +++ b/graphics/scaler/scale3x.cpp @@ -37,13 +37,10 @@ #include "graphics/scaler/intern.h" #include "graphics/scaler/scale3x.h" -#include - /***************************************************************************/ /* Scale3x C implementation */ -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) -{ +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) { /* central pixels */ while (count) { if (src0[0] != src2[0] && src1[-1] != src1[1]) { @@ -64,8 +61,7 @@ static inline void scale3x_8_def_border(scale3x_uint8* __restrict__ dst, const s } } -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) -{ +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) { /* central pixels */ while (count) { if (src0[0] != src2[0] && src1[-1] != src1[1]) { @@ -86,8 +82,7 @@ static inline void scale3x_8_def_center(scale3x_uint8* __restrict__ dst, const s } } -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) -{ +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) { /* central pixels */ while (count) { if (src0[0] != src2[0] && src1[-1] != src1[1]) { @@ -108,8 +103,7 @@ static inline void scale3x_16_def_border(scale3x_uint16* __restrict__ dst, const } } -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) -{ +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) { /* central pixels */ while (count) { if (src0[0] != src2[0] && src1[-1] != src1[1]) { @@ -130,8 +124,7 @@ static inline void scale3x_16_def_center(scale3x_uint16* __restrict__ dst, const } } -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) -{ +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) { /* central pixels */ while (count) { if (src0[0] != src2[0] && src1[-1] != src1[1]) { @@ -152,8 +145,7 @@ static inline void scale3x_32_def_border(scale3x_uint32* __restrict__ dst, const } } -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) -{ +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) { /* central pixels */ while (count) { if (src0[0] != src2[0] && src1[-1] != src1[1]) { @@ -179,17 +171,16 @@ static inline void scale3x_32_def_center(scale3x_uint32* __restrict__ dst, const * The function is implemented in C. * The pixels over the left and right borders are assumed of the same color of * the pixels on the border. - * \param src0 Pointer at the first pixel of the previous row. - * \param src1 Pointer at the first pixel of the current row. - * \param src2 Pointer at the first pixel of the next row. - * \param count Length in pixels of the src0, src1 and src2 rows. + * @param src0 Pointer at the first pixel of the previous row. + * @param src1 Pointer at the first pixel of the current row. + * @param src2 Pointer at the first pixel of the next row. + * @param count Length in pixels of the src0, src1 and src2 rows. * It must be at least 2. - * \param dst0 First destination row, triple length in pixels. - * \param dst1 Second destination row, triple length in pixels. - * \param dst2 Third destination row, triple length in pixels. + * @param dst0 First destination row, triple length in pixels. + * @param dst1 Second destination row, triple length in pixels. + * @param dst2 Third destination row, triple length in pixels. */ -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) -{ +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) { 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); @@ -198,17 +189,16 @@ void scale3x_8_def(scale3x_uint8* dst0, scale3x_uint8* dst1, scale3x_uint8* dst2 /** * Scale by a factor of 3 a row of pixels of 16 bits. * This function operates like scale3x_8_def() but for 16 bits pixels. - * \param src0 Pointer at the first pixel of the previous row. - * \param src1 Pointer at the first pixel of the current row. - * \param src2 Pointer at the first pixel of the next row. - * \param count Length in pixels of the src0, src1 and src2 rows. + * @param src0 Pointer at the first pixel of the previous row. + * @param src1 Pointer at the first pixel of the current row. + * @param src2 Pointer at the first pixel of the next row. + * @param count Length in pixels of the src0, src1 and src2 rows. * It must be at least 2. - * \param dst0 First destination row, triple length in pixels. - * \param dst1 Second destination row, triple length in pixels. - * \param dst2 Third destination row, triple length in pixels. + * @param dst0 First destination row, triple length in pixels. + * @param dst1 Second destination row, triple length in pixels. + * @param dst2 Third destination row, triple length in pixels. */ -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) -{ +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) { 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); @@ -217,17 +207,16 @@ void scale3x_16_def(scale3x_uint16* dst0, scale3x_uint16* dst1, scale3x_uint16* /** * Scale by a factor of 3 a row of pixels of 32 bits. * This function operates like scale3x_8_def() but for 32 bits pixels. - * \param src0 Pointer at the first pixel of the previous row. - * \param src1 Pointer at the first pixel of the current row. - * \param src2 Pointer at the first pixel of the next row. - * \param count Length in pixels of the src0, src1 and src2 rows. + * @param src0 Pointer at the first pixel of the previous row. + * @param src1 Pointer at the first pixel of the current row. + * @param src2 Pointer at the first pixel of the next row. + * @param count Length in pixels of the src0, src1 and src2 rows. * It must be at least 2. - * \param dst0 First destination row, triple length in pixels. - * \param dst1 Second destination row, triple length in pixels. - * \param dst2 Third destination row, triple length in pixels. + * @param dst0 First destination row, triple length in pixels. + * @param dst1 Second destination row, triple length in pixels. + * @param dst2 Third destination row, triple length in pixels. */ -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) -{ +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) { 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); diff --git a/graphics/scaler/scalebit.cpp b/graphics/scaler/scalebit.cpp index 6a3b47b0f5..706fea8f05 100644 --- a/graphics/scaler/scalebit.cpp +++ b/graphics/scaler/scalebit.cpp @@ -39,34 +39,26 @@ #include "graphics/scaler/scale2x.h" #include "graphics/scaler/scale3x.h" -#if defined(HAVE_ALLOCA_H) -#include -#endif - -#include -#include - #define DST(bits, num) (scale2x_uint ## bits *)dst ## num #define SRC(bits, num) (const scale2x_uint ## bits *)src ## num /** * Apply the Scale2x effect on a group of rows. Used internally. */ -static inline void stage_scale2x(void* dst0, void* dst1, const void* src0, const void* src1, const void* src2, unsigned pixel, unsigned pixel_per_row) -{ +static inline void stage_scale2x(void* dst0, void* dst1, const void* src0, const void* src1, const void* src2, unsigned pixel, unsigned pixel_per_row) { switch (pixel) { #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) - case 1 : scale2x_8_mmx(DST(8,0), DST(8,1), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break; - case 2 : scale2x_16_mmx(DST(16,0), DST(16,1), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break; - case 4 : scale2x_32_mmx(DST(32,0), DST(32,1), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break; + case 1 : scale2x_8_mmx(DST(8,0), DST(8,1), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break; + case 2 : scale2x_16_mmx(DST(16,0), DST(16,1), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break; + case 4 : scale2x_32_mmx(DST(32,0), DST(32,1), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break; #elif defined(USE_ARM_SCALER_ASM) - case 1 : scale2x_8_arm(DST(8,0), DST(8,1), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break; - case 2 : scale2x_16_arm(DST(16,0), DST(16,1), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break; - case 4 : scale2x_32_arm(DST(32,0), DST(32,1), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break; + case 1 : scale2x_8_arm(DST(8,0), DST(8,1), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break; + case 2 : scale2x_16_arm(DST(16,0), DST(16,1), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break; + case 4 : scale2x_32_arm(DST(32,0), DST(32,1), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break; #else - case 1 : scale2x_8_def(DST(8,0), DST(8,1), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break; - case 2 : scale2x_16_def(DST(16,0), DST(16,1), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break; - case 4 : scale2x_32_def(DST(32,0), DST(32,1), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break; + case 1 : scale2x_8_def(DST(8,0), DST(8,1), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break; + case 2 : scale2x_16_def(DST(16,0), DST(16,1), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break; + case 4 : scale2x_32_def(DST(32,0), DST(32,1), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break; #endif } } @@ -74,20 +66,18 @@ static inline void stage_scale2x(void* dst0, void* dst1, const void* src0, const /** * Apply the Scale3x effect on a group of rows. Used internally. */ -static inline void stage_scale3x(void* dst0, void* dst1, void* dst2, const void* src0, const void* src1, const void* src2, unsigned pixel, unsigned pixel_per_row) -{ +static inline void stage_scale3x(void* dst0, void* dst1, void* dst2, const void* src0, const void* src1, const void* src2, unsigned pixel, unsigned pixel_per_row) { switch (pixel) { - case 1 : scale3x_8_def(DST(8,0), DST(8,1), DST(8,2), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break; - case 2 : scale3x_16_def(DST(16,0), DST(16,1), DST(16,2), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break; - case 4 : scale3x_32_def(DST(32,0), DST(32,1), DST(32,2), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break; + case 1 : scale3x_8_def(DST(8,0), DST(8,1), DST(8,2), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break; + case 2 : scale3x_16_def(DST(16,0), DST(16,1), DST(16,2), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break; + case 4 : scale3x_32_def(DST(32,0), DST(32,1), DST(32,2), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break; } } /** * Apply the Scale4x effect on a group of rows. Used internally. */ -static inline void stage_scale4x(void* dst0, void* dst1, void* dst2, void* dst3, const void* src0, const void* src1, const void* src2, const void* src3, unsigned pixel, unsigned pixel_per_row) -{ +static inline void stage_scale4x(void* dst0, void* dst1, void* dst2, void* dst3, const void* src0, const void* src1, const void* src2, const void* src3, unsigned pixel, unsigned pixel_per_row) { stage_scale2x(dst0, dst1, src0, src1, src2, pixel, 2 * pixel_per_row); stage_scale2x(dst2, dst3, src1, src2, src3, pixel, 2 * pixel_per_row); } @@ -102,16 +92,15 @@ static inline void stage_scale4x(void* dst0, void* dst1, void* dst2, void* dst3, * The source bitmap isn't modified. * The destination bitmap must be manually allocated before calling the function, * note that the resulting size is exactly 2x2 times the size of the source bitmap. - * \param void_dst Pointer at the first pixel of the destination bitmap. - * \param dst_slice Size in bytes of a destination bitmap row. - * \param void_src Pointer at the first pixel of the source bitmap. - * \param src_slice Size in bytes of a source bitmap row. - * \param pixel Bytes per pixel of the source and destination bitmap. - * \param width Horizontal size in pixels of the source bitmap. - * \param height Vertical size in pixels of the source bitmap. + * @param void_dst Pointer at the first pixel of the destination bitmap. + * @param dst_slice Size in bytes of a destination bitmap row. + * @param void_src Pointer at the first pixel of the source bitmap. + * @param src_slice Size in bytes of a source bitmap row. + * @param pixel Bytes per pixel of the source and destination bitmap. + * @param width Horizontal size in pixels of the source bitmap. + * @param height Vertical size in pixels of the source bitmap. */ -static void scale2x(void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) -{ +static void scale2x(void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) { unsigned char* dst = (unsigned char*)void_dst; const unsigned char* src = (const unsigned char*)void_src; unsigned count; @@ -140,16 +129,15 @@ static void scale2x(void* void_dst, unsigned dst_slice, const void* void_src, un * The source bitmap isn't modified. * The destination bitmap must be manually allocated before calling the function, * note that the resulting size is exactly 3x3 times the size of the source bitmap. - * \param void_dst Pointer at the first pixel of the destination bitmap. - * \param dst_slice Size in bytes of a destination bitmap row. - * \param void_src Pointer at the first pixel of the source bitmap. - * \param src_slice Size in bytes of a source bitmap row. - * \param pixel Bytes per pixel of the source and destination bitmap. - * \param width Horizontal size in pixels of the source bitmap. - * \param height Vertical size in pixels of the source bitmap. + * @param void_dst Pointer at the first pixel of the destination bitmap. + * @param dst_slice Size in bytes of a destination bitmap row. + * @param void_src Pointer at the first pixel of the source bitmap. + * @param src_slice Size in bytes of a source bitmap row. + * @param pixel Bytes per pixel of the source and destination bitmap. + * @param width Horizontal size in pixels of the source bitmap. + * @param height Vertical size in pixels of the source bitmap. */ -static void scale3x(void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) -{ +static void scale3x(void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) { unsigned char* dst = (unsigned char*)void_dst; const unsigned char* src = (const unsigned char*)void_src; unsigned count; @@ -179,18 +167,17 @@ static void scale3x(void* void_dst, unsigned dst_slice, const void* void_src, un * and a vertical size of 6 rows. The memory of this buffer must not be allocated * in video memory because it's also read and not only written. Generally * a heap (malloc) or a stack (alloca) buffer is the best choices. - * \param void_dst Pointer at the first pixel of the destination bitmap. - * \param dst_slice Size in bytes of a destination bitmap row. - * \param void_mid Pointer at the first pixel of the buffer bitmap. - * \param mid_slice Size in bytes of a buffer bitmap row. - * \param void_src Pointer at the first pixel of the source bitmap. - * \param src_slice Size in bytes of a source bitmap row. - * \param pixel Bytes per pixel of the source and destination bitmap. - * \param width Horizontal size in pixels of the source bitmap. - * \param height Vertical size in pixels of the source bitmap. + * @param void_dst Pointer at the first pixel of the destination bitmap. + * @param dst_slice Size in bytes of a destination bitmap row. + * @param void_mid Pointer at the first pixel of the buffer bitmap. + * @param mid_slice Size in bytes of a buffer bitmap row. + * @param void_src Pointer at the first pixel of the source bitmap. + * @param src_slice Size in bytes of a source bitmap row. + * @param pixel Bytes per pixel of the source and destination bitmap. + * @param width Horizontal size in pixels of the source bitmap. + * @param height Vertical size in pixels of the source bitmap. */ -static void scale4x_buf(void* void_dst, unsigned dst_slice, void* void_mid, unsigned mid_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) -{ +static void scale4x_buf(void* void_dst, unsigned dst_slice, void* void_mid, unsigned mid_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) { unsigned char* dst = (unsigned char*)void_dst; const unsigned char* src = (const unsigned char*)void_src; unsigned count; @@ -242,16 +229,15 @@ static void scale4x_buf(void* void_dst, unsigned dst_slice, void* void_mid, unsi * note that the resulting size is exactly 4x4 times the size of the source bitmap. * \note This function operates like ::scale4x_buf() but the intermediate buffer is * automatically allocated in the stack. - * \param void_dst Pointer at the first pixel of the destination bitmap. - * \param dst_slice Size in bytes of a destination bitmap row. - * \param void_src Pointer at the first pixel of the source bitmap. - * \param src_slice Size in bytes of a source bitmap row. - * \param pixel Bytes per pixel of the source and destination bitmap. - * \param width Horizontal size in pixels of the source bitmap. - * \param height Vertical size in pixels of the source bitmap. + * @param void_dst Pointer at the first pixel of the destination bitmap. + * @param dst_slice Size in bytes of a destination bitmap row. + * @param void_src Pointer at the first pixel of the source bitmap. + * @param src_slice Size in bytes of a source bitmap row. + * @param pixel Bytes per pixel of the source and destination bitmap. + * @param width Horizontal size in pixels of the source bitmap. + * @param height Vertical size in pixels of the source bitmap. */ -static void scale4x(void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) -{ +static void scale4x(void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) { unsigned mid_slice; void* mid; @@ -279,10 +265,10 @@ static void scale4x(void* void_dst, unsigned dst_slice, const void* void_src, un /** * Check if the scale implementation is applicable at the given arguments. - * \param scale Scale factor. 2, 3 or 4. - * \param pixel Bytes per pixel of the source and destination bitmap. - * \param width Horizontal size in pixels of the source bitmap. - * \param height Vertical size in pixels of the source bitmap. + * @param scale Scale factor. 2, 3 or 4. + * @param pixel Bytes per pixel of the source and destination bitmap. + * @param width Horizontal size in pixels of the source bitmap. + * @param height Vertical size in pixels of the source bitmap. * \return * - -1 on precondition violated. * - 0 on success. @@ -332,14 +318,14 @@ int scale_precondition(unsigned scale, unsigned pixel, unsigned width, unsigned /** * Apply the Scale effect on a bitmap. * This function is simply a common interface for ::scale2x(), ::scale3x() and ::scale4x(). - * \param scale Scale factor. 2, 3 or 4. - * \param void_dst Pointer at the first pixel of the destination bitmap. - * \param dst_slice Size in bytes of a destination bitmap row. - * \param void_src Pointer at the first pixel of the source bitmap. - * \param src_slice Size in bytes of a source bitmap row. - * \param pixel Bytes per pixel of the source and destination bitmap. - * \param width Horizontal size in pixels of the source bitmap. - * \param height Vertical size in pixels of the source bitmap. + * @param scale Scale factor. 2, 3 or 4. + * @param void_dst Pointer at the first pixel of the destination bitmap. + * @param dst_slice Size in bytes of a destination bitmap row. + * @param void_src Pointer at the first pixel of the source bitmap. + * @param src_slice Size in bytes of a source bitmap row. + * @param pixel Bytes per pixel of the source and destination bitmap. + * @param width Horizontal size in pixels of the source bitmap. + * @param height Vertical size in pixels of the source bitmap. */ void scale(unsigned scale, void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) { -- cgit v1.2.3