Loading...
Searching...
No Matches
makernote_int.hpp
// SPDX-License-Identifier: GPL-2.0-or-later
#ifndef EXIV2_MAKERNOTE_INT_HPP
#define EXIV2_MAKERNOTE_INT_HPP
// *****************************************************************************
// included header files
#include "tags_int.hpp"
#include "types.hpp"
// namespace extensions
namespace Exiv2::Internal {
class IoWrapper;
class TiffComponent;
// *****************************************************************************
// function prototypes
std::string getExiv2ConfigPath();
std::string readExiv2Config(const std::string& section, const std::string& value, const std::string& def);
// *****************************************************************************
// class definitions
using NewMnFct = std::unique_ptr<TiffComponent> (*)(uint16_t, IfdId, IfdId, const byte*, size_t, ByteOrder);
using NewMnFct2 = std::unique_ptr<TiffComponent> (*)(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 std::unique_ptr<TiffComponent> create(uint16_t tag, IfdId group, const std::string& make, const byte* pData,
size_t size, ByteOrder byteOrder);
static std::unique_ptr<TiffComponent> create(uint16_t tag, IfdId group, IfdId mnGroup);
~TiffMnCreator() = default;
TiffMnCreator(const TiffComponent&) = delete;
TiffMnCreator& operator=(const TiffComponent&) = delete;
private:
static const TiffMnRegistry registry_[];
};
class MnHeader {
public:
virtual ~MnHeader() = default;
virtual bool read(const byte* pData, size_t size, ByteOrder byteOrder) = 0;
virtual void setByteOrder(ByteOrder byteOrder);
[[nodiscard]] virtual size_t size() const = 0;
virtual size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const = 0;
[[nodiscard]] virtual size_t ifdOffset() const;
[[nodiscard]] virtual ByteOrder byteOrder() const;
[[nodiscard]] virtual size_t baseOffset(size_t mnOffset) const;
}; // class MnHeader
class OlympusMnHeader : public MnHeader {
public:
OlympusMnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
static size_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
}; // class OlympusMnHeader
class Olympus2MnHeader : public MnHeader {
public:
Olympus2MnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
[[nodiscard]] size_t baseOffset(size_t mnOffset) const override;
static size_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
}; // class Olympus2MnHeader
class OMSystemMnHeader : public MnHeader {
public:
OMSystemMnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
[[nodiscard]] size_t baseOffset(size_t mnOffset) const override;
static size_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
}; // class OMSystemMnHeader
class FujiMnHeader : public MnHeader {
public:
FujiMnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
// setByteOrder not implemented
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
[[nodiscard]] ByteOrder byteOrder() const override;
[[nodiscard]] size_t baseOffset(size_t mnOffset) const override;
static size_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
static const ByteOrder byteOrder_;
size_t start_{0};
}; // class FujiMnHeader
class Nikon2MnHeader : public MnHeader {
public:
Nikon2MnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
static size_t sizeOfSignature();
private:
DataBuf buf_;
size_t start_{0};
static const byte signature_[];
}; // class Nikon2MnHeader
class Nikon3MnHeader : public MnHeader {
public:
Nikon3MnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
void setByteOrder(ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
[[nodiscard]] ByteOrder byteOrder() const override;
[[nodiscard]] size_t baseOffset(size_t mnOffset) const override;
static size_t sizeOfSignature();
private:
DataBuf buf_;
ByteOrder byteOrder_{invalidByteOrder};
size_t start_;
static const byte signature_[];
}; // class Nikon3MnHeader
class PanasonicMnHeader : public MnHeader {
public:
PanasonicMnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
static size_t sizeOfSignature();
private:
DataBuf buf_;
size_t start_{0};
static const byte signature_[];
}; // class PanasonicMnHeader
class PentaxDngMnHeader : public MnHeader {
public:
PentaxDngMnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
[[nodiscard]] size_t baseOffset(size_t mnOffset) const override;
static size_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
}; // class PentaxDngMnHeader
class PentaxMnHeader : public MnHeader {
public:
PentaxMnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
static size_t sizeOfSignature();
private:
DataBuf header_;
static const byte signature_[];
}; // class PentaxMnHeader
class SamsungMnHeader : public MnHeader {
public:
SamsungMnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t baseOffset(size_t mnOffset) const override;
}; // class SamsungMnHeader
class SigmaMnHeader : public MnHeader {
public:
SigmaMnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
static size_t sizeOfSignature();
private:
DataBuf buf_;
size_t start_{0};
static const byte signature1_[];
static const byte signature2_[];
}; // class SigmaMnHeader
class SonyMnHeader : public MnHeader {
public:
SonyMnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
static size_t sizeOfSignature();
private:
DataBuf buf_;
size_t start_{0};
static const byte signature_[];
}; // class SonyMnHeader
class Casio2MnHeader : public MnHeader {
public:
Casio2MnHeader();
bool read(const byte* pData, size_t size, ByteOrder byteOrder) override;
[[nodiscard]] size_t size() const override;
size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
[[nodiscard]] size_t ifdOffset() const override;
[[nodiscard]] ByteOrder byteOrder() const override;
static size_t sizeOfSignature();
private:
DataBuf buf_;
size_t start_{0};
static const byte signature_[];
static const ByteOrder byteOrder_;
}; // class Casio2MnHeader
// *****************************************************************************
// template, inline and free functions
std::unique_ptr<TiffComponent> newIfdMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newIfdMn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newOlympusMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newOlympusMn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newOlympus2Mn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newOMSystemMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newOMSystemMn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newFujiMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newFujiMn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newNikonMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newNikon2Mn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newNikon3Mn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newPanasonicMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newPanasonicMn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newPentaxMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newPentaxMn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newPentaxDngMn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newSamsungMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newSamsungMn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newSigmaMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newSigmaMn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newSonyMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newSony1Mn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newSony2Mn2(uint16_t tag, IfdId group, IfdId mnGroup);
std::unique_ptr<TiffComponent> newCasioMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte* pData, size_t size,
ByteOrder byteOrder);
std::unique_ptr<TiffComponent> newCasio2Mn2(uint16_t tag, IfdId group, IfdId mnGroup);
int sonyCsSelector(uint16_t tag, const byte* pData, size_t size, TiffComponent* pRoot);
int sony2010eSelector(uint16_t tag, const byte* pData, size_t size, TiffComponent* pRoot);
int sony2FpSelector(uint16_t tag, const byte* pData, size_t size, TiffComponent* pRoot);
int sonyMisc2bSelector(uint16_t tag, const byte* pData, size_t size, TiffComponent* pRoot);
int sonyMisc3cSelector(uint16_t tag, const byte* pData, size_t size, TiffComponent* pRoot);
int nikonSelector(uint16_t tag, const byte* pData, size_t size, TiffComponent* pRoot);
DataBuf nikonCrypt(uint16_t tag, const byte* pData, size_t size, TiffComponent* pRoot);
} // namespace Exiv2::Internal
#endif // EXIV2_MAKERNOTE_INT_HPP
Exiv2::Internal::Casio2MnHeader
Header of a Casio2 Makernote.
Definition makernote_int.hpp:472
Exiv2::Internal::Casio2MnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:639
Exiv2::Internal::Casio2MnHeader::byteOrder
ByteOrder byteOrder() const override
Return the byte order for the makernote. If the return value is invalidByteOrder, this means that the...
Definition makernote_int.cpp:624
Exiv2::Internal::Casio2MnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:608
Exiv2::Internal::Casio2MnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:620
Exiv2::Internal::Casio2MnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:616
Exiv2::Internal::Casio2MnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:628
Exiv2::Internal::Casio2MnHeader::Casio2MnHeader
Casio2MnHeader()
Default constructor.
Definition makernote_int.cpp:612
Exiv2::Internal::FujiMnHeader
Header of a Fujifilm Makernote.
Definition makernote_int.hpp:219
Exiv2::Internal::FujiMnHeader::FujiMnHeader
FujiMnHeader()
Default constructor.
Definition makernote_int.cpp:290
Exiv2::Internal::FujiMnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:321
Exiv2::Internal::FujiMnHeader::baseOffset
size_t baseOffset(size_t mnOffset) const override
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition makernote_int.cpp:306
Exiv2::Internal::FujiMnHeader::byteOrder
ByteOrder byteOrder() const override
Return the byte order for the makernote. If the return value is invalidByteOrder, this means that the...
Definition makernote_int.cpp:302
Exiv2::Internal::FujiMnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:310
Exiv2::Internal::FujiMnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:286
Exiv2::Internal::FujiMnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:294
Exiv2::Internal::FujiMnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:298
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:102
Exiv2::Internal::MnHeader
Makernote header interface. This class is used with TIFF makernotes.
Definition makernote_int.hpp:92
Exiv2::Internal::MnHeader::setByteOrder
virtual void setByteOrder(ByteOrder byteOrder)
Set the byte order for the makernote.
Definition makernote_int.cpp:166
Exiv2::Internal::MnHeader::size
virtual size_t size() const =0
Return the size of the header (in bytes).
Exiv2::Internal::MnHeader::read
virtual bool read(const byte *pData, size_t size, ByteOrder byteOrder)=0
Read the header from a data buffer, return true if ok.
Exiv2::Internal::MnHeader::ifdOffset
virtual size_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:169
Exiv2::Internal::MnHeader::~MnHeader
virtual ~MnHeader()=default
Virtual destructor.
Exiv2::Internal::MnHeader::baseOffset
virtual size_t baseOffset(size_t mnOffset) const
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition makernote_int.cpp:177
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:173
Exiv2::Internal::MnHeader::write
virtual size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const =0
Write the header to a data buffer, return the number of bytes written.
Exiv2::Internal::Nikon2MnHeader
Header of a Nikon 2 Makernote.
Definition makernote_int.hpp:251
Exiv2::Internal::Nikon2MnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:340
Exiv2::Internal::Nikon2MnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:336
Exiv2::Internal::Nikon2MnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:355
Exiv2::Internal::Nikon2MnHeader::Nikon2MnHeader
Nikon2MnHeader()
Default constructor.
Definition makernote_int.cpp:332
Exiv2::Internal::Nikon2MnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:344
Exiv2::Internal::Nikon2MnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:328
Exiv2::Internal::Nikon3MnHeader
Header of a Nikon 3 Makernote.
Definition makernote_int.hpp:279
Exiv2::Internal::Nikon3MnHeader::Nikon3MnHeader
Nikon3MnHeader()
Default constructor.
Definition makernote_int.cpp:367
Exiv2::Internal::Nikon3MnHeader::baseOffset
size_t baseOffset(size_t mnOffset) const override
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition makernote_int.cpp:384
Exiv2::Internal::Nikon3MnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:372
Exiv2::Internal::Nikon3MnHeader::setByteOrder
void setByteOrder(ByteOrder byteOrder) override
Set the byte order for the makernote.
Definition makernote_int.cpp:412
Exiv2::Internal::Nikon3MnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:403
Exiv2::Internal::Nikon3MnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:376
Exiv2::Internal::Nikon3MnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:388
Exiv2::Internal::Nikon3MnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:363
Exiv2::Internal::Nikon3MnHeader::byteOrder
ByteOrder byteOrder() const override
Return the byte order for the makernote. If the return value is invalidByteOrder, this means that the...
Definition makernote_int.cpp:380
Exiv2::Internal::OMSystemMnHeader
Header of an OM Digital Solutions (ex Olympus) Makernote.
Definition makernote_int.hpp:191
Exiv2::Internal::OMSystemMnHeader::OMSystemMnHeader
OMSystemMnHeader()
Default constructor.
Definition makernote_int.cpp:254
Exiv2::Internal::OMSystemMnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:250
Exiv2::Internal::OMSystemMnHeader::baseOffset
size_t baseOffset(size_t mnOffset) const override
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition makernote_int.cpp:266
Exiv2::Internal::OMSystemMnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:270
Exiv2::Internal::OMSystemMnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:262
Exiv2::Internal::OMSystemMnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:258
Exiv2::Internal::OMSystemMnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:278
Exiv2::Internal::Olympus2MnHeader
Header of an Olympus II Makernote.
Definition makernote_int.hpp:163
Exiv2::Internal::Olympus2MnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:226
Exiv2::Internal::Olympus2MnHeader::baseOffset
size_t baseOffset(size_t mnOffset) const override
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition makernote_int.cpp:230
Exiv2::Internal::Olympus2MnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:234
Exiv2::Internal::Olympus2MnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:242
Exiv2::Internal::Olympus2MnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:214
Exiv2::Internal::Olympus2MnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:222
Exiv2::Internal::Olympus2MnHeader::Olympus2MnHeader
Olympus2MnHeader()
Default constructor.
Definition makernote_int.cpp:218
Exiv2::Internal::OlympusMnHeader
Header of an Olympus Makernote.
Definition makernote_int.hpp:136
Exiv2::Internal::OlympusMnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:195
Exiv2::Internal::OlympusMnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:207
Exiv2::Internal::OlympusMnHeader::OlympusMnHeader
OlympusMnHeader()
Default constructor.
Definition makernote_int.cpp:187
Exiv2::Internal::OlympusMnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:191
Exiv2::Internal::OlympusMnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:199
Exiv2::Internal::OlympusMnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:183
Exiv2::Internal::PanasonicMnHeader
Header of a Panasonic Makernote.
Definition makernote_int.hpp:311
Exiv2::Internal::PanasonicMnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:445
Exiv2::Internal::PanasonicMnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:434
Exiv2::Internal::PanasonicMnHeader::PanasonicMnHeader
PanasonicMnHeader()
Default constructor.
Definition makernote_int.cpp:422
Exiv2::Internal::PanasonicMnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:426
Exiv2::Internal::PanasonicMnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:430
Exiv2::Internal::PanasonicMnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:418
Exiv2::Internal::PentaxDngMnHeader
Header of an Pentax DNG Makernote.
Definition makernote_int.hpp:339
Exiv2::Internal::PentaxDngMnHeader::PentaxDngMnHeader
PentaxDngMnHeader()
Default constructor.
Definition makernote_int.cpp:456
Exiv2::Internal::PentaxDngMnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:452
Exiv2::Internal::PentaxDngMnHeader::baseOffset
size_t baseOffset(size_t mnOffset) const override
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition makernote_int.cpp:464
Exiv2::Internal::PentaxDngMnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:468
Exiv2::Internal::PentaxDngMnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:472
Exiv2::Internal::PentaxDngMnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:480
Exiv2::Internal::PentaxDngMnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:460
Exiv2::Internal::PentaxMnHeader
Header of an Pentax Makernote.
Definition makernote_int.hpp:367
Exiv2::Internal::PentaxMnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:487
Exiv2::Internal::PentaxMnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:511
Exiv2::Internal::PentaxMnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:499
Exiv2::Internal::PentaxMnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:503
Exiv2::Internal::PentaxMnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:495
Exiv2::Internal::PentaxMnHeader::PentaxMnHeader
PentaxMnHeader()
Default constructor.
Definition makernote_int.cpp:491
Exiv2::Internal::SamsungMnHeader
Header of a Samsung Makernote, only used for the relative offset.
Definition makernote_int.hpp:394
Exiv2::Internal::SamsungMnHeader::SamsungMnHeader
SamsungMnHeader()
Default constructor.
Definition makernote_int.cpp:516
Exiv2::Internal::SamsungMnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:528
Exiv2::Internal::SamsungMnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:532
Exiv2::Internal::SamsungMnHeader::baseOffset
size_t baseOffset(size_t mnOffset) const override
Return the base offset for the makernote IFD entries relative to the start of the TIFF header....
Definition makernote_int.cpp:524
Exiv2::Internal::SamsungMnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:520
Exiv2::Internal::SigmaMnHeader
Header of a Sigma Makernote.
Definition makernote_int.hpp:415
Exiv2::Internal::SigmaMnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:539
Exiv2::Internal::SigmaMnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:551
Exiv2::Internal::SigmaMnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:555
Exiv2::Internal::SigmaMnHeader::SigmaMnHeader
SigmaMnHeader()
Default constructor.
Definition makernote_int.cpp:543
Exiv2::Internal::SigmaMnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:547
Exiv2::Internal::SigmaMnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:566
Exiv2::Internal::SonyMnHeader
Header of a Sony Makernote.
Definition makernote_int.hpp:444
Exiv2::Internal::SonyMnHeader::SonyMnHeader
SonyMnHeader()
Default constructor.
Definition makernote_int.cpp:577
Exiv2::Internal::SonyMnHeader::ifdOffset
size_t ifdOffset() const override
Return the offset to the start of the Makernote IFD from the start of the Makernote (= the start of t...
Definition makernote_int.cpp:585
Exiv2::Internal::SonyMnHeader::sizeOfSignature
static size_t sizeOfSignature()
Return the size of the makernote header signature.
Definition makernote_int.cpp:573
Exiv2::Internal::SonyMnHeader::size
size_t size() const override
Return the size of the header (in bytes).
Definition makernote_int.cpp:581
Exiv2::Internal::SonyMnHeader::write
size_t write(IoWrapper &ioWrapper, ByteOrder byteOrder) const override
Write the header to a data buffer, return the number of bytes written.
Definition makernote_int.cpp:600
Exiv2::Internal::SonyMnHeader::read
bool read(const byte *pData, size_t size, ByteOrder byteOrder) override
Read the header from a data buffer, return true if ok.
Definition makernote_int.cpp:589
Exiv2::Internal::TiffComponent
Interface class for components of a TIFF directory hierarchy (Composite pattern). Both TIFF directori...
Definition tiffcomposite_int.hpp:152
Exiv2::Internal::TiffMnCreator
TIFF makernote factory for concrete TIFF makernotes.
Definition makernote_int.hpp:61
Exiv2::Internal::TiffMnCreator::TiffMnCreator
TiffMnCreator(const TiffComponent &)=delete
Prevent destruction (needed if used as a policy class)
Exiv2::Internal::TiffMnCreator::create
static std::unique_ptr< TiffComponent > create(uint16_t tag, IfdId group, const std::string &make, const byte *pData, size_t size, ByteOrder byteOrder)
Create the Makernote for camera make and details from the makernote entry itself if needed....
Definition makernote_int.cpp:149
Exiv2::Internal
Helper structure for the Matroska tags lookup table.
Definition matroskavideo.hpp:39
Exiv2::Internal::NewMnFct
std::unique_ptr< TiffComponent >(*)(uint16_t, IfdId, IfdId, const byte *, size_t, ByteOrder) NewMnFct
Type for a pointer to a function creating a makernote (image)
Definition makernote_int.hpp:31
Exiv2::Internal::newCasio2Mn2
std::unique_ptr< TiffComponent > newCasio2Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Casio2 makernote.
Definition makernote_int.cpp:847
Exiv2::Internal::sonyCsSelector
int sonyCsSelector(uint16_t, const byte *, size_t, TiffComponent *pRoot)
Function to select cfg + def of the Sony Camera Settings complex binary array.
Definition makernote_int.cpp:967
Exiv2::Internal::newNikonMn
std::unique_ptr< TiffComponent > newNikonMn(uint16_t tag, IfdId group, IfdId, const byte *pData, size_t size, ByteOrder)
Function to create a Nikon makernote. This will create the appropriate Nikon 1, 2 or 3 makernote,...
Definition makernote_int.cpp:712
Exiv2::Internal::newSigmaMn2
std::unique_ptr< TiffComponent > newSigmaMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Sigma makernote.
Definition makernote_int.cpp:810
Exiv2::Internal::newSony2Mn2
std::unique_ptr< TiffComponent > newSony2Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Sony2 makernote.
Definition makernote_int.cpp:833
Exiv2::Internal::sony2010eSelector
int sony2010eSelector(uint16_t, const byte *, size_t, TiffComponent *pRoot)
Function to select cfg + def of the Sony 2010 Miscellaneous Information complex binary array.
Definition makernote_int.cpp:977
Exiv2::Internal::NewMnFct2
std::unique_ptr< TiffComponent >(*)(uint16_t tag, IfdId group, IfdId mnGroup) NewMnFct2
Type for a pointer to a function creating a makernote (group)
Definition makernote_int.hpp:34
Exiv2::Internal::newNikon3Mn2
std::unique_ptr< TiffComponent > newNikon3Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Nikon3 makernote.
Definition makernote_int.cpp:741
Exiv2::Internal::newNikon2Mn2
std::unique_ptr< TiffComponent > newNikon2Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Nikon2 makernote.
Definition makernote_int.cpp:737
Exiv2::Internal::newPanasonicMn2
std::unique_ptr< TiffComponent > newPanasonicMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Panasonic makernote.
Definition makernote_int.cpp:753
Exiv2::Internal::newOMSystemMn
std::unique_ptr< TiffComponent > newOMSystemMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *, size_t size, ByteOrder)
Function to create an OM Digital Solutions makernote.
Definition makernote_int.cpp:688
Exiv2::Internal::newFujiMn2
std::unique_ptr< TiffComponent > newFujiMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Fujifilm makernote.
Definition makernote_int.cpp:708
Exiv2::Internal::newPanasonicMn
std::unique_ptr< TiffComponent > newPanasonicMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *, size_t size, ByteOrder)
Function to create a Panasonic makernote.
Definition makernote_int.cpp:745
Exiv2::Internal::newFujiMn
std::unique_ptr< TiffComponent > newFujiMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *, size_t size, ByteOrder)
Function to create a Fujifilm makernote.
Definition makernote_int.cpp:700
Exiv2::Internal::nikonCrypt
DataBuf nikonCrypt(uint16_t tag, const byte *pData, size_t size, TiffComponent *pRoot)
Encrypt and decrypt Nikon data.
Definition makernote_int.cpp:926
Exiv2::Internal::newPentaxDngMn2
std::unique_ptr< TiffComponent > newPentaxDngMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create an Pentax DNG makernote.
Definition makernote_int.cpp:778
Exiv2::Internal::newSony1Mn2
std::unique_ptr< TiffComponent > newSony1Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Sony1 makernote.
Definition makernote_int.cpp:829
Exiv2::Internal::newPentaxMn
std::unique_ptr< TiffComponent > newPentaxMn(uint16_t tag, IfdId group, IfdId, const byte *pData, size_t size, ByteOrder)
Function to create an Pentax makernote.
Definition makernote_int.cpp:757
Exiv2::Internal::newSamsungMn2
std::unique_ptr< TiffComponent > newSamsungMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a Samsung makernote.
Definition makernote_int.cpp:798
Exiv2::Internal::newOMSystemMn2
std::unique_ptr< TiffComponent > newOMSystemMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create an OM Digital Solutions makernote.
Definition makernote_int.cpp:696
Exiv2::Internal::nikonSelector
int nikonSelector(uint16_t tag, const byte *pData, size_t size, TiffComponent *)
Function to select cfg + def of a Nikon complex binary array.
Definition makernote_int.cpp:916
Exiv2::Internal::getExiv2ConfigPath
std::string getExiv2ConfigPath()
Determine the path to the Exiv2 configuration file.
Definition makernote_int.cpp:66
Exiv2::Internal::newIfdMn2
std::unique_ptr< TiffComponent > newIfdMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create a simple IFD makernote (Canon, Minolta, Nikon1)
Definition makernote_int.cpp:655
Exiv2::Internal::sonyMisc2bSelector
int sonyMisc2bSelector(uint16_t, const byte *, size_t, TiffComponent *pRoot)
Function to select cfg + def of the SonyMisc2b (tag 9404b) complex binary array.
Definition makernote_int.cpp:993
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:94
Exiv2::Internal::newSamsungMn
std::unique_ptr< TiffComponent > newSamsungMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *pData, size_t size, ByteOrder)
Function to create a Samsung makernote.
Definition makernote_int.cpp:782
Exiv2::Internal::newOlympusMn
std::unique_ptr< TiffComponent > newOlympusMn(uint16_t tag, IfdId group, IfdId, const byte *pData, size_t size, ByteOrder)
Function to create an Olympus makernote.
Definition makernote_int.cpp:659
Exiv2::Internal::newOlympusMn2
std::unique_ptr< TiffComponent > newOlympusMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create an Olympus makernote.
Definition makernote_int.cpp:680
Exiv2::Internal::newPentaxMn2
std::unique_ptr< TiffComponent > newPentaxMn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create an Pentax makernote.
Definition makernote_int.cpp:774
Exiv2::Internal::newCasioMn
std::unique_ptr< TiffComponent > newCasioMn(uint16_t tag, IfdId group, IfdId, const byte *pData, size_t size, ByteOrder)
Function to create a Casio2 makernote.
Definition makernote_int.cpp:837
Exiv2::Internal::sony2FpSelector
int sony2FpSelector(uint16_t, const byte *, size_t, TiffComponent *pRoot)
Function to select cfg + def of the Sony2Fp (tag 9402) complex binary array.
Definition makernote_int.cpp:986
Exiv2::Internal::newSigmaMn
std::unique_ptr< TiffComponent > newSigmaMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *, size_t size, ByteOrder)
Function to create a Sigma makernote.
Definition makernote_int.cpp:802
Exiv2::Internal::newOlympus2Mn2
std::unique_ptr< TiffComponent > newOlympus2Mn2(uint16_t tag, IfdId group, IfdId mnGroup)
Function to create an Olympus II makernote.
Definition makernote_int.cpp:684
Exiv2::Internal::newIfdMn
std::unique_ptr< TiffComponent > newIfdMn(uint16_t tag, IfdId group, IfdId mnGroup, const byte *, size_t size, ByteOrder)
Function to create a simple IFD makernote (Canon, Minolta, Nikon1)
Definition makernote_int.cpp:647
Exiv2::Internal::newSonyMn
std::unique_ptr< TiffComponent > newSonyMn(uint16_t tag, IfdId group, IfdId, const byte *pData, size_t size, ByteOrder)
Function to create a Sony makernote.
Definition makernote_int.cpp:814
Exiv2::Internal::sonyMisc3cSelector
int sonyMisc3cSelector(uint16_t, const byte *, size_t, TiffComponent *pRoot)
Function to select cfg + def of the SonyMisc3c (tag 9400) complex binary array.
Definition makernote_int.cpp:1020
Exiv2::IfdId
IfdId
Type to specify the IFD to which a metadata belongs.
Definition tags.hpp:34
Exiv2::make
EXIV2API ExifData::const_iterator make(const ExifData &ed)
Return the camera make. Please keep in mind that this accessor is provided for convenience only and w...
Definition easyaccess.cpp:333
Exiv2::ByteOrder
ByteOrder
Type to express the byte order (little or big endian)
Definition types.hpp:34
Exiv2::DataBuf
Utility class containing a character array. All it does is to take care of memory allocation and dele...
Definition types.hpp:124
Exiv2::Internal::TiffMnRegistry
Makernote registry structure.
Definition makernote_int.hpp:37
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:138
Exiv2::Internal::TiffMnRegistry::newMnFct2_
NewMnFct2 newMnFct2_
Makernote create function (group)
Definition makernote_int.hpp:55
Exiv2::Internal::TiffMnRegistry::mnGroup_
IfdId mnGroup_
Group identifier.
Definition makernote_int.hpp:53
Exiv2::Internal::TiffMnRegistry::newMnFct_
NewMnFct newMnFct_
Makernote create function (image)
Definition makernote_int.hpp:54
Exiv2::Internal::TiffMnRegistry::make_
const char * make_
Camera make.
Definition makernote_int.hpp:52