Exiv2
rafimage.hpp
Go to the documentation of this file.
1 // ***************************************************************** -*- C++ -*-
2 /*
3  * Copyright (C) 2004-2018 Exiv2 authors
4  * This program is part of the Exiv2 distribution.
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
19  */
27 #ifndef RAFIMAGE_HPP_
28 #define RAFIMAGE_HPP_
29 
30 // *****************************************************************************
31 #include "exiv2lib_export.h"
32 
33 // included header files
34 #include "image.hpp"
35 #include "basicio.hpp"
36 #include "types.hpp"
37 
38 // + standard includes
39 #include <string>
40 
41 // *****************************************************************************
42 // namespace extensions
43 namespace Exiv2 {
44 
45 // *****************************************************************************
46 // class definitions
47 
48  // Add RAF to the supported image formats
49  namespace ImageType {
50  const int raf = 8;
51  }
52 
57  class EXIV2API RafImage : public Image {
58  public:
60 
61 
76  RafImage(BasicIo::AutoPtr io, bool create);
78 
80 
81  void printStructure(std::ostream& out, PrintStructureOption option,int depth);
82  void readMetadata();
87  void writeMetadata();
92  void setExifData(const ExifData& exifData);
97  void setIptcData(const IptcData& iptcData);
102  void setComment(const std::string& comment);
104 
106 
107  std::string mimeType() const;
108  int pixelWidth() const;
109  int pixelHeight() const;
111 
112  private:
114 
115  RafImage(const RafImage& rhs);
118  RafImage& operator=(const RafImage& rhs);
120 
121  }; // class RafImage
122 
123 // *****************************************************************************
124 // template, inline and free functions
125 
126  // These could be static private functions on Image subclasses but then
127  // ImageFactory needs to be made a friend.
133  EXIV2API Image::AutoPtr newRafInstance(BasicIo::AutoPtr io, bool create);
134 
136  EXIV2API bool isRafType(BasicIo& iIo, bool advance);
137 
138 } // namespace Exiv2
139 
140 #endif // #ifndef RAFIMAGE_HPP_
Exiv2::RafImage::setComment
void setComment(const std::string &comment)
Not supported. RAF format does not contain a comment. Calling this function will throw an Error(kerIn...
Definition: rafimage.cpp:90
image_int.hpp
Internal image helpers.
Exiv2::BasicIo::error
virtual int error() const =0
Returns 0 if the IO source is in a valid state, otherwise nonzero.
Exiv2::DataBuf::pData_
byte * pData_
Pointer to the buffer, 0 if none has been allocated.
Definition: types.hpp:269
Exiv2::Image::iptcData_
IptcData iptcData_
IPTC data container.
Definition: image.hpp:489
Exiv2::Internal::indent
std::string indent(int32_t d)
indent output for kpsRecursive in printStructure() .
Definition: image_int.cpp:106
Exiv2::IoCloser
Utility class that closes a BasicIo instance upon destruction. Meant to be used as a stack variable i...
Definition: basicio.hpp:264
Exiv2::ExifData::findKey
iterator findKey(const ExifKey &key)
Find the first Exifdatum with the given key, return an iterator to it.
Definition: exif.cpp:590
types.hpp
Type definitions for Exiv2 and related functionality.
Exiv2::ExifData::const_iterator
ExifMetadata::const_iterator const_iterator
ExifMetadata const iterator type.
Definition: exif.hpp:439
Exiv2::makeSlice
Slice< T > makeSlice(T &cont, size_t begin, size_t end)
Return a new slice with the given bounds.
Definition: slice.hpp:673
Exiv2::comment
@ comment
Exiv2 type for the Exif user comment.
Definition: types.hpp:150
Exiv2::RafImage::mimeType
std::string mimeType() const
Return the MIME type of the image.
Definition: rafimage.cpp:55
Exiv2::strError
EXIV2API std::string strError()
Return a system error message and the error code (errno). See strerror(3).
Definition: futils.cpp:356
Exiv2::ImageType::raf
const int raf
RAF image type (see class RafImage)
Definition: rafimage.hpp:50
Exiv2::Image::exifData_
ExifData exifData_
Exif data container.
Definition: image.hpp:488
Exiv2::TiffParser::decode
static ByteOrder decode(ExifData &exifData, IptcData &iptcData, XmpData &xmpData, const byte *pData, uint32_t size)
Decode metadata from a buffer pData of length size with data in TIFF format to the provided metadata ...
Definition: tiffimage.cpp:251
Exiv2::ExifData::end
iterator end()
End of the metadata.
Definition: exif.hpp:492
Exiv2::RafImage::setIptcData
void setIptcData(const IptcData &iptcData)
Todo: Not supported yet, requires writeMetadata(). Calling this function will throw an Error(kerInval...
Definition: rafimage.cpp:84
Exiv2::Internal::binaryToString
binaryToStringHelper< T > binaryToString(const Slice< T > sl)
format binary data for display in Image::printStructure()
Definition: image_int.hpp:125
rafimage.hpp
Fujifilm RAW image.
Exiv2::Image::clearMetadata
virtual void clearMetadata()
Erase all buffered metadata. Metadata is not removed from the actual image until the writeMetadata() ...
Definition: image.cpp:549
enforce.hpp
Port of D's enforce() to C++ & Exiv2.
Exiv2::Internal::stringFormat
std::string stringFormat(const char *format,...)
format a string in the pattern of sprintf .
Definition: image_int.cpp:32
Exiv2::Image::setByteOrder
void setByteOrder(ByteOrder byteOrder)
Set the byte order to encode the Exif metadata in.
Definition: image.cpp:686
Exiv2::newRafInstance
EXIV2API Image::AutoPtr newRafInstance(BasicIo::AutoPtr io, bool create)
Create a new RafImage instance and return an auto-pointer to it. Caller owns the returned object and ...
Definition: rafimage.cpp:343
enforce
void enforce(bool condition, const T &arg1)
Ensure that condition is true, otherwise throw an exception of the type exception_t.
Definition: enforce.hpp:43
Exiv2::RafImage::printStructure
void printStructure(std::ostream &out, PrintStructureOption option, int depth)
Print out the structure of image file.
Definition: rafimage.cpp:96
Exiv2::DataBuf
Utility class containing a character array. All it does is to take care of memory allocation and dele...
Definition: types.hpp:204
Exiv2::isRafType
EXIV2API bool isRafType(BasicIo &iIo, bool advance)
Check if the file iIo is a RAF image.
Definition: rafimage.cpp:352
Exiv2::ExifKey
Concrete keys for Exif metadata and access to Exif tag reference data.
Definition: tags.hpp:148
Exiv2::DataBuf::size_
long size_
The current size of the buffer.
Definition: types.hpp:271
Exiv2::BasicIo::eof
virtual bool eof() const =0
Returns true if the IO position has reached the end, otherwise false.
Exiv2::BasicIo::read
virtual DataBuf read(long rcount)=0
Read data from the IO source. Reading starts at the current IO position and the position is advanced ...
Exiv2
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
Exiv2::RafImage
Class to access raw Fujifilm RAF images. Exif metadata is supported directly, IPTC is read from the E...
Definition: rafimage.hpp:57
Exiv2::Image::io
virtual BasicIo & io() const
Return a reference to the BasicIo instance being used for Io.
Definition: image.cpp:731
image.hpp
Exiv2::BasicIo::path
virtual std::string path() const =0
Return the path to the IO resource. Often used to form comprehensive error messages where only a Basi...
safe_op.hpp
Overflow checks for integers.
Exiv2::RafImage::pixelHeight
int pixelHeight() const
Return the pixel height of the image.
Definition: rafimage.cpp:69
Exiv2::Image::io_
BasicIo::AutoPtr io_
Image data IO pointer.
Definition: image.hpp:487
Exiv2::ByteOrder
ByteOrder
Type to express the byte order (little or big endian)
Definition: types.hpp:113
Exiv2::Image::AutoPtr
std::auto_ptr< Image > AutoPtr
Image auto_ptr type.
Definition: image.hpp:84
Safe::add
T add(T summand_1, T summand_2)
Safe addition, throws an exception on overflow.
Definition: safe_op.hpp:295
Exiv2::BasicIo::AutoPtr
std::auto_ptr< BasicIo > AutoPtr
BasicIo auto_ptr type.
Definition: basicio.hpp:58
Exiv2::Error
BasicError< char > Error
Error class used for exceptions (std::string based)
Definition: error.hpp:323
Exiv2::RafImage::writeMetadata
void writeMetadata()
Todo: Write metadata back to the image. This method is not yet implemented. Calling it will throw an ...
Definition: rafimage.cpp:335
Exiv2::IptcData
A container for IPTC data. This is a top-level class of the Exiv2 library.
Definition: iptc.hpp:173
Exiv2::RafImage::pixelWidth
int pixelWidth() const
Return the pixel width of the image.
Definition: rafimage.cpp:60
Exiv2::RafImage::readMetadata
void readMetadata()
Read all metadata supported by a specific image format from the image. Before this method is called,...
Definition: rafimage.cpp:279
Exiv2::string
@ string
IPTC string type.
Definition: types.hpp:147
Exiv2::RafImage::setExifData
void setExifData(const ExifData &exifData)
Todo: Not supported yet, requires writeMetadata(). Calling this function will throw an Error(kerInval...
Definition: rafimage.cpp:78
Exiv2::RafImage::RafImage
RafImage(BasicIo::AutoPtr io, bool create)
Constructor that can either open an existing RAF image or create a new image from scratch....
Definition: rafimage.cpp:50
Exiv2::PrintStructureOption
PrintStructureOption
Options for printStructure.
Definition: image.hpp:67
Exiv2::BasicIo::seek
virtual int seek(long offset, Position pos)=0
Move the current IO position.
Exiv2::BasicIo
An interface for simple binary IO.
Definition: basicio.hpp:55
Exiv2::Image::xmpData_
XmpData xmpData_
XMP data container.
Definition: image.hpp:490
Exiv2::Image
Abstract base class defining the interface for an image. This is the top-level interface to the Exiv2...
Definition: image.hpp:81
futils.hpp
Basic file utility functions required by Exiv2.
Exiv2::getULong
EXIV2API uint32_t getULong(const byte *buf, ByteOrder byteOrder)
Read a 4 byte unsigned long value from the data buffer.
Definition: types.cpp:283
error.hpp
Error class for exceptions, log message class.
Exiv2::ExifData
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition: exif.hpp:434