|
Packit Service |
21b5d1 |
// ***************************************************************** -*- C++ -*-
|
|
Packit Service |
21b5d1 |
/*
|
|
Packit Service |
21b5d1 |
* Copyright (C) 2004-2018 Exiv2 authors
|
|
Packit Service |
21b5d1 |
* This program is part of the Exiv2 distribution.
|
|
Packit Service |
21b5d1 |
*
|
|
Packit Service |
21b5d1 |
* This program is free software; you can redistribute it and/or
|
|
Packit Service |
21b5d1 |
* modify it under the terms of the GNU General Public License
|
|
Packit Service |
21b5d1 |
* as published by the Free Software Foundation; either version 2
|
|
Packit Service |
21b5d1 |
* of the License, or (at your option) any later version.
|
|
Packit Service |
21b5d1 |
*
|
|
Packit Service |
21b5d1 |
* This program is distributed in the hope that it will be useful,
|
|
Packit Service |
21b5d1 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
21b5d1 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit Service |
21b5d1 |
* GNU General Public License for more details.
|
|
Packit Service |
21b5d1 |
*
|
|
Packit Service |
21b5d1 |
* You should have received a copy of the GNU General Public License
|
|
Packit Service |
21b5d1 |
* along with this program; if not, write to the Free Software
|
|
Packit Service |
21b5d1 |
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@file makernote_int.hpp
|
|
Packit Service |
21b5d1 |
@brief Makernote factory and registry, IFD makernote header, and camera
|
|
Packit Service |
21b5d1 |
vendor specific makernote implementations. References:
|
|
Packit Service |
21b5d1 |
[1] ExifTool by Phil Harvey
|
|
Packit Service |
21b5d1 |
[2] Decoding raw digital photos in Linux by Dave Coffin
|
|
Packit Service |
21b5d1 |
@author Andreas Huggel (ahu)
|
|
Packit Service |
21b5d1 |
ahuggel@gmx.net
|
|
Packit Service |
21b5d1 |
@date 11-Apr-06, ahu: created
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
#ifndef MAKERNOTE_INT_HPP_
|
|
Packit Service |
21b5d1 |
#define MAKERNOTE_INT_HPP_
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
// *****************************************************************************
|
|
Packit Service |
21b5d1 |
// included header files
|
|
Packit Service |
21b5d1 |
#include "tifffwd_int.hpp"
|
|
Packit Service |
21b5d1 |
#include "tags_int.hpp"
|
|
Packit Service |
21b5d1 |
#include "ini.hpp"
|
|
Packit Service |
21b5d1 |
#include "types.hpp"
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
// + standard includes
|
|
Packit Service |
21b5d1 |
#include <string>
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
// *****************************************************************************
|
|
Packit Service |
21b5d1 |
// namespace extensions
|
|
Packit Service |
21b5d1 |
namespace Exiv2 {
|
|
Packit Service |
21b5d1 |
namespace Internal {
|
|
Packit Service |
21b5d1 |
// *****************************************************************************
|
|
Packit Service |
21b5d1 |
// function prototypes
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Determine the path to the Exiv2 configuration file
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
std::string getExiv2ConfigPath();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Read value from Exiv2 configuration file
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
std::string readExiv2Config(const std::string& section,const std::string& value,const std::string& def);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
// *****************************************************************************
|
|
Packit Service |
21b5d1 |
// class definitions
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Type for a pointer to a function creating a makernote (image)
|
|
Packit Service |
21b5d1 |
typedef TiffComponent* (*NewMnFct)(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Type for a pointer to a function creating a makernote (group)
|
|
Packit Service |
21b5d1 |
typedef TiffComponent* (*NewMnFct2)(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Makernote registry structure
|
|
Packit Service |
21b5d1 |
struct TiffMnRegistry {
|
|
Packit Service |
21b5d1 |
struct MakeKey;
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Compare a TiffMnRegistry structure with a key being the make
|
|
Packit Service |
21b5d1 |
string from the image. The two are equal if
|
|
Packit Service |
21b5d1 |
TiffMnRegistry::make_ equals a substring of the key of the
|
|
Packit Service |
21b5d1 |
same size. E.g., registry = "OLYMPUS",
|
|
Packit Service |
21b5d1 |
key = "OLYMPUS OPTICAL CO.,LTD" (found in the image) match.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
bool operator==(const std::string& key) const;
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Compare a TiffMnRegistry structure with a makernote group
|
|
Packit Service |
21b5d1 |
bool operator==(IfdId key) const;
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
// DATA
|
|
Packit Service |
21b5d1 |
const char* make_; //!< Camera make
|
|
Packit Service |
21b5d1 |
IfdId mnGroup_; //!< Group identifier
|
|
Packit Service |
21b5d1 |
NewMnFct newMnFct_; //!< Makernote create function (image)
|
|
Packit Service |
21b5d1 |
NewMnFct2 newMnFct2_; //!< Makernote create function (group)
|
|
Packit Service |
21b5d1 |
};
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief TIFF makernote factory for concrete TIFF makernotes.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
class TiffMnCreator {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Create the Makernote for camera \em make and details from
|
|
Packit Service |
21b5d1 |
the makernote entry itself if needed. Return a pointer to
|
|
Packit Service |
21b5d1 |
the newly created TIFF component. Set tag and group of the
|
|
Packit Service |
21b5d1 |
new component to \em tag and \em group. This method is used
|
|
Packit Service |
21b5d1 |
when a makernote is parsed from the Exif block.
|
|
Packit Service |
21b5d1 |
@note Ownership for the component is transferred to the caller,
|
|
Packit Service |
21b5d1 |
who is responsible to delete the component. No smart pointer
|
|
Packit Service |
21b5d1 |
is used to indicate this transfer here in order to reduce
|
|
Packit Service |
21b5d1 |
file dependencies.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
static TiffComponent* create(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
const std::string& make,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Create the Makernote for a given group. This method is used
|
|
Packit Service |
21b5d1 |
when a makernote is written back from Exif tags.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
static TiffComponent* create(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
protected:
|
|
Packit Service |
21b5d1 |
//! Prevent destruction (needed if used as a policy class)
|
|
Packit Service |
21b5d1 |
~TiffMnCreator() {}
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
static const TiffMnRegistry registry_[]; //
|
|
Packit Service |
21b5d1 |
}; // class TiffMnCreator
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Makernote header interface. This class is used with TIFF makernotes.
|
|
Packit Service |
21b5d1 |
class MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~MnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Read the header from a data buffer, return true if ok
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder) =0;
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Set the byte order for the makernote.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
virtual void setByteOrder(ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Return the size of the header (in bytes).
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const =0;
|
|
Packit Service |
21b5d1 |
//! Write the header to a data buffer, return the number of bytes written.
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder) const =0;
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Return the offset to the start of the Makernote IFD from
|
|
Packit Service |
21b5d1 |
the start of the Makernote (= the start of the header).
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Return the byte order for the makernote. If the return value is
|
|
Packit Service |
21b5d1 |
invalidByteOrder, this means that the byte order of the the
|
|
Packit Service |
21b5d1 |
image should be used for the makernote.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
virtual ByteOrder byteOrder() const;
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Return the base offset for the makernote IFD entries relative
|
|
Packit Service |
21b5d1 |
to the start of the TIFF header. \em mnOffset is the offset
|
|
Packit Service |
21b5d1 |
to the makernote from the start of the TIFF header.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
virtual uint32_t baseOffset(uint32_t mnOffset) const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class MnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of an Olympus Makernote
|
|
Packit Service |
21b5d1 |
class OlympusMnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
OlympusMnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~OlympusMnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf header_; //!< Data buffer for the makernote header
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Olympus makernote header signature
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class OlympusMnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of an Olympus II Makernote
|
|
Packit Service |
21b5d1 |
class Olympus2MnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
Olympus2MnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~Olympus2MnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t baseOffset(uint32_t mnOffset) const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf header_; //!< Data buffer for the makernote header
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Olympus makernote header signature
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class Olympus2MnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of a Fujifilm Makernote
|
|
Packit Service |
21b5d1 |
class FujiMnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
FujiMnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~FujiMnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
// setByteOrder not implemented
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
virtual ByteOrder byteOrder() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t baseOffset(uint32_t mnOffset) const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf header_; //!< Data buffer for the makernote header
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Fujifilm makernote header signature
|
|
Packit Service |
21b5d1 |
static const ByteOrder byteOrder_; //!< Byteorder for makernote (always II)
|
|
Packit Service |
21b5d1 |
uint32_t start_; //!< Start of the mn IFD rel. to mn start
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class FujiMnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of a Nikon 2 Makernote
|
|
Packit Service |
21b5d1 |
class Nikon2MnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
Nikon2MnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~Nikon2MnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf buf_; //!< Raw header data
|
|
Packit Service |
21b5d1 |
uint32_t start_; //!< Start of the mn IFD rel. to mn start
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Nikon 2 makernote header signature
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class Nikon2MnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of a Nikon 3 Makernote
|
|
Packit Service |
21b5d1 |
class Nikon3MnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
Nikon3MnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~Nikon3MnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
virtual void setByteOrder(ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
virtual ByteOrder byteOrder() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t baseOffset(uint32_t mnOffset) const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf buf_; //!< Raw header data
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder_; //!< Byteorder for makernote
|
|
Packit Service |
21b5d1 |
uint32_t start_; //!< Start of the mn IFD rel. to mn start
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Nikon 3 makernote header signature
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class Nikon3MnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of a Panasonic Makernote
|
|
Packit Service |
21b5d1 |
class PanasonicMnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
PanasonicMnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~PanasonicMnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf buf_; //!< Raw header data
|
|
Packit Service |
21b5d1 |
uint32_t start_; //!< Start of the mn IFD rel. to mn start
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Panasonic makernote header signature
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class PanasonicMnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of an Pentax DNG Makernote
|
|
Packit Service |
21b5d1 |
class PentaxDngMnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
PentaxDngMnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~PentaxDngMnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t baseOffset(uint32_t mnOffset) const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf header_; //!< Data buffer for the makernote header
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Pentax DNG makernote header signature
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class PentaxDngMnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of an Pentax Makernote
|
|
Packit Service |
21b5d1 |
class PentaxMnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
PentaxMnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~PentaxMnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf header_; //!< Data buffer for the makernote header
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Pentax makernote header signature
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class PentaxMnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of a Samsung Makernote, only used for the relative offset
|
|
Packit Service |
21b5d1 |
class SamsungMnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
SamsungMnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t baseOffset(uint32_t mnOffset) const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class SamsungMnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of a Sigma Makernote
|
|
Packit Service |
21b5d1 |
class SigmaMnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
SigmaMnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~SigmaMnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf buf_; //!< Raw header data
|
|
Packit Service |
21b5d1 |
uint32_t start_; //!< Start of the mn IFD rel. to mn start
|
|
Packit Service |
21b5d1 |
static const byte signature1_[]; //!< Sigma makernote header signature 1
|
|
Packit Service |
21b5d1 |
static const byte signature2_[]; //!< Sigma makernote header signature 2
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class SigmaMnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of a Sony Makernote
|
|
Packit Service |
21b5d1 |
class SonyMnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
SonyMnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~SonyMnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf buf_; //!< Raw header data
|
|
Packit Service |
21b5d1 |
uint32_t start_; //!< Start of the mn IFD rel. to mn start
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Sony makernote header signature
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class SonyMnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Header of a Casio2 Makernote
|
|
Packit Service |
21b5d1 |
class Casio2MnHeader : public MnHeader {
|
|
Packit Service |
21b5d1 |
public:
|
|
Packit Service |
21b5d1 |
//! @name Creators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
//! Default constructor
|
|
Packit Service |
21b5d1 |
Casio2MnHeader();
|
|
Packit Service |
21b5d1 |
//! Virtual destructor.
|
|
Packit Service |
21b5d1 |
virtual ~Casio2MnHeader();
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Manipulators
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual bool read(const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! @name Accessors
|
|
Packit Service |
21b5d1 |
//@{
|
|
Packit Service |
21b5d1 |
virtual uint32_t size() const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t write(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
|
|
Packit Service |
21b5d1 |
virtual uint32_t ifdOffset() const;
|
|
Packit Service |
21b5d1 |
virtual ByteOrder byteOrder() const;
|
|
Packit Service |
21b5d1 |
//@}
|
|
Packit Service |
21b5d1 |
//! Return the size of the makernote header signature
|
|
Packit Service |
21b5d1 |
static uint32_t sizeOfSignature();
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
private:
|
|
Packit Service |
21b5d1 |
DataBuf buf_; //!< Raw header data
|
|
Packit Service |
21b5d1 |
uint32_t start_; //!< Start of the mn IFD rel. to mn start
|
|
Packit Service |
21b5d1 |
static const byte signature_[]; //!< Casio makernote header signature
|
|
Packit Service |
21b5d1 |
static const ByteOrder byteOrder_; //!< Byteorder for makernote (always big endian)
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}; // class Casio2MnHeader
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
// *****************************************************************************
|
|
Packit Service |
21b5d1 |
// template, inline and free functions
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a simple IFD makernote (Canon, Minolta, Nikon1)
|
|
Packit Service |
21b5d1 |
TiffComponent* newIfdMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a simple IFD makernote (Canon, Minolta, Nikon1)
|
|
Packit Service |
21b5d1 |
TiffComponent* newIfdMn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create an Olympus makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newOlympusMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create an Olympus makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newOlympusMn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create an Olympus II makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newOlympus2Mn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Fujifilm makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newFujiMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Fujifilm makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newFujiMn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Function to create a Nikon makernote. This will create the
|
|
Packit Service |
21b5d1 |
appropriate Nikon 1, 2 or 3 makernote, based on the arguments.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
TiffComponent* newNikonMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Nikon2 makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newNikon2Mn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Nikon3 makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newNikon3Mn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Panasonic makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newPanasonicMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Panasonic makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newPanasonicMn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create an Pentax makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newPentaxMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create an Pentax makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newPentaxMn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create an Pentax DNG makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newPentaxDngMn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Samsung makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newSamsungMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Samsung makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newSamsungMn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Sigma makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newSigmaMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Sigma makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newSigmaMn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Sony makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newSonyMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Sony1 makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newSony1Mn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Sony2 makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newSony2Mn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Casio2 makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newCasioMn(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup,
|
|
Packit Service |
21b5d1 |
const byte* pData,
|
|
Packit Service |
21b5d1 |
uint32_t size,
|
|
Packit Service |
21b5d1 |
ByteOrder byteOrder);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
//! Function to create a Casio2 makernote
|
|
Packit Service |
21b5d1 |
TiffComponent* newCasio2Mn2(uint16_t tag,
|
|
Packit Service |
21b5d1 |
IfdId group,
|
|
Packit Service |
21b5d1 |
IfdId mnGroup);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Function to select cfg + def of the Sony Camera Settings complex binary array.
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
@param tag Tag number of the binary array
|
|
Packit Service |
21b5d1 |
@param pData Pointer to the raw array data.
|
|
Packit Service |
21b5d1 |
@param size Size of the array data.
|
|
Packit Service |
21b5d1 |
@param pRoot Pointer to the root component of the TIFF tree.
|
|
Packit Service |
21b5d1 |
@return An index into the array set, -1 if no match was found.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
int sonyCsSelector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Function to select cfg + def of a Nikon complex binary array.
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
@param tag Tag number of the binary array
|
|
Packit Service |
21b5d1 |
@param pData Pointer to the raw array data.
|
|
Packit Service |
21b5d1 |
@param size Size of the array data.
|
|
Packit Service |
21b5d1 |
@param pRoot Pointer to the root component of the TIFF tree.
|
|
Packit Service |
21b5d1 |
@return An index into the array set, -1 if no match was found.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
int nikonSelector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Function to select cfg + def of a Nikon complex binary array.
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
@param tag Tag number of the binary array
|
|
Packit Service |
21b5d1 |
@param pData Pointer to the raw array data.
|
|
Packit Service |
21b5d1 |
@param size Size of the array data.
|
|
Packit Service |
21b5d1 |
@param pRoot Pointer to the root component of the TIFF tree.
|
|
Packit Service |
21b5d1 |
@return An index into the array set, -1 if no match was found.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
int nikonAf2Selector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
/*!
|
|
Packit Service |
21b5d1 |
@brief Encrypt and decrypt Nikon data.
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
Checks the version of the Nikon data array and en/decrypts (portions of) it as
|
|
Packit Service |
21b5d1 |
needed. (The Nikon encryption algorithm is symmetric.)
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
@note This function requires access to other components of the composite, it
|
|
Packit Service |
21b5d1 |
should only be called after all other components are read.
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
@param tag Tag number of the binary array
|
|
Packit Service |
21b5d1 |
@param pData Pointer to the start of the data to en/decrypt.
|
|
Packit Service |
21b5d1 |
@param size Size of the data buffer.
|
|
Packit Service |
21b5d1 |
@param pRoot Pointer to the root element of the composite.
|
|
Packit Service |
21b5d1 |
@return En/decrypted data. Ownership of the memory is passed to the caller.
|
|
Packit Service |
21b5d1 |
The buffer may be empty in case no decryption was needed.
|
|
Packit Service |
21b5d1 |
*/
|
|
Packit Service |
21b5d1 |
DataBuf nikonCrypt(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot);
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
}} // namespace Internal, Exiv2
|
|
Packit Service |
21b5d1 |
|
|
Packit Service |
21b5d1 |
#endif // #ifndef MAKERNOTE_INT_HPP_
|