Exiv2 Namespace Reference

Provides classes and functions to encode and decode Exif and Iptc data. This namespace corresponds to the libexiv2 library. More...


Classes

class  BasicIo
 An interface for simple binary IO. More...
class  IoCloser
 Utility class that closes a BasicIo instance upon destruction. Meant to be used as a stack variable in functions that need to ensure BasicIo instances get closed. Useful when functions return errors from many locations. More...
class  FileIo
 Provides binary file IO by implementing the BasicIo interface. More...
class  MemIo
 Provides binary IO on blocks of memory by implementing the BasicIo interface. A copy-on-write implementation ensures that the data passed in is only copied when necessary, i.e., as soon as data is written to the MemIo. The original data is only used for reading. If writes are performed, the changed data can be retrieved using the read methods (since the data used in construction is never modified). More...
class  CanonMakerNote
 MakerNote for Canon cameras. More...
class  Cr2Image
 Class to access raw Canon CR2 images. Exif metadata is supported directly, IPTC is read from the Exif data, if present. More...
class  Cr2Decoder
 Table of Cr2 decoding functions and find function. See TiffDecoder for details. More...
class  Cr2Header
 Canon CR2 header structure. More...
class  CrwImage
 Class to access raw Canon CRW images. Only Exif metadata and a comment are supported. CRW format does not contain IPTC metadata. More...
class  CrwParser
class  CiffComponent
 Interface class for components of the CIFF directory hierarchy of a Crw (Canon Raw data) image. Both CIFF directories as well as entries implement this interface. This class is implemented as NVI (non-virtual interface). More...
class  CiffEntry
 This class models one directory entry of a CIFF directory of a Crw (Canon Raw data) image. More...
class  CiffDirectory
 This class models a CIFF directory of a Crw (Canon Raw data) image. More...
class  CiffHeader
 This class models the header of a Crw (Canon Raw data) image. It is the head of a CIFF parse tree, consisting of CiffDirectory and CiffEntry objects. Most of its methods will walk the parse tree to perform the requested action. More...
struct  CrwSubDir
 Structure for the CIFF directory hierarchy. More...
struct  CrwMapping
 Structure for a mapping table for conversion of CIFF entries to image metadata and vice versa. More...
class  CrwMap
 Static class providing mapping functionality from Crw entries to image metadata and vice versa. More...
struct  RecordInfo
 Contains information about one record. More...
struct  DataSet
 Dataset information. More...
class  IptcDataSets
 Container for IPTC dataset information. Implemented as a static class. More...
class  IptcKey
 Concrete keys for IPTC metadata. More...
struct  ErrMsg
 Helper structure defining an error message. More...
class  AnyError
 Error class interface. Allows the definition and use of a hierarchy of error classes which can all be handled in one catch block. Inherits from the standard exception base-class, to make life easier for library users (they have the option of catching most things via std::exception). More...
class  Error
 Simple error class used for exceptions. An output operator is provided to print errors to a stream. More...
class  Exifdatum
 Information related to one Exif tag. An Exif metadatum consists of an ExifKey and a Value and provides methods to manipulate these. More...
class  Thumbnail
 Exif Thumbnail image. This abstract base class provides the interface for the thumbnail image that is optionally embedded in the Exif data. This class is used internally by ExifData, it is probably not useful for a client as a standalone class. Instead, use an instance of ExifData to access the Exif thumbnail image. More...
class  TiffThumbnail
 Exif thumbnail image in TIFF format. More...
class  JpegThumbnail
 Exif thumbnail image in JPEG format. More...
class  FindMetadatumByIfdIdIdx
 Unary predicate that matches a Exifdatum with a given ifd id and idx. More...
class  ExifData
 A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifdatum objects. More...
class  FujiMakerNote
 MakerNote for Fujifilm cameras. More...
class  Entry
 Data structure for one IFD directory entry. See the description of class Ifd for an explanation of the supported modes for memory allocation. More...
class  FindEntryByIdx
 Unary predicate that matches an Entry with a given index. More...
class  FindEntryByTag
 Unary predicate that matches an Entry with a given tag. More...
class  Ifd
 Models an IFD (Image File Directory). More...
class  Image
 Abstract base class defining the interface for an image. This is the top-level interface to the Exiv2 library. More...
class  ImageFactory
 Returns an Image instance of the specified type. More...
class  TiffHeader
 Helper class modelling the TIFF header structure. More...
class  Iptcdatum
 Information related to one IPTC dataset. An IPTC metadatum consists of an IptcKey and a Value and provides methods to manipulate these. More...
class  FindMetadatumById
 Unary predicate that matches an Iptcdatum with given record and dataset. More...
class  IptcData
 A container for IPTC data. This is a top-level class of the Exiv2 library. More...
struct  Photoshop
 Helper class, has methods to deal with Photoshop "Information Resource Blocks" (IRBs). More...
class  JpegBase
 Abstract helper base class to access JPEG images. More...
class  JpegImage
 Class to access JPEG images. More...
class  ExvImage
 Helper class to access Exiv2 files. More...
class  MakerNote
 Exif makernote interface. More...
class  IfdMakerNote
 Interface for MakerNotes in IFD format. See MakerNote. More...
class  MakerNoteFactory
 Factory for MakerNote objects. More...
struct  TiffMnRegistry
 Makernote registry structure. More...
class  TiffMnCreator
 TIFF makernote factory for concrete TIFF makernotes. More...
class  MnHeader
 Makernote header interface. This class is used with TIFF makernotes. More...
class  TiffIfdMakernote
 Tiff IFD Makernote. This is a concrete class suitable for all IFD makernotes. More...
class  OlympusMnHeader
 Header of an Olympus Makernote. More...
class  FujiMnHeader
 Header of a Fujifilm Makernote. More...
class  Nikon2MnHeader
 Header of a Nikon 2 Makernote. More...
class  Nikon3MnHeader
 Header of a Nikon 3 Makernote. More...
class  PanasonicMnHeader
 Header of a Panasonic Makernote. More...
class  PentaxMnHeader
 Header of an Pentax Makernote. More...
class  SigmaMnHeader
 Header of a Sigma Makernote. More...
class  SonyMnHeader
 Header of a Sony Makernote. More...
class  Key
 Abstract base class defining the Key of a metadatum. Keys are used to identify and group metadata. More...
class  Metadatum
 Abstract base class defining the interface to access information related to one metadata tag. More...
class  FindMetadatumByKey
 Unary predicate that matches a Exifdatum with a given key. More...
class  MinoltaMakerNote
 MakerNote for Minolta cameras. More...
class  MrwImage
 Class to access raw Minolta MRW images. Exif metadata is supported directly, IPTC is read from the Exif data, if present. More...
class  Nikon1MakerNote
 A MakerNote format used by Nikon cameras, such as the E990 and D1. More...
class  Nikon2MakerNote
 A second MakerNote format used by Nikon cameras, including the E700, E800, E900, E900S, E910, E950. More...
class  Nikon3MakerNote
 A third MakerNote format used by Nikon cameras, e.g., E5400, SQ, D2H, D70. More...
class  OlympusMakerNote
 MakerNote for Olympus cameras. More...
class  OrfImage
 Class to access raw Olympus ORF images. Exif metadata is supported directly, IPTC is read from the Exif data, if present. More...
class  OrfHeader
 Olympus ORF header structure. More...
class  PanasonicMakerNote
 MakerNote for Panasonic cameras. More...
class  PentaxMakerNote
 MakerNote for Pentaxfilm cameras. More...
class  PngChunk
 Stateless parser class for data in PNG chunk format. Images use this class to decode and encode PNG-based data. More...
class  PngImage
 Class to access PNG images. Exif and IPTC metadata are supported directly. More...
struct  XmpPropertyInfo
 Information about one XMP property. More...
struct  XmpNsInfo
 Structure mapping XMP namespaces and (preferred) prefixes. More...
class  XmpProperties
 Container for XMP property information. Implemented as a static class. More...
class  XmpKey
 Concrete keys for XMP metadata. More...
class  RafImage
 Class to access raw Fujifilm RAF images. Exif metadata is supported directly, IPTC is read from the Exif data, if present. More...
class  SigmaMakerNote
 MakerNote for Sigma (Foveon) cameras. More...
class  SonyMakerNote
 MakerNote for Sony cameras. More...
struct  IfdInfo
 Contains information pertaining to one IFD. More...
struct  SectionInfo
 Contains information pertaining to one section. More...
struct  TagInfo
 Tag information. More...
struct  TagDetails
 Helper structure for lookup tables for translations of numeric tag values to human readable labels. More...
struct  TagDetailsBitmask
 Helper structure for lookup tables for translations of bitmask values to human readable labels. More...
class  ExifTags
 Container for Exif tag information. Implemented as a static class. More...
class  ExifKey
 Concrete keys for Exif metadata. More...
class  TiffComponent
 Interface class for components of a TIFF directory hierarchy (Composite pattern). Both TIFF directories as well as entries implement this interface. A component can be uniquely identified by a tag, group tupel. This class is implemented as a NVI (Non-Virtual Interface) and it has an interface for visitors (Visitor pattern). More...
struct  TiffStructure
 Data structure used as a row (element) of a table (array) describing the TIFF structure of an image format for reading and writing. Different tables can be used to support different TIFF based image formats. More...
struct  TiffDecoderInfo
 TIFF decoder table for functions to decode special cases. More...
class  TiffEntryBase
 This abstract base class provides the common functionality of an IFD directory entry and defines an extended interface for derived concrete entries, which allows access to the attributes of the entry. More...
class  TiffEntry
 A standard TIFF IFD entry. More...
class  TiffDataEntry
 A standard TIFF IFD entry consisting of a value which is an offset to a data area and the data area. The size of the data area is provided in a related TiffSizeEntry, tag and group of which are set in the constructor. This component is used, e.g., for Exif.Thumbnail.JPEGInterchangeFormat for which the size is provided in Exif.Thumbnail.JPEGInterchangeFormatLength. More...
class  TiffSizeEntry
 A TIFF IFD entry containing the size of a data area of a related TiffDataEntry. This component is used, e.g. for Exif.Thumbnail.JPEGInterchangeFormatLength, which contains the size of Exif.Thumbnail.JPEGInterchangeFormat. More...
class  TiffDirectory
 This class models a TIFF directory (Ifd). It is a composite component of the TIFF tree. More...
class  TiffSubIfd
 This class models a TIFF sub-directory (sub-IFD). A sub-IFD is an entry with one or more values that are pointers to IFD structures containing an IFD. The TIFF standard defines some important tags to be sub-IFDs, including the Exif and GPS tags. More...
class  TiffMnEntry
 This class is the basis for Makernote support in TIFF. It contains a pointer to a concrete Makernote. The TiffReader visitor has the responsibility to create the correct Make/Model specific Makernote for a particular TIFF file. Calls to child management methods are forwarded to the concrete Makernote, if there is one. More...
class  TiffArrayEntry
 Composite to model an array of tags, each consisting of one unsigned short value. Canon and Minolta makernotes use such tags. The elements of this component are usually of type TiffArrayElement. More...
class  TiffArrayElement
 Element of a TiffArrayEntry. The value is exactly one unsigned short component. Canon and Minolta makernotes use arrays of such elements. More...
class  TiffImage
 Class to access TIFF images. Exif metadata is supported directly, IPTC is read from the Exif data, if present. More...
class  TiffHeaderBase
 Abstract base class defining the interface of an image header. Used internally by classes for TIFF-based images. Default implementation is for the regular TIFF header. More...
class  TiffHeade2
 Standard TIFF header structure. More...
class  TiffCreator
 TIFF component factory for standard TIFF components. More...
class  TiffParser
 Stateless parser class for data in TIFF format. Images use this class to decode and encode TIFF-based data. Uses class CreationPolicy for the creation of TIFF components. More...
class  TiffDecoder
 Table of TIFF decoding functions and find function. This class is separated from the metadata decoder visitor so that the parser can be parametrized with a different table if needed. This is used, eg., for CR2 format, which uses a different decoder table. More...
class  TiffVisitor
 Abstract base class defining the interface for TIFF composite vistors (Visitor pattern). More...
class  TiffFinder
 Search the composite for a component with tag and group. Return a pointer to the component or 0, if not found. The class is ready for a first search after construction and can be re-initialized with init(). More...
class  TiffMetadataDecoder
 TIFF composite visitor to decode metadata from the TIFF tree and add it to an Image, which is supplied in the constructor (Visitor pattern). Used by TiffParser to decode the metadata from a TIFF composite. More...
class  TiffRwState
 Simple state class containing relevant state information for the TIFF reader. This is in a separate class so that the reader can change state if needed (e.g., to read certain complex makernotes). More...
class  TiffReader
 TIFF composite visitor to read the TIFF structure from a block of memory and build the composite from it (Visitor pattern). Used by TiffParser to read the TIFF data from a block of memory. More...
class  TiffPrinter
 TIFF composite visitor to print the TIFF structure to an output stream. More...
struct  TypeInfoTable
 Information pertaining to the defined types. More...
class  TypeInfo
 Type information lookup functions. Implemented as a static class. More...
struct  DataBufRef
 Auxiliary type to enable copies and assignments, similar to std::auto_ptr_ref. See http://www.josuttis.com/libbook/auto_ptr.html for a discussion. More...
class  DataBuf
 Utility class containing a character array. All it does is to take care of memory allocation and deletion. Its primary use is meant to be as a stack variable in functions that need a temporary data buffer. Todo: this should be some sort of smart pointer, essentially an std::auto_ptr for a character array. But it isn't... More...
class  Value
 Common interface for all types of values used with metadata. More...
class  DataValue
 Value for an undefined data type. More...
class  StringValueBase
 Abstract base class for a string based Value type. More...
class  StringValue
 Value for string type. More...
class  AsciiValue
 Value for an Ascii string type. More...
class  CommentValue
 Value for an Exif comment. More...
class  XmpValue
 Base class for all Exiv2 values used to store XMP property values. More...
class  XmpTextValue
 Value type suitable for simple XMP properties and XMP nodes of complex types which are not parsed into specific values. More...
class  XmpArrayValue
 Value type for simple arrays. Each item in the array is a simple value, without qualifiers. The array may be an ordered (seq), unordered (bag) or alternative array (alt). The array items must not contain qualifiers. For language alternatives use LangAltValue. More...
class  LangAltValue
 Value type for XMP language alternative properties. More...
class  DateValue
 Value for simple ISO 8601 dates More...
class  TimeValue
 Value for simple ISO 8601 times. More...
class  ValueType
 Template for a Value of a basic type. This is used for unsigned and signed short, long and rationals. More...
class  Xmpdatum
 Information related to an XMP property. An XMP metadatum consists of an XmpKey and a Value and provides methods to manipulate these. More...
class  XmpData
 A container for XMP data. This is a top-level class of the Exiv2 library. More...
class  XmpParser
 Stateless parser class for XMP packets. Images use this class to parse and serialize XMP packets. The parser uses the XMP toolkit to do the job. More...

Namespaces

namespace  Group
namespace  ImageType
 Supported image formats.
namespace  Tag

Typedefs

typedef void(* CrwDecodeFct )(const CiffComponent &, const CrwMapping *, Image &, ByteOrder)
 Function pointer for functions to decode Exif tags from a Crw entry.
typedef void(* CrwEncodeFct )(const Image &, const CrwMapping *, CiffHeader *)
 Function pointer for functions to encode Crw entries from Exif tags.
typedef std::stack< CrwSubDirCrwDirs
 Stack to hold a path of Crw directories.
typedef std::vector< ExifdatumExifMetadata
 Container type to hold all metadata.
typedef std::vector< EntryEntries
 Container type to hold all IFD directory entries.
typedef std::vector< byteBlob
 Container for binary image.
typedef Image::AutoPtr(* NewInstanceFct )(BasicIo::AutoPtr io, bool create)
 Type for function pointer that creates new Image instances.
typedef bool(* IsThisTypeFct )(BasicIo &iIo, bool advance)
 Type for function pointer that checks image types.
typedef std::vector< IptcdatumIptcMetadata
 Container type to hold all metadata.
typedef MakerNote::AutoPtr(* CreateFct )(bool, const byte *, long, ByteOrder, long)
 Type for a pointer to a function creating a makernote.
typedef TiffComponent *(* NewMnFct )(uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Type for a pointer to a function creating a makernote.
typedef std::ostream &(* PrintFct )(std::ostream &, const Value &)
 Type for a function pointer for functions interpreting the tag value.
typedef std::vector
< TiffDirectory * > 
Ifds
 A collection of TIFF directories (IFDs).
typedef void(TiffMetadataDecoder::* DecoderFct )(const TiffEntryBase *)
 Function pointer type for a TiffMetadataDecoder member function to decode a TIFF component.
typedef const DecoderFct(* FindDecoderFct )(const std::string &make, uint32_t extendedTag, uint16_t group)
 Type for a function pointer for a function to decode a TIFF component.
typedef std::auto_ptr
< TiffComponent >(* 
NewTiffCompFct )(uint16_t tag, const TiffStructure *ts)
 Type for a function pointer for a function to create a TIFF component. Use TiffComponent::AutoPtr, it is not used in this declaration only to reduce dependencies.
typedef std::auto_ptr
< TiffComponent >(* 
TiffCompFactoryFct )(uint32_t extendedTag, uint16_t group)
 Type for a factory function to create new TIFF components. Use TiffComponent::AutoPtr, it is not used in this declaration only to reduce dependencies.
typedef uint8_t byte
 1 byte unsigned integer type.
typedef std::pair< uint32_t,
uint32_t > 
URational
 8 byte unsigned rational type.
typedef std::pair< int32_t,
int32_t > 
Rational
 8 byte signed rational type.
typedef ValueType< uint16_t > UShortValue
 Unsigned short value type.
typedef ValueType< uint32_t > ULongValue
 Unsigned long value type.
typedef ValueType< URationalURationalValue
 Unsigned rational value type.
typedef ValueType< int16_t > ShortValue
 Signed short value type.
typedef ValueType< int32_t > LongValue
 Signed long value type.
typedef ValueType< RationalRationalValue
 Signed rational value type.
typedef std::vector< XmpdatumXmpMetadata
 Container type to hold all metadata.

Enumerations

enum  XmpCategory { xmpInternal, xmpExternal }
 Category of an XMP property.
enum  SectionId {
  sectionIdNotSet, imgStruct, recOffset, imgCharacter,
  otherTags, exifFormat, exifVersion, imgConfig,
  userInfo, relatedFile, dateTime, captureCond,
  gpsTags, iopTags, makerTags, lastSectionId
}
 Section identifiers to logically group tags. A section consists of nothing more than a name, based on the Exif standard.
enum  ByteOrder { invalidByteOrder, littleEndian, bigEndian }
 Type to express the byte order (little or big endian).
enum  MetadataId { mdExif = 1, mdIptc = 2, mdComment = 4, mdXmp = 8 }
 An identifier for each type of metadata.
enum  AccessMode { amNone = 0, amRead = 1, amWrite = 2, amReadWrite = 3 }
 An identifier for each mode of metadata support.
enum  TypeId {
  invalidTypeId, unsignedByte, asciiString, unsignedShort,
  unsignedLong, unsignedRational, signedByte, undefined,
  signedShort, signedLong, signedRational, string,
  date, time, comment, directory,
  xmpText, xmpAlt, xmpBag, xmpSeq,
  langAlt, lastTypeId
}
 Type identifiers for IFD format types.
enum  IfdId {
  ifdIdNotSet, ifd0Id, exifIfdId, gpsIfdId,
  iopIfdId, ifd1Id, canonIfdId, canonCsIfdId,
  canonSiIfdId, canonCfIfdId, canonPiIfdId, canonPaIfdId,
  fujiIfdId, minoltaIfdId, minoltaCs5DIfdId, minoltaCs7DIfdId,
  minoltaCsOldIfdId, minoltaCsNewIfdId, nikon1IfdId, nikon2IfdId,
  nikon3IfdId, olympusIfdId, panasonicIfdId, pentaxIfdId,
  sigmaIfdId, sonyIfdId, lastIfdId
}
 Type to specify the IFD to which a metadata belongs.
enum  DataLocId { invalidDataLocId, valueData, directoryData, lastDataLocId }
 Type to identify where the data is stored in a directory.

Functions

DataBuf readFile (const std::string &path)
 Read file path into a DataBuf, which is returned.
long writeFile (const DataBuf &buf, const std::string &path)
 Write DataBuf buf to file path. Return the number of bytes written.
MakerNote::AutoPtr createCanonMakerNote (bool alloc, const byte *buf, long len, ByteOrder byteOrder, long offset)
 Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.
float canonEv (long val)
 Convert Canon hex-based EV (modulo 0x20) to real number Ported from Phil Harvey's Image::ExifTool::Canon::CanonEv by Will Stokes.
Image::AutoPtr newCr2Instance (BasicIo::AutoPtr io, bool create)
 Create a new Cr2Image instance and return an auto-pointer to it. Caller owns the returned object and the auto-pointer ensures that it will be deleted.
bool isCr2Type (BasicIo &iIo, bool advance)
 Check if the file iIo is a CR2 image.
Image::AutoPtr newCrwInstance (BasicIo::AutoPtr io, bool create)
 Create a new CrwImage instance and return an auto-pointer to it. Caller owns the returned object and the auto-pointer ensures that it will be deleted.
bool isCrwType (BasicIo &iIo, bool advance)
 Check if the file iIo is a Crw image.
DataBuf packIfdId (const ExifData &exifData, IfdId ifdId, ByteOrder byteOrder)
 Pack the tag values of all ifdId tags in exifData into a data buffer. This function is used to pack Canon Camera Settings1,2 and Custom Function tags.
std::ostream & operator<< (std::ostream &os, const DataSet &dataSet)
 Output operator for dataSet.
std::ostream & operator<< (std::ostream &os, const AnyError &error)
 AnyBase output operator
IfdId hasMakerNote (const ExifData &exifData)
 Returns the IfdId of the first Exif makernote tag it finds in the Exif metadata or ifdIdNotSet if there is no Exif makernote tag.
void addToIfd (Ifd &ifd, ExifMetadata::const_iterator begin, ExifMetadata::const_iterator end, ByteOrder byteOrder)
 Add all metadata in the range from iterator position begin to iterator position end, which have an IFD id matching that of the IFD to the list of directory entries of ifd. No duplicate checks are performed, i.e., it is possible to add multiple metadata with the same key to an IFD.
void addToIfd (Ifd &ifd, const Exifdatum &exifdatum, ByteOrder byteOrder)
 Add the Exifdatum to the IFD. No duplicate checks are performed, i.e., it is possible to add multiple metadata with the same key to an IFD.
void addToMakerNote (MakerNote *makerNote, ExifMetadata::const_iterator begin, ExifMetadata::const_iterator end, ByteOrder byteOrder)
 Add all metadata in the range from iterator position begin to iterator position end with IFD id 'makerIfd' to the list of makernote entries of the object pointed to be makerNote. No duplicate checks are performed, i.e., it is possible to add multiple metadata with the same key to a makernote.
void addToMakerNote (MakerNote *makerNote, const Exifdatum &exifdatum, ByteOrder byteOrder)
 Add the Exifdatum to makerNote, encoded in byte order byteOrder. No duplicate checks are performed, i.e., it is possible to add multiple metadata with the same key to a makernote.
std::ostream & operator<< (std::ostream &os, const Exifdatum &md)
 Output operator for Exifdatum types, prints the interpreted tag value.
template<typename T>
ExifdatumsetValue (Exifdatum &exifDatum, const T &value)
 Set the value of exifDatum to value. If the object already has a value, it is replaced. Otherwise a new ValueType<T> value is created and set to value.
MakerNote::AutoPtr createFujiMakerNote (bool alloc, const byte *buf, long len, ByteOrder byteOrder, long offset)
 Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.
bool fileExists (const std::string &path, bool ct=false)
 Test if a file exists.
std::string strError ()
 Return a system error message and the error code (errno). See strerror(3).
bool cmpEntriesByTag (const Entry &lhs, const Entry &rhs)
 Compare two IFD entries by tag. Return true if the tag of entry lhs is less than that of rhs.
bool cmpPreEntriesByOffset (const Ifd::PreEntry &lhs, const Ifd::PreEntry &rhs)
 Compare two 'pre-IFD entries' by offset, taking care of special cases where one or both of the entries don't have an offset. Return true if the offset of entry lhs is less than that of rhs, else false. By definition, entries without an offset are greater than those with an offset.
void append (Blob &blob, const byte *buf, uint32_t len)
 Append len bytes pointed to by buf to blob.
std::ostream & operator<< (std::ostream &os, const Iptcdatum &md)
 Output operator for Iptcdatum types, printing the interpreted tag value.
Image::AutoPtr newJpegInstance (BasicIo::AutoPtr io, bool create)
 Create a new JpegImage instance and return an auto-pointer to it. Caller owns the returned object and the auto-pointer ensures that it will be deleted.
bool isJpegType (BasicIo &iIo, bool advance)
 Check if the file iIo is a JPEG image.
Image::AutoPtr newExvInstance (BasicIo::AutoPtr io, bool create)
 Create a new ExvImage instance and return an auto-pointer to it. Caller owns the returned object and the auto-pointer ensures that it will be deleted.
bool isExvType (BasicIo &iIo, bool advance)
 Check if the file iIo is an EXV file.
TiffComponentnewCanonMn (uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Function to create a Canon makernote.
TiffComponentnewMinoltaMn (uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Function to create a Minolta makernote.
TiffComponentnewOlympusMn (uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Function to create an Olympus makernote.
TiffComponentnewFujiMn (uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Function to create a Fujifilm makernote.
TiffComponentnewNikonMn (uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Function to create a Nikon makernote. This will create the appropriate Nikon 1, 2 or 3 makernote, based on the arguments.
TiffComponentnewPanasonicMn (uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Function to create a Panasonic makernote.
TiffComponentnewPentaxMn (uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Function to create an Pentax makernote.
TiffComponentnewSigmaMn (uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Function to create a Sigma makernote.
TiffComponentnewSonyMn (uint16_t tag, uint16_t group, uint16_t mnGroup, const byte *pData, uint32_t size, ByteOrder byteOrder)
 Function to create a Sony makernote.
std::ostream & operator<< (std::ostream &os, const Key &key)
 Output operator for Key types.
std::ostream & operator<< (std::ostream &os, const Metadatum &md)
 Output operator for Metadatum types, printing the interpreted tag value.
bool cmpMetadataByTag (const Metadatum &lhs, const Metadatum &rhs)
 Compare two metadata by tag. Return true if the tag of metadatum lhs is less than that of rhs.
bool cmpMetadataByKey (const Metadatum &lhs, const Metadatum &rhs)
 Compare two metadata by key. Return true if the key of metadatum lhs is less than that of rhs.
MakerNote::AutoPtr createMinoltaMakerNote (bool alloc, const byte *buf, long len, ByteOrder byteOrder, long offset)
 Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.
Image::AutoPtr newMrwInstance (BasicIo::AutoPtr io, bool create)
 Create a new MrwImage instance and return an auto-pointer to it. Caller owns the returned object and the auto-pointer ensures that it will be deleted.
bool isMrwType (BasicIo &iIo, bool advance)
 Check if the file iIo is a MRW image.
MakerNote::AutoPtr createNikonMakerNote (bool alloc, const byte *buf, long len, ByteOrder byteOrder, long offset)
 Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.
MakerNote::AutoPtr createOlympusMakerNote (bool alloc, const byte *buf, long len, ByteOrder byteOrder, long offset)
 Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.
Image::AutoPtr newOrfInstance (BasicIo::AutoPtr io, bool create)
 Create a new MrwImage instance and return an auto-pointer to it. Caller owns the returned object and the auto-pointer ensures that it will be deleted.
bool isOrfType (BasicIo &iIo, bool advance)
 Check if the file iIo is a MRW image.
MakerNote::AutoPtr createPanasonicMakerNote (bool alloc, const byte *buf, long len, ByteOrder byteOrder, long offset)
 Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.
MakerNote::AutoPtr createPentaxMakerNote (bool alloc, const byte *buf, long len, ByteOrder byteOrder, long offset)
 Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.
template<int N, const TagDetails & array, int count, int ignoredcount>
std::ostream & printCombiTag (std::ostream &os, const Value &value)
 Print function to translate Pentax "combi-values" to a description by looking up a reference table.
Image::AutoPtr newPngInstance (BasicIo::AutoPtr io, bool create)
 Create a new PngImage instance and return an auto-pointer to it. Caller owns the returned object and the auto-pointer ensures that it will be deleted.
bool isPngType (BasicIo &iIo, bool advance)
 Check if the file iIo is a PNG image.
std::ostream & operator<< (std::ostream &os, const XmpPropertyInfo &propertyInfo)
 Output operator for property info.
Image::AutoPtr newRafInstance (BasicIo::AutoPtr io, bool create)
 Create a new RafImage instance and return an auto-pointer to it. Caller owns the returned object and the auto-pointer ensures that it will be deleted.
bool isRafType (BasicIo &iIo, bool advance)
 Check if the file iIo is a RAF image.
MakerNote::AutoPtr createSigmaMakerNote (bool alloc, const byte *buf, long len, ByteOrder byteOrder, long offset)
 Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.
MakerNote::AutoPtr createSonyMakerNote (bool alloc, const byte *buf, long len, ByteOrder byteOrder, long offset)
 Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.
template<int N, const TagDetails & array>
std::ostream & printTag (std::ostream &os, const Value &value)
 Generic print function to translate a long value to a description by looking up a reference table.
template<int N, const TagDetailsBitmask & array>
std::ostream & printTagBitmask (std::ostream &os, const Value &value)
 Generic print function to translate a long value to a description by looking up bitmasks in a reference table.
bool isExifIfd (IfdId ifdId)
 Return true if ifdId is an Exif Ifd Id, i.e., one of ifd0Id, exifIfdId, gpsIfdId, iopIfdId or ifd1Id, else false. This is used to differentiate between standard Exif Ifds and Ifds associated with the makernote.
std::ostream & operator<< (std::ostream &os, const TagInfo &ti)
 Output operator for TagInfo.
float fnumber (float apertureValue)
 Calculate F number from an APEX aperture value.
URational exposureTime (float shutterSpeedValue)
 Calculate the exposure time from an APEX shutter speed value.
const char * tiffGroupName (uint16_t group)
 Return the group name for a group.
TiffComponent::AutoPtr newTiffDirectory (uint16_t tag, const TiffStructure *ts)
 Function to create and initialize a new TIFF directory.
TiffComponent::AutoPtr newTiffSubIfd (uint16_t tag, const TiffStructure *ts)
 Function to create and initialize a new TIFF sub-directory.
TiffComponent::AutoPtr newTiffMnEntry (uint16_t tag, const TiffStructure *ts)
 Function to create and initialize a new TIFF makernote entry.
template<uint16_t elSize>
TiffComponent::AutoPtr newTiffArrayEntry (uint16_t tag, const TiffStructure *ts)
 Function to create and initialize a new array entry.
template<TypeId typeId, ByteOrder byteOrder>
TiffComponent::AutoPtr newTiffArrayElement (uint16_t tag, const TiffStructure *ts)
 Function to create and initialize a new array element.
template<uint16_t szTag, uint16_t szGroup>
TiffComponent::AutoPtr newTiffThumbData (uint16_t tag, const TiffStructure *ts)
 Function to create and initialize a new TIFF entry for a thumbnail (data).
template<uint16_t dtTag, uint16_t dtGroup>
TiffComponent::AutoPtr newTiffThumbSize (uint16_t tag, const TiffStructure *ts)
 Function to create and initialize a new TIFF entry for a thumbnail (size).
Image::AutoPtr newTiffInstance (BasicIo::AutoPtr io, bool create)
 Create a new TiffImage instance and return an auto-pointer to it. Caller owns the returned object and the auto-pointer ensures that it will be deleted.
bool isTiffType (BasicIo &iIo, bool advance)
 Check if the file iIo is a TIFF image.
uint16_t getUShort (const byte *buf, ByteOrder byteOrder)
 Read a 2 byte unsigned short value from the data buffer.
uint32_t getULong (const byte *buf, ByteOrder byteOrder)
 Read a 4 byte unsigned long value from the data buffer.
URational getURational (const byte *buf, ByteOrder byteOrder)
 Read an 8 byte unsigned rational value from the data buffer.
int16_t getShort (const byte *buf, ByteOrder byteOrder)
 Read a 2 byte signed short value from the data buffer.
int32_t getLong (const byte *buf, ByteOrder byteOrder)
 Read a 4 byte signed long value from the data buffer.
Rational getRational (const byte *buf, ByteOrder byteOrder)
 Read an 8 byte signed rational value from the data buffer.
std::ostream & operator<< (std::ostream &os, const Rational &r)
 Output operator for our fake rational.
std::istream & operator>> (std::istream &is, Rational &r)
 Input operator for our fake rational.
std::ostream & operator<< (std::ostream &os, const URational &r)
 Output operator for our fake unsigned rational.
std::istream & operator>> (std::istream &is, URational &r)
 Input operator for our fake unsigned rational.
long us2Data (byte *buf, uint16_t s, ByteOrder byteOrder)
 Convert an unsigned short to data, write the data to the buffer, return number of bytes written.
long ul2Data (byte *buf, uint32_t l, ByteOrder byteOrder)
 Convert an unsigned long to data, write the data to the buffer, return number of bytes written.
long ur2Data (byte *buf, URational l, ByteOrder byteOrder)
 Convert an unsigned rational to data, write the data to the buffer, return number of bytes written.
long s2Data (byte *buf, int16_t s, ByteOrder byteOrder)
 Convert a signed short to data, write the data to the buffer, return number of bytes written.
long l2Data (byte *buf, int32_t l, ByteOrder byteOrder)
 Convert a signed long to data, write the data to the buffer, return number of bytes written.
long r2Data (byte *buf, Rational l, ByteOrder byteOrder)
 Convert a signed rational to data, write the data to the buffer, return number of bytes written.
void hexdump (std::ostream &os, const byte *buf, long len, long offset=0)
 Print len bytes from buf in hex and ASCII format to the given stream, prefixed with the position in the buffer adjusted by offset.
bool isHex (const std::string &str, size_t size=0, const std::string &prefix="")
 Return true if str is a hex number starting with prefix followed by size hex digits, false otherwise. If size is 0, any number of digits is allowed and all are checked.
int exifTime (const char *buf, struct tm *tm)
 Converts a string in the form "%Y:%m:%d %H:%M:%S", e.g., "2007:05:24 12:31:55" to broken down time format, returns 0 if successful, else 1.
const char * exvGettext (const char *str)
 Translate a string using the gettext framework. This wrapper hides all the implementation details from the interface.
template<typename T, typename K, int N>
const T * find (T(&src)[N], const K &key)
 Find an element that matches key in the array src.
template<typename T, int N>
char(& sizer (T(&)[N]))[N]
 Template used in the COUNTOF macro to determine the size of an array.
template<typename T>
std::string toString (const T &arg)
 Utility function to convert the argument of any type to a string.
template<typename T>
stringTo (const std::string &s, bool &ok)
 Utility function to convert a string to a value of type T.
template<typename IntType>
IntType gcd (IntType n, IntType m)
 Return the greatest common denominator of n and m. (implementation from Boost rational.hpp).
std::ostream & operator<< (std::ostream &os, const Value &value)
 Output operator for Value types.
template<typename T>
TypeId getType ()
 Template to determine the TypeId for a type T.
template<>
TypeId getType< uint16_t > ()
 Specialization for an unsigned short.
template<>
TypeId getType< uint32_t > ()
 Specialization for an unsigned long.
template<>
TypeId getType< URational > ()
 Specialization for an unsigned rational.
template<>
TypeId getType< int16_t > ()
 Specialization for a signed short.
template<>
TypeId getType< int32_t > ()
 Specialization for a signed long.
template<>
TypeId getType< Rational > ()
 Specialization for a signed rational.
template<typename T>
getValue (const byte *buf, ByteOrder byteOrder)
 Read a value of type T from the data buffer.
template<typename T>
long toData (byte *buf, T t, ByteOrder byteOrder)
 Convert a value of type T to data, write the data to the data buffer.
template<>
long toData (byte *buf, uint16_t t, ByteOrder byteOrder)
 Specialization to write an unsigned short to the data buffer. Return the number of bytes written.
template<>
long toData (byte *buf, uint32_t t, ByteOrder byteOrder)
 Specialization to write an unsigned long to the data buffer. Return the number of bytes written.
template<>
long toData (byte *buf, URational t, ByteOrder byteOrder)
 Specialization to write an unsigned rational to the data buffer. Return the number of bytes written.
template<>
long toData (byte *buf, int16_t t, ByteOrder byteOrder)
 Specialization to write a signed short to the data buffer. Return the number of bytes written.
template<>
long toData (byte *buf, int32_t t, ByteOrder byteOrder)
 Specialization to write a signed long to the data buffer. Return the number of bytes written.
template<>
long toData (byte *buf, Rational t, ByteOrder byteOrder)
 Specialization to write a signed rational to the data buffer. Return the number of bytes written.
int versionNumber ()
 Return the version of Exiv2 available at runtime as an integer.
const char * version ()
 Return the version of Exiv2 available at runtime as a string.
bool testVersion (int major, int minor, int patch)
 Test the version of the available Exiv2 library at runtime. Return true if it is the same as or newer than the passed-in version.
std::ostream & operator<< (std::ostream &os, const Xmpdatum &md)
 Output operator for Xmpdatum types, printing the interpreted tag value.
Functions printing interpreted tag values
std::ostream & printValue (std::ostream &os, const Value &value)
 Default print function, using the Value output operator.
std::ostream & printLong (std::ostream &os, const Value &value)
 Print the value converted to a long.
std::ostream & printFloat (std::ostream &os, const Value &value)
 Print a Rational or URational value in floating point format.
std::ostream & printDegrees (std::ostream &os, const Value &value)
 Print a longitude or latitude value.
std::ostream & printUcs2 (std::ostream &os, const Value &value)
 Print function converting from UCS-2LE to UTF-8.
std::ostream & print0x0006 (std::ostream &os, const Value &value)
 Print GPS altitude.
std::ostream & print0x0007 (std::ostream &os, const Value &value)
 Print GPS timestamp.
std::ostream & print0x8298 (std::ostream &os, const Value &value)
 Print the copyright.
std::ostream & print0x829a (std::ostream &os, const Value &value)
 Print the exposure time.
std::ostream & print0x829d (std::ostream &os, const Value &value)
 Print the f-number.
std::ostream & print0x8827 (std::ostream &os, const Value &value)
 Print ISO speed ratings.
std::ostream & print0x9101 (std::ostream &os, const Value &value)
 Print components configuration specific to compressed data.
std::ostream & print0x9201 (std::ostream &os, const Value &value)
 Print exposure time converted from APEX shutter speed value.
std::ostream & print0x9202 (std::ostream &os, const Value &value)
 Print f-number converted from APEX aperture value.
std::ostream & print0x9204 (std::ostream &os, const Value &value)
 Print the exposure bias value.
std::ostream & print0x9206 (std::ostream &os, const Value &value)
 Print the subject distance.
std::ostream & print0x920a (std::ostream &os, const Value &value)
 Print the actual focal length of the lens.
std::ostream & print0x9286 (std::ostream &os, const Value &value)
 Print the user comment.
std::ostream & print0xa404 (std::ostream &os, const Value &value)
 Print digital zoom ratio.
std::ostream & print0xa405 (std::ostream &os, const Value &value)
 Print 35mm equivalent focal length.


Detailed Description

Provides classes and functions to encode and decode Exif and Iptc data. This namespace corresponds to the libexiv2 library.

Function Documentation

float Exiv2::canonEv ( long  val  ) 

Convert Canon hex-based EV (modulo 0x20) to real number Ported from Phil Harvey's Image::ExifTool::Canon::CanonEv by Will Stokes.

0x00 -> 0 0x0c -> 0.33333 0x10 -> 0.5 0x14 -> 0.66666 0x20 -> 1 .. 160 -> 5 128 -> 4 143 -> 4.46875

bool Exiv2::cmpPreEntriesByOffset ( const Ifd::PreEntry &  lhs,
const Ifd::PreEntry &  rhs 
)

Compare two 'pre-IFD entries' by offset, taking care of special cases where one or both of the entries don't have an offset. Return true if the offset of entry lhs is less than that of rhs, else false. By definition, entries without an offset are greater than those with an offset.

cmpPreEntriesByOffset needs to know about PreEntry, that's all.

MakerNote::AutoPtr Exiv2::createCanonMakerNote ( bool  alloc,
const byte *  buf,
long  len,
ByteOrder  byteOrder,
long  offset 
)

Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.

Parameters:
alloc Memory management model for the new MakerNote. Determines if memory required to store data should be allocated and deallocated (true) or not (false). If false, only pointers to the buffer provided to read() will be kept. See Ifd for more background on this concept.
buf Pointer to the makernote character buffer (not used).
len Length of the makernote character buffer (not used).
byteOrder Byte order in which the Exif data (and possibly the makernote) is encoded (not used).
offset Offset from the start of the TIFF header of the makernote buffer (not used).
Returns:
An auto-pointer to a newly created empty MakerNote. The caller owns this copy and the auto-pointer ensures that it will be deleted.

MakerNote::AutoPtr Exiv2::createFujiMakerNote ( bool  alloc,
const byte *  buf,
long  len,
ByteOrder  byteOrder,
long  offset 
)

Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.

Parameters:
alloc Memory management model for the new MakerNote. Determines if memory required to store data should be allocated and deallocated (true) or not (false). If false, only pointers to the buffer provided to read() will be kept. See Ifd for more background on this concept.
buf Pointer to the makernote character buffer (not used).
len Length of the makernote character buffer (not used).
byteOrder Byte order in which the Exif data (and possibly the makernote) is encoded (not used).
offset Offset from the start of the TIFF header of the makernote buffer (not used).
Returns:
An auto-pointer to a newly created empty MakerNote. The caller owns this copy and the auto-pointer ensures that it will be deleted.

MakerNote::AutoPtr Exiv2::createMinoltaMakerNote ( bool  alloc,
const byte *  buf,
long  len,
ByteOrder  byteOrder,
long  offset 
)

Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.

Parameters:
alloc Memory management model for the new MakerNote. Determines if memory required to store data should be allocated and deallocated (true) or not (false). If false, only pointers to the buffer provided to read() will be kept. See Ifd for more background on this concept.
buf Pointer to the makernote character buffer (not used).
len Length of the makernote character buffer (not used).
byteOrder Byte order in which the Exif data (and possibly the makernote) is encoded (not used).
offset Offset from the start of the TIFF header of the makernote buffer (not used).
Returns:
An auto-pointer to a newly created empty MakerNote. The caller owns this copy and the auto-pointer ensures that it will be deleted.

MakerNote::AutoPtr Exiv2::createNikonMakerNote ( bool  alloc,
const byte *  buf,
long  len,
ByteOrder  byteOrder,
long  offset 
)

Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.

Parameters:
alloc Memory management model for the new MakerNote. Determines if memory required to store data should be allocated and deallocated (true) or not (false). If false, only pointers to the buffer provided to read() will be kept. See Ifd for more background on this concept.
buf Pointer to the makernote character buffer (not used).
len Length of the makernote character buffer (not used).
byteOrder Byte order in which the Exif data (and possibly the makernote) is encoded (not used).
offset Offset from the start of the TIFF header of the makernote buffer (not used).
Returns:
An auto-pointer to a newly created empty MakerNote. The caller owns this copy and the auto-pointer ensures that it will be deleted.

MakerNote::AutoPtr Exiv2::createOlympusMakerNote ( bool  alloc,
const byte *  buf,
long  len,
ByteOrder  byteOrder,
long  offset 
)

Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.

Parameters:
alloc Memory management model for the new MakerNote. Determines if memory required to store data should be allocated and deallocated (true) or not (false). If false, only pointers to the buffer provided to read() will be kept. See Ifd for more background on this concept.
buf Pointer to the makernote character buffer (not used).
len Length of the makernote character buffer (not used).
byteOrder Byte order in which the Exif data (and possibly the makernote) is encoded (not used).
offset Offset from the start of the TIFF header of the makernote buffer (not used).
Returns:
An auto-pointer to a newly created empty MakerNote. The caller owns this copy and the auto-pointer ensures that it will be deleted.

MakerNote::AutoPtr Exiv2::createPanasonicMakerNote ( bool  alloc,
const byte *  buf,
long  len,
ByteOrder  byteOrder,
long  offset 
)

Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.

Parameters:
alloc Memory management model for the new MakerNote. Determines if memory required to store data should be allocated and deallocated (true) or not (false). If false, only pointers to the buffer provided to read() will be kept. See Ifd for more background on this concept.
buf Pointer to the makernote character buffer (not used).
len Length of the makernote character buffer (not used).
byteOrder Byte order in which the Exif data (and possibly the makernote) is encoded (not used).
offset Offset from the start of the TIFF header of the makernote buffer (not used).
Returns:
An auto-pointer to a newly created empty MakerNote. The caller owns this copy and the auto-pointer ensures that it will be deleted.

MakerNote::AutoPtr Exiv2::createPentaxMakerNote ( bool  alloc,
const byte *  buf,
long  len,
ByteOrder  byteOrder,
long  offset 
)

Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.

Parameters:
alloc Memory management model for the new MakerNote. Determines if memory required to store data should be allocated and deallocated (true) or not (false). If false, only pointers to the buffer provided to read() will be kept. See Ifd for more background on this concept.
buf Pointer to the makernote character buffer (not used).
len Length of the makernote character buffer (not used).
byteOrder Byte order in which the Exif data (and possibly the makernote) is encoded (not used).
offset Offset from the start of the TIFF header of the makernote buffer (not used).
Returns:
An auto-pointer to a newly created empty MakerNote. The caller owns this copy and the auto-pointer ensures that it will be deleted.

MakerNote::AutoPtr Exiv2::createSigmaMakerNote ( bool  alloc,
const byte *  buf,
long  len,
ByteOrder  byteOrder,
long  offset 
)

Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.

Parameters:
alloc Memory management model for the new MakerNote. Determines if memory required to store data should be allocated and deallocated (true) or not (false). If false, only pointers to the buffer provided to read() will be kept. See Ifd for more background on this concept.
buf Pointer to the makernote character buffer (not used).
len Length of the makernote character buffer (not used).
byteOrder Byte order in which the Exif data (and possibly the makernote) is encoded (not used).
offset Offset from the start of the TIFF header of the makernote buffer (not used).
Returns:
An auto-pointer to a newly created empty MakerNote. The caller owns this copy and the auto-pointer ensures that it will be deleted.

MakerNote::AutoPtr Exiv2::createSonyMakerNote ( bool  alloc,
const byte *  buf,
long  len,
ByteOrder  byteOrder,
long  offset 
)

Return an auto-pointer to a newly created empty MakerNote initialized to operate in the memory management model indicated. The caller owns this copy and the auto-pointer ensures that it will be deleted.

Parameters:
alloc Memory management model for the new MakerNote. Determines if memory required to store data should be allocated and deallocated (true) or not (false). If false, only pointers to the buffer provided to read() will be kept. See Ifd for more background on this concept.
buf Pointer to the makernote character buffer (not used).
len Length of the makernote character buffer (not used).
byteOrder Byte order in which the Exif data (and possibly the makernote) is encoded (not used).
offset Offset from the start of the TIFF header of the makernote buffer (not used).
Returns:
An auto-pointer to a newly created empty MakerNote. The caller owns this copy and the auto-pointer ensures that it will be deleted.

bool Exiv2::fileExists ( const std::string &  path,
bool  ct = false 
)

Test if a file exists.

Parameters:
path Name of file to verify.
ct Flag to check if path is a regular file.
Returns:
true if path exists and, if ct is set, is a regular file, else false.
Note:
The function calls stat() test for path and its type, see stat(2). errno is left unchanged in case of an error.

template<typename T, typename K, int N>
const T* Exiv2::find ( T &  src[N],
const K &  key 
) [inline]

Find an element that matches key in the array src.

Designed to be used with lookup tables as shown in the example below. Requires a Key structure (ideally in the array) and a comparison operator to compare a key with an array element. The size of the array is determined automagically. Thanks to Stephan Broennimann for this nifty implementation.

      struct Bar {
          int i;
          int k;
          const char* data;

          struct Key;
          bool operator==(const Bar::Key& rhs) const;
      };

      struct Bar::Key {
          Key(int a, int b) : i(a), k(b) {}
          int i;
          int k;
      };

      bool Bar::operator==(const Bar::Key& key) const // definition
      {
          return i == key.i && k == key.k;
      }

      const Bar bars[] = {
          { 1, 1, "bar data 1" },
          { 1, 2, "bar data 2" },
          { 1, 3, "bar data 3" }
      };

      int main ( void ) {
          const Bar* bar = find(bars, Bar::Key(1, 3));
          if (bar) std::cout << bar->data << "\n";
          else std::cout << "Key not found.\n";
          return 0;
      }

template<typename IntType>
IntType Exiv2::gcd ( IntType  n,
IntType  m 
) [inline]

Return the greatest common denominator of n and m. (implementation from Boost rational.hpp).

Note:
We use n and m as temporaries in this function, so there is no value in using const IntType& as we would only need to make a copy anyway...

template<typename T>
Rational Exiv2::getValue ( const byte *  buf,
ByteOrder  byteOrder 
) [inline]

Read a value of type T from the data buffer.

We need this template function for the ValueType template classes. There are only specializations of this function available; no default implementation is provided.

Parameters:
buf Pointer to the data buffer to read from.
byteOrder Applicable byte order (little or big endian).
Returns:
A value of type T.

template<typename T>
Exifdatum & Exiv2::setValue ( Exifdatum &  exifDatum,
const T &  value 
) [inline]

Set the value of exifDatum to value. If the object already has a value, it is replaced. Otherwise a new ValueType<T> value is created and set to value.

This is a helper function, called from Exifdatum members. It is meant to be used with T = (u)int16_t, (u)int32_t or (U)Rational. Do not use directly.

bool Exiv2::testVersion ( int  major,
int  minor,
int  patch 
)

Test the version of the available Exiv2 library at runtime. Return true if it is the same as or newer than the passed-in version.

Versions are denoted using a triplet of integers: major.minor.patch .

 Don't include the <exiv2/version.hpp> file directly, it is included by
 <exiv2/types.hpp>. Early Exiv2 versions didn't have version.hpp and the macros.

      #include <exiv2/types.hpp>
    
 Make sure an EXIV2_TEST_VERSION macro exists:
      
      #ifdef EXIV2_VERSION
      # ifndef EXIV2_TEST_VERSION
      # define EXIV2_TEST_VERSION(major,minor,patch) \
          ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) )
      # endif
      #else
      # define EXIV2_TEST_VERSION(major,minor,patch) (false)
      #endif
    
      std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n"
                << "Runtime Exiv2 version is    " << Exiv2::version()    << "\n";
    
 Test the Exiv2 version available at runtime but compile the if-clause only if
 the compile-time version is at least 0.15. Earlier versions didn't have a
 testVersion() function:

      #if EXIV2_TEST_VERSION(0,15,0)
      if (Exiv2::testVersion(0,13,0)) {
          std::cout << "Available Exiv2 version is equal to or greater than 0.13\n";
      }
      else {
          std::cout << "Installed Exiv2 version is less than 0.13\n";
      }
      #else
      std::cout << "Compile-time Exiv2 version doesn't have Exiv2::testVersion()\n";
      #endif

template<typename T>
long Exiv2::toData ( byte *  buf,
t,
ByteOrder  byteOrder 
) [inline]

Convert a value of type T to data, write the data to the data buffer.

We need this template function for the ValueType template classes. There are only specializations of this function available; no default implementation is provided.

Parameters:
buf Pointer to the data buffer to write to.
t Value to be converted.
byteOrder Applicable byte order (little or big endian).
Returns:
The number of bytes written to the buffer.


Generated on Tue Feb 5 11:54:22 2008 for Exiv2 by  doxygen 1.5.4