parent
9fce1f5580
commit
69c726a9cf
209
src/color.c
209
src/color.c
|
@ -46,7 +46,7 @@ __imlib_BestVisual(Display *d, int screen, int *depth_return)
|
|||
{
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
if ((xvir[i].depth == 8) &&
|
||||
if ((xvir[i].depth > 1) &&
|
||||
(xvir[i].depth >= maxd) &&
|
||||
(xvi.class == PseudoColor))
|
||||
{
|
||||
|
@ -63,62 +63,70 @@ __imlib_BestVisual(Display *d, int screen, int *depth_return)
|
|||
XFree(xvir);
|
||||
}
|
||||
}
|
||||
printf("%x\n", v->visualid);
|
||||
if (depth_return)
|
||||
*depth_return = maxd;
|
||||
return v;
|
||||
}
|
||||
|
||||
DATA8 *
|
||||
__imlib_AllocColorTable(Display *d, Colormap cmap, DATA8 *type_return)
|
||||
__imlib_AllocColorTable(Display *d, Colormap cmap, DATA8 *type_return, Visual *v)
|
||||
{
|
||||
DATA8 *color_lut = NULL;
|
||||
|
||||
if ((_max_colors >= 256) && (color_lut = __imlib_AllocColors332(d, cmap)))
|
||||
|
||||
if (v->bits_per_rgb > 1)
|
||||
{
|
||||
if ((_max_colors >= 256) && (color_lut = __imlib_AllocColors332(d, cmap, v)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 216) && (color_lut = __imlib_AllocColors666(d, cmap, v)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 128) && (color_lut = __imlib_AllocColors232(d, cmap, v)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 64) && (color_lut = __imlib_AllocColors222(d, cmap, v)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 32) && (color_lut = __imlib_AllocColors221(d, cmap, v)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 16) && (color_lut = __imlib_AllocColors121(d, cmap, v)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
}
|
||||
if ((_max_colors >= 8) && (color_lut = __imlib_AllocColors111(d, cmap, v)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 216) && (color_lut = __imlib_AllocColors666(d, cmap)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 128) && (color_lut = __imlib_AllocColors232(d, cmap)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 64) && (color_lut = __imlib_AllocColors222(d, cmap)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 32) && (color_lut = __imlib_AllocColors221(d, cmap)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 16) && (color_lut = __imlib_AllocColors121(d, cmap)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
if ((_max_colors >= 8) && (color_lut = __imlib_AllocColors111(d, cmap)))
|
||||
{
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
color_lut = __imlib_AllocColors1(d, cmap);
|
||||
color_lut = __imlib_AllocColors1(d, cmap, v);
|
||||
*type_return = _pal_type;
|
||||
return color_lut;
|
||||
}
|
||||
|
||||
DATA8 *
|
||||
__imlib_AllocColors332(Display *d, Colormap cmap)
|
||||
__imlib_AllocColors332(Display *d, Colormap cmap, Visual *v)
|
||||
{
|
||||
int r, g, b, i = 0;
|
||||
int r, g, b, i;
|
||||
DATA8 *color_lut;
|
||||
|
||||
int sig_mask = 0;
|
||||
|
||||
for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i);
|
||||
sig_mask <<= (16 - v->bits_per_rgb);
|
||||
i = 0;
|
||||
color_lut = malloc(256 * sizeof(DATA8));
|
||||
for (r = 0; r < 8; r++)
|
||||
{
|
||||
|
@ -127,7 +135,9 @@ __imlib_AllocColors332(Display *d, Colormap cmap)
|
|||
for (b = 0; b < 4; b++)
|
||||
{
|
||||
XColor xcl;
|
||||
XColor xcl_in;
|
||||
int val;
|
||||
Status ret;
|
||||
|
||||
val = (r << 6) | (r << 3) | (r);
|
||||
xcl.red = (unsigned short)((val << 7) | (val >> 2));
|
||||
|
@ -135,7 +145,12 @@ __imlib_AllocColors332(Display *d, Colormap cmap)
|
|||
xcl.green = (unsigned short)((val << 7) | (val >> 2));
|
||||
val = (b << 6) | (b << 4) | (b << 2) | (b);
|
||||
xcl.blue = (unsigned short)((val << 8) | (val));
|
||||
if (!XAllocColor(d, cmap, &xcl))
|
||||
xcl_in = xcl;
|
||||
ret = XAllocColor(d, cmap, &xcl);
|
||||
if ((ret == Success) ||
|
||||
((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) ||
|
||||
((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
|
||||
((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask)))
|
||||
{
|
||||
unsigned long pixels[256];
|
||||
int j;
|
||||
|
@ -159,11 +174,15 @@ __imlib_AllocColors332(Display *d, Colormap cmap)
|
|||
}
|
||||
|
||||
DATA8 *
|
||||
__imlib_AllocColors666(Display *d, Colormap cmap)
|
||||
__imlib_AllocColors666(Display *d, Colormap cmap, Visual *v)
|
||||
{
|
||||
int r, g, b, i = 0;
|
||||
int r, g, b, i;
|
||||
DATA8 *color_lut;
|
||||
|
||||
int sig_mask = 0;
|
||||
|
||||
for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i);
|
||||
sig_mask <<= (16 - v->bits_per_rgb);
|
||||
i = 0;
|
||||
color_lut = malloc(256 * sizeof(DATA8));
|
||||
for (r = 0; r < 6; r++)
|
||||
{
|
||||
|
@ -172,7 +191,9 @@ __imlib_AllocColors666(Display *d, Colormap cmap)
|
|||
for (b = 0; b < 6; b++)
|
||||
{
|
||||
XColor xcl;
|
||||
XColor xcl_in;
|
||||
int val;
|
||||
Status ret;
|
||||
|
||||
val = (int)((((double)r) / 5.0) * 65535);
|
||||
xcl.red = (unsigned short)(val);
|
||||
|
@ -180,7 +201,12 @@ __imlib_AllocColors666(Display *d, Colormap cmap)
|
|||
xcl.green = (unsigned short)(val);
|
||||
val = (int)((((double)b) / 5.0) * 65535);
|
||||
xcl.blue = (unsigned short)(val);
|
||||
if (!XAllocColor(d, cmap, &xcl))
|
||||
xcl_in = xcl;
|
||||
ret = XAllocColor(d, cmap, &xcl);
|
||||
if ((ret == Success) ||
|
||||
((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) ||
|
||||
((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
|
||||
((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask)))
|
||||
{
|
||||
unsigned long pixels[256];
|
||||
int j;
|
||||
|
@ -204,11 +230,15 @@ __imlib_AllocColors666(Display *d, Colormap cmap)
|
|||
}
|
||||
|
||||
DATA8 *
|
||||
__imlib_AllocColors232(Display *d, Colormap cmap)
|
||||
__imlib_AllocColors232(Display *d, Colormap cmap, Visual *v)
|
||||
{
|
||||
int r, g, b, i = 0;
|
||||
int r, g, b, i;
|
||||
DATA8 *color_lut;
|
||||
|
||||
int sig_mask = 0;
|
||||
|
||||
for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i);
|
||||
sig_mask <<= (16 - v->bits_per_rgb);
|
||||
i = 0;
|
||||
color_lut = malloc(128 * sizeof(DATA8));
|
||||
for (r = 0; r < 4; r++)
|
||||
{
|
||||
|
@ -217,7 +247,9 @@ __imlib_AllocColors232(Display *d, Colormap cmap)
|
|||
for (b = 0; b < 4; b++)
|
||||
{
|
||||
XColor xcl;
|
||||
XColor xcl_in;
|
||||
int val;
|
||||
Status ret;
|
||||
|
||||
val = (r << 6) | (r << 4) | (r << 2) | (r);
|
||||
xcl.red = (unsigned short)((val << 8) | (val));
|
||||
|
@ -225,7 +257,12 @@ __imlib_AllocColors232(Display *d, Colormap cmap)
|
|||
xcl.green = (unsigned short)((val << 7) | (val >> 2));
|
||||
val = (b << 6) | (b << 4) | (b << 2) | (b);
|
||||
xcl.blue = (unsigned short)((val << 8) | (val));
|
||||
if (!XAllocColor(d, cmap, &xcl))
|
||||
xcl_in = xcl;
|
||||
ret = XAllocColor(d, cmap, &xcl);
|
||||
if ((ret == Success) ||
|
||||
((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) ||
|
||||
((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
|
||||
((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask)))
|
||||
{
|
||||
unsigned long pixels[256];
|
||||
int j;
|
||||
|
@ -249,11 +286,15 @@ __imlib_AllocColors232(Display *d, Colormap cmap)
|
|||
}
|
||||
|
||||
DATA8 *
|
||||
__imlib_AllocColors222(Display *d, Colormap cmap)
|
||||
__imlib_AllocColors222(Display *d, Colormap cmap, Visual *v)
|
||||
{
|
||||
int r, g, b, i = 0;
|
||||
int r, g, b, i;
|
||||
DATA8 *color_lut;
|
||||
|
||||
int sig_mask = 0;
|
||||
|
||||
for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i);
|
||||
sig_mask <<= (16 - v->bits_per_rgb);
|
||||
i = 0;
|
||||
color_lut = malloc(64 * sizeof(DATA8));
|
||||
for (r = 0; r < 4; r++)
|
||||
{
|
||||
|
@ -262,7 +303,9 @@ __imlib_AllocColors222(Display *d, Colormap cmap)
|
|||
for (b = 0; b < 4; b++)
|
||||
{
|
||||
XColor xcl;
|
||||
XColor xcl_in;
|
||||
int val;
|
||||
Status ret;
|
||||
|
||||
val = (r << 6) | (r << 4) | (r << 2) | (r);
|
||||
xcl.red = (unsigned short)((val << 8) | (val));
|
||||
|
@ -270,7 +313,12 @@ __imlib_AllocColors222(Display *d, Colormap cmap)
|
|||
xcl.green = (unsigned short)((val << 8) | (val));
|
||||
val = (b << 6) | (b << 4) | (b << 2) | (b);
|
||||
xcl.blue = (unsigned short)((val << 8) | (val));
|
||||
if (!XAllocColor(d, cmap, &xcl))
|
||||
xcl_in = xcl;
|
||||
ret = XAllocColor(d, cmap, &xcl);
|
||||
if ((ret == Success) ||
|
||||
((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) ||
|
||||
((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
|
||||
((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask)))
|
||||
{
|
||||
unsigned long pixels[256];
|
||||
int j;
|
||||
|
@ -294,11 +342,15 @@ __imlib_AllocColors222(Display *d, Colormap cmap)
|
|||
}
|
||||
|
||||
DATA8 *
|
||||
__imlib_AllocColors221(Display *d, Colormap cmap)
|
||||
__imlib_AllocColors221(Display *d, Colormap cmap, Visual *v)
|
||||
{
|
||||
int r, g, b, i = 0;
|
||||
int r, g, b, i;
|
||||
DATA8 *color_lut;
|
||||
|
||||
int sig_mask = 0;
|
||||
|
||||
for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i);
|
||||
sig_mask <<= (16 - v->bits_per_rgb);
|
||||
i = 0;
|
||||
color_lut = malloc(32 * sizeof(DATA8));
|
||||
for (r = 0; r < 4; r++)
|
||||
{
|
||||
|
@ -307,7 +359,9 @@ __imlib_AllocColors221(Display *d, Colormap cmap)
|
|||
for (b = 0; b < 2; b++)
|
||||
{
|
||||
XColor xcl;
|
||||
XColor xcl_in;
|
||||
int val;
|
||||
Status ret;
|
||||
|
||||
val = (r << 6) | (r << 4) | (r << 2) | (r);
|
||||
xcl.red = (unsigned short)((val << 8) | (val));
|
||||
|
@ -315,7 +369,12 @@ __imlib_AllocColors221(Display *d, Colormap cmap)
|
|||
xcl.green = (unsigned short)((val << 8) | (val));
|
||||
val = (b << 7) | (b << 6) | (b << 5) | (b << 4) | (b << 3) | (b << 2) | (b << 1) | (b);
|
||||
xcl.blue = (unsigned short)((val << 8) | (val));
|
||||
if (!XAllocColor(d, cmap, &xcl))
|
||||
xcl_in = xcl;
|
||||
ret = XAllocColor(d, cmap, &xcl);
|
||||
if ((ret == Success) ||
|
||||
((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) ||
|
||||
((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
|
||||
((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask)))
|
||||
{
|
||||
unsigned long pixels[256];
|
||||
int j;
|
||||
|
@ -339,11 +398,15 @@ __imlib_AllocColors221(Display *d, Colormap cmap)
|
|||
}
|
||||
|
||||
DATA8 *
|
||||
__imlib_AllocColors121(Display *d, Colormap cmap)
|
||||
__imlib_AllocColors121(Display *d, Colormap cmap, Visual *v)
|
||||
{
|
||||
int r, g, b, i = 0;
|
||||
int r, g, b, i;
|
||||
DATA8 *color_lut;
|
||||
|
||||
int sig_mask = 0;
|
||||
|
||||
for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i);
|
||||
sig_mask <<= (16 - v->bits_per_rgb);
|
||||
i = 0;
|
||||
color_lut = malloc(16 * sizeof(DATA8));
|
||||
for (r = 0; r < 2; r++)
|
||||
{
|
||||
|
@ -352,7 +415,9 @@ __imlib_AllocColors121(Display *d, Colormap cmap)
|
|||
for (b = 0; b < 2; b++)
|
||||
{
|
||||
XColor xcl;
|
||||
XColor xcl_in;
|
||||
int val;
|
||||
Status ret;
|
||||
|
||||
val = (r << 7) | (r << 6) | (r << 5) | (r << 4) | (r << 3) | (r << 2) | (r << 1) | (r);
|
||||
xcl.red = (unsigned short)((val << 8) | (val));
|
||||
|
@ -360,7 +425,12 @@ __imlib_AllocColors121(Display *d, Colormap cmap)
|
|||
xcl.green = (unsigned short)((val << 8) | (val));
|
||||
val = (b << 7) | (b << 6) | (b << 5) | (b << 4) | (b << 3) | (b << 2) | (b << 1) | (b);
|
||||
xcl.blue = (unsigned short)((val << 8) | (val));
|
||||
if (!XAllocColor(d, cmap, &xcl))
|
||||
xcl_in = xcl;
|
||||
ret = XAllocColor(d, cmap, &xcl);
|
||||
if ((ret == Success) ||
|
||||
((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) ||
|
||||
((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
|
||||
((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask)))
|
||||
{
|
||||
unsigned long pixels[256];
|
||||
int j;
|
||||
|
@ -384,11 +454,15 @@ __imlib_AllocColors121(Display *d, Colormap cmap)
|
|||
}
|
||||
|
||||
DATA8 *
|
||||
__imlib_AllocColors111(Display *d, Colormap cmap)
|
||||
__imlib_AllocColors111(Display *d, Colormap cmap, Visual *v)
|
||||
{
|
||||
int r, g, b, i = 0;
|
||||
int r, g, b, i ;
|
||||
DATA8 *color_lut;
|
||||
|
||||
int sig_mask = 0;
|
||||
|
||||
for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i);
|
||||
sig_mask <<= (16 - v->bits_per_rgb);
|
||||
i = 0;
|
||||
color_lut = malloc(8 * sizeof(DATA8));
|
||||
for (r = 0; r < 2; r++)
|
||||
{
|
||||
|
@ -397,7 +471,9 @@ __imlib_AllocColors111(Display *d, Colormap cmap)
|
|||
for (b = 0; b < 2; b++)
|
||||
{
|
||||
XColor xcl;
|
||||
XColor xcl_in;
|
||||
int val;
|
||||
Status ret;
|
||||
|
||||
val = (r << 7) | (r << 6) | (r << 5) | (r << 4) | (r << 3) | (r << 2) | (r << 1) | (r);
|
||||
xcl.red = (unsigned short)((val << 8) | (val));
|
||||
|
@ -405,7 +481,12 @@ __imlib_AllocColors111(Display *d, Colormap cmap)
|
|||
xcl.green = (unsigned short)((val << 8) | (val));
|
||||
val = (b << 7) | (b << 6) | (b << 5) | (b << 4) | (b << 3) | (b << 2) | (b << 1) | (b);
|
||||
xcl.blue = (unsigned short)((val << 8) | (val));
|
||||
if (!XAllocColor(d, cmap, &xcl))
|
||||
xcl_in = xcl;
|
||||
ret = XAllocColor(d, cmap, &xcl);
|
||||
if ((ret == Success) ||
|
||||
((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) ||
|
||||
((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
|
||||
((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask)))
|
||||
{
|
||||
unsigned long pixels[256];
|
||||
int j;
|
||||
|
@ -429,7 +510,7 @@ __imlib_AllocColors111(Display *d, Colormap cmap)
|
|||
}
|
||||
|
||||
DATA8 *
|
||||
__imlib_AllocColors1(Display *d, Colormap cmap)
|
||||
__imlib_AllocColors1(Display *d, Colormap cmap, Visual *v)
|
||||
{
|
||||
XColor xcl;
|
||||
DATA8 *color_lut;
|
||||
|
|
18
src/color.h
18
src/color.h
|
@ -4,13 +4,13 @@ extern DATA16 _max_colors;
|
|||
|
||||
int __imlib_XActualDepth(Display *d, Visual *v);
|
||||
Visual *__imlib_BestVisual(Display *d, int screen, int *depth_return);
|
||||
DATA8 * __imlib_AllocColorTable(Display *d, Colormap cmap, DATA8 *type_return);
|
||||
DATA8 * __imlib_AllocColors332(Display *d, Colormap cmap);
|
||||
DATA8 * __imlib_AllocColors666(Display *d, Colormap cmap);
|
||||
DATA8 * __imlib_AllocColors232(Display *d, Colormap cmap);
|
||||
DATA8 * __imlib_AllocColors222(Display *d, Colormap cmap);
|
||||
DATA8 * __imlib_AllocColors221(Display *d, Colormap cmap);
|
||||
DATA8 * __imlib_AllocColors121(Display *d, Colormap cmap);
|
||||
DATA8 * __imlib_AllocColors111(Display *d, Colormap cmap);
|
||||
DATA8 * __imlib_AllocColors1(Display *d, Colormap cmap);
|
||||
DATA8 * __imlib_AllocColorTable(Display *d, Colormap cmap, DATA8 *type_return, Visual *v);
|
||||
DATA8 * __imlib_AllocColors332(Display *d, Colormap cmap, Visual *v);
|
||||
DATA8 * __imlib_AllocColors666(Display *d, Colormap cmap, Visual *v);
|
||||
DATA8 * __imlib_AllocColors232(Display *d, Colormap cmap, Visual *v);
|
||||
DATA8 * __imlib_AllocColors222(Display *d, Colormap cmap, Visual *v);
|
||||
DATA8 * __imlib_AllocColors221(Display *d, Colormap cmap, Visual *v);
|
||||
DATA8 * __imlib_AllocColors121(Display *d, Colormap cmap, Visual *v);
|
||||
DATA8 * __imlib_AllocColors111(Display *d, Colormap cmap, Visual *v);
|
||||
DATA8 * __imlib_AllocColors1(Display *d, Colormap cmap, Visual *v);
|
||||
#endif
|
||||
|
|
|
@ -156,7 +156,7 @@ __imlib_NewContext(Display *d, Visual *v, Colormap c, int depth)
|
|||
|
||||
if (depth <= 8)
|
||||
{
|
||||
ct->palette = __imlib_AllocColorTable(d, c, &(ct->palette_type));
|
||||
ct->palette = __imlib_AllocColorTable(d, c, &(ct->palette_type), v);
|
||||
ct->r_dither = malloc(sizeof(DATA8) * 8 * 8 * 256);
|
||||
ct->g_dither = malloc(sizeof(DATA8) * 8 * 8 * 256);
|
||||
ct->b_dither = malloc(sizeof(DATA8) * 8 * 8 * 256);
|
||||
|
|
34
src/rend.c
34
src/rend.c
|
@ -19,12 +19,42 @@
|
|||
|
||||
void
|
||||
__imlib_generic_render(DATA32 *src, int jump, int w, int h, int dx, int dy,
|
||||
XImage *xim, Visual *v)
|
||||
XImage *xim, Visual *v, Context *ct)
|
||||
{
|
||||
unsigned int x, y, r, g, b, val, hh;
|
||||
unsigned int rmask, gmask, bmask;
|
||||
int i, rshift, gshift, bshift;
|
||||
const DATA8 _dither_88[8][8] =
|
||||
{
|
||||
{ 0, 32, 8, 40, 2, 34, 10, 42 },
|
||||
{ 48, 16, 56, 24, 50, 18, 58, 26 },
|
||||
{ 12, 44, 4, 36, 14, 46, 6, 38 },
|
||||
{ 60, 28, 52, 20, 62, 30, 54, 22 },
|
||||
{ 3, 35, 11, 43, 1, 33, 9, 41 },
|
||||
{ 51, 19, 59, 27, 49, 17, 57, 25 },
|
||||
{ 15, 47, 7, 39, 13, 45, 5, 37 },
|
||||
{ 63, 31, 55, 23, 61, 29, 53, 21 }
|
||||
};
|
||||
|
||||
if (xim->depth == 1)
|
||||
{
|
||||
hh = dy + h;
|
||||
for (y = dy; y < hh; y++)
|
||||
{
|
||||
for (x = dx; x < w; x++)
|
||||
{
|
||||
r = R_VAL(src);
|
||||
g = G_VAL(src);
|
||||
b = B_VAL(src);
|
||||
val = (R_VAL(src) + G_VAL(src) + B_VAL(src)) / 12;
|
||||
if (val > _dither_88[x & 0x3][y & 0x3]) val = ct->palette[1];
|
||||
else val = ct->palette[0];
|
||||
XPutPixel(xim, x, y, val);
|
||||
src++;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
rmask = xim->red_mask;
|
||||
gmask = xim->green_mask;
|
||||
bmask = xim->blue_mask;
|
||||
|
@ -290,7 +320,7 @@ __imlib_RenderImage(Display *d, ImlibImage *im,
|
|||
((DATA8 *)xim->data) + (y * (xim->bytes_per_line)),
|
||||
xim->bytes_per_line, dw, hh, dx, dy + y);
|
||||
else
|
||||
__imlib_generic_render(pointer, jump, dw, hh, 0, y, xim, v);
|
||||
__imlib_generic_render(pointer, jump, dw, hh, 0, y, xim, v, ct);
|
||||
if (m)
|
||||
masker(pointer, jump,
|
||||
((DATA8 *)mxim->data) + (y * (mxim->bytes_per_line)),
|
||||
|
|
11
src/rgba.c
11
src/rgba.c
|
@ -1166,12 +1166,12 @@ static DATA8 _dither_a1[8 * 8 * 256];
|
|||
#define RGB111_RSHIFT >> 21
|
||||
#define RGB111_BMASK & 0x01
|
||||
#define RGB111_GMASK & 0x02
|
||||
#define RGB111_RMASK & 0x30
|
||||
#define RGB111_RMASK & 0x04
|
||||
|
||||
#define WRITE1_RGBA_RGB111(src, dest) \
|
||||
*dest = _dither_color_lut[((*src RGB111_BSHIFT) RGB111_BMASK) | \
|
||||
((*src RGB111_GSHIFT) RGB111_GMASK) | \
|
||||
((*src RGB111_RSHIFT) RGB111_RMASK)]; dest++; src++
|
||||
((*src RGB111_RSHIFT) RGB111_RMASK)]; dest++; src++
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define WRITE2_RGBA_RGB111(src, dest) \
|
||||
{ \
|
||||
|
@ -1450,7 +1450,7 @@ __imlib_RGBA_init(void *rd, void *gd, void *bd, int depth, DATA8 palette_type)
|
|||
{ 63, 31, 55, 23, 61, 29, 53, 21 }
|
||||
};
|
||||
int i, x, y;
|
||||
|
||||
|
||||
if (!dither_a_init)
|
||||
{
|
||||
for (y = 0; y < 8; y++)
|
||||
|
@ -1529,7 +1529,7 @@ __imlib_RGBA_init(void *rd, void *gd, void *bd, int depth, DATA8 palette_type)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
default:
|
||||
rd8 = (DATA8 *)rd;
|
||||
gd8 = (DATA8 *)gd;
|
||||
bd8 = (DATA8 *)bd;
|
||||
|
@ -1775,8 +1775,6 @@ __imlib_RGBA_init(void *rd, void *gd, void *bd, int depth, DATA8 palette_type)
|
|||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3892,7 +3890,6 @@ __imlib_GetRGBAFunction(int depth,
|
|||
return __imlib_RGBA_to_RGB666_fast;
|
||||
}
|
||||
}
|
||||
printf("Imlib2: unknown depth %i\n", depth);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue