mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 08:28:11 +00:00
LibGfx/TIFF: Factorize code to verify that CCITT images are correct
This commit is contained in:
parent
a9a5ca6754
commit
9b50b5793b
1 changed files with 13 additions and 6 deletions
|
@ -258,6 +258,18 @@ private:
|
|||
return {};
|
||||
}
|
||||
|
||||
ErrorOr<void> ensure_tags_are_correct_for_ccitt() const
|
||||
{
|
||||
// Section 8: Baseline Field Reference Guide
|
||||
// BitsPerSample must be 1, since this type of compression is defined only for bilevel images.
|
||||
if (m_metadata.bits_per_sample()->size() > 1)
|
||||
return Error::from_string_literal("TIFFImageDecoderPlugin: CCITT image with BitsPerSample greater than one");
|
||||
if (m_metadata.photometric_interpretation() != PhotometricInterpretation::WhiteIsZero && m_metadata.photometric_interpretation() != PhotometricInterpretation::BlackIsZero)
|
||||
return Error::from_string_literal("TIFFImageDecoderPlugin: CCITT compression is used on a non bilevel image");
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
ErrorOr<void> decode_frame_impl()
|
||||
{
|
||||
switch (*m_metadata.compression()) {
|
||||
|
@ -270,12 +282,7 @@ private:
|
|||
break;
|
||||
}
|
||||
case Compression::CCITT: {
|
||||
// Section 8: Baseline Field Reference Guide
|
||||
// BitsPerSample must be 1, since this type of compression is defined only for bilevel images.
|
||||
if (m_metadata.bits_per_sample()->size() > 1)
|
||||
return Error::from_string_literal("TIFFImageDecoderPlugin: CCITT image with BitsPerSample greater than one");
|
||||
if (m_metadata.photometric_interpretation() != PhotometricInterpretation::WhiteIsZero && m_metadata.photometric_interpretation() != PhotometricInterpretation::BlackIsZero)
|
||||
return Error::from_string_literal("TIFFImageDecoderPlugin: CCITT compression is used on a non bilevel image");
|
||||
TRY(ensure_tags_are_correct_for_ccitt());
|
||||
|
||||
ByteBuffer decoded_bytes {};
|
||||
auto decode_ccitt_1D_strip = [&](u32 num_bytes) -> ErrorOr<ReadonlyBytes> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue