Simplify image alpha usage.

Values are now in 0-32 (inclusive), so we must check for 32 as the
opaque value. Now it's more consistent.


SVN revision: 32163
This commit is contained in:
Gustavo Sverzut Barbieri 2007-10-25 18:56:23 +00:00
parent e12c298619
commit 00cd7a6404
4 changed files with 21 additions and 18 deletions

View File

@ -142,14 +142,15 @@ static inline void
_soft16_convert_from_rgba_pt(const DATA32 *src, DATA16 *dst, DATA8 *alpha,
const int x, const int y)
{
DATA8 orig_r, orig_g, orig_b, orig_a;
DATA8 orig_r, orig_g, orig_b, orig_a, a;
orig_r = R_VAL(src);
orig_g = G_VAL(src);
orig_b = B_VAL(src);
orig_a = A_VAL(src);
a = orig_a >> 3;
if (orig_a == 255)
if (a == 31)
{
DATA8 dith5, dith6, dith, r, g, b;
@ -166,23 +167,22 @@ _soft16_convert_from_rgba_pt(const DATA32 *src, DATA16 *dst, DATA8 *alpha,
if (((orig_b - (b << 3)) >= dith5) && (b < 0x1f)) b++;
*dst = (r << 11) | (g << 5) | b;
*alpha = 31;
*alpha = 32;
}
else if (orig_a == 0)
else if (a == 0)
{
*dst = 0;
*alpha = 0;
}
else
{
DATA8 r, g, b, a;
DATA8 r, g, b;
r = orig_r >> 3;
g = orig_g >> 2;
b = orig_b >> 3;
a = (orig_a >> 3) + 1;
*dst = (r << 11) | (g << 5) | b;
*alpha = a;
*alpha = a + 1;
}
}

View File

@ -234,7 +234,7 @@ _soft16_image_draw_scaled_solid_solid_mul_color(Soft16_Image *src,
dst_itr = dst->pixels + dst_offset;
if (alpha == 31)
if (alpha == 32)
for (y = 0; y < h; y++, dst_itr += dst->stride)
{
DATA16 *d, *s;
@ -310,7 +310,7 @@ _soft16_image_draw_scaled_transp_solid_mul_color(Soft16_Image *src,
dst_itr = dst->pixels + dst_offset;
if (alpha == 31)
if (alpha == 32)
for (y = 0; y < h; y++, dst_itr += dst->stride)
{
DATA16 *d, *s;
@ -407,7 +407,7 @@ _soft16_image_draw_scaled_mul(Soft16_Image *src, Soft16_Image *dst,
int *offset_x, int *offset_y, DATA8 r, DATA8 g,
DATA8 b, DATA8 a)
{
if ((a == r) && (a == (g >> 1)) && (a == b))
if ((r == b) && (r == (g >> 1)) && (r == (a - 1)))
_soft16_image_draw_scaled_mul_alpha
(src, dst, dc, dst_offset, w, h, offset_x, offset_y, a);
else
@ -428,7 +428,8 @@ soft16_image_draw_scaled_sampled(Soft16_Image *src, Soft16_Image *dst,
if (!dc->mul.use)
{
r = b = a = 31;
a = 32;
r = b = 31;
g = 63;
mul_rgb565 = 0xffff;
}
@ -445,6 +446,7 @@ soft16_image_draw_scaled_sampled(Soft16_Image *src, Soft16_Image *dst,
if (r > a) r = a;
if (g > (a << 1)) g = (a << 1);
if (b > a) b = a;
a++;
mul_rgb565 = (r << 11) || (g << 5) | b;
}
@ -461,7 +463,6 @@ soft16_image_draw_scaled_sampled(Soft16_Image *src, Soft16_Image *dst,
dst_offset = cr.x + (cr.y * dst->stride);
if (mul_rgb565 == 0xffff)
_soft16_image_draw_scaled_no_mul
(src, dst, dc, dst_offset, cr.w, cr.h, offset_x, offset_y);

View File

@ -149,7 +149,7 @@ _soft16_image_draw_unscaled_solid_solid_mul_color(Soft16_Image *src,
src_itr = src->pixels + src_offset;
dst_itr = dst->pixels + dst_offset;
if (a == 31)
if (a == 32)
for (y = 0; y < h; y++)
{
_soft16_scanline_blend_solid_solid_mul_color_solid
@ -185,7 +185,7 @@ _soft16_image_draw_unscaled_transp_solid_mul_color(Soft16_Image *src,
alpha_itr = src->alpha + src_offset;
dst_itr = dst->pixels + dst_offset;
if (a == 31)
if (a == 32)
for (y = 0; y < h; y++)
{
_soft16_scanline_blend_transp_solid_mul_color_solid
@ -232,7 +232,7 @@ _soft16_image_draw_unscaled_mul(Soft16_Image *src, Soft16_Image *dst,
int width, int height, DATA8 r, DATA8 g,
DATA8 b, DATA8 a)
{
if ((a == r) && (a == (g >> 1)) && (a == b))
if ((r == b) && (r == (g >> 1)) && (r == (a - 1)))
_soft16_image_draw_unscaled_mul_alpha(src, dst, dc, src_offset,
dst_offset, width, height, a);
else
@ -254,7 +254,8 @@ soft16_image_draw_unscaled(Soft16_Image *src, Soft16_Image *dst,
if (!dc->mul.use)
{
r = b = a = 31;
a = 32;
r = b = 31;
g = 63;
mul_rgb565 = 0xffff;
}
@ -271,6 +272,7 @@ soft16_image_draw_unscaled(Soft16_Image *src, Soft16_Image *dst,
if (r > a) r = a;
if (g > (a << 1)) g = (a << 1);
if (b > a) b = a;
a++;
mul_rgb565 = (r << 11) || (g << 5) | b;
}

View File

@ -14,7 +14,7 @@
static inline void
_soft16_pt_blend_transp_solid(DATA16 *p_dst, DATA16 src, DATA8 alpha)
{
if (alpha == 31) *p_dst = src;
if (alpha == 32) *p_dst = src;
else if (alpha != 0)
{
DATA32 a, b;
@ -359,7 +359,7 @@ _soft16_pt_blend_transp_solid_mul_color_solid(DATA16 *p_dst, DATA16 src, DATA8 a
g1 = ((((src >> 5) & 0x3f) * g) >> 6) & 0x3f;
b1 = (((src & 0x1f) * b) >> 5) & 0x1f;
if (alpha == 31) *p_dst = (r1 << 11) | (g1 << 5) | b1;
if (alpha == 32) *p_dst = (r1 << 11) | (g1 << 5) | b1;
else
{
DATA32 rgb_unpack, d;