forked from old/legacy-imlib2
BGR56r & BGR555 support.......... please test if u have a display like this :)
SVN revision: 2345
This commit is contained in:
parent
904b9f7c61
commit
e65ff79503
|
@ -18,7 +18,8 @@ __imlib_XActualDepth(Display *d, Visual *v)
|
|||
if (xvir)
|
||||
{
|
||||
depth = xvir[0].depth;
|
||||
if ((depth == 16) && (xvir->red_mask != 0xf800))
|
||||
if ((depth == 16) &&
|
||||
((xvir->red_mask | xvir->green_mask | xvir->blue_mask) != 0xffff))
|
||||
depth = 15;
|
||||
XFree(xvir);
|
||||
}
|
||||
|
|
68
src/rend.c
68
src/rend.c
|
@ -264,16 +264,32 @@ __imlib_RenderImage(Display *d, ImlibImage *im,
|
|||
/* common depths first */
|
||||
if (actual_depth == 16)
|
||||
{
|
||||
if (hiq)
|
||||
__imlib_RGBA_to_RGB565_dither(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
if (bgr)
|
||||
{
|
||||
if (hiq)
|
||||
__imlib_RGBA_to_BGR565_dither(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
else
|
||||
__imlib_RGBA_to_BGR565_fast(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
}
|
||||
else
|
||||
__imlib_RGBA_to_RGB565_fast(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
{
|
||||
if (hiq)
|
||||
__imlib_RGBA_to_RGB565_dither(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
else
|
||||
__imlib_RGBA_to_RGB565_fast(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
}
|
||||
}
|
||||
/* FIXME: need to handle different RGB ordering */
|
||||
else if (actual_depth == 24)
|
||||
|
@ -396,16 +412,32 @@ __imlib_RenderImage(Display *d, ImlibImage *im,
|
|||
}
|
||||
else if (actual_depth == 15)
|
||||
{
|
||||
if (hiq)
|
||||
__imlib_RGBA_to_RGB555_dither(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
if (bgr)
|
||||
{
|
||||
if (hiq)
|
||||
__imlib_RGBA_to_BGR555_dither(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
else
|
||||
__imlib_RGBA_to_BGR555_fast(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
}
|
||||
else
|
||||
__imlib_RGBA_to_RGB555_fast(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
{
|
||||
if (hiq)
|
||||
__imlib_RGBA_to_RGB555_dither(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
else
|
||||
__imlib_RGBA_to_RGB555_fast(pointer, jump,
|
||||
((DATA16 *)xim->data) + (y * (xim->bytes_per_line / sizeof(DATA16))),
|
||||
(xim->bytes_per_line / sizeof(DATA16)) - dw,
|
||||
dw, hh, dx, dy + y);
|
||||
}
|
||||
}
|
||||
if (m)
|
||||
{
|
||||
|
|
407
src/rgba.c
407
src/rgba.c
|
@ -105,6 +105,71 @@ static DATA8 *_dither_b8;
|
|||
dest += 2; src += 2; \
|
||||
}
|
||||
#endif
|
||||
/*****************************************************************************/
|
||||
/* MACROS for plain RGBA -> BGR565 conversion */
|
||||
#define WRITE1_RGBA_BGR565(src, dest) \
|
||||
*dest = ((*src << 8) & 0xf800) | \
|
||||
((*src >> 5) & 0x7e0) | \
|
||||
((*src >> 19)& 0x1f); dest++; src++
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define WRITE2_RGBA_BGR565(src, dest) \
|
||||
{ \
|
||||
*((DATA32 *)dest) = ((src[1] << 8) & 0xf800) | \
|
||||
((src[1] >> 5) & 0x7e0) | \
|
||||
((src[1] >> 19)& 0x1f) | \
|
||||
((src[0] << 24) & 0xf8000000) | \
|
||||
((src[0] << 11) & 0x7e00000) | \
|
||||
((src[0] >> 3) & 0x1f0000); \
|
||||
dest += 2; src += 2; \
|
||||
}
|
||||
#else
|
||||
#define WRITE2_RGBA_BGR565(src, dest) \
|
||||
{ \
|
||||
*((DATA32 *)dest) = ((src[0] << 8) & 0xf800) | \
|
||||
((src[0] >> 5) & 0x7e0) | \
|
||||
((src[0] >> 19)& 0x1f) | \
|
||||
((src[1] << 24) & 0xf8000000) | \
|
||||
((src[1] << 11) & 0x7e00000) | \
|
||||
((src[1] >> 3) & 0x1f0000); \
|
||||
dest += 2; src += 2; \
|
||||
}
|
||||
#endif
|
||||
/*****************************************************************************/
|
||||
/* MACROS for dithered RGBA -> BGR565 conversion */
|
||||
#define DITHER_RGBA_BGR565_LUT_R(num) \
|
||||
(_dither_r16[(((x + num) & 0x3) << 10) | ((y & 0x3) << 8) | ((src[num] >> 0 ) & 0xff)])
|
||||
#define DITHER_RGBA_BGR565_LUT_G(num) \
|
||||
(_dither_g16[(((x + num) & 0x3) << 10) | ((y & 0x3) << 8) | ((src[num] >> 8 ) & 0xff)])
|
||||
#define DITHER_RGBA_BGR565_LUT_B(num) \
|
||||
(_dither_b16[(((x + num) & 0x3) << 10) | ((y & 0x3) << 8) | ((src[num] >> 16) & 0xff)])
|
||||
|
||||
#define WRITE1_RGBA_BGR565_DITHER(src, dest) \
|
||||
*dest = (DITHER_RGBA_BGR565_LUT_R(0)) | \
|
||||
(DITHER_RGBA_BGR565_LUT_G(0)) | \
|
||||
(DITHER_RGBA_BGR565_LUT_B(0)); dest++; src++
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define WRITE2_RGBA_BGR565_DITHER(src, dest) \
|
||||
{ \
|
||||
*((DATA32 *)dest) = ((DITHER_RGBA_BGR565_LUT_R(1))) | \
|
||||
((DITHER_RGBA_BGR565_LUT_G(1))) | \
|
||||
((DITHER_RGBA_BGR565_LUT_B(1))) | \
|
||||
((DITHER_RGBA_BGR565_LUT_R(0) << 16)) | \
|
||||
((DITHER_RGBA_BGR565_LUT_G(0) << 16)) | \
|
||||
((DITHER_RGBA_BGR565_LUT_B(0) << 16)); \
|
||||
dest += 2; src += 2; \
|
||||
}
|
||||
#else
|
||||
#define WRITE2_RGBA_BGR565_DITHER(src, dest) \
|
||||
{ \
|
||||
*((DATA32 *)dest) = ((DITHER_RGBA_BGR565_LUT_R(0))) | \
|
||||
((DITHER_RGBA_BGR565_LUT_G(0))) | \
|
||||
((DITHER_RGBA_BGr565_LUT_B(0))) | \
|
||||
((DITHER_RGBA_BGR565_LUT_R(1) << 16)) | \
|
||||
((DITHER_RGBA_BGR565_LUT_G(1) << 16)) | \
|
||||
((DITHER_RGBA_BGR565_LUT_B(1) << 16)); \
|
||||
dest += 2; src += 2; \
|
||||
}
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Actual rendering routines */
|
||||
|
@ -177,6 +242,72 @@ static DATA8 *_dither_b8;
|
|||
}
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
/* MACROS for plain RGBA -> BGR555 conversion */
|
||||
#define WRITE1_RGBA_BGR555(src, dest) \
|
||||
*dest = ((*src << 7) & 0x7c00) | \
|
||||
((*src >> 6) & 0x3e0) | \
|
||||
((*src >> 19)& 0x1f); dest++; src++
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define WRITE2_RGBA_BGR555(src, dest) \
|
||||
{ \
|
||||
*((DATA32 *)dest) = ((src[1] << 7) & 0x7c00) | \
|
||||
((src[1] >> 6) & 0x3e0) | \
|
||||
((src[1] >> 19)& 0x1f) | \
|
||||
((src[0] << 23) & 0x7c000000) | \
|
||||
((src[0] << 10) & 0x3e00000) | \
|
||||
((src[0] >> 3) & 0x1f0000); \
|
||||
dest += 2; src += 2; \
|
||||
}
|
||||
#else
|
||||
#define WRITE2_RGBA_BGR555(src, dest) \
|
||||
{ \
|
||||
*((DATA32 *)dest) = ((src[0] << 7) & 0x7c00) | \
|
||||
((src[0] >> 6) & 0x3e0) | \
|
||||
((src[0] >> 19)& 0x1f) | \
|
||||
((src[1] << 23) & 0x7c000000) | \
|
||||
((src[1] << 10) & 0x3e00000) | \
|
||||
((src[1] >> 3) & 0x1f0000); \
|
||||
dest += 2; src += 2; \
|
||||
}
|
||||
#endif
|
||||
/*****************************************************************************/
|
||||
/* MACROS for dithered RGBA -> BGR555 conversion */
|
||||
#define DITHER_RGBA_BGR555_LUT_R(num) \
|
||||
(_dither_r16[(((x + num) & 0x3) << 10) | ((y & 0x3) << 8) | ((src[num] >> 0 ) & 0xff)])
|
||||
#define DITHER_RGBA_BGR555_LUT_G(num) \
|
||||
(_dither_g16[(((x + num) & 0x3) << 10) | ((y & 0x3) << 8) | ((src[num] >> 8 ) & 0xff)])
|
||||
#define DITHER_RGBA_BGR555_LUT_B(num) \
|
||||
(_dither_b16[(((x + num) & 0x3) << 10) | ((y & 0x3) << 8) | ((src[num] >> 16 ) & 0xff)])
|
||||
|
||||
#define WRITE1_RGBA_BGR555_DITHER(src, dest) \
|
||||
*dest = (DITHER_RGBA_BGR555_LUT_R(0)) | \
|
||||
(DITHER_RGBA_BGR555_LUT_G(0)) | \
|
||||
(DITHER_RGBA_BGR555_LUT_B(0)); dest++; src++
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define WRITE2_RGBA_BGR555_DITHER(src, dest) \
|
||||
{ \
|
||||
*((DATA32 *)dest) = ((DITHER_RGBA_BGR555_LUT_R(1))) | \
|
||||
((DITHER_RGBA_BGR555_LUT_G(1))) | \
|
||||
((DITHER_RGBA_BGR555_LUT_B(1))) | \
|
||||
((DITHER_RGBA_BGR555_LUT_R(0) << 16)) | \
|
||||
((DITHER_RGBA_BGR555_LUT_G(0) << 16)) | \
|
||||
((DITHER_RGBA_BGR555_LUT_B(0) << 16)); \
|
||||
dest += 2; src += 2; \
|
||||
}
|
||||
#else
|
||||
#define WRITE2_RGBA_BGR555_DITHER(src, dest) \
|
||||
{ \
|
||||
*((DATA32 *)dest) = ((DITHER_RGBA_BGR555_LUT_R(0))) | \
|
||||
((DITHER_RGBA_BGR555_LUT_G(0))) | \
|
||||
((DITHER_RGBA_BGR555_LUT_B(0))) | \
|
||||
((DITHER_RGBA_BGR555_LUT_R(1) << 16)) | \
|
||||
((DITHER_RGBA_BGR555_LUT_G(1) << 16)) | \
|
||||
((DITHER_RGBA_BGR555_LUT_B(1) << 16)); \
|
||||
dest += 2; src += 2; \
|
||||
}
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Actual rendering routines */
|
||||
/* RGBA -> RGB332 */
|
||||
|
@ -1585,6 +1716,144 @@ __imlib_RGBA_to_RGB565_dither(DATA32 *src , int src_jump,
|
|||
dy = 0;
|
||||
}
|
||||
|
||||
void
|
||||
__imlib_RGBA_to_BGR565_fast(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy)
|
||||
{
|
||||
int x, y, w, h;
|
||||
|
||||
w = width;
|
||||
h = height;
|
||||
|
||||
if (IS_ALIGNED_32((int)dest))
|
||||
{
|
||||
if (IS_MULTIPLE_2(width))
|
||||
{
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
for (x = 0; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR565(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
w--;
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
for (x = 0; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR565(src, dest);
|
||||
WRITE1_RGBA_BGR565(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IS_MULTIPLE_2(width))
|
||||
{
|
||||
w-=2;
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
WRITE1_RGBA_BGR565(src, dest);
|
||||
for (x = 0; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR565(src, dest);
|
||||
WRITE1_RGBA_BGR565(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
w--;
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
WRITE1_RGBA_BGR565(src, dest);
|
||||
for (x = 0; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR565(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
dx = 0;
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
void
|
||||
__imlib_RGBA_to_BGR565_dither(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy)
|
||||
{
|
||||
int x, y, w, h;
|
||||
|
||||
w = width + dx;
|
||||
h = height + dy;
|
||||
|
||||
if (IS_ALIGNED_32((int)dest))
|
||||
{
|
||||
if (IS_MULTIPLE_2(width))
|
||||
{
|
||||
for (y = dy; y < h; y++)
|
||||
{
|
||||
for (x = dx; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR565_DITHER(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
w--;
|
||||
for (y = dy; y < h; y++)
|
||||
{
|
||||
for (x = dx; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR565_DITHER(src, dest);
|
||||
WRITE1_RGBA_BGR565_DITHER(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IS_MULTIPLE_2(width))
|
||||
{
|
||||
w-=2;
|
||||
for (y = dy; y < h; y++)
|
||||
{
|
||||
x = dx - 1;
|
||||
WRITE1_RGBA_BGR565_DITHER(src, dest);
|
||||
for (x = dx; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR565_DITHER(src, dest);
|
||||
WRITE1_RGBA_BGR565_DITHER(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
w--;
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
x = dx - 1;
|
||||
WRITE1_RGBA_BGR565_DITHER(src, dest);
|
||||
for (x = dx; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR565_DITHER(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
dx = 0;
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
void
|
||||
__imlib_RGBA_to_RGB555_fast(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
|
@ -1723,6 +1992,144 @@ __imlib_RGBA_to_RGB555_dither(DATA32 *src , int src_jump,
|
|||
dy = 0;
|
||||
}
|
||||
|
||||
void
|
||||
__imlib_RGBA_to_BGR555_fast(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy)
|
||||
{
|
||||
int x, y, w, h;
|
||||
|
||||
w = width;
|
||||
h = height;
|
||||
|
||||
if (IS_ALIGNED_32((int)dest))
|
||||
{
|
||||
if (IS_MULTIPLE_2(width))
|
||||
{
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
for (x = 0; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR555(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
w--;
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
for (x = 0; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR555(src, dest);
|
||||
WRITE1_RGBA_BGR555(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IS_MULTIPLE_2(width))
|
||||
{
|
||||
w-=2;
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
WRITE1_RGBA_BGR555(src, dest);
|
||||
for (x = 0; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR555(src, dest);
|
||||
WRITE1_RGBA_BGR555(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
w--;
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
WRITE1_RGBA_BGR555(src, dest);
|
||||
for (x = 0; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR555(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
dx = 0;
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
void
|
||||
__imlib_RGBA_to_BGR555_dither(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy)
|
||||
{
|
||||
int x, y, w, h;
|
||||
|
||||
w = width + dx;
|
||||
h = height + dy;
|
||||
|
||||
if (IS_ALIGNED_32((int)dest))
|
||||
{
|
||||
if (IS_MULTIPLE_2(width))
|
||||
{
|
||||
for (y = dy; y < h; y++)
|
||||
{
|
||||
for (x = dx; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR555_DITHER(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
w--;
|
||||
for (y = dy; y < h; y++)
|
||||
{
|
||||
for (x = dx; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR555_DITHER(src, dest);
|
||||
WRITE1_RGBA_BGR555_DITHER(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IS_MULTIPLE_2(width))
|
||||
{
|
||||
w-=2;
|
||||
for (y = dy; y < h; y++)
|
||||
{
|
||||
x = dx - 1;
|
||||
WRITE1_RGBA_BGR555_DITHER(src, dest);
|
||||
for (x = dx; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR555_DITHER(src, dest);
|
||||
WRITE1_RGBA_BGR555_DITHER(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
w--;
|
||||
for (y = dy; y < h; y++)
|
||||
{
|
||||
x = dx - 1;
|
||||
WRITE1_RGBA_BGR555_DITHER(src, dest);
|
||||
for (x = dx; x < w; x+=2)
|
||||
WRITE2_RGBA_BGR555_DITHER(src, dest);
|
||||
src += src_jump;
|
||||
dest += dest_jump;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
dx = 0;
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
void
|
||||
__imlib_RGBA_to_RGB332_fast(DATA32 *src , int src_jump,
|
||||
DATA8 *dest, int dest_jump,
|
||||
|
|
12
src/rgba.h
12
src/rgba.h
|
@ -16,6 +16,18 @@ void __imlib_RGBA_to_RGB555_fast(DATA32 *src , int src_jump,
|
|||
void __imlib_RGBA_to_RGB555_dither(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy);
|
||||
void __imlib_RGBA_to_BGR565_fast(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy);
|
||||
void __imlib_RGBA_to_BGR565_dither(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy);
|
||||
void __imlib_RGBA_to_BGR555_fast(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy);
|
||||
void __imlib_RGBA_to_BGR555_dither(DATA32 *src , int src_jump,
|
||||
DATA16 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy);
|
||||
void __imlib_RGBA_to_RGB332_fast(DATA32 *src , int src_jump,
|
||||
DATA8 *dest, int dest_jump,
|
||||
int width, int height, int dx, int dy);
|
||||
|
|
71
test/main.c
71
test/main.c
|
@ -131,20 +131,23 @@ int main (int argc, char **argv)
|
|||
file = argv[i];
|
||||
}
|
||||
printf("init\n");
|
||||
disp = XOpenDisplay(NULL);
|
||||
vis = DefaultVisual(disp, DefaultScreen(disp));
|
||||
depth = DefaultDepth(disp, DefaultScreen(disp));
|
||||
cm = DefaultColormap(disp, DefaultScreen(disp));
|
||||
/* nasty - using imlib internal function.. but it makes benchmarks fair */
|
||||
if (!interactive)
|
||||
__imlib_SetMaxXImageCount(disp, 3);
|
||||
if (root)
|
||||
win = DefaultRootWindow(disp);
|
||||
else
|
||||
if (!blendtest)
|
||||
{
|
||||
win = XCreateSimpleWindow(disp, DefaultRootWindow(disp), 0, 0, 10, 10, 0, 0, 0);
|
||||
XSelectInput(disp, win, ButtonPressMask | ButtonReleaseMask |
|
||||
ButtonMotionMask | PointerMotionMask | ExposureMask);
|
||||
disp = XOpenDisplay(NULL);
|
||||
vis = DefaultVisual(disp, DefaultScreen(disp));
|
||||
depth = DefaultDepth(disp, DefaultScreen(disp));
|
||||
cm = DefaultColormap(disp, DefaultScreen(disp));
|
||||
/* nasty - using imlib internal function.. but it makes benchmarks fair */
|
||||
if (!interactive)
|
||||
__imlib_SetMaxXImageCount(disp, 3);
|
||||
if (root)
|
||||
win = DefaultRootWindow(disp);
|
||||
else
|
||||
{
|
||||
win = XCreateSimpleWindow(disp, DefaultRootWindow(disp), 0, 0, 10, 10, 0, 0, 0);
|
||||
XSelectInput(disp, win, ButtonPressMask | ButtonReleaseMask |
|
||||
ButtonMotionMask | PointerMotionMask | ExposureMask);
|
||||
}
|
||||
}
|
||||
if (!interactive)
|
||||
{
|
||||
|
@ -158,28 +161,34 @@ int main (int argc, char **argv)
|
|||
w = imlib_image_get_width();
|
||||
h = imlib_image_get_height();
|
||||
}
|
||||
if (!root)
|
||||
if (!blendtest)
|
||||
{
|
||||
XResizeWindow(disp, win, w, h);
|
||||
XMapWindow(disp, win);
|
||||
if (!root)
|
||||
{
|
||||
XResizeWindow(disp, win, w, h);
|
||||
XMapWindow(disp, win);
|
||||
}
|
||||
if (scale)
|
||||
{
|
||||
Window d;
|
||||
int dd;
|
||||
|
||||
XGetGeometry(disp, win, &d, &dd, &dd, &w, &h, &dd, &dd);
|
||||
}
|
||||
XSync(disp, False);
|
||||
}
|
||||
if (scale)
|
||||
{
|
||||
Window d;
|
||||
int dd;
|
||||
|
||||
XGetGeometry(disp, win, &d, &dd, &dd, &w, &h, &dd, &dd);
|
||||
}
|
||||
XSync(disp, False);
|
||||
printf("rend\n");
|
||||
gettimeofday(&timev,NULL);
|
||||
sec1=(int)timev.tv_sec; /* and stores it so we can time outselves */
|
||||
usec1=(int)timev.tv_usec; /* we will use this to vary speed of rot */
|
||||
|
||||
imlib_context_set_display(disp);
|
||||
imlib_context_set_visual(vis);
|
||||
imlib_context_set_colormap(cm);
|
||||
imlib_context_set_drawable(win);
|
||||
if (!blendtest)
|
||||
{
|
||||
imlib_context_set_display(disp);
|
||||
imlib_context_set_visual(vis);
|
||||
imlib_context_set_colormap(cm);
|
||||
imlib_context_set_drawable(win);
|
||||
}
|
||||
imlib_context_set_anti_alias(aa);
|
||||
imlib_context_set_dither(dith);
|
||||
imlib_context_set_blend(blend);
|
||||
|
@ -204,10 +213,10 @@ int main (int argc, char **argv)
|
|||
imlib_context_set_image(im2);
|
||||
w = imlib_image_get_width();
|
||||
h = imlib_image_get_height();
|
||||
imlib_context_set_image(im);
|
||||
for (i = 0; i < 1024; i++)
|
||||
imlib_context_set_image(im2);
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
imlib_blend_image_onto_image(im2, 0, 0, 0, w, h, 0, 0, w, h);
|
||||
imlib_blend_image_onto_image(im, 0, 0, 0, w, h, 0, 0, w, h);
|
||||
pixels += (w * h);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue