- rows[y][x * components + 0] = r; \
- rows[y][x * components + 1] = g; \
- rows[y][x * components + 2] = b; \
- if( components == 4 ) \
- rows[y][x * components + 3] = mx; \
-}
- int components = BC_CModels::components(color_model);
- int bch = BC_CModels::calculate_pixelsize(color_model) / components;
- int sz = 8*bch, mx = BC_CModels::is_float(color_model) ? 1 : (1<<sz)-1;
- int is_yuv = BC_CModels::is_yuv(color_model);
- int pixel_color = is_yuv ? pixel_yuv : pixel_rgb;
- int ir = 0xff & (pixel_color >> 16); float fr = 0;
- int ig = 0xff & (pixel_color >> 8); float fg = 0;
- int ib = 0xff & (pixel_color >> 0); float fb = 0;
+ type *rp = rows[y], *bp = rp + x*comps; \
+ bp[0] = r; \
+ if( comps > 1 ) { bp[1] = g; bp[2] = b; } \
+ if( comps == 4 ) bp[3] = a; \
+}
+ float fr = 0, fg = 0, fb = 0, fa = 0;
+ int pixel_color = BC_CModels::is_yuv(color_model) ? pixel_yuv : pixel_rgb;
+ int ir = (0xff & (pixel_color >> 16));
+ int ig = (0xff & (pixel_color >> 8));
+ int ib = (0xff & (pixel_color >> 0));
+ int ia = (0xff & (pixel_color >> 24)) ^ 0xff; // transparency, not opacity