Loading...
Searching...
No Matches
Exiv2::TiffParser Class Reference

Stateless parser class for data in TIFF format. Images use this class to decode and encode TIFF data. It is a wrapper of the internal class Internal::TiffParserWorker. More...

`#include <tiffimage.hpp>`

## Static Public Member Functions

static ByteOrder | decode (ExifData &exifData, IptcData &iptcData, XmpData &xmpData, const byte *pData, size_t size)
| Decode metadata from a buffer pData of length size with data in TIFF format to the provided metadata containers.
static WriteMethod | encode (BasicIo &io, const byte *pData, size_t size, ByteOrder byteOrder, ExifData &exifData, IptcData &iptcData, XmpData &xmpData)
| Encode metadata from the provided metadata to TIFF format.

## Detailed Description

Stateless parser class for data in TIFF format. Images use this class to decode and encode TIFF data. It is a wrapper of the internal class Internal::TiffParserWorker.

## Member Function Documentation

## decode()

ByteOrder Exiv2::TiffParser::decode | ( | ExifData & | exifData,
|  | IptcData & | iptcData,
|  | XmpData & | xmpData,
|  | const byte * | pData,
|  | size_t | size )

static

Decode metadata from a buffer pData of length size with data in TIFF format to the provided metadata containers.

Parameters

  exifData | Exif metadata container.
  iptcData | IPTC metadata container.
  xmpData | XMP metadata container.
  pData | Pointer to the data buffer. Must point to data in TIFF format; no checks are performed.
  size | Length of the data buffer.

Returns
  Byte order in which the data is encoded.

References Exiv2::Internal::TiffParserWorker::decode(), Exiv2::ExifData::end(), Exiv2::Internal::TiffMapping::findDecoder(), Exiv2::ExifData::findKey(), Exiv2::Internal::Tag::fuji, and Exiv2::Internal::Tag::root.

Referenced by Exiv2::ExifParser::decode(), Exiv2::Jp2Image::readMetadata(), Exiv2::MrwImage::readMetadata(), Exiv2::RafImage::readMetadata(), and Exiv2::TiffImage::readMetadata().

## encode()

WriteMethod Exiv2::TiffParser::encode | ( | BasicIo & | io,
|  | const byte * | pData,
|  | size_t | size,
|  | ByteOrder | byteOrder,
|  | ExifData & | exifData,
|  | IptcData & | iptcData,
|  | XmpData & | xmpData )

static

Encode metadata from the provided metadata to TIFF format.

The original binary image in the memory block pData, size is parsed and updated in-place if possible ("non-intrusive" writing). If that is not possible (e.g., if new tags were added), the entire TIFF structure is re-written to the io instance ("intrusive" writing).
The return value indicates which write method was used. If it is `wmNonIntrusive`, the original memory pData, size contains the result and nothing is written to io. If the return value is `wmIntrusive`, a new TIFF structure was created and written to io. The memory block pData, size may be partly updated in this case and should not be used anymore.

Note
  If there is no metadata to encode, i.e., all metadata containers are empty, then the return value is `wmIntrusive` and nothing is written to io, i.e., no TIFF header is written.

Parameters

  io | IO instance to write the binary image to in case of "intrusive" writing. Nothing is written to io in the case of "non-intrusive" writing.
  pData | Pointer to the binary image data buffer. Must point to data in TIFF format; no checks are performed. Will be modified if "non-intrusive" writing is possible.
  size | Length of the data buffer.
  byteOrder | Byte order to use.
  exifData | Exif metadata container.
  iptcData | IPTC metadata container.
  xmpData | XMP metadata container.

Returns
  Write method used.

References Exiv2::ExifData::begin(), Exiv2::Internal::TiffParserWorker::encode(), Exiv2::ExifData::end(), Exiv2::ExifData::erase(), Exiv2::Internal::TiffMapping::findEncoder(), and Exiv2::Internal::Tag::root.

Referenced by Exiv2::TiffImage::writeMetadata().

The documentation for this class was generated from the following files:

- tiffimage.hpp
- tiffimage.cpp