makernote_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 MAKERNOTE_INT_HPP_
#define MAKERNOTE_INT_HPP_
// *****************************************************************************
// included header files
#include "tifffwd_int.hpp"
#include "tags_int.hpp"
#include "ini.hpp"
#include "types.hpp"
// + standard includes
#include <string>
// *****************************************************************************
// namespace extensions
namespace Exiv2 {
namespace Internal {
// *****************************************************************************
// function prototypes
std::string getExiv2ConfigPath();
std::string readExiv2Config(const std::string& section,const std::string& value,const std::string& def);
// *****************************************************************************
// class definitions
typedef TiffComponent* (*NewMnFct)(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
typedef TiffComponent* (*NewMnFct2)(uint16_t tag,
IfdId group,
IfdId mnGroup);
struct TiffMnRegistry {
struct MakeKey;
bool operator==(const std::string& key) const;
bool operator==(IfdId key) const;
// DATA
const char* make_;
IfdId mnGroup_;
NewMnFct newMnFct_;
NewMnFct2 newMnFct2_;
};
class TiffMnCreator {
public:
static TiffComponent* create(uint16_t tag,
IfdId group,
const std::string& make,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
static TiffComponent* create(uint16_t tag,
IfdId group,
IfdId mnGroup);
protected:
~TiffMnCreator() {}
private:
static const TiffMnRegistry registry_[]; //<! List of makernotes
}; // class TiffMnCreator
class MnHeader {
public:
virtual ~MnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder) =0;
virtual void setByteOrder(ByteOrder byteOrder);
virtual uint32_t size() const =0;
virtual uint32_t write(IoWrapper& ioWrapper,
ByteOrder byteOrder) const =0;
virtual uint32_t ifdOffset() const;
virtual ByteOrder byteOrder() const;
virtual uint32_t baseOffset(uint32_t mnOffset) const;
}; // class MnHeader
class OlympusMnHeader : public MnHeader {
public:
OlympusMnHeader();
virtual ~OlympusMnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
static uint32_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
}; // class OlympusMnHeader
class Olympus2MnHeader : public MnHeader {
public:
Olympus2MnHeader();
virtual ~Olympus2MnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
virtual uint32_t baseOffset(uint32_t mnOffset) const;
static uint32_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
}; // class Olympus2MnHeader
class FujiMnHeader : public MnHeader {
public:
FujiMnHeader();
virtual ~FujiMnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
// setByteOrder not implemented
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
virtual ByteOrder byteOrder() const;
virtual uint32_t baseOffset(uint32_t mnOffset) const;
static uint32_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
static const ByteOrder byteOrder_;
uint32_t start_;
}; // class FujiMnHeader
class Nikon2MnHeader : public MnHeader {
public:
Nikon2MnHeader();
virtual ~Nikon2MnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
static uint32_t sizeOfSignature();
private:
DataBuf buf_;
uint32_t start_;
static const byte signature_[];
}; // class Nikon2MnHeader
class Nikon3MnHeader : public MnHeader {
public:
Nikon3MnHeader();
virtual ~Nikon3MnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual void setByteOrder(ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
virtual ByteOrder byteOrder() const;
virtual uint32_t baseOffset(uint32_t mnOffset) const;
static uint32_t sizeOfSignature();
private:
DataBuf buf_;
ByteOrder byteOrder_;
uint32_t start_;
static const byte signature_[];
}; // class Nikon3MnHeader
class PanasonicMnHeader : public MnHeader {
public:
PanasonicMnHeader();
virtual ~PanasonicMnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
static uint32_t sizeOfSignature();
private:
DataBuf buf_;
uint32_t start_;
static const byte signature_[];
}; // class PanasonicMnHeader
class PentaxDngMnHeader : public MnHeader {
public:
PentaxDngMnHeader();
virtual ~PentaxDngMnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
virtual uint32_t baseOffset(uint32_t mnOffset) const;
static uint32_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
}; // class PentaxDngMnHeader
class PentaxMnHeader : public MnHeader {
public:
PentaxMnHeader();
virtual ~PentaxMnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
static uint32_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
}; // class PentaxMnHeader
class SamsungMnHeader : public MnHeader {
public:
SamsungMnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t baseOffset(uint32_t mnOffset) const;
}; // class SamsungMnHeader
class SigmaMnHeader : public MnHeader {
public:
SigmaMnHeader();
virtual ~SigmaMnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
static uint32_t sizeOfSignature();
private:
DataBuf buf_;
uint32_t start_;
static const byte signature1_[];
static const byte signature2_[];
}; // class SigmaMnHeader
class SonyMnHeader : public MnHeader {
public:
SonyMnHeader();
virtual ~SonyMnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
static uint32_t sizeOfSignature();
private:
DataBuf buf_;
uint32_t start_;
static const byte signature_[];
}; // class SonyMnHeader
class Casio2MnHeader : public MnHeader {
public:
Casio2MnHeader();
virtual ~Casio2MnHeader();
virtual bool read(const byte* pData,
uint32_t size,
ByteOrder byteOrder);
virtual uint32_t size() const;
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
virtual uint32_t ifdOffset() const;
virtual ByteOrder byteOrder() const;
static uint32_t sizeOfSignature();
private:
DataBuf buf_;
uint32_t start_;
static const byte signature_[];
static const ByteOrder byteOrder_;
}; // class Casio2MnHeader
// *****************************************************************************
// template, inline and free functions
TiffComponent* newIfdMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newIfdMn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newOlympusMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newOlympusMn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newOlympus2Mn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newFujiMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newFujiMn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newNikonMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newNikon2Mn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newNikon3Mn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newPanasonicMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newPanasonicMn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newPentaxMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newPentaxMn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newPentaxDngMn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newSamsungMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newSamsungMn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newSigmaMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newSigmaMn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newSonyMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newSony1Mn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newSony2Mn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
TiffComponent* newCasioMn(uint16_t tag,
IfdId group,
IfdId mnGroup,
const byte* pData,
uint32_t size,
ByteOrder byteOrder);
TiffComponent* newCasio2Mn2(uint16_t tag,
IfdId group,
IfdId mnGroup);
int sonyCsSelector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot);
int sony2010eSelector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot);
int nikonSelector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot);
int nikonAf2Selector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot);
DataBuf nikonCrypt(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot);
}} // namespace Internal, Exiv2
#endif // #ifndef MAKERNOTE_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::Internal::Casio2MnHeader
Header of a Casio2 Makernote.
Definition: makernote_int.hpp:523
Exiv2::Internal::Casio2MnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:815
Exiv2::Internal::Casio2MnHeader::~Casio2MnHeader
virtual ~Casio2MnHeader()
Virtual destructor.
Definition: makernote_int.cpp:811
Exiv2::Internal::Casio2MnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:820
Exiv2::Internal::Casio2MnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:842
Exiv2::Internal::Casio2MnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:830
Exiv2::Internal::Casio2MnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:801
Exiv2::Internal::Casio2MnHeader::byteOrder
virtual ByteOrder byteOrder() const
Return the byte order for the makernote. If the return value is invalidByteOrder, this means that the...
Definition: makernote_int.cpp:825
Exiv2::Internal::Casio2MnHeader::Casio2MnHeader
Casio2MnHeader()
Default constructor.
Definition: makernote_int.cpp:806
Exiv2::Internal::FujiMnHeader
Header of a Fujifilm Makernote.
Definition: makernote_int.hpp:236
Exiv2::Internal::FujiMnHeader::baseOffset
virtual uint32_t baseOffset(uint32_t mnOffset) const
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition: makernote_int.cpp:367
Exiv2::Internal::FujiMnHeader::byteOrder
virtual ByteOrder byteOrder() const
Return the byte order for the makernote. If the return value is invalidByteOrder, this means that the...
Definition: makernote_int.cpp:362
Exiv2::Internal::FujiMnHeader::FujiMnHeader
FujiMnHeader()
Default constructor.
Definition: makernote_int.cpp:343
Exiv2::Internal::FujiMnHeader::~FujiMnHeader
virtual ~FujiMnHeader()
Virtual destructor.
Definition: makernote_int.cpp:348
Exiv2::Internal::FujiMnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:352
Exiv2::Internal::FujiMnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:357
Exiv2::Internal::FujiMnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:338
Exiv2::Internal::FujiMnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:372
Exiv2::Internal::FujiMnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:389
Exiv2::Internal::IoWrapper
Simple IO wrapper to ensure that the header is only written if there is any other data at all.
Definition: tiffcomposite_int.hpp:121
Exiv2::Internal::MnHeader
Makernote header interface. This class is used with TIFF makernotes.
Definition: makernote_int.hpp:126
Exiv2::Internal::MnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const =0
Write the header to a data buffer, return the number of bytes written.
Exiv2::Internal::MnHeader::setByteOrder
virtual void setByteOrder(ByteOrder byteOrder)
Set the byte order for the makernote.
Definition: makernote_int.cpp:211
Exiv2::Internal::MnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)=0
Read the header from a data buffer, return true if ok.
Exiv2::Internal::MnHeader::~MnHeader
virtual ~MnHeader()
Virtual destructor.
Definition: makernote_int.cpp:207
Exiv2::Internal::MnHeader::baseOffset
virtual uint32_t baseOffset(uint32_t mnOffset) const
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition: makernote_int.cpp:225
Exiv2::Internal::MnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:215
Exiv2::Internal::MnHeader::byteOrder
virtual ByteOrder byteOrder() const
Return the byte order for the makernote. If the return value is invalidByteOrder, this means that the...
Definition: makernote_int.cpp:220
Exiv2::Internal::MnHeader::size
virtual uint32_t size() const =0
Return the size of the header (in bytes).
Exiv2::Internal::Nikon2MnHeader
Header of a Nikon 2 Makernote.
Definition: makernote_int.hpp:272
Exiv2::Internal::Nikon2MnHeader::~Nikon2MnHeader
virtual ~Nikon2MnHeader()
Virtual destructor.
Definition: makernote_int.cpp:410
Exiv2::Internal::Nikon2MnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:436
Exiv2::Internal::Nikon2MnHeader::Nikon2MnHeader
Nikon2MnHeader()
Default constructor.
Definition: makernote_int.cpp:405
Exiv2::Internal::Nikon2MnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:414
Exiv2::Internal::Nikon2MnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:400
Exiv2::Internal::Nikon2MnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:419
Exiv2::Internal::Nikon2MnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:424
Exiv2::Internal::Nikon3MnHeader
Header of a Nikon 3 Makernote.
Definition: makernote_int.hpp:304
Exiv2::Internal::Nikon3MnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:465
Exiv2::Internal::Nikon3MnHeader::byteOrder
virtual ByteOrder byteOrder() const
Return the byte order for the makernote. If the return value is invalidByteOrder, this means that the...
Definition: makernote_int.cpp:475
Exiv2::Internal::Nikon3MnHeader::Nikon3MnHeader
Nikon3MnHeader()
Default constructor.
Definition: makernote_int.cpp:453
Exiv2::Internal::Nikon3MnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:485
Exiv2::Internal::Nikon3MnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:470
Exiv2::Internal::Nikon3MnHeader::baseOffset
virtual uint32_t baseOffset(uint32_t mnOffset) const
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition: makernote_int.cpp:480
Exiv2::Internal::Nikon3MnHeader::~Nikon3MnHeader
virtual ~Nikon3MnHeader()
Virtual destructor.
Definition: makernote_int.cpp:461
Exiv2::Internal::Nikon3MnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:500
Exiv2::Internal::Nikon3MnHeader::setByteOrder
virtual void setByteOrder(ByteOrder byteOrder)
Set the byte order for the makernote.
Definition: makernote_int.cpp:514
Exiv2::Internal::Nikon3MnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:448
Exiv2::Internal::Olympus2MnHeader
Header of an Olympus II Makernote.
Definition: makernote_int.hpp:204
Exiv2::Internal::Olympus2MnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:326
Exiv2::Internal::Olympus2MnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:312
Exiv2::Internal::Olympus2MnHeader::baseOffset
virtual uint32_t baseOffset(uint32_t mnOffset) const
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition: makernote_int.cpp:307
Exiv2::Internal::Olympus2MnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:302
Exiv2::Internal::Olympus2MnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:297
Exiv2::Internal::Olympus2MnHeader::Olympus2MnHeader
Olympus2MnHeader()
Default constructor.
Definition: makernote_int.cpp:288
Exiv2::Internal::Olympus2MnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:283
Exiv2::Internal::Olympus2MnHeader::~Olympus2MnHeader
virtual ~Olympus2MnHeader()
Virtual destructor.
Definition: makernote_int.cpp:293
Exiv2::Internal::OlympusMnHeader
Header of an Olympus Makernote.
Definition: makernote_int.hpp:173
Exiv2::Internal::OlympusMnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:234
Exiv2::Internal::OlympusMnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:253
Exiv2::Internal::OlympusMnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:258
Exiv2::Internal::OlympusMnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:272
Exiv2::Internal::OlympusMnHeader::OlympusMnHeader
OlympusMnHeader()
Default constructor.
Definition: makernote_int.cpp:239
Exiv2::Internal::OlympusMnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:248
Exiv2::Internal::OlympusMnHeader::~OlympusMnHeader
virtual ~OlympusMnHeader()
Virtual destructor.
Definition: makernote_int.cpp:244
Exiv2::Internal::PanasonicMnHeader
Header of a Panasonic Makernote.
Definition: makernote_int.hpp:340
Exiv2::Internal::PanasonicMnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:559
Exiv2::Internal::PanasonicMnHeader::~PanasonicMnHeader
virtual ~PanasonicMnHeader()
Virtual destructor.
Definition: makernote_int.cpp:533
Exiv2::Internal::PanasonicMnHeader::PanasonicMnHeader
PanasonicMnHeader()
Default constructor.
Definition: makernote_int.cpp:528
Exiv2::Internal::PanasonicMnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:542
Exiv2::Internal::PanasonicMnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:547
Exiv2::Internal::PanasonicMnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:523
Exiv2::Internal::PanasonicMnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:537
Exiv2::Internal::PentaxDngMnHeader
Header of an Pentax DNG Makernote.
Definition: makernote_int.hpp:372
Exiv2::Internal::PentaxDngMnHeader::PentaxDngMnHeader
PentaxDngMnHeader()
Default constructor.
Definition: makernote_int.cpp:575
Exiv2::Internal::PentaxDngMnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:613
Exiv2::Internal::PentaxDngMnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:599
Exiv2::Internal::PentaxDngMnHeader::baseOffset
virtual uint32_t baseOffset(uint32_t mnOffset) const
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition: makernote_int.cpp:589
Exiv2::Internal::PentaxDngMnHeader::~PentaxDngMnHeader
virtual ~PentaxDngMnHeader()
Virtual destructor.
Definition: makernote_int.cpp:580
Exiv2::Internal::PentaxDngMnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:584
Exiv2::Internal::PentaxDngMnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:570
Exiv2::Internal::PentaxDngMnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:594
Exiv2::Internal::PentaxMnHeader
Header of an Pentax Makernote.
Definition: makernote_int.hpp:404
Exiv2::Internal::PentaxMnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:648
Exiv2::Internal::PentaxMnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:638
Exiv2::Internal::PentaxMnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:624
Exiv2::Internal::PentaxMnHeader::~PentaxMnHeader
virtual ~PentaxMnHeader()
Virtual destructor.
Definition: makernote_int.cpp:634
Exiv2::Internal::PentaxMnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:643
Exiv2::Internal::PentaxMnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:662
Exiv2::Internal::PentaxMnHeader::PentaxMnHeader
PentaxMnHeader()
Default constructor.
Definition: makernote_int.cpp:629
Exiv2::Internal::SamsungMnHeader
Header of a Samsung Makernote, only used for the relative offset.
Definition: makernote_int.hpp:435
Exiv2::Internal::SamsungMnHeader::SamsungMnHeader
SamsungMnHeader()
Default constructor.
Definition: makernote_int.cpp:669
Exiv2::Internal::SamsungMnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:691
Exiv2::Internal::SamsungMnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:684
Exiv2::Internal::SamsungMnHeader::baseOffset
virtual uint32_t baseOffset(uint32_t mnOffset) const
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition: makernote_int.cpp:679
Exiv2::Internal::SamsungMnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:674
Exiv2::Internal::SigmaMnHeader
Header of a Sigma Makernote.
Definition: makernote_int.hpp:458
Exiv2::Internal::SigmaMnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:742
Exiv2::Internal::SigmaMnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:724
Exiv2::Internal::SigmaMnHeader::~SigmaMnHeader
virtual ~SigmaMnHeader()
Virtual destructor.
Definition: makernote_int.cpp:715
Exiv2::Internal::SigmaMnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:704
Exiv2::Internal::SigmaMnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:719
Exiv2::Internal::SigmaMnHeader::SigmaMnHeader
SigmaMnHeader()
Default constructor.
Definition: makernote_int.cpp:710
Exiv2::Internal::SigmaMnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:729
Exiv2::Internal::SonyMnHeader
Header of a Sony Makernote.
Definition: makernote_int.hpp:491
Exiv2::Internal::SonyMnHeader::SonyMnHeader
SonyMnHeader()
Default constructor.
Definition: makernote_int.cpp:758
Exiv2::Internal::SonyMnHeader::~SonyMnHeader
virtual ~SonyMnHeader()
Virtual destructor.
Definition: makernote_int.cpp:763
Exiv2::Internal::SonyMnHeader::sizeOfSignature
static uint32_t sizeOfSignature()
Return the size of the makernote header signature.
Definition: makernote_int.cpp:753
Exiv2::Internal::SonyMnHeader::write
virtual uint32_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const
Write the header to a data buffer, return the number of bytes written.
Definition: makernote_int.cpp:789
Exiv2::Internal::SonyMnHeader::ifdOffset
virtual uint32_t ifdOffset() const
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition: makernote_int.cpp:772
Exiv2::Internal::SonyMnHeader::read
virtual bool read(const byte *pData, uint32_t size, ByteOrder byteOrder)
Read the header from a data buffer, return true if ok.
Definition: makernote_int.cpp:777
Exiv2::Internal::SonyMnHeader::size
virtual uint32_t size() const
Return the size of the header (in bytes).
Definition: makernote_int.cpp:767
Exiv2::Internal::TiffComponent
Interface class for components of a TIFF directory hierarchy (Composite pattern). Both TIFF directori...
Definition: tiffcomposite_int.hpp:171
Exiv2::Internal::TiffMnCreator
TIFF makernote factory for concrete TIFF makernotes.
Definition: makernote_int.hpp:91
Exiv2::Internal::TiffMnCreator::~TiffMnCreator
~TiffMnCreator()
Prevent destruction (needed if used as a policy class)
Definition: makernote_int.hpp:120
Exiv2::Internal::TiffMnCreator::create
static TiffComponent * create(uint16_t tag, IfdId group, const std::string &make, const byte *pData, uint32_t size, ByteOrder byteOrder)
Create the Makernote for camera make and details from the makernote entry itself if needed....
Definition: makernote_int.cpp:166
Exiv2::Internal::nikonSelector
int nikonSelector(uint16_t tag, const byte *pData, uint32_t size, TiffComponent *const)
Function to select cfg + def of a Nikon complex binary array.
Definition: makernote_int.cpp:1183
Exiv2::Internal::newSigmaMn
TiffComponent * newSigmaMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *, uint32_t size, ByteOrder)
Function to create a Sigma makernote.
Definition: makernote_int.cpp:1045
Exiv2::Internal::newPanasonicMn2
TiffComponent * newPanasonicMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Panasonic makernote.
Definition: makernote_int.cpp:978
Exiv2::Internal::newFujiMn
TiffComponent * newFujiMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *, uint32_t size, ByteOrder)
Function to create a Fujifilm makernote.
Definition: makernote_int.cpp:903
Exiv2::Internal::newSony2Mn2
TiffComponent * newSony2Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Sony2 makernote.
Definition: makernote_int.cpp:1090
Exiv2::Internal::newOlympus2Mn2
TiffComponent * newOlympus2Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create an Olympus II makernote.
Definition: makernote_int.cpp:896
Exiv2::Internal::newFujiMn2
TiffComponent * newFujiMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Fujifilm makernote.
Definition: makernote_int.cpp:915
Exiv2::Internal::sonyCsSelector
int sonyCsSelector(uint16_t, const byte *, uint32_t, TiffComponent *const pRoot)
Function to select cfg + def of the Sony Camera Settings complex binary array.
Definition: makernote_int.cpp:1237
Exiv2::Internal::newSonyMn
TiffComponent * newSonyMn(uint16_t tag, IfdId group, IfdId, const byte *pData, uint32_t size, ByteOrder)
Function to create a Sony makernote.
Definition: makernote_int.cpp:1064
Exiv2::Internal::newPanasonicMn
TiffComponent * newPanasonicMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *, uint32_t size, ByteOrder)
Function to create a Panasonic makernote.
Definition: makernote_int.cpp:966
Exiv2::Internal::sony2010eSelector
int sony2010eSelector(uint16_t, const byte *, uint32_t, TiffComponent *const pRoot)
Function to select cfg + def of the Sony 2010 Miscellaneous Information complex binary array.
Definition: makernote_int.cpp:1248
Exiv2::Internal::newNikon3Mn2
TiffComponent * newNikon3Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Nikon3 makernote.
Definition: makernote_int.cpp:959
Exiv2::Internal::nikonCrypt
DataBuf nikonCrypt(uint16_t tag, const byte *pData, uint32_t size, TiffComponent *const pRoot)
Encrypt and decrypt Nikon data.
Definition: makernote_int.cpp:1199
Exiv2::Internal::newSigmaMn2
TiffComponent * newSigmaMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Sigma makernote.
Definition: makernote_int.cpp:1057
Exiv2::Internal::newOlympusMn2
TiffComponent * newOlympusMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create an Olympus makernote.
Definition: makernote_int.cpp:889
Exiv2::Internal::NewMnFct2
TiffComponent *(* NewMnFct2)(uint16_t tag, IfdId group, IfdId mnGroup)
Type for a pointer to a function creating a makernote (group)
Definition: makernote_int.hpp:62
Exiv2::Internal::nikonAf2Selector
int nikonAf2Selector(uint16_t tag, const byte *, uint32_t size, TiffComponent *const)
Function to select cfg + def of a Nikon complex binary array.
Definition: makernote_int.cpp:1190
Exiv2::Internal::getExiv2ConfigPath
std::string getExiv2ConfigPath()
Determine the path to the Exiv2 configuration file.
Definition: makernote_int.cpp:94
Exiv2::Internal::newCasioMn
TiffComponent * newCasioMn(uint16_t tag, IfdId group, IfdId, const byte *pData, uint32_t size, ByteOrder)
Function to create a Casio2 makernote.
Definition: makernote_int.cpp:1097
Exiv2::Internal::newNikon2Mn2
TiffComponent * newNikon2Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Nikon2 makernote.
Definition: makernote_int.cpp:952
Exiv2::Internal::IfdId
IfdId
Type to specify the IFD to which a metadata belongs.
Definition: tags_int.hpp:46
Exiv2::Internal::newSamsungMn
TiffComponent * newSamsungMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *pData, uint32_t size, ByteOrder)
Function to create a Samsung makernote.
Definition: makernote_int.cpp:1016
Exiv2::Internal::newSamsungMn2
TiffComponent * newSamsungMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Samsung makernote.
Definition: makernote_int.cpp:1038
Exiv2::Internal::newPentaxMn
TiffComponent * newPentaxMn(uint16_t tag, IfdId group, IfdId, const byte *pData, uint32_t size, ByteOrder)
Function to create an Pentax makernote.
Definition: makernote_int.cpp:985
Exiv2::Internal::readExiv2Config
std::string readExiv2Config(const std::string &section, const std::string &value, const std::string &def)
Read value from Exiv2 configuration file.
Definition: makernote_int.cpp:113
Exiv2::Internal::newNikonMn
TiffComponent * newNikonMn(uint16_t tag, IfdId group, IfdId, const byte *pData, uint32_t size, ByteOrder)
Function to create a Nikon makernote. This will create the appropriate Nikon 1, 2 or 3 makernote,...
Definition: makernote_int.cpp:922
Exiv2::Internal::newIfdMn2
TiffComponent * newIfdMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a simple IFD makernote (Canon, Minolta, Nikon1)
Definition: makernote_int.cpp:864
Exiv2::Internal::NewMnFct
TiffComponent *(* NewMnFct)(uint16_t tag, IfdId group, IfdId mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
Type for a pointer to a function creating a makernote (image)
Definition: makernote_int.hpp:54
Exiv2::Internal::newSony1Mn2
TiffComponent * newSony1Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Sony1 makernote.
Definition: makernote_int.cpp:1083
Exiv2::Internal::newPentaxDngMn2
TiffComponent * newPentaxDngMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create an Pentax DNG makernote.
Definition: makernote_int.cpp:1009
Exiv2::Internal::newCasio2Mn2
TiffComponent * newCasio2Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Casio2 makernote.
Definition: makernote_int.cpp:1113
Exiv2::Internal::newOlympusMn
TiffComponent * newOlympusMn(uint16_t tag, IfdId group, IfdId, const byte *pData, uint32_t size, ByteOrder)
Function to create an Olympus makernote.
Definition: makernote_int.cpp:871
Exiv2::Internal::newIfdMn
TiffComponent * newIfdMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *, uint32_t size, ByteOrder)
Function to create a simple IFD makernote (Canon, Minolta, Nikon1)
Definition: makernote_int.cpp:852
Exiv2::Internal::newPentaxMn2
TiffComponent * newPentaxMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create an Pentax makernote.
Definition: makernote_int.cpp:1002
Exiv2
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
Exiv2::make
EXIV2API ExifData::const_iterator make(const ExifData &ed)
Return the camera make.
Definition: easyaccess.cpp:437
Exiv2::ByteOrder
ByteOrder
Type to express the byte order (little or big endian)
Definition: types.hpp:102
Exiv2::Internal::TiffMnRegistry
Makernote registry structure.
Definition: makernote_int.hpp:67
Exiv2::Internal::TiffMnRegistry::operator==
bool operator==(const std::string &key) const
Compare a TiffMnRegistry structure with a key being the make string from the image....
Definition: makernote_int.cpp:154
Exiv2::Internal::TiffMnRegistry::newMnFct2_
NewMnFct2 newMnFct2_
Makernote create function (group)
Definition: makernote_int.hpp:85
Exiv2::Internal::TiffMnRegistry::mnGroup_
IfdId mnGroup_
Group identifier.
Definition: makernote_int.hpp:83
Exiv2::Internal::TiffMnRegistry::newMnFct_
NewMnFct newMnFct_
Makernote create function (image)
Definition: makernote_int.hpp:84
Exiv2::Internal::TiffMnRegistry::make_
const char * make_
Camera make.
Definition: makernote_int.hpp:82