1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 23:07:35 +00:00

LibGfx/TIFF: Add support for TileOffset and TileByteCounts

This commit is contained in:
Lucas CHOLLET 2024-02-09 23:34:12 -05:00 committed by Jelle Raaijmakers
parent 18871e23d7
commit a30515011a
2 changed files with 20 additions and 4 deletions

View file

@ -71,9 +71,25 @@ public:
return {};
}
Optional<Vector<u32>> segment_offsets() const
{
return m_metadata.strip_offsets().has_value() ? m_metadata.strip_offsets() : m_metadata.tile_offsets();
}
Optional<Vector<u32>> segment_byte_counts() const
{
return m_metadata.strip_byte_counts().has_value() ? m_metadata.strip_byte_counts() : m_metadata.tile_byte_counts();
}
ErrorOr<void> ensure_baseline_tags_are_correct() const
{
if (m_metadata.strip_offsets()->size() != m_metadata.strip_byte_counts()->size())
if (!segment_offsets().has_value())
return Error::from_string_literal("TIFFImageDecoderPlugin: Missing Offsets tag");
if (!segment_byte_counts().has_value())
return Error::from_string_literal("TIFFImageDecoderPlugin: Missing ByteCounts tag");
if (segment_offsets()->size() != segment_byte_counts()->size())
return Error::from_string_literal("TIFFImageDecoderPlugin: StripsOffset and StripByteCount have different sizes");
if (!m_metadata.rows_per_strip().has_value() && m_metadata.strip_byte_counts()->size() != 1)

View file

@ -132,11 +132,11 @@ known_tags: List[Tag] = [
Tag('266', [TIFFType.UnsignedShort], [1], FillOrder.LeftToRight, "FillOrder", FillOrder),
Tag('271', [TIFFType.ASCII], [], None, "Make"),
Tag('272', [TIFFType.ASCII], [], None, "Model"),
Tag('273', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [], None, "StripOffsets", is_required=True),
Tag('273', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [], None, "StripOffsets", is_required=False),
Tag('274', [TIFFType.UnsignedShort], [1], Orientation.Default, "Orientation", Orientation),
Tag('277', [TIFFType.UnsignedShort], [1], None, "SamplesPerPixel", is_required=True),
Tag('278', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [1], None, "RowsPerStrip", is_required=False),
Tag('279', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [], None, "StripByteCounts", is_required=True),
Tag('279', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [], None, "StripByteCounts", is_required=False),
Tag('282', [TIFFType.UnsignedRational], [1], None, "XResolution"),
Tag('283', [TIFFType.UnsignedRational], [1], None, "YResolution"),
Tag('284', [TIFFType.UnsignedShort], [1], PlanarConfiguration.Chunky, "PlanarConfiguration", PlanarConfiguration),