Photo support general design

  • Green = upstream TagLib#
  • White = generic image support
  • Red = image file formats
  • Blue = metadata formats

ImageFile as a new property to File: ImageTag. This allows type-safe retrieval (as ImageTag) of the CombinedImageTag in each ImageFile.

CombinedImageTag serves as an aggregator for different metadata formats. It also keeps metadata formats in sync when setting metadata.

IFD Design

  • IFDTag: Convenience API that gives access to the Tiff and Exif values, without needing to know the gore details of what’s below.
  • IFDStructure: The structure of a TIFF file, contains one or more IFD directories (check the TIFF docs on what all this means if it sounds like gibberish)
  • IFDDirectory: An actual IFD, contains one or more IFD entries.
  • IFDEntry: The entries themselves, with a special SubIFDEntry type that allows nesting of IFD structures. This is needed in the case of Exif, where the exif entry contains a long, which is an offset pointer to a nested IFD structure.