| Exiv2

Loading...
Searching...
No Matches
Friends | List of all members
Exiv2::Internal::TiffSubIfd Class Reference

This class models a TIFF sub-directory (sub-IFD). A sub-IFD is an entry with one or more values that are pointers to IFD structures containing an IFD. The TIFF standard defines some important tags to be sub-IFDs, including the Exif and GPS tags. More...

`#include <tiffcomposite_int.hpp>`

Inheritance diagram for Exiv2::Internal::TiffSubIfd:
[legend]

## Public Member Functions
Creators
| TiffSubIfd (uint16_t tag, IfdId group, IfdId newGroup)
| Default constructor.
| ~TiffSubIfd () override=default
| Virtual destructor.
Protected Creators
| TiffSubIfd (const TiffSubIfd &rhs)
| Copy constructor (used to implement clone()).
TiffSubIfd & | operator= (const TiffSubIfd &)=delete
Public Member Functions inherited from Exiv2::Internal::TiffEntryBase
constexpr | TiffEntryBase (uint16_t tag, IfdId group, TiffType tiffType=ttUndefined)
| Default constructor.
| ~TiffEntryBase () override=default
| Virtual destructor.
TiffEntryBase & | operator= (const TiffEntryBase &)=delete
| Assignment operator.
void | encode (TiffEncoder &encoder, const Exifdatum *datum)
| Encode a TIFF component from the metadatum provided and information from the encoder as needed.
void | setOffset (size_t offset)
| Set the offset.
void | setData (byte *pData, size_t size, std::shared_ptr< DataBuf > storage)
| Set pointer and size of the entry's data (not taking ownership of the data).
void | setData (std::shared_ptr< DataBuf > buf)
| Set the entry's data buffer. A shared_ptr is used to manage the DataBuf because TiffEntryBase has a clone method so it is possible (in theory) for the DataBuf to have multiple owners.
void | updateValue (Value::UniquePtr value, ByteOrder byteOrder)
| Update the value. Takes ownership of the pointer passed in.
void | setValue (Value::UniquePtr value)
| Set tag value. Takes ownership of the pointer passed in.
TiffType | tiffType () const
| Return the TIFF type.
size_t | offset () const
| Return the offset to the data area relative to the base for the component (usually the start of the TIFF header).
int | idx () const override
| Return the unique id of the entry in the image.
const byte * | pData () const
| Return a pointer to the binary representation of the value of this component.
const Value * | pValue () const
| Return a const pointer to the converted value of this component.
Public Member Functions inherited from Exiv2::Internal::TiffComponent
constexpr | TiffComponent (uint16_t tag, IfdId group)
| Constructor.
virtual | ~TiffComponent ()=default
| Virtual destructor.
| TiffComponent (const TiffComponent &)=default
TiffComponent & | operator= (const TiffComponent &)=default
TiffComponent * | addPath (uint16_t tag, TiffPath &tiffPath, TiffComponent *pRoot, UniquePtr object=nullptr)
| Add a TIFF entry tag to the component. Components on the path to the entry are added if they don't exist yet.
TiffComponent * | addChild (UniquePtr tiffComponent)
| Add a child to the component. Default is to do nothing.
TiffComponent * | addNext (UniquePtr tiffComponent)
| Add a "next" component to the component. Default is to do nothing.
void | accept (TiffVisitor &visitor)
| Interface to accept visitors (Visitor pattern). Visitors can perform operations on all components of the composite.
void | setStart (const byte *pStart)
| Set a pointer to the start of the binary representation of the component in a memory buffer. The buffer must be allocated and freed outside of this class.
size_t | write (IoWrapper &ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx, size_t &imageIdx)
| Write a TiffComponent to a binary image.
uint16_t | tag () const
| Return the tag of this entry.
IfdId | group () const
| Return the group id of this component.
byte * | start () const
| Return a pointer to the start of the binary representation of the component.
UniquePtr | clone () const
| Return an auto-pointer to a copy of itself (deep copy, but without any children). The caller owns this copy and the auto-pointer ensures that it will be deleted.
size_t | writeData (IoWrapper &ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx, size_t &imageIdx) const
| Write the IFD data of this component to a binary image. Return the number of bytes written. Components derived from TiffEntryBase implement this method if needed.
size_t | writeImage (IoWrapper &ioWrapper, ByteOrder byteOrder) const
| Write the image data of this component to a binary image. Return the number of bytes written. TIFF components implement this method if needed.
size_t | size () const
| Return the size in bytes of the IFD value of this component when written to a binary image.
size_t | count () const
| Return the number of components in this component.
size_t | sizeData () const
| Return the size in bytes of the IFD data of this component when written to a binary image. This is a support function for write(). Components derived from TiffEntryBase implement this method corresponding to their implementation of writeData().
size_t | sizeImage () const
| Return the size in bytes of the image data of this component when written to a binary image. This is a support function for write(). TIFF components implement this method corresponding to their implementation of writeImage().

## Protected Member Functions
Protected Manipulators
TiffComponent * | doAddPath (uint16_t tag, TiffPath &tiffPath, TiffComponent *pRoot, TiffComponent::UniquePtr object) override
| Implements addPath(). The default implementation does nothing.
TiffComponent * | doAddChild (TiffComponent::UniquePtr tiffComponent) override
| Implements addChild(). The default implementation does nothing.
void | doAccept (TiffVisitor &visitor) override
| Implements accept().
void | doEncode (TiffEncoder &encoder, const Exifdatum *datum) override
| Implements encode().
size_t | doWrite (IoWrapper &ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx, size_t &imageIdx) override
| Implements write(). Write the sub-IFD pointers to the ioWrapper, return the number of bytes written. The valueIdx and imageIdx arguments are not used.
Protected Member Functions inherited from Exiv2::Internal::TiffEntryBase
| TiffEntryBase (const TiffEntryBase &rhs)
| Copy constructor (used to implement clone()).
void | setCount (size_t count)
| Set the number of components in this entry.
void | setIdx (int idx)
| Set the unique id of the entry in the image.
size_t | doCount () const override
| Implements count().
std::shared_ptr< DataBuf > | storage () const
| Used (internally) to create another reference to the DataBuf reference by storage_.
Protected Member Functions inherited from Exiv2::Internal::TiffComponent
virtual TiffComponent * | doAddNext (UniquePtr tiffComponent)
| Implements addNext(). The default implementation does nothing.

## Friends
class | TiffReader

## Protected Accessors
TiffSubIfd * | doClone () const override
| Internal virtual copy constructor, implements clone().
size_t | doWriteData (IoWrapper &ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx, size_t &imageIdx) const override
| Implements writeData(). Write the sub-IFDs to the ioWrapper. Return the number of bytes written.
size_t | doWriteImage (IoWrapper &ioWrapper, ByteOrder byteOrder) const override
| Implements writeImage(). Write the image data of each sub-IFD to the ioWrapper. Return the number of bytes written.
size_t | doSize () const override
| Implements size(). Return the size of the sub-Ifd pointers.
size_t | doSizeData () const override
| Implements sizeData(). Return the sum of the sizes of all sub-IFDs.
size_t | doSizeImage () const override
| Implements sizeImage(). Return the sum of the image sizes of all sub-IFDs.

## Additional Inherited Members
Public Types inherited from Exiv2::Internal::TiffComponent
using | UniquePtr = std::unique_ptr<TiffComponent>
| TiffComponent auto_ptr type.
using | Components = std::vector<UniquePtr>
| Container type to hold all metadata.
static size_t | writeOffset (byte *buf, size_t offset, TiffType tiffType, ByteOrder byteOrder)
| Helper function to write an offset to a preallocated binary buffer.

## Detailed Description

This class models a TIFF sub-directory (sub-IFD). A sub-IFD is an entry with one or more values that are pointers to IFD structures containing an IFD. The TIFF standard defines some important tags to be sub-IFDs, including the Exif and GPS tags.

## Member Function Documentation

## ◆ doAccept()

void Exiv2::Internal::TiffSubIfd::doAccept | ( | TiffVisitor & | visitor | ) |
| override protected virtual

Implements accept().

Implements Exiv2::Internal::TiffComponent.

References Exiv2::Internal::TiffVisitor::geTraverse, Exiv2::Internal::TiffVisitor::go(), and Exiv2::Internal::TiffVisitor::visitSubIfd().

## ◆ doAddChild()

TiffComponent * Exiv2::Internal::TiffSubIfd::doAddChild | ( | TiffComponent::UniquePtr | tiffComponent | ) |
| override protected virtual

Implements addChild(). The default implementation does nothing.

Reimplemented from Exiv2::Internal::TiffComponent.

## ◆ doAddPath()

TiffComponent * Exiv2::Internal::TiffSubIfd::doAddPath | ( | uint16_t | tag,
|  | TiffPath & | tiffPath,
|  | TiffComponent * | pRoot,
|  | TiffComponent::UniquePtr | object )
| override protected virtual

Implements addPath(). The default implementation does nothing.

Reimplemented from Exiv2::Internal::TiffComponent.

References Exiv2::Internal::TiffComponent::addChild(), Exiv2::Internal::TiffPathItem::group(), Exiv2::Internal::TiffEntryBase::setCount(), Exiv2::Internal::TiffComponent::tag(), and Exiv2::Internal::TiffPathItem::tag().

## ◆ doClone()

TiffSubIfd * Exiv2::Internal::TiffSubIfd::doClone | ( |  | ) | const
| nodiscard override protected virtual

Internal virtual copy constructor, implements clone().

Implements Exiv2::Internal::TiffComponent.

References TiffSubIfd().

## ◆ doEncode()

void Exiv2::Internal::TiffSubIfd::doEncode | ( | TiffEncoder & | encoder,
|  | const Exifdatum * | datum )
| override protected virtual

Implements encode().

Implements Exiv2::Internal::TiffEntryBase.

References Exiv2::Internal::TiffEncoder::encodeSubIfd().

## ◆ doSize()

size_t Exiv2::Internal::TiffSubIfd::doSize | ( |  | ) | const
| nodiscard override protected virtual

Implements size(). Return the size of the sub-Ifd pointers.

Reimplemented from Exiv2::Internal::TiffEntryBase.

## ◆ doSizeData()

size_t Exiv2::Internal::TiffSubIfd::doSizeData | ( |  | ) | const
| nodiscard override protected virtual

Implements sizeData(). Return the sum of the sizes of all sub-IFDs.

Reimplemented from Exiv2::Internal::TiffEntryBase.

## ◆ doSizeImage()

size_t Exiv2::Internal::TiffSubIfd::doSizeImage | ( |  | ) | const
| nodiscard override protected virtual

Implements sizeImage(). Return the sum of the image sizes of all sub-IFDs.

Reimplemented from Exiv2::Internal::TiffEntryBase.

## ◆ doWrite()

size_t Exiv2::Internal::TiffSubIfd::doWrite | ( | IoWrapper & | ioWrapper,
|  | ByteOrder | byteOrder,
|  | size_t | offset,
|  | size_t | valueIdx,
|  | size_t | dataIdx,
|  | size_t & | imageIdx )
| override protected virtual

Implements write(). Write the sub-IFD pointers to the ioWrapper, return the number of bytes written. The valueIdx and imageIdx arguments are not used.

Reimplemented from Exiv2::Internal::TiffEntryBase.

References Exiv2::DataBuf::c_data(), Exiv2::Internal::cmpGroupLt(), Exiv2::DataBuf::data(), Exiv2::Internal::TiffEntryBase::idx(), Exiv2::Internal::TiffEntryBase::offset(), Exiv2::Internal::TiffEntryBase::tiffType(), Exiv2::Internal::IoWrapper::write(), and Exiv2::Internal::TiffEntryBase::writeOffset().

## ◆ doWriteData()

size_t Exiv2::Internal::TiffSubIfd::doWriteData | ( | IoWrapper & | ioWrapper,
|  | ByteOrder | byteOrder,
|  | size_t | offset,
|  | size_t | dataIdx,
|  | size_t & | imageIdx ) const
| override protected virtual

Implements writeData(). Write the sub-IFDs to the ioWrapper. Return the number of bytes written.

Reimplemented from Exiv2::Internal::TiffEntryBase.

References Exiv2::Internal::TiffEntryBase::offset(), and Exiv2::Internal::IoWrapper::putb().

## ◆ doWriteImage()

size_t Exiv2::Internal::TiffSubIfd::doWriteImage | ( | IoWrapper & | ioWrapper,
|  | ByteOrder | byteOrder ) const
| override protected virtual

Implements writeImage(). Write the image data of each sub-IFD to the ioWrapper. Return the number of bytes written.

Reimplemented from Exiv2::Internal::TiffEntryBase.

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

- tiffcomposite_int.hpp
- tiffcomposite_int.cpp