void image_draw(pixel32 *target, TextureRGBA *rgba, Rect *position,
Rect *surarea)
{
- gulong *draw = rgba->data;
+ pixel32 *draw = rgba->data;
guint c, i, e, t, sfw, sfh;
sfw = position->width;
sfh = position->height;
for (i = 0, c = 0, t = position->x, e = sfw*sfh; i < e; ++i, ++t) {
guchar alpha, r, g, b, bgr, bgg, bgb;
- alpha = draw[i] >> 24;
- r = draw[i] >> 16;
- g = draw[i] >> 8;
- b = draw[i];
+ alpha = draw[i] >> default_alpha_offset;
+ r = draw[i] >> default_red_offset;
+ g = draw[i] >> default_green_offset;
+ b = draw[i] >> default_blue_offset;
if (c >= sfw) {
c = 0;
}
/* background color */
- bgr = target[t] >> default_red_shift;
- bgg = target[t] >> default_green_shift;
- bgb = target[t] >> default_blue_shift;
+ bgr = target[t] >> default_red_offset;
+ bgg = target[t] >> default_green_offset;
+ bgb = target[t] >> default_blue_offset;
r = bgr + (((r - bgr) * alpha) >> 8);
g = bgg + (((g - bgg) * alpha) >> 8);
b = bgb + (((b - bgb) * alpha) >> 8);
- target[t] = (r << default_red_shift) | (g << default_green_shift) |
- (b << default_blue_shift);
+ target[t] = (r << default_red_offset)
+ | (g << default_green_offset)
+ | (b << default_blue_offset);
}
}
}