24#include "exiv2lib_export.h"
30#include "xmp_exiv2.hpp"
64 typedef enum { kpsNone, kpsBasic, kpsXMP, kpsRecursive
65 , kpsIccProfile , kpsIptcErase
91 uint16_t supportedMetadata,
106 virtual void printStructure(std::ostream& out,
PrintStructureOption option =kpsNone,
int depth=0);
139 virtual void setExifData(
const ExifData& exifData);
144 virtual void clearExifData();
150 virtual void setIptcData(
const IptcData& iptcData);
155 virtual void clearIptcData();
167 virtual void setXmpPacket(
const std::string& xmpPacket);
180 virtual void clearXmpPacket();
193 virtual void setXmpData(
const XmpData& xmpData);
207 virtual void clearXmpData();
213 virtual void setComment(
const std::string&
comment);
218 virtual void clearComment();
225 virtual void setIccProfile(
DataBuf& iccProfile,
bool bTestValid=
true);
230 virtual void clearIccProfile();
247 virtual void setMetadata(
const Image& image);
252 virtual void clearMetadata();
292 virtual std::string& xmpPacket();
307 void writeXmpFromPacket(
bool flag);
334 bool isBigEndianPlatform();
339 bool isLittleEndianPlatform();
341 bool isStringType(uint16_t type);
342 bool isShortType(uint16_t type);
343 bool isLongType(uint16_t type);
344 bool isLongLongType(uint16_t type);
345 bool isRationalType(uint16_t type);
346 bool is2ByteType(uint16_t type);
347 bool is4ByteType(uint16_t type);
348 bool is8ByteType(uint16_t type);
352 uint64_t byteSwap(uint64_t value,
bool bSwap)
const;
353 uint32_t byteSwap(uint32_t value,
bool bSwap)
const;
354 uint16_t byteSwap(uint16_t value,
bool bSwap)
const;
355 uint16_t byteSwap2(
const DataBuf& buf,
size_t offset,
bool bSwap)
const;
356 uint32_t byteSwap4(
const DataBuf& buf,
size_t offset,
bool bSwap)
const;
357 uint64_t byteSwap8(
const DataBuf& buf,
size_t offset,
bool bSwap)
const;
388 virtual int pixelWidth()
const;
392 virtual int pixelHeight()
const;
404 virtual const ExifData& exifData()
const;
416 virtual const IptcData& iptcData()
const;
428 virtual const XmpData& xmpData()
const;
432 virtual std::string
comment()
const;
436 virtual const std::string& xmpPacket()
const;
463 bool supportsMetadata(
MetadataId metadataId)
const;
465 bool writeXmpFromPacket()
const;
473 uint16_t supportedMetadata
475 imageType_ = imageType;
476 supportedMetadata_ = supportedMetadata;
496 const std::string& tagName(uint16_t tag);
499 const char* typeName(uint16_t tag)
const;
512 uint16_t supportedMetadata_;
513 bool writeXmpFromPacket_;
516 std::map<int,std::string> tags_;
548 static BasicIo::AutoPtr createIo(
const std::string& path,
bool useCurl =
true);
549#ifdef EXV_UNICODE_PATH
554 static BasicIo::AutoPtr createIo(
const std::wstring& wpath,
bool useCurl =
true);
569 static Image::AutoPtr open(
const std::string& path,
bool useCurl =
true);
570#ifdef EXV_UNICODE_PATH
575 static Image::AutoPtr open(
const std::wstring& wpath,
bool useCurl =
true);
617#ifdef EXV_UNICODE_PATH
622 static Image::AutoPtr create(
int type,
const std::wstring& wpath);
654 static int getType(
const std::string& path);
655#ifdef EXV_UNICODE_PATH
660 static int getType(
const std::wstring& wpath);
669 static int getType(
const byte* data,
long size);
707 static bool checkType(
int type,
BasicIo& io,
bool advance);
An interface for simple binary IO.
Definition: basicio.hpp:55
std::auto_ptr< BasicIo > AutoPtr
BasicIo auto_ptr type.
Definition: basicio.hpp:58
Utility class containing a character array. All it does is to take care of memory allocation and dele...
Definition: types.hpp:193
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition: exif.hpp:434
Returns an Image instance of the specified type.
Definition: image.hpp:531
Abstract base class defining the interface for an image. This is the top-level interface to the Exiv2...
Definition: image.hpp:78
int pixelHeight_
image pixel height
Definition: image.hpp:492
int pixelWidth_
image pixel width
Definition: image.hpp:491
virtual void readMetadata()=0
Read all metadata supported by a specific image format from the image. Before this method is called,...
BasicIo::AutoPtr io_
Image data IO pointer.
Definition: image.hpp:484
void setTypeSupported(int imageType, uint16_t supportedMetadata)
set type support for this image format
Definition: image.hpp:471
bool good() const
Check if the Image instance is valid. Use after object construction.
Definition: image.cpp:767
virtual std::string mimeType() const =0
Return the MIME type of the image.
NativePreviewList nativePreviews_
list of native previews
Definition: image.hpp:493
std::auto_ptr< Image > AutoPtr
Image auto_ptr type.
Definition: image.hpp:81
int imageType() const
set type support for this image format
Definition: image.hpp:480
ExifData exifData_
Exif data container.
Definition: image.hpp:485
std::string xmpPacket_
XMP packet.
Definition: image.hpp:490
virtual DataBuf * iccProfile()
return iccProfile
Definition: image.hpp:240
virtual bool iccProfileDefined()
Erase iccProfile. the profile is not removed from the actual image until the writeMetadata() method i...
Definition: image.hpp:235
IptcData iptcData_
IPTC data container.
Definition: image.hpp:486
std::string comment_
User comment.
Definition: image.hpp:489
virtual void writeMetadata()=0
Write metadata back to the image.
DataBuf iccProfile_
ICC buffer (binary data)
Definition: image.hpp:488
XmpData xmpData_
XMP data container.
Definition: image.hpp:487
A container for IPTC data. This is a top-level class of the Exiv2 library.
Definition: iptc.hpp:170
A container for XMP data. This is a top-level class of the Exiv2 library.
Definition: xmp_exiv2.hpp:166
Encoding and decoding of Exif data.
Encoding and decoding of IPTC data.
const int none
Not an image.
Definition: image.hpp:45
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
PrintStructureOption
Options for printStructure.
Definition: image.hpp:64
@ comment
Exiv2 type for the Exif user comment.
Definition: types.hpp:139
std::vector< byte > Blob
Container for binary data.
Definition: types.hpp:151
EXIV2API void append(Exiv2::Blob &blob, const byte *buf, uint32_t len)
Append len bytes pointed to by buf to blob.
Definition: image.cpp:1015
ByteOrder
Type to express the byte order (little or big endian)
Definition: types.hpp:102
bool(* IsThisTypeFct)(BasicIo &iIo, bool advance)
Type for function pointer that checks image types.
Definition: image.hpp:524
MetadataId
An identifier for each type of metadata.
Definition: types.hpp:108
TypeId getType()
Template to determine the TypeId for a type T.
AccessMode
An identifier for each mode of metadata support.
Definition: types.hpp:111
std::vector< NativePreview > NativePreviewList
List of native previews. This is meant to be used only by the PreviewManager.
Definition: image.hpp:59
Image::AutoPtr(* NewInstanceFct)(BasicIo::AutoPtr io, bool create)
Type for function pointer that creates new Image instances.
Definition: image.hpp:522
Native preview information. This is meant to be used only by the PreviewManager.
Definition: image.hpp:49
std::string filter_
Filter.
Definition: image.hpp:54
uint32_t width_
Width.
Definition: image.hpp:52
uint32_t size_
Size.
Definition: image.hpp:51
std::string mimeType_
MIME type.
Definition: image.hpp:55
uint32_t height_
Height.
Definition: image.hpp:53
long position_
Position.
Definition: image.hpp:50