Loading...
Searching...
No Matches
crwimage_int.hpp
// ***************************************************************** -*- C++ -*-
/*
* Copyright (C) 2004-2021 Exiv2 authors
* This program is part of the Exiv2 distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
*/
#ifndef CRWIMAGE_INT_HPP_
#define CRWIMAGE_INT_HPP_
// *****************************************************************************
// included header files
#include "tags_int.hpp"
#include "image.hpp"
// + standard includes
#include <iosfwd>
#include <string>
#include <vector>
#include <stack>
// *****************************************************************************
// namespace extensions
namespace Exiv2 {
// *****************************************************************************
// class declarations
class ExifData;
namespace Internal {
// *****************************************************************************
// class declarations
class CiffHeader;
class CiffComponent;
struct CrwMapping;
struct CrwSubDir;
// *****************************************************************************
// type definitions
typedef void (*CrwDecodeFct)(const CiffComponent&,
const CrwMapping*,
Image&,
ByteOrder);
typedef void (*CrwEncodeFct)(const Image&,
const CrwMapping*,
CiffHeader*);
typedef std::stack<CrwSubDir> CrwDirs;
enum DataLocId {
valueData,
directoryData,
lastDataLocId
};
// *****************************************************************************
// class definitions
class CiffComponent {
public:
typedef std::auto_ptr<CiffComponent> AutoPtr;
typedef std::vector<CiffComponent*> Components;
CiffComponent()
: dir_(0), tag_(0), size_(0), offset_(0), pData_(0),
isAllocated_(false) {}
CiffComponent(uint16_t tag, uint16_t dir)
: dir_(dir), tag_(tag), size_(0), offset_(0), pData_(0),
isAllocated_(false) {}
virtual ~CiffComponent();
// Default assignment operator is fine
void add(AutoPtr component);
CiffComponent* add(CrwDirs& crwDirs, uint16_t crwTagId);
void remove(CrwDirs& crwDirs, uint16_t crwTagId);
void read(const byte* pData,
uint32_t size,
uint32_t start,
ByteOrder byteOrder);
uint32_t write(Blob& blob, ByteOrder byteOrder, uint32_t offset);
uint32_t writeValueData(Blob& blob, uint32_t offset);
void setDir(uint16_t dir) { dir_ = dir; }
void setValue(DataBuf buf);
static TypeId typeId(uint16_t tag);
static DataLocId dataLocation(uint16_t tag);
void decode(Image& image, ByteOrder byteOrder) const;
void print(std::ostream& os,
ByteOrder byteOrder,
const std::string& prefix ="") const;
void writeDirEntry(Blob& blob, ByteOrder byteOrder) const;
uint16_t dir() const { return dir_; }
uint16_t tag() const { return tag_; }
bool empty() const;
uint32_t size() const { return size_; }
uint32_t offset() const { return offset_; }
const byte* pData() const { return pData_; }
uint16_t tagId() const { return tag_ & 0x3fff; }
TypeId typeId() const { return typeId(tag_); }
DataLocId dataLocation() const { return dataLocation(tag_); }
CiffComponent* findComponent(uint16_t crwTagId, uint16_t crwDir) const;
protected:
virtual void doAdd(AutoPtr component) =0;
virtual CiffComponent* doAdd(CrwDirs& crwDirs, uint16_t crwTagId);
virtual void doRemove(CrwDirs& crwDirs, uint16_t crwTagId);
virtual void doRead(const byte* pData,
uint32_t size,
uint32_t start,
ByteOrder byteOrder);
virtual uint32_t doWrite(Blob& blob,
ByteOrder byteOrder,
uint32_t offset) =0;
void setSize(uint32_t size) { size_ = size; }
void setOffset(uint32_t offset) { offset_ = offset; }
virtual void doDecode(Image& image,
ByteOrder byteOrder) const =0;
virtual void doPrint(std::ostream& os,
ByteOrder byteOrder,
const std::string& prefix) const;
virtual bool doEmpty() const;
virtual CiffComponent* doFindComponent(uint16_t crwTagId,
uint16_t crwDir) const;
private:
// DATA
uint16_t dir_;
uint16_t tag_;
uint32_t size_;
uint32_t offset_;
const byte* pData_;
bool isAllocated_;
}; // class CiffComponent
class CiffEntry : public CiffComponent {
public:
CiffEntry() {}
CiffEntry(uint16_t tag, uint16_t dir) : CiffComponent(tag, dir) {}
virtual ~CiffEntry();
// Default assignment operator is fine
private:
using CiffComponent::doAdd;
// See base class comment
virtual void doAdd(AutoPtr component);
virtual uint32_t doWrite(Blob& blob,
ByteOrder byteOrder,
uint32_t offset);
// See base class comment
virtual void doDecode(Image& image, ByteOrder byteOrder) const;
}; // class CiffEntry
class CiffDirectory : public CiffComponent {
public:
CiffDirectory() : cc_(NULL) {}
CiffDirectory(uint16_t tag, uint16_t dir) : CiffComponent(tag, dir), cc_(NULL) {}
virtual ~CiffDirectory();
// Default assignment operator is fine
void readDirectory(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
private:
// See base class comment
virtual void doAdd(AutoPtr component);
// See base class comment
virtual CiffComponent* doAdd(CrwDirs& crwDirs, uint16_t crwTagId);
// See base class comment
virtual void doRemove(CrwDirs& crwDirs, uint16_t crwTagId);
virtual uint32_t doWrite(Blob& blob,
ByteOrder byteOrder,
uint32_t offset);
// See base class comment
virtual void doRead(const byte* pData,
uint32_t size,
uint32_t start,
ByteOrder byteOrder);
// See base class comment
virtual void doDecode(Image& image,
ByteOrder byteOrder) const;
// See base class comment
virtual void doPrint(std::ostream& os,
ByteOrder byteOrder,
const std::string& prefix) const;
virtual bool doEmpty() const;
// See base class comment
virtual CiffComponent* doFindComponent(uint16_t crwTagId,
uint16_t crwDir) const;
private:
// DATA
Components components_;
AutoPtr m_; // used by recursive doAdd
CiffComponent* cc_;
}; // class CiffDirectory
class CiffHeader {
public:
typedef std::auto_ptr<CiffHeader> AutoPtr;
CiffHeader()
: pRootDir_ (0),
byteOrder_ (littleEndian),
offset_ (0x0000001a),
pPadding_ (0),
padded_ (0)
{}
virtual ~CiffHeader();
void read(const byte* pData, uint32_t size);
void add(uint16_t crwTagId, uint16_t crwDir, DataBuf buf);
void remove(uint16_t crwTagId, uint16_t crwDir);
static const char* signature() { return signature_; }
void write(Blob& blob) const;
void decode(Image& image) const;
void print(std::ostream& os, const std::string& prefix ="") const;
ByteOrder byteOrder() const { return byteOrder_; }
CiffComponent* findComponent(uint16_t crwTagId, uint16_t crwDir) const;
private:
// DATA
static const char signature_[];
CiffDirectory* pRootDir_;
ByteOrder byteOrder_;
uint32_t offset_;
byte* pPadding_;
uint32_t padded_;
}; // class CiffHeader
struct CrwSubDir {
uint16_t crwDir_;
uint16_t parent_;
}; // struct CrwSubDir
struct CrwMapping {
CrwMapping(
uint16_t crwTagId,
uint16_t crwDir,
uint32_t size,
uint16_t tag,
Internal::IfdId ifdId,
CrwDecodeFct toExif,
CrwEncodeFct fromExif)
: crwTagId_ (crwTagId),
crwDir_ (crwDir),
size_ (size),
tag_ (tag),
ifdId_ (ifdId),
toExif_ (toExif),
fromExif_ (fromExif)
{}
// DATA
uint16_t crwTagId_;
uint16_t crwDir_;
uint32_t size_;
uint16_t tag_;
IfdId ifdId_;
CrwDecodeFct toExif_;
CrwEncodeFct fromExif_;
}; // struct CrwMapping
class CrwMap {
CrwMap();
public:
static void decode(const CiffComponent& ciffComponent,
Image& image,
ByteOrder byteOrder);
static void encode(CiffHeader* pHead, const Image& image);
static void loadStack(CrwDirs& crwDirs, uint16_t crwDir);
private:
static const CrwMapping* crwMapping(uint16_t crwDir, uint16_t crwTagId);
static void decodeBasic(const CiffComponent& ciffComponent,
const CrwMapping* pCrwMapping,
Image& image,
ByteOrder byteOrder);
static void decode0x0805(const CiffComponent& ciffComponent,
const CrwMapping* pCrwMapping,
Image& image,
ByteOrder byteOrder);
static void decode0x080a(const CiffComponent& ciffComponent,
const CrwMapping* pCrwMapping,
Image& image,
ByteOrder byteOrder);
static void decodeArray(const CiffComponent& ciffComponent,
const CrwMapping* pCrwMapping,
Image& image,
ByteOrder byteOrder);
static void decode0x180e(const CiffComponent& ciffComponent,
const CrwMapping* pCrwMapping,
Image& image,
ByteOrder byteOrder);
static void decode0x1810(const CiffComponent& ciffComponent,
const CrwMapping* pCrwMapping,
Image& image,
ByteOrder byteOrder);
static void decode0x2008(const CiffComponent& ciffComponent,
const CrwMapping* pCrwMapping,
Image& image,
ByteOrder byteOrder);
static void encodeBasic(const Image& image,
const CrwMapping* pCrwMapping,
CiffHeader* pHead);
static void encode0x0805(const Image& image,
const CrwMapping* pCrwMapping,
CiffHeader* pHead);
static void encode0x080a(const Image& image,
const CrwMapping* pCrwMapping,
CiffHeader* pHead);
static void encodeArray(const Image& image,
const CrwMapping* pCrwMapping,
CiffHeader* pHead);
static void encode0x180e(const Image& image,
const CrwMapping* pCrwMapping,
CiffHeader* pHead);
static void encode0x1810(const Image& image,
const CrwMapping* pCrwMapping,
CiffHeader* pHead);
static void encode0x2008(const Image& image,
const CrwMapping* pCrwMapping,
CiffHeader* pHead);
private:
// DATA
static const CrwMapping crwMapping_[];
static const CrwSubDir crwSubDir_[];
}; // class CrwMap
// *****************************************************************************
// template, inline and free functions
DataBuf packIfdId(const ExifData& exifData,
IfdId ifdId,
ByteOrder byteOrder);
}} // namespace Internal, Exiv2
#endif // #ifndef CRWIMAGE_INT_HPP_
Exiv2::DataBuf
Utility class containing a character array. All it does is to take care of memory allocation and dele...
Definition types.hpp:193
Exiv2::ExifData
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition exif.hpp:434
Exiv2::Image
Abstract base class defining the interface for an image. This is the top-level interface to the Exiv2...
Definition image.hpp:78
Exiv2::Internal::CiffComponent
Interface class for components of the CIFF directory hierarchy of a CRW (Canon Raw data) image....
Definition crwimage_int.hpp:84
Exiv2::Internal::CiffComponent::writeDirEntry
void writeDirEntry(Blob &blob, ByteOrder byteOrder) const
Write a directory entry for the component to the blob. If the size of the data is not larger than 8 b...
Definition crwimage_int.cpp:488
Exiv2::Internal::CiffComponent::AutoPtr
std::auto_ptr< CiffComponent > AutoPtr
CiffComponent auto_ptr type.
Definition crwimage_int.hpp:87
Exiv2::Internal::CiffComponent::pData
const byte * pData() const
Return a pointer to the data area of this component.
Definition crwimage_int.hpp:231
Exiv2::Internal::CiffComponent::Components
std::vector< CiffComponent * > Components
Container type to hold all metadata.
Definition crwimage_int.hpp:89
Exiv2::Internal::CiffComponent::writeValueData
uint32_t writeValueData(Blob &blob, uint32_t offset)
Writes the entry's value if size is larger than eight bytes. If needed, the value is padded with one ...
Definition crwimage_int.cpp:422
Exiv2::Internal::CiffComponent::doFindComponent
virtual CiffComponent * doFindComponent(uint16_t crwTagId, uint16_t crwDir) const
Implements findComponent(). The default implementation checks the entry.
Definition crwimage_int.cpp:637
Exiv2::Internal::CiffComponent::CiffComponent
CiffComponent(uint16_t tag, uint16_t dir)
Constructor taking a tag and directory.
Definition crwimage_int.hpp:98
Exiv2::Internal::CiffComponent::doPrint
virtual void doPrint(std::ostream &os, ByteOrder byteOrder, const std::string &prefix) const
Implements print(). The default implementation prints the entry.
Definition crwimage_int.cpp:544
Exiv2::Internal::CiffComponent::typeId
TypeId typeId() const
Return the type id of thi component.
Definition crwimage_int.hpp:237
Exiv2::Internal::CiffComponent::write
uint32_t write(Blob &blob, ByteOrder byteOrder, uint32_t offset)
Write the metadata from the raw metadata component to the binary image blob. This method may append t...
Definition crwimage_int.cpp:408
Exiv2::Internal::CiffComponent::size
uint32_t size() const
Return the data size of this component.
Definition crwimage_int.hpp:225
Exiv2::Internal::CiffComponent::empty
bool empty() const
Return true if the component is empty, else false.
Definition crwimage_int.cpp:793
Exiv2::Internal::CiffComponent::setSize
void setSize(uint32_t size)
Set the size of the data area.
Definition crwimage_int.hpp:268
Exiv2::Internal::CiffComponent::doWrite
virtual uint32_t doWrite(Blob &blob, ByteOrder byteOrder, uint32_t offset)=0
Implements write()
Exiv2::Internal::CiffComponent::doRemove
virtual void doRemove(CrwDirs &crwDirs, uint16_t crwTagId)
Implements remove(). The default implementation does nothing.
Definition crwimage_int.cpp:756
Exiv2::Internal::CiffComponent::dataLocation
DataLocId dataLocation() const
Return the data location for this component.
Definition crwimage_int.hpp:240
Exiv2::Internal::CiffComponent::~CiffComponent
virtual ~CiffComponent()
Virtual destructor.
Definition crwimage_int.cpp:184
Exiv2::Internal::CiffComponent::read
void read(const byte *pData, uint32_t size, uint32_t start, ByteOrder byteOrder)
Read a component from a data buffer.
Definition crwimage_int.cpp:245
Exiv2::Internal::CiffComponent::doEmpty
virtual bool doEmpty() const
Implements empty(). Default implementation returns true if size is 0.
Definition crwimage_int.cpp:798
Exiv2::Internal::CiffComponent::setOffset
void setOffset(uint32_t offset)
Set the offset for this component.
Definition crwimage_int.hpp:270
Exiv2::Internal::CiffComponent::doDecode
virtual void doDecode(Image &image, ByteOrder byteOrder) const =0
Implements decode()
Exiv2::Internal::CiffComponent::remove
void remove(CrwDirs &crwDirs, uint16_t crwTagId)
Remove crwTagId from the parse tree, if it exists yet. crwDirs contains the path of subdirectories,...
Definition crwimage_int.cpp:751
Exiv2::Internal::CiffComponent::setDir
void setDir(uint16_t dir)
Set the directory tag for this component.
Definition crwimage_int.hpp:172
Exiv2::Internal::CiffComponent::findComponent
CiffComponent * findComponent(uint16_t crwTagId, uint16_t crwDir) const
Finds crwTagId in directory crwDir, returning a pointer to the component or 0 if not found.
Definition crwimage_int.cpp:631
Exiv2::Internal::CiffComponent::decode
void decode(Image &image, ByteOrder byteOrder) const
Decode metadata from the component and add it to image.
Definition crwimage_int.cpp:354
Exiv2::Internal::CiffComponent::tagId
uint16_t tagId() const
Return the tag id of this component.
Definition crwimage_int.hpp:234
Exiv2::Internal::CiffComponent::setValue
void setValue(DataBuf buf)
Set the data value of the entry.
Definition crwimage_int.cpp:579
Exiv2::Internal::CiffComponent::tag
uint16_t tag() const
Return the tag of this component.
Definition crwimage_int.hpp:212
Exiv2::Internal::CiffComponent::print
void print(std::ostream &os, ByteOrder byteOrder, const std::string &prefix="") const
Print debug info about a component to os.
Definition crwimage_int.cpp:537
Exiv2::Internal::CiffComponent::doRead
virtual void doRead(const byte *pData, uint32_t size, uint32_t start, ByteOrder byteOrder)
Implements read(). The default implementation reads a directory entry.
Definition crwimage_int.cpp:253
Exiv2::Internal::CiffComponent::dir
uint16_t dir() const
Return the tag of the directory containing this component.
Definition crwimage_int.hpp:209
Exiv2::Internal::CiffComponent::CiffComponent
CiffComponent()
Default constructor.
Definition crwimage_int.hpp:94
Exiv2::Internal::CiffComponent::doAdd
virtual void doAdd(AutoPtr component)=0
Implements add()
Exiv2::Internal::CiffComponent::offset
uint32_t offset() const
Return the offset to the data from the start of the directory.
Definition crwimage_int.hpp:228
Exiv2::Internal::CiffDirectory
This class models a CIFF directory of a CRW (Canon Raw data) image.
Definition crwimage_int.hpp:343
Exiv2::Internal::CiffDirectory::CiffDirectory
CiffDirectory()
Default constructor.
Definition crwimage_int.hpp:348
Exiv2::Internal::CiffDirectory::readDirectory
void readDirectory(const byte *pData, uint32_t size, ByteOrder byteOrder)
Parse a CIFF directory from a memory buffer.
Definition crwimage_int.cpp:316
Exiv2::Internal::CiffDirectory::~CiffDirectory
virtual ~CiffDirectory()
Virtual destructor.
Definition crwimage_int.cpp:193
Exiv2::Internal::CiffDirectory::CiffDirectory
CiffDirectory(uint16_t tag, uint16_t dir)
Constructor taking a tag and directory.
Definition crwimage_int.hpp:350
Exiv2::Internal::CiffEntry
This class models one directory entry of a CIFF directory of a CRW (Canon Raw data) image.
Definition crwimage_int.hpp:304
Exiv2::Internal::CiffEntry::~CiffEntry
virtual ~CiffEntry()
Virtual destructor.
Definition crwimage_int.cpp:189
Exiv2::Internal::CiffEntry::CiffEntry
CiffEntry(uint16_t tag, uint16_t dir)
Constructor taking a tag and directory.
Definition crwimage_int.hpp:311
Exiv2::Internal::CiffEntry::CiffEntry
CiffEntry()
Default constructor.
Definition crwimage_int.hpp:309
Exiv2::Internal::CiffHeader
This class models the header of a CRW (Canon Raw data) image. It is the head of a CIFF parse tree,...
Definition crwimage_int.hpp:428
Exiv2::Internal::CiffHeader::AutoPtr
std::auto_ptr< CiffHeader > AutoPtr
CiffHeader auto_ptr type.
Definition crwimage_int.hpp:431
Exiv2::Internal::CiffHeader::read
void read(const byte *pData, uint32_t size)
Read the CRW image from a data buffer, starting with the Ciff header.
Definition crwimage_int.cpp:217
Exiv2::Internal::CiffHeader::byteOrder
ByteOrder byteOrder() const
Return the byte order (little or big endian).
Definition crwimage_int.hpp:511
Exiv2::Internal::CiffHeader::remove
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 director...
Definition crwimage_int.cpp:738
Exiv2::Internal::CiffHeader::print
void print(std::ostream &os, const std::string &prefix="") const
Print debug info for the CRW image to os.
Definition crwimage_int.cpp:527
Exiv2::Internal::CiffHeader::decode
void decode(Image &image) const
Decode the CRW image and add it to image.
Definition crwimage_int.cpp:348
Exiv2::Internal::CiffHeader::~CiffHeader
virtual ~CiffHeader()
Virtual destructor.
Definition crwimage_int.cpp:178
Exiv2::Internal::CiffHeader::write
void write(Blob &blob) const
Write the CRW image to the binary image blob, starting with the Ciff header. This method appends to t...
Definition crwimage_int.cpp:373
Exiv2::Internal::CiffHeader::CiffHeader
CiffHeader()
Default constructor.
Definition crwimage_int.hpp:436
Exiv2::Internal::CiffHeader::signature
static const char * signature()
Return a pointer to the Canon CRW signature.
Definition crwimage_int.hpp:481
Exiv2::Internal::CiffHeader::findComponent
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 no...
Definition crwimage_int.cpp:624
Exiv2::Internal::CrwMap
Static class providing mapping functionality from CRW entries to image metadata and vice versa.
Definition crwimage_int.hpp:578
Exiv2::Internal::CrwMap::decode
static void decode(const CiffComponent &ciffComponent, Image &image, ByteOrder byteOrder)
Decode image metadata from a CRW entry, convert and add it to the image metadata. This function conve...
Definition crwimage_int.cpp:808
Exiv2::Internal::CrwMap::encode
static void encode(CiffHeader *pHead, const Image &image)
Encode image metadata from image into the CRW parse tree. This function converts all Exif metadata th...
Definition crwimage_int.cpp:1026
Exiv2::Internal::CrwMap::loadStack
static void loadStack(CrwDirs &crwDirs, uint16_t crwDir)
Load the stack: loop through the CRW subdirs hierarchy and push all directories on the path from crwD...
Definition crwimage_int.cpp:1016
Exiv2::Internal::CrwDecodeFct
void(* CrwDecodeFct)(const CiffComponent &, const CrwMapping *, Image &, ByteOrder)
Function pointer for functions to decode Exif tags from a CRW entry.
Definition crwimage_int.hpp:55
Exiv2::Internal::packIfdId
DataBuf packIfdId(const ExifData &exifData, IfdId ifdId, ByteOrder byteOrder)
Pack the tag values of all ifdId tags in exifData into a data buffer. This function is used to pack C...
Definition crwimage_int.cpp:1244
Exiv2::Internal::DataLocId
DataLocId
Type to identify where the data is stored in a directory.
Definition crwimage_int.hpp:69
Exiv2::Internal::CrwDirs
std::stack< CrwSubDir > CrwDirs
Stack to hold a path of CRW directories.
Definition crwimage_int.hpp:66
Exiv2::Internal::IfdId
IfdId
Type to specify the IFD to which a metadata belongs.
Definition tags_int.hpp:46
Exiv2::Internal::CrwEncodeFct
void(* CrwEncodeFct)(const Image &, const CrwMapping *, CiffHeader *)
Function pointer for functions to encode CRW entries from Exif tags.
Definition crwimage_int.hpp:61
Exiv2
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition asfvideo.hpp:36
Exiv2::TypeId
TypeId
Exiv2 value type identifiers.
Definition types.hpp:119
Exiv2::Blob
std::vector< byte > Blob
Container for binary data.
Definition types.hpp:151
Exiv2::ByteOrder
ByteOrder
Type to express the byte order (little or big endian)
Definition types.hpp:102
Exiv2::Internal::CrwMapping
Structure for a mapping table for conversion of CIFF entries to image metadata and vice versa.
Definition crwimage_int.hpp:541
Exiv2::Internal::CrwMapping::toExif_
CrwDecodeFct toExif_
Conversion function.
Definition crwimage_int.hpp:569
Exiv2::Internal::CrwMapping::ifdId_
IfdId ifdId_
Exif Ifd id to map to.
Definition crwimage_int.hpp:568
Exiv2::Internal::CrwMapping::tag_
uint16_t tag_
Exif tag to map to.
Definition crwimage_int.hpp:567
Exiv2::Internal::CrwMapping::size_
uint32_t size_
Data size (overwrites the size from the entry)
Definition crwimage_int.hpp:566
Exiv2::Internal::CrwMapping::crwDir_
uint16_t crwDir_
CRW directory tag.
Definition crwimage_int.hpp:565
Exiv2::Internal::CrwMapping::fromExif_
CrwEncodeFct fromExif_
Reverse conversion function.
Definition crwimage_int.hpp:570
Exiv2::Internal::CrwMapping::crwTagId_
uint16_t crwTagId_
CRW tag id.
Definition crwimage_int.hpp:564
Exiv2::Internal::CrwMapping::CrwMapping
CrwMapping(uint16_t crwTagId, uint16_t crwDir, uint32_t size, uint16_t tag, Internal::IfdId ifdId, CrwDecodeFct toExif, CrwEncodeFct fromExif)
Default constructor.
Definition crwimage_int.hpp:545
Exiv2::Internal::CrwSubDir
Structure for the CIFF directory hierarchy.
Definition crwimage_int.hpp:532
Exiv2::Internal::CrwSubDir::parent_
uint16_t parent_
Parent directory tag.
Definition crwimage_int.hpp:534
Exiv2::Internal::CrwSubDir::crwDir_
uint16_t crwDir_
Directory tag.
Definition crwimage_int.hpp:533