DVUI

sliceFromRGBA

Alpha multiplies pixels in place

Parameters

#
pixels:[]u8
[]u8

Source

Implementation

#
pub fn sliceFromRGBA(pixels: []u8) []Color.PMA {
        for (0..pixels.len / 4) |ii| {
            const i = ii * 4;
            const a = pixels[i + 3];
            pixels[i + 0] = @intCast(@divTrunc(@as(u16, pixels[i + 0]) * a, 255));
            pixels[i + 1] = @intCast(@divTrunc(@as(u16, pixels[i + 1]) * a, 255));
            pixels[i + 2] = @intCast(@divTrunc(@as(u16, pixels[i + 2]) * a, 255));
        }
        return @ptrCast(pixels);
    }