-
-
Notifications
You must be signed in to change notification settings - Fork 184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
patterns/tiff: support BigTIFF and tiled TIFF; bugfixes and cleanups #159
Commits on Sep 10, 2023
-
patterns/tiff: show TIFF tag name/number in DirectoryEntry array
Don't require unfolding the array entry to see what tag it contains.
Configuration menu - View commit details
-
Copy full SHA for c99a792 - Browse repository at this point
Copy the full SHA c99a792View commit details -
Configuration menu - View commit details
-
Copy full SHA for 07155f4 - Browse repository at this point
Copy the full SHA 07155f4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 26f9664 - Browse repository at this point
Copy the full SHA 26f9664View commit details -
patterns/tiff: add TIFFRational type
Rationals, uniquely, are primitives with two fields. Add a struct to represent this, rather than inlining them.
Configuration menu - View commit details
-
Copy full SHA for 0358a8c - Browse repository at this point
Copy the full SHA 0358a8cView commit details -
patterns/tiff: use correct types for fields smaller than 4 bytes
Small fields are always left-aligned in the 4-byte Value Offset. On little-endian TIFFs we currently cheat this by declaring a 32-bit value and letting little-endianness handle the semantics. However, this adds some extra conditionals, and misrepresents the resulting field as 32 bits. Drop the cheat.
Configuration menu - View commit details
-
Copy full SHA for 2f6ea91 - Browse repository at this point
Copy the full SHA 2f6ea91View commit details -
patterns/tiff: add ValueOffset abstraction
We were using the field type to make assumptions about whether the Value Offset is a Value or an Offset, which is incorrect. If the Count multiplied by the field size is larger than 4, the field is an Offset; otherwise it's a Value. Add display sugar for single-element arrays to avoid extra nesting.
Configuration menu - View commit details
-
Copy full SHA for 08498fe - Browse repository at this point
Copy the full SHA 08498feView commit details -
get_ifds_offsets() and BIG/LITTLE aren't used at all. get_total_IFDs() is only used for declaring the length of TIFFFile.IFDs, and isn't needed because IFDs are structured as a linked list.
Configuration menu - View commit details
-
Copy full SHA for 1f7de81 - Browse repository at this point
Copy the full SHA 1f7de81View commit details -
patterns/tiff: drop set_endian()
The call in TIFFFile is redundant. Drop both calls and open-code the check at the top level, before executing any code. The BigTIFF check will eventually be added alongside this one. Fail if we don't recognize the magic number.
Configuration menu - View commit details
-
Copy full SHA for cacbed0 - Browse repository at this point
Copy the full SHA cacbed0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 447c193 - Browse repository at this point
Copy the full SHA 447c193View commit details -
patterns/tiff: drop strip offset/byte count arrays from struct IFD
They're redundant with the fields in the DirectoryEntry array. Also they're buggy: they assume the field Value Offsets are always offsets, which isn't true for single-strip IFDs, and they ignore a partial last strip in multiple-strip IFDs.
Configuration menu - View commit details
-
Copy full SHA for 627f107 - Browse repository at this point
Copy the full SHA 627f107View commit details -
patterns/tiff: rewrite strip array generation
We're making extra work for ourselves by avoiding the type system. Also, by calculating the number of strips we expect rather than the number of strips we actually have, we're miscounting and omitting any partial last strip. Instead, read the strip offsets and byte counts directly from the IFDEntry array.
Configuration menu - View commit details
-
Copy full SHA for d305386 - Browse repository at this point
Copy the full SHA d305386View commit details -
Configuration menu - View commit details
-
Copy full SHA for 365c24c - Browse repository at this point
Copy the full SHA 365c24cView commit details -
patterns/tiff: increase variable widths for BigTIFF
Use 64-bit temporary variables for values that can be 64 bits in BigTIFF.
Configuration menu - View commit details
-
Copy full SHA for 4d1e635 - Browse repository at this point
Copy the full SHA 4d1e635View commit details -
Configuration menu - View commit details
-
Copy full SHA for f878df8 - Browse repository at this point
Copy the full SHA f878df8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 331557f - Browse repository at this point
Copy the full SHA 331557fView commit details