DVUI

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;
    }