Loading...
Searching...
No Matches
Exiv2::Internal::CiffHeader Class Reference

This class models the header of a CRW (Canon Raw data) image. It is the head of a CIFF parse tree, consisting of CiffDirectory and CiffEntry objects. Most of its methods will walk the parse tree to perform the requested action. More...

`#include <crwimage_int.hpp>`

## Public Types

typedef std::auto_ptr< CiffHeader > | AutoPtr
| CiffHeader auto_ptr type.

## Public Member Functions

Creators
| CiffHeader ()
| Default constructor.
virtual | ~CiffHeader ()
| Virtual destructor.

## Accessors

void | write (Blob &blob) const
| Write the CRW image to the binary image blob, starting with the Ciff header. This method appends to the blob.
void | decode (Image &image) const
| Decode the CRW image and add it to image.
void | print (std::ostream &os, const std::string &prefix="") const
| Print debug info for the CRW image to os.
ByteOrder | byteOrder () const
| Return the byte order (little or big endian).
CiffComponent * | findComponent (uint16_t crwTagId, uint16_t crwDir) const
| Finds crwTagId in directory crwDir in the parse tree, returning a pointer to the component or 0 if not found.

## Manipulators

void | read (const byte *pData, uint32_t size)
| Read the CRW image from a data buffer, starting with the Ciff header.
void | add (uint16_t crwTagId, uint16_t crwDir, DataBuf buf)
| Set the value of entry crwTagId in directory crwDir to buf. If this tag doesn't exist, it is added along with all directories needed.
void | remove (uint16_t crwTagId, uint16_t crwDir)
| Remove entry crwTagId in directory crwDir from the parse tree. If it's the last entry in the directory, the directory is removed as well, etc.
static const char * | signature ()
| Return a pointer to the Canon CRW signature.

## Detailed Description

This class models the header of a CRW (Canon Raw data) image. It is the head of a CIFF parse tree, consisting of CiffDirectory and CiffEntry objects. Most of its methods will walk the parse tree to perform the requested action.

## Member Function Documentation

## add()

void Exiv2::Internal::CiffHeader::add | ( | uint16_t | crwTagId,
|  | uint16_t | crwDir,
|  | DataBuf | buf
| ) |  |

Set the value of entry crwTagId in directory crwDir to buf. If this tag doesn't exist, it is added along with all directories needed.

Parameters

  crwTagId | Tag to be added.
  crwDir | Parent directory of the tag.
  buf | Value to be set.

References Exiv2::Internal::CiffComponent::add(), Exiv2::Internal::CrwMap::loadStack(), and Exiv2::Internal::CiffComponent::setValue().

## decode()

void Exiv2::Internal::CiffHeader::decode | ( | Image & | image | ) | const

Decode the CRW image and add it to image.

Walk the parse tree and convert CIFF entries to metadata entries which are added to image.

Parameters

  image | Image to add metadata to

References Exiv2::Internal::CiffComponent::decode().

## findComponent()

CiffComponent * Exiv2::Internal::CiffHeader::findComponent | ( | uint16_t | crwTagId,
|  | uint16_t | crwDir
| ) |  | const

Finds crwTagId in directory crwDir in the parse tree, returning a pointer to the component or 0 if not found.

Finds crwTagId in directory crwDir, returning a pointer to the component or 0 if not found.

References Exiv2::Internal::CiffComponent::findComponent().

## print()

void Exiv2::Internal::CiffHeader::print | ( | std::ostream & | os,
|  | const std::string & | prefix = `""`
| ) |  | const

Print debug info for the CRW image to os.

Parameters

  os | Output stream to write to.
  prefix | Prefix to be written before each line of output.

References Exiv2::Internal::CiffComponent::print().

## read()

void Exiv2::Internal::CiffHeader::read | ( | const byte * | pData,
|  | uint32_t | size
| ) |  |

Read the CRW image from a data buffer, starting with the Ciff header.

Parameters

  pData | Pointer to the data buffer.
  size | Number of bytes in the data buffer.

Exceptions

  Error | If the image cannot be parsed.

References Exiv2::getULong(), Exiv2::Internal::CiffDirectory::readDirectory(), and signature().

## remove()

void Exiv2::Internal::CiffHeader::remove | ( | uint16_t | crwTagId,
|  | uint16_t | crwDir
| ) |  |

Remove entry crwTagId in directory crwDir from the parse tree. If it's the last entry in the directory, the directory is removed as well, etc.

Parameters

  crwTagId | Tag id to be removed.
  crwDir | Parent directory of the tag.

References Exiv2::Internal::CrwMap::loadStack(), and Exiv2::Internal::CiffComponent::remove().

## write()

void Exiv2::Internal::CiffHeader::write | ( | Blob & | blob | ) | const

Write the CRW image to the binary image blob, starting with the Ciff header. This method appends to the blob.

Parameters

  blob | Binary image to add to.

Exceptions

  Error | If the image cannot be written.

References Exiv2::append(), Exiv2::ul2Data(), and Exiv2::Internal::CiffComponent::write().

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

- crwimage_int.hpp
- crwimage_int.cpp