sliceToRGBA
Unapplies the alpha multiplication in place, returning the inner slice
Parameters
- pma_pixels:[]Color.PMA
- []Color.PMA
Source
Implementation
pub fn sliceToRGBA(pma_pixels: []Color.PMA) []u8 {
var pixels: []u8 = @ptrCast(pma_pixels);
for (0..pixels.len / 4) |ii| {
const i = ii * 4;
const a = pixels[i + 3];
if (a == 0) continue;
pixels[i + 0] = @intCast(@divTrunc(@as(u16, pixels[i + 0]) * 255, a));
pixels[i + 1] = @intCast(@divTrunc(@as(u16, pixels[i + 1]) * 255, a));
pixels[i + 2] = @intCast(@divTrunc(@as(u16, pixels[i + 2]) * 255, a));
}
return pixels;
}