basicio.hpp | basicio.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 35 | skipping to change at line 35 | |||
@author Brad Schick (brad) | @author Brad Schick (brad) | |||
<a href="mailto:brad@robotbattle.com">brad@robotbattle.com</a> | <a href="mailto:brad@robotbattle.com">brad@robotbattle.com</a> | |||
@date 04-Dec-04, brad: created | @date 04-Dec-04, brad: created | |||
*/ | */ | |||
#ifndef BASICIO_HPP_ | #ifndef BASICIO_HPP_ | |||
#define BASICIO_HPP_ | #define BASICIO_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
#include "types.hpp" | #include "types.hpp" | |||
#include "futils.hpp" | ||||
// + standard includes | // + standard includes | |||
#include <string> | #include <string> | |||
#include <memory> // for std::auto_ptr | #include <memory> // for std::auto_ptr | |||
#include <fstream> // write the temporary file | ||||
#include <fcntl.h> // _O_BINARY in FileIo::FileIo | ||||
#include <ctime> // timestamp for the name of temporary file | ||||
#include <cstring> // std::memcpy | ||||
// The way to handle data from stdin or data uri path. If EXV_XPATH_MEMIO = | ||||
1, | ||||
// it uses MemIo. Otherwises, it uses FileIo. | ||||
#ifndef EXV_XPATH_MEMIO | ||||
#define EXV_XPATH_MEMIO 0 | ||||
#endif | ||||
#ifndef EXV_USE_CURL | ||||
#define EXV_USE_CURL 0 | ||||
#endif | ||||
#ifndef EXV_USE_SSH | ||||
#define EXV_USE_SSH 0 | ||||
#endif | ||||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// namespace extensions | // namespace extensions | |||
namespace Exiv2 { | namespace Exiv2 { | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// class definitions | // class definitions | |||
/*! | /*! | |||
@brief An interface for simple binary IO. | @brief An interface for simple binary IO. | |||
skipping to change at line 173 | skipping to change at line 190 | |||
virtual void transfer(BasicIo& src) = 0; | virtual void transfer(BasicIo& src) = 0; | |||
/*! | /*! | |||
@brief Move the current IO position. | @brief Move the current IO position. | |||
@param offset Number of bytes to move the position relative | @param offset Number of bytes to move the position relative | |||
to the starting position specified by \em pos | to the starting position specified by \em pos | |||
@param pos Position from which the seek should start | @param pos Position from which the seek should start | |||
@return 0 if successful;<BR> | @return 0 if successful;<BR> | |||
Nonzero if failure; | Nonzero if failure; | |||
*/ | */ | |||
#if defined(_MSC_VER) | #if defined(_MSC_VER) | |||
virtual int seek(uint64_t offset, Position pos) = 0; | virtual int seek(int64_t offset, Position pos) = 0; | |||
#else | #else | |||
virtual int seek(long offset, Position pos) = 0; | virtual int seek(long offset, Position pos) = 0; | |||
#endif | #endif | |||
/*! | /*! | |||
@brief Direct access to the IO data. For files, this is done by | @brief Direct access to the IO data. For files, this is done by | |||
mapping the file into the process's address space; for mem ory | mapping the file into the process's address space; for mem ory | |||
blocks, this allows direct access to the memory block. | blocks, this allows direct access to the memory block. | |||
@param isWriteable Set to true if the mapped area should be write able | @param isWriteable Set to true if the mapped area should be write able | |||
(default is false). | (default is false). | |||
@return A pointer to the mapped area. | @return A pointer to the mapped area. | |||
@throw Error In case of failure. | @throw Error In case of failure. | |||
skipping to change at line 244 | skipping to change at line 261 | |||
For example, data may be read from the original IO source, modifi ed | For example, data may be read from the original IO source, modifi ed | |||
in some way, and then saved to the temporary instance. After the | in some way, and then saved to the temporary instance. After the | |||
operation is complete, the BasicIo::transfer method can be used t o | operation is complete, the BasicIo::transfer method can be used t o | |||
replace the original IO source with the modified version. Subclas ses | replace the original IO source with the modified version. Subclas ses | |||
are free to return any class that derives from BasicIo. | are free to return any class that derives from BasicIo. | |||
@return An instance of BasicIo on success | @return An instance of BasicIo on success | |||
@throw Error In case of failure | @throw Error In case of failure | |||
*/ | */ | |||
virtual BasicIo::AutoPtr temporary() const = 0; | virtual BasicIo::AutoPtr temporary() const = 0; | |||
/*! | ||||
@brief Mark all the bNone blocks to bKnow. This avoids allocating | ||||
memory | ||||
for parts of the file that contain image-date (non-metadata/pix | ||||
el data) | ||||
@note This method should be only called after the concerned data | ||||
(metadata) | ||||
are all downloaded from the remote file to memory. | ||||
*/ | ||||
virtual void populateFakeData() {} | ||||
//@} | //@} | |||
protected: | protected: | |||
//! @name Creators | //! @name Creators | |||
//@{ | //@{ | |||
//! Default Constructor | //! Default Constructor | |||
BasicIo() {} | BasicIo() {} | |||
//@} | //@} | |||
}; // class BasicIo | }; // class BasicIo | |||
skipping to change at line 267 | skipping to change at line 293 | |||
ensure BasicIo instances get closed. Useful when functions return | ensure BasicIo instances get closed. Useful when functions return | |||
errors from many locations. | errors from many locations. | |||
*/ | */ | |||
class EXIV2API IoCloser { | class EXIV2API IoCloser { | |||
public: | public: | |||
//! @name Creators | //! @name Creators | |||
//@{ | //@{ | |||
//! Constructor, takes a BasicIo reference | //! Constructor, takes a BasicIo reference | |||
IoCloser(BasicIo& bio) : bio_(bio) {} | IoCloser(BasicIo& bio) : bio_(bio) {} | |||
//! Destructor, closes the BasicIo reference | //! Destructor, closes the BasicIo reference | |||
~IoCloser() { close(); } | virtual ~IoCloser() { close(); } | |||
//@} | //@} | |||
//! @name Manipulators | //! @name Manipulators | |||
//@{ | //@{ | |||
//! Close the BasicIo if it is open | //! Close the BasicIo if it is open | |||
void close() { if (bio_.isopen()) bio_.close(); } | void close() { if (bio_.isopen()) bio_.close(); } | |||
//@} | //@} | |||
// DATA | // DATA | |||
//! The BasicIo reference | //! The BasicIo reference | |||
skipping to change at line 433 | skipping to change at line 459 | |||
virtual void transfer(BasicIo& src); | virtual void transfer(BasicIo& src); | |||
/*! | /*! | |||
@brief Move the current file position. | @brief Move the current file position. | |||
@param offset Number of bytes to move the file position | @param offset Number of bytes to move the file position | |||
relative to the starting position specified by \em pos | relative to the starting position specified by \em pos | |||
@param pos Position from which the seek should start | @param pos Position from which the seek should start | |||
@return 0 if successful;<BR> | @return 0 if successful;<BR> | |||
Nonzero if failure; | Nonzero if failure; | |||
*/ | */ | |||
#if defined(_MSC_VER) | #if defined(_MSC_VER) | |||
virtual int seek(uint64_t offset, Position pos); | virtual int seek(int64_t offset, Position pos); | |||
#else | #else | |||
virtual int seek(long offset, Position pos); | virtual int seek(long offset, Position pos); | |||
#endif | #endif | |||
/*! | /*! | |||
@brief Map the file into the process's address space. The file mu st be | @brief Map the file into the process's address space. The file mu st be | |||
open before mmap() is called. If the mapped area is writea ble, | open before mmap() is called. If the mapped area is writea ble, | |||
changes may not be written back to the underlying file unt il | changes may not be written back to the underlying file unt il | |||
munmap() is called. The pointer is valid only as long as t he | munmap() is called. The pointer is valid only as long as t he | |||
FileIo object exists. | FileIo object exists. | |||
@param isWriteable Set to true if the mapped area should be write able | @param isWriteable Set to true if the mapped area should be write able | |||
(default is false). | (default is false). | |||
@return A pointer to the mapped area. | @return A pointer to the mapped area. | |||
@throw Error In case of failure. | @throw Error In case of failure. | |||
*/ | */ | |||
virtual byte* mmap(bool isWriteable =false); | virtual byte* mmap(bool isWriteable =false); | |||
/*! | /*! | |||
@brief Remove a mapping established with mmap(). If the mapped ar ea is | @brief Remove a mapping established with mmap(). If the mapped ar ea is | |||
writeable, this ensures that changes are written back to t he | writeable, this ensures that changes are written back to t he | |||
underlying file. | underlying file. | |||
@return 0 if successful;<BR> | @return 0 if successful;<BR> | |||
Nonzero if failure; | Nonzero if failure; | |||
*/ | */ | |||
virtual int munmap(); | virtual int munmap(); | |||
/*! | ||||
@brief close the file source and set a new path. | ||||
*/ | ||||
virtual void setPath(const std::string& path); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like setPath(const std::string& path) but accepts a | ||||
unicode path in an std::wstring. | ||||
@note This method is only available on Windows. | ||||
*/ | ||||
virtual void setPath(const std::wstring& wpath); | ||||
#endif | ||||
//@} | //@} | |||
//! @name Accessors | //! @name Accessors | |||
//@{ | //@{ | |||
/*! | /*! | |||
@brief Get the current file position. | @brief Get the current file position. | |||
@return Offset from the start of the file if successful;<BR> | @return Offset from the start of the file if successful;<BR> | |||
-1 if failure; | -1 if failure; | |||
*/ | */ | |||
virtual long tell() const; | virtual long tell() const; | |||
/*! | /*! | |||
@brief Flush any buffered writes and get the current file size | @brief Flush any buffered writes and get the current file size | |||
skipping to change at line 499 | skipping to change at line 536 | |||
/*! | /*! | |||
@brief Returns a temporary data storage location. The actual type | @brief Returns a temporary data storage location. The actual type | |||
returned depends upon the size of the file represented a File Io | returned depends upon the size of the file represented a File Io | |||
object. For small files, a MemIo is returned while for large files | object. For small files, a MemIo is returned while for large files | |||
a FileIo is returned. Callers should not rely on this behavio r, | a FileIo is returned. Callers should not rely on this behavio r, | |||
however, since it may change. | however, since it may change. | |||
@return An instance of BasicIo on success | @return An instance of BasicIo on success | |||
@throw Error If opening the temporary file fails | @throw Error If opening the temporary file fails | |||
*/ | */ | |||
virtual BasicIo::AutoPtr temporary() const; | virtual BasicIo::AutoPtr temporary() const; | |||
/*! | ||||
@brief Mark all the bNone blocks to bKnow. This avoids allocating | ||||
memory | ||||
for parts of the file that contain image-date (non-metadata/pix | ||||
el data) | ||||
@note This method should be only called after the concerned data | ||||
(metadata) | ||||
are all downloaded from the remote file to memory. | ||||
*/ | ||||
virtual void populateFakeData(); | ||||
//@} | //@} | |||
private: | private: | |||
// NOT IMPLEMENTED | // NOT IMPLEMENTED | |||
//! Copy constructor | //! Copy constructor | |||
FileIo(FileIo& rhs); | FileIo(FileIo& rhs); | |||
//! Assignment operator | //! Assignment operator | |||
FileIo& operator=(const FileIo& rhs); | FileIo& operator=(const FileIo& rhs); | |||
// Pimpl idiom | // Pimpl idiom | |||
skipping to change at line 542 | skipping to change at line 588 | |||
/*! | /*! | |||
@brief Constructor that accepts a block of memory. A copy-on-writ e | @brief Constructor that accepts a block of memory. A copy-on-writ e | |||
algorithm allows read operations directly from the original d ata | algorithm allows read operations directly from the original d ata | |||
and will create a copy of the buffer on the first write opera tion. | and will create a copy of the buffer on the first write opera tion. | |||
@param data Pointer to data. Data must be at least \em size | @param data Pointer to data. Data must be at least \em size | |||
bytes long | bytes long | |||
@param size Number of bytes to copy. | @param size Number of bytes to copy. | |||
*/ | */ | |||
MemIo(const byte* data, long size); | MemIo(const byte* data, long size); | |||
//! Destructor. Releases all managed memory | //! Destructor. Releases all managed memory | |||
~MemIo(); | virtual ~MemIo(); | |||
//@} | //@} | |||
//! @name Manipulators | //! @name Manipulators | |||
//@{ | //@{ | |||
/*! | /*! | |||
@brief Memory IO is always open for reading and writing. This met hod | @brief Memory IO is always open for reading and writing. This met hod | |||
therefore only resets the IO position to the start. | therefore only resets the IO position to the start. | |||
@return 0 | @return 0 | |||
*/ | */ | |||
skipping to change at line 645 | skipping to change at line 691 | |||
virtual void transfer(BasicIo& src); | virtual void transfer(BasicIo& src); | |||
/*! | /*! | |||
@brief Move the current IO position. | @brief Move the current IO position. | |||
@param offset Number of bytes to move the IO position | @param offset Number of bytes to move the IO position | |||
relative to the starting position specified by \em pos | relative to the starting position specified by \em pos | |||
@param pos Position from which the seek should start | @param pos Position from which the seek should start | |||
@return 0 if successful;<BR> | @return 0 if successful;<BR> | |||
Nonzero if failure; | Nonzero if failure; | |||
*/ | */ | |||
#if defined(_MSC_VER) | #if defined(_MSC_VER) | |||
virtual int seek(uint64_t offset, Position pos); | virtual int seek(int64_t offset, Position pos); | |||
#else | #else | |||
virtual int seek(long offset, Position pos); | virtual int seek(long offset, Position pos); | |||
#endif | #endif | |||
/*! | /*! | |||
@brief Allow direct access to the underlying data buffer. The buf fer | @brief Allow direct access to the underlying data buffer. The buf fer | |||
is not protected against write access in any way, the argu ment | is not protected against write access in any way, the argu ment | |||
is ignored. | is ignored. | |||
@note The application must ensure that the memory pointed to by the | @note The application must ensure that the memory pointed to by the | |||
returned pointer remains valid and allocated as long as th e | returned pointer remains valid and allocated as long as th e | |||
MemIo object exists. | MemIo object exists. | |||
*/ | */ | |||
virtual byte* mmap(bool /*isWriteable*/ =false); | virtual byte* mmap(bool /*isWriteable*/ =false); | |||
virtual int munmap(); | virtual int munmap(); | |||
int msync(); | ||||
//@} | //@} | |||
//! @name Accessors | //! @name Accessors | |||
//@{ | //@{ | |||
/*! | /*! | |||
@brief Get the current IO position. | @brief Get the current IO position. | |||
@return Offset from the start of the memory block | @return Offset from the start of the memory block | |||
*/ | */ | |||
virtual long tell() const; | virtual long tell() const; | |||
/*! | /*! | |||
skipping to change at line 696 | skipping to change at line 743 | |||
*/ | */ | |||
virtual std::wstring wpath() const; | virtual std::wstring wpath() const; | |||
#endif | #endif | |||
/*! | /*! | |||
@brief Returns a temporary data storage location. Currently retur ns | @brief Returns a temporary data storage location. Currently retur ns | |||
an empty MemIo object, but callers should not rely on this | an empty MemIo object, but callers should not rely on this | |||
behavior since it may change. | behavior since it may change. | |||
@return An instance of BasicIo | @return An instance of BasicIo | |||
*/ | */ | |||
virtual BasicIo::AutoPtr temporary() const; | virtual BasicIo::AutoPtr temporary() const; | |||
/*! | ||||
@brief Mark all the bNone blocks to bKnow. This avoids allocating | ||||
memory | ||||
for parts of the file that contain image-date (non-metadata/pix | ||||
el data) | ||||
@note This method should be only called after the concerned data | ||||
(metadata) | ||||
are all downloaded from the remote file to memory. | ||||
*/ | ||||
virtual void populateFakeData(); | ||||
//@} | //@} | |||
private: | private: | |||
// NOT IMPLEMENTED | // NOT IMPLEMENTED | |||
//! Copy constructor | //! Copy constructor | |||
MemIo(MemIo& rhs); | MemIo(MemIo& rhs); | |||
//! Assignment operator | //! Assignment operator | |||
MemIo& operator=(const MemIo& rhs); | MemIo& operator=(const MemIo& rhs); | |||
// Pimpl idiom | // Pimpl idiom | |||
class Impl; | class Impl; | |||
Impl* p_; | Impl* p_; | |||
}; // class MemIo | }; // class MemIo | |||
/*! | ||||
@brief Provides binary IO for the data from stdin and data uri path. | ||||
*/ | ||||
#if EXV_XPATH_MEMIO | ||||
class EXIV2API XPathIo : public MemIo { | ||||
public: | ||||
//! @name Creators | ||||
//@{ | ||||
//! Default constructor | ||||
XPathIo(const std::string& path); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like XPathIo(const std::string& path) but accepts a | ||||
unicode url in an std::wstring. | ||||
@note This constructor is only available on Windows. | ||||
*/ | ||||
XPathIo(const std::wstring& wpath); | ||||
#endif | ||||
//@} | ||||
private: | ||||
/*! | ||||
@brief Read data from stdin and write the data to memory. | ||||
@throw Error if it can't convert stdin to binary. | ||||
*/ | ||||
void ReadStdin(); | ||||
/*! | ||||
@brief Read the data from data uri path and write the data to m | ||||
emory. | ||||
@param path The data uri. | ||||
@throw Error if no base64 data in path. | ||||
*/ | ||||
void ReadDataUri(const std::string& path); | ||||
}; // class XPathIo | ||||
#else | ||||
class EXIV2API XPathIo : public FileIo { | ||||
public: | ||||
/*! | ||||
@brief The extension of the temporary file which is created whe | ||||
n getting input data | ||||
to read metadata. This file will be deleted in destruct | ||||
or. | ||||
*/ | ||||
static const std::string TEMP_FILE_EXT; | ||||
/*! | ||||
@brief The extension of the generated file which is created whe | ||||
n getting input data | ||||
to add or modify the metadata. | ||||
*/ | ||||
static const std::string GEN_FILE_EXT; | ||||
//! @name Creators | ||||
//@{ | ||||
//! Default constructor that reads data from stdin/data uri path an | ||||
d writes them to the temp file. | ||||
XPathIo(const std::string& orgPath); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like XPathIo(const std::string& orgPath) but accepts a | ||||
unicode url in an std::wstring. | ||||
@note This constructor is only available on Windows. | ||||
*/ | ||||
XPathIo(const std::wstring& wOrgPathpath); | ||||
#endif | ||||
//! Destructor. Releases all managed memory and removes the temp fi | ||||
le. | ||||
virtual ~XPathIo(); | ||||
//@} | ||||
//! @name Manipulators | ||||
//@{ | ||||
/*! | ||||
@brief Change the name of the temp file and make it untemporary | ||||
before | ||||
calling the method of superclass FileIo::transfer. | ||||
*/ | ||||
virtual void transfer(BasicIo& src); | ||||
//@} | ||||
//! @name Static methods | ||||
//@{ | ||||
/*! | ||||
@brief Read the data from stdin/data uri path and write them to | ||||
the file. | ||||
@param orgPath It equals "-" if the input data's from stdin. Ot | ||||
herwise, it's data uri path. | ||||
@return the name of the new file. | ||||
@throw Error if it fails. | ||||
*/ | ||||
static std::string writeDataToFile(const std::string& orgPath); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like writeDataToFile(const std::string& orgPath) but accep | ||||
ts a | ||||
unicode url in an std::wstring. | ||||
@note This constructor is only available on Windows. | ||||
*/ | ||||
static std::string writeDataToFile(const std::wstring& wOrgPath); | ||||
#endif | ||||
//@} | ||||
private: | ||||
// True if the file is a temporary file and it should be deleted in | ||||
destructor. | ||||
bool isTemp_; | ||||
std::string tempFilePath_; | ||||
}; // class XPathIo | ||||
#endif | ||||
/*! | ||||
@brief Utility class provides the block mapping to the part of data. | ||||
This avoids allocating | ||||
a single contiguous block of memory to the big data. | ||||
*/ | ||||
class EXIV2API BlockMap { | ||||
public: | ||||
//! the status of the block. | ||||
enum blockType_e {bNone, bKnown, bMemory}; | ||||
//! @name Creators | ||||
//@{ | ||||
//! Default constructor. the init status of the block is bNone. | ||||
BlockMap():type_(bNone), data_(NULL),size_(0) {} | ||||
//! Destructor. Releases all managed memory. | ||||
virtual ~BlockMap() { | ||||
if (data_) {std::free(data_); data_ = NULL;} | ||||
} | ||||
//@} | ||||
//! @name Manipulators | ||||
//@{ | ||||
/*! | ||||
@brief Populate the block. | ||||
@param source The data populate to the block | ||||
@param num The size of data | ||||
*/ | ||||
void populate (byte* source, size_t num) { | ||||
size_ = num; | ||||
data_ = (byte*) std::malloc(size_); | ||||
type_ = bMemory; | ||||
std::memcpy(data_, source, size_); | ||||
} | ||||
/*! | ||||
@brief Change the status to bKnow. bKnow blocks do not contain th | ||||
e data, | ||||
but they keep the size of data. This avoids allocating memo | ||||
ry for parts | ||||
of the file that contain image-date (non-metadata/pixel dat | ||||
a) which never change in exiv2. | ||||
@param num The size of the data | ||||
*/ | ||||
void markKnown(size_t num) { | ||||
type_ = bKnown; | ||||
size_ = num; | ||||
} | ||||
//@} | ||||
//! @name Accessors | ||||
//@{ | ||||
bool isNone() {return type_ == bNone;} | ||||
bool isInMem () {return type_ == bMemory;} | ||||
bool isKnown () {return type_ == bKnown;} | ||||
byte* getData () {return data_;} | ||||
size_t getSize () {return size_;} | ||||
//@} | ||||
private: | ||||
blockType_e type_; | ||||
byte* data_; | ||||
size_t size_; | ||||
}; // class BlockMap | ||||
/*! | ||||
@brief Provides remote binary file IO by implementing the BasicIo i | ||||
nterface. This is an | ||||
abstract class. The logics for remote access are implemented in | ||||
HttpIo, CurlIo, SshIo which | ||||
are the derived classes of RemoteIo. | ||||
*/ | ||||
class EXIV2API RemoteIo : public BasicIo { | ||||
public: | ||||
//! Destructor. Releases all managed memory. | ||||
virtual ~RemoteIo(); | ||||
//@} | ||||
//! @name Manipulators | ||||
//@{ | ||||
/*! | ||||
@brief Connect to the remote server, get the size of the remote f | ||||
ile and | ||||
allocate the array of blocksMap. | ||||
If the blocksMap is already allocated (this method has been cal | ||||
led before), | ||||
it just reset IO position to the start and does not flush the o | ||||
ld data. | ||||
@return 0 if successful;<BR> | ||||
Nonzero if failure. | ||||
*/ | ||||
virtual int open(); | ||||
/*! | ||||
@brief Reset the IO position to the start. It does not release th | ||||
e data. | ||||
@return 0 if successful;<BR> | ||||
Nonzero if failure. | ||||
*/ | ||||
virtual int close(); | ||||
/*! | ||||
@brief Not support this method. | ||||
@return 0 means failure | ||||
*/ | ||||
virtual long write(const byte* data, long wcount); | ||||
/*! | ||||
@brief Write data that is read from another BasicIo instance to t | ||||
he remote file. | ||||
The write access is done in an efficient way. It only sends the r | ||||
ange of different | ||||
bytes between the current data and BasicIo instance to the remote | ||||
machine. | ||||
@param src Reference to another BasicIo instance. Reading start | ||||
at the source's current IO position | ||||
@return The size of BasicIo instance;<BR> | ||||
0 if failure; | ||||
@throw Error In case of failure | ||||
@note The write access is only supported by http, https, ssh. | ||||
*/ | ||||
virtual long write(BasicIo& src); | ||||
/*! | ||||
@brief Not support | ||||
@return 0 means failure | ||||
*/ | ||||
virtual int putb(byte data); | ||||
/*! | ||||
@brief Read data from the memory blocks. Reading starts at the cur | ||||
rent | ||||
IO position and the position is advanced by the number of | ||||
bytes read. | ||||
If the memory blocks are not populated (False), it will connec | ||||
t to server | ||||
and populate the data to memory blocks. | ||||
@param rcount Maximum number of bytes to read. Fewer bytes may be | ||||
read if \em rcount bytes are not available. | ||||
@return DataBuf instance containing the bytes read. Use the | ||||
DataBuf::size_ member to find the number of bytes read. | ||||
DataBuf::size_ will be 0 on failure. | ||||
*/ | ||||
virtual DataBuf read(long rcount); | ||||
/*! | ||||
@brief Read data from the the memory blocks. Reading starts at the | ||||
current | ||||
IO position and the position is advanced by the number of | ||||
bytes read. | ||||
If the memory blocks are not populated (!= bMemory), it will c | ||||
onnect to server | ||||
and populate the data to memory blocks. | ||||
@param buf Pointer to a block of memory into which the read data | ||||
is stored. The memory block must be at least \em rcount bytes | ||||
long. | ||||
@param rcount Maximum number of bytes to read. Fewer bytes may be | ||||
read if \em rcount bytes are not available. | ||||
@return Number of bytes read from the memory block successfully;<B | ||||
R> | ||||
0 if failure; | ||||
*/ | ||||
virtual long read(byte* buf, long rcount); | ||||
/*! | ||||
@brief Read one byte from the memory blocks. The IO position is | ||||
advanced by one byte. | ||||
If the memory block is not populated (!= bMemory), it will con | ||||
nect to server | ||||
and populate the data to the memory block. | ||||
@return The byte read from the memory block if successful;<BR> | ||||
EOF if failure; | ||||
*/ | ||||
virtual int getb(); | ||||
/*! | ||||
@brief Remove the contents of the file and then transfer data fro | ||||
m | ||||
the \em src BasicIo object into the empty file. | ||||
The write access is done in an efficient way. It only sends the r | ||||
ange of different | ||||
bytes between the current data and BasicIo instance to the remote | ||||
machine. | ||||
@param src Reference to another BasicIo instance. The entire cont | ||||
ents | ||||
of src are transferred to this object. The \em src object is | ||||
invalidated by the method. | ||||
@throw Error In case of failure | ||||
@note The write access is only supported by http, https, ssh. | ||||
*/ | ||||
virtual void transfer(BasicIo& src); | ||||
/*! | ||||
@brief Move the current IO position. | ||||
@param offset Number of bytes to move the IO position | ||||
relative to the starting position specified by \em pos | ||||
@param pos Position from which the seek should start | ||||
@return 0 if successful;<BR> | ||||
Nonzero if failure; | ||||
*/ | ||||
#if defined(_MSC_VER) | ||||
virtual int seek(int64_t offset, Position pos); | ||||
#else | ||||
virtual int seek(long offset, Position pos); | ||||
#endif | ||||
/*! | ||||
@brief Not support | ||||
@return NULL | ||||
*/ | ||||
virtual byte* mmap(bool /*isWriteable*/ =false); | ||||
/*! | ||||
@brief Not support | ||||
@return 0 | ||||
*/ | ||||
virtual int munmap(); | ||||
//@} | ||||
//! @name Accessors | ||||
//@{ | ||||
/*! | ||||
@brief Get the current IO position. | ||||
@return Offset from the start of the memory block | ||||
*/ | ||||
virtual long tell() const; | ||||
/*! | ||||
@brief Get the current memory buffer size in bytes. | ||||
@return Size of the in memory data in bytes;<BR> | ||||
-1 if failure; | ||||
*/ | ||||
virtual long size() const; | ||||
//!Returns true if the memory area is allocated. | ||||
virtual bool isopen() const; | ||||
//!Always returns 0 | ||||
virtual int error() const; | ||||
//!Returns true if the IO position has reach the end, otherwise fals | ||||
e. | ||||
virtual bool eof() const; | ||||
//!Returns the URL of the file. | ||||
virtual std::string path() const; | ||||
#ifdef EXV_UNICODE_PATH | ||||
/* | ||||
@brief Like path() but returns a unicode URL path in an std::wstri | ||||
ng. | ||||
@note This function is only available on Windows. | ||||
*/ | ||||
virtual std::wstring wpath() const; | ||||
#endif | ||||
/*! | ||||
@brief Returns a temporary data storage location. Currently return | ||||
s | ||||
an empty MemIo object, but callers should not rely on this | ||||
behavior since it may change. | ||||
@return An instance of BasicIo | ||||
*/ | ||||
virtual BasicIo::AutoPtr temporary() const; | ||||
/*! | ||||
@brief Mark all the bNone blocks to bKnow. This avoids allocating | ||||
memory | ||||
for parts of the file that contain image-date (non-metadata/pix | ||||
el data) | ||||
@note This method should be only called after the concerned data | ||||
(metadata) | ||||
are all downloaded from the remote file to memory. | ||||
*/ | ||||
virtual void populateFakeData(); | ||||
//@} | ||||
protected: | ||||
//! @name Creators | ||||
//@{ | ||||
//! Default Constructor | ||||
RemoteIo() {p_=NULL;} | ||||
//@} | ||||
// Pimpl idiom | ||||
class Impl; | ||||
Impl* p_; | ||||
}; // class RemoteIo | ||||
/*! | ||||
@brief Provides the http read/write access for the RemoteIo. | ||||
*/ | ||||
class EXIV2API HttpIo : public RemoteIo { | ||||
public: | ||||
//! @name Creators | ||||
//@{ | ||||
/*! | ||||
@brief Constructor that accepts the http URL on which IO will be | ||||
performed. The constructor does not open the file, and | ||||
therefore never failes. | ||||
@param url The full path of url | ||||
@param blockSize the size of the memory block. The file content i | ||||
s | ||||
divided into the memory blocks. These blocks are populated | ||||
on demand from the server, so it avoids copying the complet | ||||
e file. | ||||
*/ | ||||
HttpIo(const std::string& url, size_t blockSize = 1024); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like HttpIo(const std::string& url, size_t blockSize = 102 | ||||
4) but accepts a | ||||
unicode url in an std::wstring. | ||||
@note This constructor is only available on Windows. | ||||
*/ | ||||
HttpIo(const std::wstring& wurl, size_t blockSize = 1024); | ||||
#endif | ||||
//@} | ||||
protected: | ||||
// NOT IMPLEMENTED | ||||
//! Copy constructor | ||||
HttpIo(HttpIo& rhs); | ||||
//! Assignment operator | ||||
HttpIo& operator=(const HttpIo& rhs); | ||||
// Pimpl idiom | ||||
class HttpImpl; | ||||
//! @name Creators | ||||
//@{ | ||||
//! Default Destructor | ||||
virtual ~HttpIo(){} | ||||
//@} | ||||
}; | ||||
#if EXV_USE_CURL == 1 | ||||
/*! | ||||
@brief Provides the http, https read/write access and ftp read acce | ||||
ss for the RemoteIo. | ||||
This class is based on libcurl. | ||||
*/ | ||||
class EXIV2API CurlIo : public RemoteIo { | ||||
public: | ||||
//! @name Creators | ||||
//@{ | ||||
/*! | ||||
@brief Constructor that accepts the URL on which IO will be | ||||
performed. | ||||
@param url The full path of url | ||||
@param blockSize the size of the memory block. The file content i | ||||
s | ||||
divided into the memory blocks. These blocks are populated | ||||
on demand from the server, so it avoids copying the complet | ||||
e file. | ||||
@throw Error if it is unable to init curl pointer. | ||||
*/ | ||||
CurlIo(const std::string& url, size_t blockSize = 0); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like CurlIo(const std::string& url, size_t blockSize = 0 | ||||
) but accepts a | ||||
unicode url in an std::wstring. | ||||
@note This constructor is only available on Windows. | ||||
*/ | ||||
CurlIo(const std::wstring& wurl, size_t blockSize = 0); | ||||
#endif | ||||
/*! | ||||
@brief Write access is only available for some protocols. This me | ||||
thod | ||||
will call RemoteIo::write(const byte* data, long wcount) if | ||||
the write | ||||
access is available for the protocol. Otherwise, it throws | ||||
the Error. | ||||
*/ | ||||
long write(const byte* data, long wcount); | ||||
/*! | ||||
@brief Write access is only available for some protocols. This me | ||||
thod | ||||
will call RemoteIo::write(BasicIo& src) if the write access | ||||
is available | ||||
for the protocol. Otherwise, it throws the Error. | ||||
*/ | ||||
long write(BasicIo& src); | ||||
protected: | ||||
// NOT IMPLEMENTED | ||||
//! Copy constructor | ||||
CurlIo(CurlIo& rhs); | ||||
//! Assignment operator | ||||
CurlIo& operator=(const CurlIo& rhs); | ||||
// Pimpl idiom | ||||
class CurlImpl; | ||||
//! @name Creators | ||||
//@{ | ||||
//! Default Destructor | ||||
virtual ~CurlIo(){} | ||||
//@} | ||||
}; | ||||
#endif | ||||
#if EXV_USE_SSH == 1 | ||||
/*! | ||||
@brief Provides the ssh read/write access and sftp read access for | ||||
the RemoteIo. | ||||
This class is based on libssh. | ||||
*/ | ||||
class EXIV2API SshIo : public RemoteIo { | ||||
public: | ||||
//! @name Creators | ||||
//@{ | ||||
/*! | ||||
@brief Constructor that accepts the URL on which IO will be | ||||
performed. | ||||
@param url The full path of url | ||||
@param blockSize the size of the memory block. The file content i | ||||
s | ||||
divided into the memory blocks. These blocks are populated | ||||
on demand from the server, so it avoids copying the complet | ||||
e file. | ||||
@throw Error if it is unable to init ssh session. | ||||
*/ | ||||
SshIo(const std::string& url, size_t blockSize = 1024); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like SshIo(const std::string& url, size_t blockSize = 10 | ||||
24) but accepts a | ||||
unicode url in an std::wstring. | ||||
@note This constructor is only available on Windows. | ||||
*/ | ||||
SshIo(const std::wstring& wurl, size_t blockSize = 1024); | ||||
#endif | ||||
//@} | ||||
protected: | ||||
// NOT IMPLEMENTED | ||||
//! Copy constructor | ||||
SshIo(SshIo& rhs); | ||||
//! Assignment operator | ||||
SshIo& operator=(const SshIo& rhs); | ||||
// Pimpl idiom | ||||
class SshImpl; | ||||
//! @name Creators | ||||
//@{ | ||||
//! Default Destructor | ||||
virtual ~SshIo(){} | ||||
//@} | ||||
}; | ||||
#endif | ||||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// template, inline and free functions | // template, inline and free functions | |||
/*! | /*! | |||
@brief Read file \em path into a DataBuf, which is returned. | @brief Read file \em path into a DataBuf, which is returned. | |||
@return Buffer containing the file. | @return Buffer containing the file. | |||
@throw Error In case of failure. | @throw Error In case of failure. | |||
*/ | */ | |||
EXIV2API DataBuf readFile(const std::string& path); | EXIV2API DataBuf readFile(const std::string& path); | |||
#ifdef EXV_UNICODE_PATH | #ifdef EXV_UNICODE_PATH | |||
skipping to change at line 739 | skipping to change at line 1281 | |||
@return Return the number of bytes written. | @return Return the number of bytes written. | |||
@throw Error In case of failure. | @throw Error In case of failure. | |||
*/ | */ | |||
EXIV2API long writeFile(const DataBuf& buf, const std::string& path); | EXIV2API long writeFile(const DataBuf& buf, const std::string& path); | |||
#ifdef EXV_UNICODE_PATH | #ifdef EXV_UNICODE_PATH | |||
/*! | /*! | |||
@brief Like writeFile() but accepts a unicode path in an std::wstring . | @brief Like writeFile() but accepts a unicode path in an std::wstring . | |||
@note This function is only available on Windows. | @note This function is only available on Windows. | |||
*/ | */ | |||
EXIV2API long writeFile(const DataBuf& buf, const std::wstring& wpath); | EXIV2API long writeFile(const DataBuf& buf, const std::wstring& wpath); | |||
#endif | #endif | |||
/*! | ||||
@brief replace each substring of the subject that matches the given s | ||||
earch string with the given replacement. | ||||
@return the subject after replacing. | ||||
*/ | ||||
EXIV2API std::string ReplaceStringInPlace(std::string subject, const st | ||||
d::string& search, | ||||
const std::string& replace); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like ReplaceStringInPlace() but accepts a unicode path in an s | ||||
td::wstring. | ||||
@return the subject after replacing. | ||||
@note This function is only available on Windows. | ||||
*/ | ||||
EXIV2API std::wstring ReplaceStringInPlace(std::wstring subject, const | ||||
std::wstring& search, | ||||
const std::wstring& replace); | ||||
#endif | ||||
#if EXV_USE_CURL == 1 | ||||
/*! | ||||
@brief The callback function is called by libcurl to write the data | ||||
*/ | ||||
EXIV2API size_t curlWriter(char* data, size_t size, size_t nmemb, std:: | ||||
string* writerData); | ||||
#endif | ||||
} // namespace Exiv2 | } // namespace Exiv2 | |||
#endif // #ifndef BASICIO_HPP_ | #endif // #ifndef BASICIO_HPP_ | |||
End of changes. 21 change blocks. | ||||
14 lines changed or deleted | 646 lines changed or added | |||
bmpimage.hpp | bmpimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
convert.hpp | convert.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 35 | skipping to change at line 35 | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a><BR> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a><BR> | |||
Vladimir Nadvornik (vn) | Vladimir Nadvornik (vn) | |||
<a href="mailto:nadvornik@suse.cz">nadvornik@suse.cz</a> | <a href="mailto:nadvornik@suse.cz">nadvornik@suse.cz</a> | |||
@date 17-Mar-08, ahu: created basic converter framework<BR> | @date 17-Mar-08, ahu: created basic converter framework<BR> | |||
20-May-08, vn: added actual conversion logic | 20-May-08, vn: added actual conversion logic | |||
*/ | */ | |||
#ifndef CONVERT_HPP_ | #ifndef CONVERT_HPP_ | |||
#define CONVERT_HPP_ | #define CONVERT_HPP_ | |||
// ************************************************************************ ***** | ||||
// included header files | // included header files | |||
#ifdef _MSC_VER | #include "config.h" | |||
# include "exv_msvc.h" | ||||
#else | ||||
# include "exv_conf.h" | ||||
#endif | ||||
// + standard includes | // + standard includes | |||
#include <string> | #include <string> | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// namespace extensions | // namespace extensions | |||
namespace Exiv2 { | namespace Exiv2 { | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// class declarations | // class declarations | |||
End of changes. 3 change blocks. | ||||
7 lines changed or deleted | 2 lines changed or added | |||
cr2image.hpp | cr2image.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
crwimage.hpp | crwimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
datasets.hpp | datasets.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
easyaccess.hpp | easyaccess.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
epsimage.hpp | epsimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
error.hpp | error.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
exif.hpp | exif.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
exiv2.hpp | exiv2.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 46 | skipping to change at line 46 | |||
#include "convert.hpp" | #include "convert.hpp" | |||
#include "cr2image.hpp" | #include "cr2image.hpp" | |||
#include "crwimage.hpp" | #include "crwimage.hpp" | |||
#include "datasets.hpp" | #include "datasets.hpp" | |||
#include "easyaccess.hpp" | #include "easyaccess.hpp" | |||
#include "epsimage.hpp" | #include "epsimage.hpp" | |||
#include "error.hpp" | #include "error.hpp" | |||
#include "exif.hpp" | #include "exif.hpp" | |||
#include "futils.hpp" | #include "futils.hpp" | |||
#include "gifimage.hpp" | #include "gifimage.hpp" | |||
#include "http.hpp" | ||||
#include "image.hpp" | #include "image.hpp" | |||
#include "iptc.hpp" | #include "iptc.hpp" | |||
#include "jp2image.hpp" | #include "jp2image.hpp" | |||
#include "jpgimage.hpp" | #include "jpgimage.hpp" | |||
#include "metadatum.hpp" | #include "metadatum.hpp" | |||
#include "mrwimage.hpp" | #include "mrwimage.hpp" | |||
#include "orfimage.hpp" | #include "orfimage.hpp" | |||
#include "pgfimage.hpp" | #include "pgfimage.hpp" | |||
#include "pngimage.hpp" | #include "pngimage.hpp" | |||
#include "preview.hpp" | #include "preview.hpp" | |||
#include "properties.hpp" | #include "properties.hpp" | |||
#include "psdimage.hpp" | #include "psdimage.hpp" | |||
#include "rafimage.hpp" | #include "rafimage.hpp" | |||
#include "rw2image.hpp" | #include "rw2image.hpp" | |||
#if EXV_USE_SSH == 1 | ||||
#include "ssh.hpp" | ||||
#endif | ||||
#include "tags.hpp" | #include "tags.hpp" | |||
#include "tgaimage.hpp" | #include "tgaimage.hpp" | |||
#include "tiffimage.hpp" | #include "tiffimage.hpp" | |||
#include "types.hpp" | #include "types.hpp" | |||
#include "value.hpp" | #include "value.hpp" | |||
#include "version.hpp" | #include "version.hpp" | |||
#include "xmp.hpp" | #include "xmp.hpp" | |||
#include "xmpsidecar.hpp" | #include "xmpsidecar.hpp" | |||
#endif // #ifndef EXIV2_HPP_ | #endif // #ifndef EXIV2_HPP_ | |||
End of changes. 3 change blocks. | ||||
1 lines changed or deleted | 5 lines changed or added | |||
exv_conf.h | exv_conf.h | |||
---|---|---|---|---|
/* ./config/config.h. Generated from config.h.in by configure. */ | /* ./config/config.h. Generated from config.h.in by configure. */ | |||
/* config.h.in. Generated from configure.ac by autoheader. */ | #ifndef __CONFIG__H__ | |||
#define __CONFIG__H__ | ||||
#ifdef _MSC_VER | ||||
# include "exv_msvc.h" | ||||
#else | ||||
/* Define to 1 if you want to use libssh */ | ||||
/* #undef EXV_USE_SSH */ | ||||
/* Define to 1 if you want to use libcurl in httpIo */ | ||||
/* #undef EXV_USE_CURL */ | ||||
/* Define to 1 if you have the `alarm' function. */ | /* Define to 1 if you have the `alarm' function. */ | |||
/* #undef EXV_HAVE_ALARM */ | /* #undef EXV_HAVE_ALARM */ | |||
/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you | /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you | |||
don't. */ | don't. */ | |||
#define EXV_HAVE_DECL_STRERROR_R 1 | #define EXV_HAVE_DECL_STRERROR_R 1 | |||
/* Define to 1 if you have the `gmtime_r' function. */ | /* Define to 1 if you have the `gmtime_r' function. */ | |||
#define EXV_HAVE_GMTIME_R 1 | #define EXV_HAVE_GMTIME_R 1 | |||
skipping to change at line 31 | skipping to change at line 42 | |||
/* Define to 1 to enable translation of Nikon lens names. */ | /* Define to 1 to enable translation of Nikon lens names. */ | |||
#define EXV_HAVE_LENSDATA 1 | #define EXV_HAVE_LENSDATA 1 | |||
/* Define to 1 if translation of program messages to the user's | /* Define to 1 if translation of program messages to the user's | |||
native language is requested. */ | native language is requested. */ | |||
#define EXV_ENABLE_NLS 1 | #define EXV_ENABLE_NLS 1 | |||
#endif /* !EXV_COMMERCIAL_VERSION */ | #endif /* !EXV_COMMERCIAL_VERSION */ | |||
/* Define to 1 to include video code in the library */ | ||||
/* #undef EXV_ENABLE_VIDEO */ | ||||
/* Define to 1 to include webready code in the library */ | ||||
/* #undef EXV_ENABLE_WEBREADY */ | ||||
/* Define to 1 if you have the `iconv' function. */ | /* Define to 1 if you have the `iconv' function. */ | |||
#define EXV_HAVE_ICONV 1 | #define EXV_HAVE_ICONV 1 | |||
/* Define to `const' or to empty, depending on the second argument of `icon v'. */ | /* Define to `const' or to empty, depending on the second argument of `icon v'. */ | |||
#define EXV_ICONV_CONST | #define EXV_ICONV_CONST | |||
/* Define to 1 if you have the <libintl.h> header file. */ | /* Define to 1 if you have the <libintl.h> header file. */ | |||
#define EXV_HAVE_LIBINTL_H 1 | #define EXV_HAVE_LIBINTL_H 1 | |||
/* Define to 1 if you have the <regex.h> header file. */ | ||||
#define EXV_HAVE_REGEX 1 | ||||
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and | /* Define to 1 if your system has a GNU libc compatible `malloc' function, and | |||
to 0 otherwise. */ | to 0 otherwise. */ | |||
/* #undef EXV_HAVE_MALLOC */ | /* #undef EXV_HAVE_MALLOC */ | |||
/* Define to 1 if you have the <malloc.h> header file. */ | /* Define to 1 if you have the <malloc.h> header file. */ | |||
#define EXV_HAVE_MALLOC_H 1 | #define EXV_HAVE_MALLOC_H 1 | |||
/* Define to 1 if you have the <memory.h> header file. */ | /* Define to 1 if you have the <memory.h> header file. */ | |||
#define EXV_HAVE_MEMORY_H 1 | #define EXV_HAVE_MEMORY_H 1 | |||
skipping to change at line 146 | skipping to change at line 166 | |||
/* Define to the address where bug reports for this package should be sent. */ | /* Define to the address where bug reports for this package should be sent. */ | |||
#define EXV_PACKAGE_BUGREPORT "ahuggel@gmx.net" | #define EXV_PACKAGE_BUGREPORT "ahuggel@gmx.net" | |||
/* Define to the name of this package. */ | /* Define to the name of this package. */ | |||
#define EXV_PACKAGE "exiv2" | #define EXV_PACKAGE "exiv2" | |||
/* Define to the full name of this package. */ | /* Define to the full name of this package. */ | |||
#define EXV_PACKAGE_NAME "exiv2" | #define EXV_PACKAGE_NAME "exiv2" | |||
/* Define to the full name and version of this package. */ | /* Define to the full name and version of this package. */ | |||
#define EXV_PACKAGE_STRING "exiv2 0.24" | #define EXV_PACKAGE_STRING "exiv2 0.25" | |||
/* Define to the one symbol short name of this package. */ | /* Define to the one symbol short name of this package. */ | |||
#define EXV_PACKAGE_TARNAME "exiv2" | #define EXV_PACKAGE_TARNAME "exiv2" | |||
/* Define to the version of this package. */ | /* Define to the version of this package. */ | |||
#define EXV_PACKAGE_VERSION "0.24" | #define EXV_PACKAGE_VERSION "0.25" | |||
/* Define to 1 if you have the ANSI C header files. */ | /* Define to 1 if you have the ANSI C header files. */ | |||
#define EXV_STDC_HEADERS 1 | #define EXV_STDC_HEADERS 1 | |||
/* Define to 1 if strerror_r returns char *. */ | /* Define to 1 if strerror_r returns char *. */ | |||
/* #undef EXV_STRERROR_R_CHAR_P */ | /* #undef EXV_STRERROR_R_CHAR_P */ | |||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ | /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ | |||
/* #undef EXV_TIME_WITH_SYS_TIME */ | /* #undef EXV_TIME_WITH_SYS_TIME */ | |||
skipping to change at line 194 | skipping to change at line 214 | |||
/* Define to `unsigned' if <sys/types.h> does not define. */ | /* Define to `unsigned' if <sys/types.h> does not define. */ | |||
/* #undef size_t */ | /* #undef size_t */ | |||
#if defined __CYGWIN32__ && !defined __CYGWIN__ | #if defined __CYGWIN32__ && !defined __CYGWIN__ | |||
/* For backwards compatibility with Cygwin b19 and | /* For backwards compatibility with Cygwin b19 and | |||
earlier, we define __CYGWIN__ here, so that | earlier, we define __CYGWIN__ here, so that | |||
we can rely on checking just for that macro. */ | we can rely on checking just for that macro. */ | |||
#define __CYGWIN__ __CYGWIN32__ | #define __CYGWIN__ __CYGWIN32__ | |||
#endif | #endif | |||
/* File path seperator */ | #if defined __MINGW32__ || defined __MINGW64__ | |||
#ifndef __MINGW__ | ||||
#define __MINGW__ 1 | ||||
#endif | ||||
#endif | ||||
/* File path separator */ | ||||
#if defined WIN32 && !defined __CYGWIN__ | #if defined WIN32 && !defined __CYGWIN__ | |||
#define EXV_SEPERATOR_STR "\\" | #define EXV_SEPARATOR_STR "\\" | |||
#define EXV_SEPERATOR_CHR '\\' | #define EXV_SEPARATOR_CHR '\\' | |||
#else | #else | |||
#define EXV_SEPERATOR_STR "/" | #define EXV_SEPARATOR_STR "/" | |||
#define EXV_SEPERATOR_CHR '/' | #define EXV_SEPARATOR_CHR '/' | |||
#endif | #endif | |||
/* Windows unicode path support */ | /* Windows unicode path support */ | |||
#if defined WIN32 && !defined __CYGWIN__ | #if defined WIN32 && !defined __CYGWIN__ && !defined __MINGW__ | |||
# define EXV_UNICODE_PATH | # define EXV_UNICODE_PATH | |||
#endif | #endif | |||
/* Symbol visibility support */ | /* Symbol visibility support */ | |||
#ifdef WIN32 | #ifdef WIN32 | |||
# define EXV_IMPORT __declspec(dllimport) | # define EXV_IMPORT __declspec(dllimport) | |||
# define EXV_EXPORT __declspec(dllexport) | # define EXV_EXPORT __declspec(dllexport) | |||
# define EXV_DLLLOCAL | # define EXV_DLLLOCAL | |||
# define EXV_DLLPUBLIC | # define EXV_DLLPUBLIC | |||
#else | #else | |||
skipping to change at line 266 | skipping to change at line 292 | |||
#include <stdio.h> | #include <stdio.h> | |||
#include <string.h> | #include <string.h> | |||
#include <strings.h> | #include <strings.h> | |||
#include <stdlib.h> | #include <stdlib.h> | |||
#include <math.h> | #include <math.h> | |||
#if defined(__cplusplus) | #if defined(__cplusplus) | |||
#include <ios> | #include <ios> | |||
#include <fstream> | #include <fstream> | |||
#endif | #endif | |||
#endif | #endif | |||
#endif | ||||
#endif | ||||
End of changes. 10 change blocks. | ||||
9 lines changed or deleted | 35 lines changed or added | |||
futils.hpp | futils.hpp | |||
---|---|---|---|---|
// ********************************************************* -*- C++ -*- | // ********************************************************* -*- C++ -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 35 | skipping to change at line 35 | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 12-Dec-03, ahu: created<BR> | @date 12-Dec-03, ahu: created<BR> | |||
02-Apr-05, ahu: moved to Exiv2 namespace | 02-Apr-05, ahu: moved to Exiv2 namespace | |||
*/ | */ | |||
#ifndef FUTILS_HPP_ | #ifndef FUTILS_HPP_ | |||
#define FUTILS_HPP_ | #define FUTILS_HPP_ | |||
// ********************************************************************* | // ********************************************************************* | |||
// included header files | // included header files | |||
#ifdef _MSC_VER | #include "config.h" | |||
# include "exv_msvc.h" | #include "types.hpp" | |||
#else | ||||
# include "exv_conf.h" | #ifdef EXV_HAVE_STDINT_H | |||
# include <stdint.h> // for uint8_t | ||||
#endif | #endif | |||
// + standard includes | // + standard includes | |||
#include <string> | #include <string> | |||
#include <map> | ||||
#include <limits.h> // for UINT | ||||
_MAX | ||||
// ********************************************************************* | // ********************************************************************* | |||
// namespace extensions | // namespace extensions | |||
namespace Exiv2 { | namespace Exiv2 { | |||
//! the name of environmental variables. | ||||
enum EnVar { envHTTPPOST = 0, envTIMEOUT = 1}; | ||||
//! the collection of protocols. | ||||
enum Protocol { pFile = 0, pHttp, pFtp, pHttps, pSftp, pSsh, pFil | ||||
eUri, pDataUri, pStdin}; | ||||
// ********************************************************************* | // ********************************************************************* | |||
// free functions | // free functions | |||
/*! | ||||
@brief Return the value of environmental variable. | ||||
@param var The name of environmental variable. | ||||
@return the value of environmental variable. If it's empty, the defau | ||||
lt value is returned. | ||||
*/ | ||||
EXIV2API std::string getEnv(EnVar var); | ||||
/*! | ||||
@brief Convert an integer value to its hex character. | ||||
@param code The integer value. | ||||
@return the input's hex character. | ||||
*/ | ||||
EXIV2API char to_hex(char code); | ||||
/*! | ||||
@brief Convert a hex character to its integer value. | ||||
@param ch The hex character. | ||||
@return the input's integer value. | ||||
*/ | ||||
EXIV2API char from_hex(char ch); | ||||
/*! | ||||
@brief Encode the input url. | ||||
@param str The url needs encoding. | ||||
@return the url-encoded version of str. | ||||
@note Be sure to free() the returned string after use | ||||
Source: http://www.geekhideout.com/urlcode.shtml | ||||
*/ | ||||
EXIV2API char* urlencode(char* str); | ||||
/*! | ||||
@brief Decode the input url. | ||||
@param str The url needs decoding. | ||||
@return the url-decoded version of str. | ||||
@note Be sure to free() the returned string after use | ||||
Source: http://www.geekhideout.com/urlcode.shtml | ||||
*/ | ||||
EXIV2API char* urldecode(const char* str); | ||||
/*! | ||||
@brief Like urlencode(char* str) but accept the input url in the std: | ||||
:string and modify it. | ||||
*/ | ||||
EXIV2API void urldecode(std::string& str); | ||||
/*! | ||||
@brief Encode in base64 the data in data_buf and put the resulting st | ||||
ring in result. | ||||
@param data_buf The data need to encode | ||||
@param dataLength Size in bytes of the in buffer | ||||
@param result The container for the result, NULL if it fails | ||||
@param resultSize Size in bytes of the out string, it should be at le | ||||
ast ((dataLength + 2) / 3) * 4 + 1 | ||||
@return 1 indicate success | ||||
@note Source: http://en.wikibooks.org/wiki/Algorithm_Implementation/M | ||||
iscellaneous/Base64 | ||||
*/ | ||||
EXIV2API int base64encode(const void* data_buf, size_t dataLength, char | ||||
* result, size_t resultSize); | ||||
/*! | ||||
@brief Decode base64 data and put the resulting string in out. | ||||
@param in The data need to decode. | ||||
@param out The container for the result, it should be large enough to | ||||
contain the result. | ||||
@param out_size The size of out in bytes. | ||||
@return the size of the resulting string. If it fails, return -1. | ||||
@note Source: https://github.com/davidgaleano/libwebsockets/blob/mast | ||||
er/lib/base64-decode.c | ||||
*/ | ||||
EXIV2API long base64decode(const char *in, char *out, size_t out_size); | ||||
/*! | ||||
@brief Return the protocol of the path. | ||||
@param path The path of file to extract the protocol. | ||||
@return the protocol of the path. | ||||
*/ | ||||
EXIV2API Protocol fileProtocol(const std::string& path); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like fileProtocol() but accept a unicode path in an std::wstri | ||||
ng. | ||||
@note This function is only available on Windows. | ||||
*/ | ||||
EXIV2API Protocol fileProtocol(const std::wstring& wpath); | ||||
#endif | ||||
/*! | /*! | |||
@brief Test if a file exists. | @brief Test if a file exists. | |||
@param path Name of file to verify. | @param path Name of file to verify. | |||
@param ct Flag to check if <i>path</i> is a regular file. | @param ct Flag to check if <i>path</i> is a regular file. | |||
@return true if <i>path</i> exists and, if <i>ct</i> is set, | @return true if <i>path</i> exists and, if <i>ct</i> is set, | |||
is a regular file, else false. | is a regular file, else false. | |||
@note The function calls <b>stat()</b> test for <i>path</i> | @note The function calls <b>stat()</b> test for <i>path</i> | |||
and its type, see stat(2). <b>errno</b> is left unchanged | and its type, see stat(2). <b>errno</b> is left unchanged | |||
in case of an error. | in case of an error. | |||
*/ | */ | |||
EXIV2API bool fileExists(const std::string& path, bool ct =false); | EXIV2API bool fileExists(const std::string& path, bool ct =false); | |||
#ifdef EXV_UNICODE_PATH | #ifdef EXV_UNICODE_PATH | |||
/*! | /*! | |||
@brief Like fileExists() but accepts a unicode path in an std::wstrin | @brief Like fileExists(const std::string& path, bool ct =false) but | |||
g. | accepts a unicode path in an std::wstring. | |||
@note This function is only available on Windows. | @note This function is only available on Windows. | |||
*/ | */ | |||
EXIV2API bool fileExists(const std::wstring& wpath, bool ct =false); | EXIV2API bool fileExists(const std::wstring& wpath, bool ct =false); | |||
#endif | #endif | |||
/*! | /*! | |||
@brief Get the path of file URL. | ||||
@param url The file URL in the format file:///<path> or file://<host | ||||
>/<path>. | ||||
@return the path of file URL. | ||||
*/ | ||||
EXIV2API std::string pathOfFileUrl(const std::string& url); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like pathOfFileUrl(const std::string& url) but accepts a unico | ||||
de path in an std::wstring. | ||||
@note This function is only available on Windows. | ||||
*/ | ||||
EXIV2API std::wstring pathOfFileUrl(const std::wstring& wurl); | ||||
#endif | ||||
/*! | ||||
@brief Return a system error message and the error code (errno). | @brief Return a system error message and the error code (errno). | |||
See %strerror(3). | See %strerror(3). | |||
*/ | */ | |||
EXIV2API std::string strError(); | EXIV2API std::string strError(); | |||
} // namespace Exiv2 | /*! | |||
@brief A container for URL components. It also provides the method to | ||||
parse a | ||||
URL to get the protocol, host, path, port, querystring, usernam | ||||
e, password. | ||||
Source: http://stackoverflow.com/questions/2616011/easy-way-to-parse- | ||||
a-url-in-c-cross-platform | ||||
*/ | ||||
class Uri | ||||
{ | ||||
public: | ||||
// DATA | ||||
std::string QueryString; //!< URL query string | ||||
std::string Path; //!< URL file path | ||||
std::string Protocol; //!< URL protocol | ||||
std::string Host; //!< URL host | ||||
std::string Port; //!< URL port | ||||
std::string Username; //!< URL username | ||||
std::string Password; //!< URL password | ||||
/*! | ||||
@brief Parse the input URL to the protocol, host, path, username, | ||||
password | ||||
*/ | ||||
static Uri EXIV2API Parse(const std::string &uri); | ||||
/*! | ||||
@brief Decode the url components. | ||||
*/ | ||||
static void EXIV2API Decode(Uri& uri); | ||||
}; // class Uri | ||||
} // namespace Exiv2 | ||||
#endif // #ifndef FUTILS_HPP_ | #endif // #ifndef FUTILS_HPP_ | |||
End of changes. 9 change blocks. | ||||
9 lines changed or deleted | 148 lines changed or added | |||
gifimage.hpp | gifimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
image.hpp | image.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 75 | skipping to change at line 75 | |||
uint32_t width_; //!< Width | uint32_t width_; //!< Width | |||
uint32_t height_; //!< Height | uint32_t height_; //!< Height | |||
std::string filter_; //!< Filter | std::string filter_; //!< Filter | |||
std::string mimeType_; //!< MIME type | std::string mimeType_; //!< MIME type | |||
}; | }; | |||
//! List of native previews. This is meant to be used only by the Previ ewManager. | //! List of native previews. This is meant to be used only by the Previ ewManager. | |||
typedef std::vector<NativePreview> NativePreviewList; | typedef std::vector<NativePreview> NativePreviewList; | |||
/*! | /*! | |||
@brief Options for printStructure | ||||
*/ | ||||
typedef enum { kpsNone, kpsBasic, kpsXMP } PrintStructureOption; | ||||
/*! | ||||
@brief Abstract base class defining the interface for an image. This is | @brief Abstract base class defining the interface for an image. This is | |||
the top-level interface to the Exiv2 library. | the top-level interface to the Exiv2 library. | |||
Image has containers to store image metadata and subclasses implement | Image has containers to store image metadata and subclasses implement | |||
read and save metadata from and to specific image formats.<BR> | read and save metadata from and to specific image formats.<BR> | |||
Most client apps will obtain an Image instance by calling a static | Most client apps will obtain an Image instance by calling a static | |||
ImageFactory method. The Image class can then be used to to read, wri te, | ImageFactory method. The Image class can then be used to to read, wri te, | |||
and save metadata. | and save metadata. | |||
*/ | */ | |||
class EXIV2API Image { | class EXIV2API Image { | |||
skipping to change at line 106 | skipping to change at line 111 | |||
Image(int imageType, | Image(int imageType, | |||
uint16_t supportedMetadata, | uint16_t supportedMetadata, | |||
BasicIo::AutoPtr io); | BasicIo::AutoPtr io); | |||
//! Virtual Destructor | //! Virtual Destructor | |||
virtual ~Image(); | virtual ~Image(); | |||
//@} | //@} | |||
//! @name Manipulators | //! @name Manipulators | |||
//@{ | //@{ | |||
/*! | /*! | |||
@brief Print out the structure of image file. | ||||
@throw Error if reading of the file fails or the image data is | ||||
not valid (does not look like data of the specific image ty | ||||
pe). | ||||
@caution This function is not thread safe and intended for exiv2 | ||||
-pS for debugging. | ||||
*/ | ||||
virtual void printStructure(std::ostream& out, PrintStructureOption | ||||
option =kpsNone); | ||||
/*! | ||||
@brief Read all metadata supported by a specific image format fro m the | @brief Read all metadata supported by a specific image format fro m the | |||
image. Before this method is called, the image metadata will be | image. Before this method is called, the image metadata will be | |||
cleared. | cleared. | |||
This method returns success even if no metadata is found in the | This method returns success even if no metadata is found in the | |||
image. Callers must therefore check the size of individual metada ta | image. Callers must therefore check the size of individual metada ta | |||
types before accessing the data. | types before accessing the data. | |||
@throw Error if opening or reading of the file fails or the image | @throw Error if opening or reading of the file fails or the image | |||
data is not valid (does not look like data of the specific im age | data is not valid (does not look like data of the specific im age | |||
skipping to change at line 448 | skipping to change at line 460 | |||
/*! | /*! | |||
@brief Returns an Image instance of the specified type. | @brief Returns an Image instance of the specified type. | |||
The factory is implemented as a static class. | The factory is implemented as a static class. | |||
*/ | */ | |||
class EXIV2API ImageFactory { | class EXIV2API ImageFactory { | |||
friend bool Image::good() const; | friend bool Image::good() const; | |||
public: | public: | |||
/*! | /*! | |||
@brief Create the appropriate class type implemented BasicIo base | ||||
d on the protocol of the input. | ||||
"-" path implies the data from stdin and it is handled by StdinIo | ||||
. | ||||
Http path can be handled by either HttpIo or CurlIo. Https, ftp p | ||||
aths | ||||
are handled by CurlIo. Ssh, sftp paths are handled by SshIo. Othe | ||||
rs are handled by FileIo. | ||||
@param path %Image file. | ||||
@param useCurl Indicate whether the libcurl is used or not. | ||||
If it's true, http is handled by CurlIo. Otherwise it is ha | ||||
ndled by HttpIo. | ||||
@return An auto-pointer that owns an BasicIo instance. | ||||
@throw Error If the file is not found or it is unable to connect | ||||
to the server to | ||||
read the remote file. | ||||
*/ | ||||
static BasicIo::AutoPtr createIo(const std::string& path, bool useC | ||||
url = true); | ||||
#ifdef EXV_UNICODE_PATH | ||||
/*! | ||||
@brief Like createIo() but accepts a unicode path in an std::wstr | ||||
ing. | ||||
@note This function is only available on Windows. | ||||
*/ | ||||
static BasicIo::AutoPtr createIo(const std::wstring& wpath, bool us | ||||
eCurl = true); | ||||
#endif | ||||
/*! | ||||
@brief Create an Image subclass of the appropriate type by readin g | @brief Create an Image subclass of the appropriate type by readin g | |||
the specified file. %Image type is derived from the file | the specified file. %Image type is derived from the file | |||
contents. | contents. | |||
@param path %Image file. The contents of the file are tested to | @param path %Image file. The contents of the file are tested to | |||
determine the image type. File extension is ignored. | determine the image type. File extension is ignored. | |||
@param useCurl Indicate whether the libcurl is used or not. | ||||
If it's true, http is handled by CurlIo. Otherwise it is ha | ||||
ndled by HttpIo. | ||||
@return An auto-pointer that owns an Image instance whose type | @return An auto-pointer that owns an Image instance whose type | |||
matches that of the file. | matches that of the file. | |||
@throw Error If opening the file fails or it contains data of an | @throw Error If opening the file fails or it contains data of an | |||
unknown image type. | unknown image type. | |||
*/ | */ | |||
static Image::AutoPtr open(const std::string& path); | static Image::AutoPtr open(const std::string& path, bool useCurl = true); | |||
#ifdef EXV_UNICODE_PATH | #ifdef EXV_UNICODE_PATH | |||
/*! | /*! | |||
@brief Like open() but accepts a unicode path in an std::wstring. | @brief Like open() but accepts a unicode path in an std::wstring. | |||
@note This function is only available on Windows. | @note This function is only available on Windows. | |||
*/ | */ | |||
static Image::AutoPtr open(const std::wstring& wpath); | static Image::AutoPtr open(const std::wstring& wpath, bool useCurl = true); | |||
#endif | #endif | |||
/*! | /*! | |||
@brief Create an Image subclass of the appropriate type by readin g | @brief Create an Image subclass of the appropriate type by readin g | |||
the provided memory. %Image type is derived from the memory | the provided memory. %Image type is derived from the memory | |||
contents. | contents. | |||
@param data Pointer to a data buffer containing an image. The con tents | @param data Pointer to a data buffer containing an image. The con tents | |||
of the memory are tested to determine the image type. | of the memory are tested to determine the image type. | |||
@param size Number of bytes pointed to by \em data. | @param size Number of bytes pointed to by \em data. | |||
@return An auto-pointer that owns an Image instance whose type | @return An auto-pointer that owns an Image instance whose type | |||
matches that of the data buffer. | matches that of the data buffer. | |||
End of changes. 7 change blocks. | ||||
3 lines changed or deleted | 52 lines changed or added | |||
iptc.hpp | iptc.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
jp2image.hpp | jp2image.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
jpgimage.hpp | jpgimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 155 | skipping to change at line 155 | |||
/*! | /*! | |||
@brief Abstract helper base class to access JPEG images. | @brief Abstract helper base class to access JPEG images. | |||
*/ | */ | |||
class EXIV2API JpegBase : public Image { | class EXIV2API JpegBase : public Image { | |||
public: | public: | |||
//! @name Manipulators | //! @name Manipulators | |||
//@{ | //@{ | |||
void readMetadata(); | void readMetadata(); | |||
void writeMetadata(); | void writeMetadata(); | |||
/*! | ||||
@brief Print out the structure of image file. | ||||
@throw Error if reading of the file fails or the image data is | ||||
not valid (does not look like data of the specific image ty | ||||
pe). | ||||
@caution This function is not thread safe and intended for exiv2 | ||||
-pS for debugging. | ||||
*/ | ||||
void printStructure(std::ostream& out, PrintStructureOption option) | ||||
; | ||||
//@} | //@} | |||
protected: | protected: | |||
//! @name Creators | //! @name Creators | |||
//@{ | //@{ | |||
/*! | /*! | |||
@brief Constructor that can either open an existing image or crea te | @brief Constructor that can either open an existing image or crea te | |||
a new image from scratch. If a new image is to be created, an y | a new image from scratch. If a new image is to be created, an y | |||
existing data is overwritten. | existing data is overwritten. | |||
@param type Image type. | @param type Image type. | |||
skipping to change at line 221 | skipping to change at line 229 | |||
/*! | /*! | |||
@brief Writes the image header (aka signature) to the BasicIo ins tance. | @brief Writes the image header (aka signature) to the BasicIo ins tance. | |||
@param oIo BasicIo instance that the header is written to. | @param oIo BasicIo instance that the header is written to. | |||
@return 0 if successful;<BR> | @return 0 if successful;<BR> | |||
4 if the output file can not be written to | 4 if the output file can not be written to | |||
*/ | */ | |||
virtual int writeHeader(BasicIo& oIo) const =0; | virtual int writeHeader(BasicIo& oIo) const =0; | |||
//@} | //@} | |||
// Constant Data | // Constant Data | |||
static const byte dht_; //!< JPEG DHT marker | ||||
static const byte dqt_; //!< JPEG DQT marker | ||||
static const byte dri_; //!< JPEG DRI marker | ||||
static const byte sos_; //!< JPEG SOS marker | static const byte sos_; //!< JPEG SOS marker | |||
static const byte eoi_; //!< JPEG EOI marker | static const byte eoi_; //!< JPEG EOI marker | |||
static const byte app0_; //!< JPEG APP0 marker | static const byte app0_; //!< JPEG APP0 marker | |||
static const byte app1_; //!< JPEG APP1 marker | static const byte app1_; //!< JPEG APP1 marker | |||
static const byte app13_; //!< JPEG APP13 marker | static const byte app13_; //!< JPEG APP13 marker | |||
static const byte com_; //!< JPEG Comment marker | static const byte com_; //!< JPEG Comment marker | |||
static const byte sof0_; //!< JPEG Start-Of-Frame ma rker | static const byte sof0_; //!< JPEG Start-Of-Frame ma rker | |||
static const byte sof1_; //!< JPEG Start-Of-Frame ma rker | static const byte sof1_; //!< JPEG Start-Of-Frame ma rker | |||
static const byte sof2_; //!< JPEG Start-Of-Frame ma rker | static const byte sof2_; //!< JPEG Start-Of-Frame ma rker | |||
static const byte sof3_; //!< JPEG Start-Of-Frame ma rker | static const byte sof3_; //!< JPEG Start-Of-Frame ma rker | |||
End of changes. 3 change blocks. | ||||
1 lines changed or deleted | 15 lines changed or added | |||
metadatum.hpp | metadatum.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
mrwimage.hpp | mrwimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
orfimage.hpp | orfimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
pgfimage.hpp | pgfimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
pngimage.hpp | pngimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 89 | skipping to change at line 89 | |||
@param create Specifies if an existing image should be read (fals e) | @param create Specifies if an existing image should be read (fals e) | |||
or if a new file should be created (true). | or if a new file should be created (true). | |||
*/ | */ | |||
PngImage(BasicIo::AutoPtr io, bool create); | PngImage(BasicIo::AutoPtr io, bool create); | |||
//@} | //@} | |||
//! @name Manipulators | //! @name Manipulators | |||
//@{ | //@{ | |||
void readMetadata(); | void readMetadata(); | |||
void writeMetadata(); | void writeMetadata(); | |||
/*! | ||||
@brief Print out the structure of image file. | ||||
@throw Error if reading of the file fails or the image data is | ||||
not valid (does not look like data of the specific image ty | ||||
pe). | ||||
@caution This function is not thread safe and intended for exiv2 | ||||
-pS for debugging. | ||||
*/ | ||||
void printStructure(std::ostream& out, PrintStructureOption option) | ||||
; | ||||
//@} | //@} | |||
//! @name Accessors | //! @name Accessors | |||
//@{ | //@{ | |||
std::string mimeType() const; | std::string mimeType() const; | |||
//@} | //@} | |||
private: | private: | |||
//! @name NOT implemented | //! @name NOT implemented | |||
//@{ | //@{ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 12 lines changed or added | |||
preview.hpp | preview.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
properties.hpp | properties.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
psdimage.hpp | psdimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
rafimage.hpp | rafimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file rafimage.hpp | @file rafimage.hpp | |||
@brief Fujifilm RAW image | @brief Fujifilm RAW image | |||
@version $Rev: 3201 $ | @version $Rev: 3090 $ | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 05-Feb-07, ahu: created | @date 05-Feb-07, ahu: created | |||
*/ | */ | |||
#ifndef RAFIMAGE_HPP_ | #ifndef RAFIMAGE_HPP_ | |||
#define RAFIMAGE_HPP_ | #define RAFIMAGE_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
#include "image.hpp" | #include "image.hpp" | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
rw2image.hpp | rw2image.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file rw2image.hpp | @file rw2image.hpp | |||
@brief Class Rw2Image | @brief Class Rw2Image | |||
@version $Rev: 3201 $ | @version $Rev: 3090 $ | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 06-Jan-09, ahu: created | @date 06-Jan-09, ahu: created | |||
*/ | */ | |||
#ifndef RW2IMAGE_HPP_ | #ifndef RW2IMAGE_HPP_ | |||
#define RW2IMAGE_HPP_ | #define RW2IMAGE_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
#include "image.hpp" | #include "image.hpp" | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
tags.hpp | tags.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file tags.hpp | @file tags.hpp | |||
@brief Exif tag and type information | @brief Exif tag and type information | |||
@version $Rev: 3201 $ | @version $Rev: 3090 $ | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 15-Jan-04, ahu: created<BR> | @date 15-Jan-04, ahu: created<BR> | |||
11-Feb-04, ahu: isolated as a component | 11-Feb-04, ahu: isolated as a component | |||
*/ | */ | |||
#ifndef TAGS_HPP_ | #ifndef TAGS_HPP_ | |||
#define TAGS_HPP_ | #define TAGS_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
tags_int.hpp | tags_int.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file tags_int.hpp | @file tags_int.hpp | |||
@brief Internal Exif tag and type information | @brief Internal Exif tag and type information | |||
@version $Rev: 3201 $ | @version $Rev: 3777 $ | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 15-Jan-04, ahu: created<BR> | @date 15-Jan-04, ahu: created<BR> | |||
11-Feb-04, ahu: isolated as a component | 11-Feb-04, ahu: isolated as a component | |||
*/ | */ | |||
#ifndef TAGS_INT_HPP_ | #ifndef TAGS_INT_HPP_ | |||
#define TAGS_INT_HPP_ | #define TAGS_INT_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
skipping to change at line 85 | skipping to change at line 85 | |||
panaRawId, | panaRawId, | |||
mnId, | mnId, | |||
canonId, | canonId, | |||
canonCsId, | canonCsId, | |||
canonSiId, | canonSiId, | |||
canonCfId, | canonCfId, | |||
canonPiId, | canonPiId, | |||
canonPaId, | canonPaId, | |||
canonFiId, | canonFiId, | |||
canonPrId, | canonPrId, | |||
casioId, | ||||
casio2Id, | ||||
fujiId, | fujiId, | |||
minoltaId, | minoltaId, | |||
minoltaCs5DId, | minoltaCs5DId, | |||
minoltaCs7DId, | minoltaCs7DId, | |||
minoltaCsOldId, | minoltaCsOldId, | |||
minoltaCsNewId, | minoltaCsNewId, | |||
nikon1Id, | nikon1Id, | |||
nikon2Id, | nikon2Id, | |||
nikon3Id, | nikon3Id, | |||
nikonPvId, | nikonPvId, | |||
skipping to change at line 185 | skipping to change at line 187 | |||
SectionId sectionId_; //!< Section id | SectionId sectionId_; //!< Section id | |||
const char* name_; //!< Section name (one word ) | const char* name_; //!< Section name (one word ) | |||
const char* desc_; //!< Section description | const char* desc_; //!< Section description | |||
}; | }; | |||
/*! | /*! | |||
@brief Helper structure for lookup tables for translations of numeric | @brief Helper structure for lookup tables for translations of numeric | |||
tag values to human readable labels. | tag values to human readable labels. | |||
*/ | */ | |||
struct TagDetails { | struct TagDetails { | |||
long val_; //!< Tag value | int64_t val_; //!< Tag value | |||
const char* label_; //!< Translation of the tag value | const char* label_; //!< Translation of the tag value | |||
//! Comparison operator for use with the find template | //! Comparison operator for use with the find template | |||
bool operator==(long key) const { return val_ == key; } | bool operator==(long key) const { return val_ == key; } | |||
}; // struct TagDetails | }; // struct TagDetails | |||
/*! | /*! | |||
@brief Helper structure for lookup tables for translations of bitmask | @brief Helper structure for lookup tables for translations of bitmask | |||
values to human readable labels. | values to human readable labels. | |||
*/ | */ | |||
End of changes. 4 change blocks. | ||||
3 lines changed or deleted | 5 lines changed or added | |||
tgaimage.hpp | tgaimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 26 | skipping to change at line 26 | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file tgaimage.hpp | @file tgaimage.hpp | |||
@brief Truevision TARGA v2 image, implemented using the following refer ences: | @brief Truevision TARGA v2 image, implemented using the following refer ences: | |||
<a href="http://en.wikipedia.org/wiki/Truevision_TGA">Truevision TGA page on Wikipedia</a><br> | <a href="http://en.wikipedia.org/wiki/Truevision_TGA">Truevision TGA page on Wikipedia</a><br> | |||
<a href="http://www.gamers.org/dEngine/quake3/TGA.ps.gz">TGA(tm) File Format Specification</a> | <a href="http://www.gamers.org/dEngine/quake3/TGA.ps.gz">TGA(tm) File Format Specification</a> | |||
@version $Rev: 3201 $ | @version $Rev: 3090 $ | |||
@author Marco Piovanelli, Ovolab (marco) | @author Marco Piovanelli, Ovolab (marco) | |||
<a href="mailto:marco.piovanelli@pobox.com">marco.piovanelli@pob ox.com</a> | <a href="mailto:marco.piovanelli@pobox.com">marco.piovanelli@pob ox.com</a> | |||
@date 05-Mar-2007, marco: created | @date 05-Mar-2007, marco: created | |||
*/ | */ | |||
#ifndef TGAIMAGE_HPP_ | #ifndef TGAIMAGE_HPP_ | |||
#define TGAIMAGE_HPP_ | #define TGAIMAGE_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
#include "exif.hpp" | #include "exif.hpp" | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
tiffimage.hpp | tiffimage.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file tiffimage.hpp | @file tiffimage.hpp | |||
@brief Class TiffImage | @brief Class TiffImage | |||
@version $Rev: 3201 $ | @version $Rev: 3090 $ | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 15-Mar-06, ahu: created | @date 15-Mar-06, ahu: created | |||
*/ | */ | |||
#ifndef TIFFIMAGE_HPP_ | #ifndef TIFFIMAGE_HPP_ | |||
#define TIFFIMAGE_HPP_ | #define TIFFIMAGE_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
#include "image.hpp" | #include "image.hpp" | |||
skipping to change at line 89 | skipping to change at line 89 | |||
@param create Specifies if an existing image should be read (fals e) | @param create Specifies if an existing image should be read (fals e) | |||
or if a new file should be created (true). | or if a new file should be created (true). | |||
*/ | */ | |||
TiffImage(BasicIo::AutoPtr io, bool create); | TiffImage(BasicIo::AutoPtr io, bool create); | |||
//@} | //@} | |||
//! @name Manipulators | //! @name Manipulators | |||
//@{ | //@{ | |||
void readMetadata(); | void readMetadata(); | |||
void writeMetadata(); | void writeMetadata(); | |||
/*! | ||||
@brief Print out the structure of image file. | ||||
@throw Error if reading of the file fails or the image data is | ||||
not valid (does not look like data of the specific image ty | ||||
pe). | ||||
@caution This function is not thread safe and intended for exiv2 | ||||
-pS for debugging. | ||||
*/ | ||||
void printStructure(std::ostream& out, PrintStructureOption option) | ||||
; | ||||
/*! | /*! | |||
@brief Not supported. TIFF format does not contain a comment. | @brief Not supported. TIFF format does not contain a comment. | |||
Calling this function will throw an Error(32). | Calling this function will throw an Error(32). | |||
*/ | */ | |||
void setComment(const std::string& comment); | void setComment(const std::string& comment); | |||
//@} | //@} | |||
//! @name Accessors | //! @name Accessors | |||
//@{ | //@{ | |||
std::string mimeType() const; | std::string mimeType() const; | |||
End of changes. 3 change blocks. | ||||
2 lines changed or deleted | 14 lines changed or added | |||
types.hpp | types.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file types.hpp | @file types.hpp | |||
@brief Type definitions for %Exiv2 and related functionality | @brief Type definitions for %Exiv2 and related functionality | |||
@version $Rev: 3201 $ | @version $Rev: 3090 $ | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 09-Jan-04, ahu: created<BR> | @date 09-Jan-04, ahu: created<BR> | |||
11-Feb-04, ahu: isolated as a component<BR> | 11-Feb-04, ahu: isolated as a component<BR> | |||
31-Jul-04, brad: added Time, Data and String values | 31-Jul-04, brad: added Time, Data and String values | |||
*/ | */ | |||
#ifndef TYPES_HPP_ | #ifndef TYPES_HPP_ | |||
#define TYPES_HPP_ | #define TYPES_HPP_ | |||
// ************************************************************************ ***** | ||||
// included header files | // included header files | |||
#ifdef _MSC_VER | #include "config.h" | |||
# include "exv_msvc.h" | ||||
#else | ||||
# include "exv_conf.h" | ||||
#endif | ||||
#include "version.hpp" | #include "version.hpp" | |||
// + standard includes | // + standard includes | |||
#include <string> | #include <string> | |||
#include <vector> | #include <vector> | |||
#include <iosfwd> | #include <iosfwd> | |||
#include <utility> | #include <utility> | |||
#include <algorithm> | #include <algorithm> | |||
#include <sstream> | #include <sstream> | |||
End of changes. 4 change blocks. | ||||
8 lines changed or deleted | 3 lines changed or added | |||
value.hpp | value.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file value.hpp | @file value.hpp | |||
@brief Value interface and concrete subclasses | @brief Value interface and concrete subclasses | |||
@version $Rev: 3201 $ | @version $Rev: 3090 $ | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 09-Jan-04, ahu: created | @date 09-Jan-04, ahu: created | |||
11-Feb-04, ahu: isolated as a component | 11-Feb-04, ahu: isolated as a component | |||
31-Jul-04, brad: added Time, Data and String values | 31-Jul-04, brad: added Time, Data and String values | |||
*/ | */ | |||
#ifndef VALUE_HPP_ | #ifndef VALUE_HPP_ | |||
#define VALUE_HPP_ | #define VALUE_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
skipping to change at line 875 | skipping to change at line 875 | |||
public: | public: | |||
//! Type used to store XMP array elements. | //! Type used to store XMP array elements. | |||
typedef std::vector<std::string> ValueType; | typedef std::vector<std::string> ValueType; | |||
// DATA | // DATA | |||
std::vector<std::string> value_; //!< Stores the string valu es. | std::vector<std::string> value_; //!< Stores the string valu es. | |||
}; // class XmpArrayValue | }; // class XmpArrayValue | |||
/*! | /*! | |||
@brief %LangAltValueComparator | ||||
#1058 | ||||
https://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpec | ||||
ificationPart1.pdf | ||||
XMP spec chapter B.4 (page 42) the xml:lang qualifier is to be com | ||||
pared case insensitive. | ||||
*/ | ||||
struct LangAltValueComparator { | ||||
bool operator() (const std::string& str1, const std::string& | ||||
str2) const | ||||
{ | ||||
int result = str1.size() < str2.size() ? 1 | ||||
: str1.size() > str2.size() ? -1 | ||||
: 0 | ||||
; | ||||
std::string::const_iterator c1 = str1.begin(); | ||||
std::string::const_iterator c2 = str2.begin(); | ||||
if ( result==0 ) for ( | ||||
; result==0 && c1 != str1.end() | ||||
; ++c1, ++c2 | ||||
) { | ||||
result = tolower(*c1) < tolower(*c2) ? 1 | ||||
: tolower(*c1) > tolower(*c2) ? -1 | ||||
: 0 | ||||
; | ||||
} | ||||
return result < 0 ; | ||||
} | ||||
}; | ||||
/*! | ||||
@brief %Value type for XMP language alternative properties. | @brief %Value type for XMP language alternative properties. | |||
A language alternative is an array consisting of simple text values, | A language alternative is an array consisting of simple text values, | |||
each of which has a language qualifier. | each of which has a language qualifier. | |||
*/ | */ | |||
class EXIV2API LangAltValue : public XmpValue { | class EXIV2API LangAltValue : public XmpValue { | |||
public: | public: | |||
//! Shortcut for a %LangAltValue auto pointer. | //! Shortcut for a %LangAltValue auto pointer. | |||
typedef std::auto_ptr<LangAltValue> AutoPtr; | typedef std::auto_ptr<LangAltValue> AutoPtr; | |||
skipping to change at line 952 | skipping to change at line 981 | |||
*/ | */ | |||
virtual std::ostream& write(std::ostream& os) const; | virtual std::ostream& write(std::ostream& os) const; | |||
//@} | //@} | |||
private: | private: | |||
//! Internal virtual copy constructor. | //! Internal virtual copy constructor. | |||
EXV_DLLLOCAL virtual LangAltValue* clone_() const; | EXV_DLLLOCAL virtual LangAltValue* clone_() const; | |||
public: | public: | |||
//! Type used to store language alternative arrays. | //! Type used to store language alternative arrays. | |||
typedef std::map<std::string, std::string> ValueType; | typedef std::map<std::string, std::string,LangAltValueComparator> ValueType; | |||
// DATA | // DATA | |||
/*! | /*! | |||
@brief Map to store the language alternative values. The language | @brief Map to store the language alternative values. The language | |||
qualifier is used as the key for the map entries. | qualifier is used as the key for the map entries. | |||
*/ | */ | |||
ValueType value_; | ValueType value_; | |||
}; // class LangAltValue | }; // class LangAltValue | |||
/*! | /*! | |||
skipping to change at line 1065 | skipping to change at line 1094 | |||
// DATA | // DATA | |||
Date date_; | Date date_; | |||
}; // class DateValue | }; // class DateValue | |||
/*! | /*! | |||
@brief %Value for simple ISO 8601 times. | @brief %Value for simple ISO 8601 times. | |||
This class is limited to handling simple time strings in the ISO 8601 | This class is limited to handling simple time strings in the ISO 8601 | |||
format HHMMSS±HHMM where HHMMSS refers to local hour, minute and | format HHMMSS�HHMM where HHMMSS refers to local hour, minute and | |||
seconds and ±HHMM refers to hours and minutes ahead or behind | seconds and �HHMM refers to hours and minutes ahead or behind | |||
Universal Coordinated Time. | Universal Coordinated Time. | |||
*/ | */ | |||
class EXIV2API TimeValue : public Value { | class EXIV2API TimeValue : public Value { | |||
public: | public: | |||
//! Shortcut for a %TimeValue auto pointer. | //! Shortcut for a %TimeValue auto pointer. | |||
typedef std::auto_ptr<TimeValue> AutoPtr; | typedef std::auto_ptr<TimeValue> AutoPtr; | |||
//! @name Creators | //! @name Creators | |||
//@{ | //@{ | |||
//! Default constructor. | //! Default constructor. | |||
skipping to change at line 1553 | skipping to change at line 1582 | |||
sizeDataArea_ = rhs.sizeDataArea_; | sizeDataArea_ = rhs.sizeDataArea_; | |||
return *this; | return *this; | |||
} | } | |||
template<typename T> | template<typename T> | |||
int ValueType<T>::read(const byte* buf, long len, ByteOrder byteOrder) | int ValueType<T>::read(const byte* buf, long len, ByteOrder byteOrder) | |||
{ | { | |||
value_.clear(); | value_.clear(); | |||
long ts = TypeInfo::typeSize(typeId()); | long ts = TypeInfo::typeSize(typeId()); | |||
if (len % ts != 0) len = (len / ts) * ts; | if (ts != 0) | |||
if (len % ts != 0) len = (len / ts) * ts; | ||||
for (long i = 0; i < len; i += ts) { | for (long i = 0; i < len; i += ts) { | |||
value_.push_back(getValue<T>(buf + i, byteOrder)); | value_.push_back(getValue<T>(buf + i, byteOrder)); | |||
} | } | |||
return 0; | return 0; | |||
} | } | |||
template<typename T> | template<typename T> | |||
int ValueType<T>::read(const std::string& buf) | int ValueType<T>::read(const std::string& buf) | |||
{ | { | |||
std::istringstream is(buf); | std::istringstream is(buf); | |||
End of changes. 6 change blocks. | ||||
6 lines changed or deleted | 39 lines changed or added | |||
version.hpp | version.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 27 | skipping to change at line 27 | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file version.hpp | @file version.hpp | |||
@brief Precompiler define and a function to test the %Exiv2 version. | @brief Precompiler define and a function to test the %Exiv2 version. | |||
References: Similar versioning defines are used in KDE, GTK and other | References: Similar versioning defines are used in KDE, GTK and other | |||
libraries. See http://apr.apache.org/versioning.html for accompa nying | libraries. See http://apr.apache.org/versioning.html for accompa nying | |||
guidelines. | guidelines. | |||
@version $Rev: 3201 $ | @version $Rev: 3371 $ | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 31-May-06, ahu: created | @date 31-May-06, ahu: created | |||
*/ | */ | |||
#ifndef VERSION_HPP_ | #ifndef VERSION_HPP_ | |||
#define VERSION_HPP_ | #define VERSION_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
// + standard includes | // + standard includes | |||
#include <string> | #include <string> | |||
#include <vector> | ||||
#if EXV_HAVE_REGEX | ||||
#include <regex.h> | ||||
typedef std::vector<regex_t> exv_grep_keys_t ; | ||||
#else | ||||
typedef std::vector<std::string> exv_grep_keys_t ; | ||||
#endif | ||||
/*! | /*! | |||
@brief %Exiv2 MAJOR version number of the library used at compile-time. | @brief %Exiv2 MAJOR version number of the library used at compile-time. | |||
*/ | */ | |||
#define EXIV2_MAJOR_VERSION (0) | #define EXIV2_MAJOR_VERSION (0) | |||
/*! | /*! | |||
@brief %Exiv2 MINOR version number of the library used at compile-time. | @brief %Exiv2 MINOR version number of the library used at compile-time. | |||
*/ | */ | |||
#define EXIV2_MINOR_VERSION (24) | #define EXIV2_MINOR_VERSION (25) | |||
/*! | /*! | |||
@brief %Exiv2 PATCH version number of the library used at compile-time. | @brief %Exiv2 PATCH version number of the library used at compile-time. | |||
*/ | */ | |||
#define EXIV2_PATCH_VERSION (0) | #define EXIV2_PATCH_VERSION (0) | |||
/*! | /*! | |||
@brief Make an integer version number for comparison from a major, minor and | @brief Make an integer version number for comparison from a major, minor and | |||
a patch version number. | a patch version number. | |||
*/ | */ | |||
#define EXIV2_MAKE_VERSION(major,minor,patch) \ | #define EXIV2_MAKE_VERSION(major,minor,patch) \ | |||
(((major) << 16) | ((minor) << 8) | (patch)) | (((major) << 16) | ((minor) << 8) | (patch)) | |||
skipping to change at line 125 | skipping to change at line 132 | |||
( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) ) | ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) ) | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// namespace extensions | // namespace extensions | |||
namespace Exiv2 { | namespace Exiv2 { | |||
/*! | /*! | |||
@brief Return the version of %Exiv2 available at runtime as an intege r. | @brief Return the version of %Exiv2 available at runtime as an intege r. | |||
*/ | */ | |||
EXIV2API int versionNumber(); | EXIV2API int versionNumber(); | |||
/*! | /*! | |||
@brief Return the version string Example: "0.24.0" (major.minor.patch ) | @brief Return the version string Example: "0.25.0" (major.minor.patch ) | |||
*/ | */ | |||
EXIV2API std::string versionString(); | EXIV2API std::string versionString(); | |||
/*! | /*! | |||
@brief Return the version of %Exiv2 as hex string of fixed length 6. | @brief Return the version of %Exiv2 as hex string of fixed length 6. | |||
*/ | */ | |||
EXIV2API std::string versionNumberHexString(); | EXIV2API std::string versionNumberHexString(); | |||
/*! | /*! | |||
@brief Return the version of %Exiv2 available at runtime as a string. | @brief Return the version of %Exiv2 available at runtime as a string. | |||
*/ | */ | |||
EXIV2API const char* version(); | EXIV2API const char* version(); | |||
skipping to change at line 179 | skipping to change at line 186 | |||
} | } | |||
else { | else { | |||
std::cout << "Installed Exiv2 version is less than 0.13\n"; | std::cout << "Installed Exiv2 version is less than 0.13\n"; | |||
} | } | |||
#else | #else | |||
std::cout << "Compile-time Exiv2 version doesn't have Exiv2::testVers ion()\n"; | std::cout << "Compile-time Exiv2 version doesn't have Exiv2::testVers ion()\n"; | |||
#endif | #endif | |||
@endcode | @endcode | |||
*/ | */ | |||
EXIV2API bool testVersion(int major, int minor, int patch); | EXIV2API bool testVersion(int major, int minor, int patch); | |||
} // namespace Exiv2 | ||||
// dumpLibraryInfo is general purpose and not in the Exiv2 namespace | /*! | |||
// used by exiv2 test suite to inspect libraries loaded at run-time | @brief dumpLibraryInfo implements the exiv2 option --version --verbos | |||
EXIV2API void dumpLibraryInfo(std::ostream& os); | e | |||
used by exiv2 test suite to inspect libraries loaded at run-ti | ||||
me | ||||
*/ | ||||
EXIV2API void dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& k | ||||
eys); | ||||
} // namespace Exiv2 | ||||
#endif // VERSION_HPP_ | #endif // VERSION_HPP_ | |||
End of changes. 7 change blocks. | ||||
8 lines changed or deleted | 20 lines changed or added | |||
xmp.hpp | xmp.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file xmp.hpp | @file xmp.hpp | |||
@brief Encoding and decoding of XMP data | @brief Encoding and decoding of XMP data | |||
@version $Rev: 3201 $ | @version $Rev: 3090 $ | |||
@author Andreas Huggel (ahu) | @author Andreas Huggel (ahu) | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 13-Jul-07, ahu: created | @date 13-Jul-07, ahu: created | |||
*/ | */ | |||
#ifndef XMP_HPP_ | #ifndef XMP_HPP_ | |||
#define XMP_HPP_ | #define XMP_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
#include "metadatum.hpp" | #include "metadatum.hpp" | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
xmpsidecar.hpp | xmpsidecar.hpp | |||
---|---|---|---|---|
// ***************************************************************** -*- C+ + -*- | // ***************************************************************** -*- C+ + -*- | |||
/* | /* | |||
* Copyright (C) 2004-2013 Andreas Huggel <ahuggel@gmx.net> | * Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net> | |||
* | * | |||
* This program is part of the Exiv2 distribution. | * This program is part of the Exiv2 distribution. | |||
* | * | |||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License | * modify it under the terms of the GNU General Public License | |||
* as published by the Free Software Foundation; either version 2 | * as published by the Free Software Foundation; either version 2 | |||
* of the License, or (at your option) any later version. | * of the License, or (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 U SA. | |||
*/ | */ | |||
/*! | /*! | |||
@file xmpsidecar.hpp | @file xmpsidecar.hpp | |||
@brief An Image subclass to support XMP sidecar files | @brief An Image subclass to support XMP sidecar files | |||
@version $Rev: 3201 $ | @version $Rev: 3090 $ | |||
@author Andreas Huggel | @author Andreas Huggel | |||
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> | |||
@date 07-Mar-08, ahu: created | @date 07-Mar-08, ahu: created | |||
*/ | */ | |||
#ifndef XMPSIDECAR_HPP_ | #ifndef XMPSIDECAR_HPP_ | |||
#define XMPSIDECAR_HPP_ | #define XMPSIDECAR_HPP_ | |||
// ************************************************************************ ***** | // ************************************************************************ ***** | |||
// included header files | // included header files | |||
#include "image.hpp" | #include "image.hpp" | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||