1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:07:44 +00:00

LibGfx/JPEGXL: Handle parsing BlendingInfo for extra channels

Extra channels have more parameters than basic one. This patch allows us
to read all these parameters.
This commit is contained in:
Lucas CHOLLET 2023-07-26 13:55:10 -04:00 committed by Andreas Kling
parent 7cbf76586a
commit da0944f63d

View file

@ -468,7 +468,7 @@ struct BlendingInfo {
BlendMode mode {}; BlendMode mode {};
u8 alpha_channel {}; u8 alpha_channel {};
u8 clamp {}; bool clamp { false };
u8 source {}; u8 source {};
}; };
@ -481,7 +481,14 @@ static ErrorOr<BlendingInfo> read_blending_info(LittleEndianInputBitStream& stre
bool const extra = metadata.num_extra_channels > 0; bool const extra = metadata.num_extra_channels > 0;
if (extra) { if (extra) {
TODO(); auto const blend_or_mul_add = blending_info.mode == BlendingInfo::BlendMode::kBlend
|| blending_info.mode == BlendingInfo::BlendMode::kMulAdd;
if (blend_or_mul_add)
blending_info.alpha_channel = U32(0, 1, 2, 3 + TRY(stream.read_bits(3)));
if (blend_or_mul_add || blending_info.mode == BlendingInfo::BlendMode::kMul)
blending_info.clamp = TRY(stream.read_bit());
} }
if (blending_info.mode != BlendingInfo::BlendMode::kReplace if (blending_info.mode != BlendingInfo::BlendMode::kReplace