Exiv2
cr2image.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 CR2IMAGE_HPP_
28 #define CR2IMAGE_HPP_
29 
30 // *****************************************************************************
31 #include "exiv2lib_export.h"
32 
33 // included header files
34 #include "image.hpp"
35 
36 // *****************************************************************************
37 // namespace extensions
38 namespace Exiv2 {
39 
40 // *****************************************************************************
41 // class definitions
42 
43  // Add CR2 to the supported image formats
44  namespace ImageType {
45  const int cr2 = 7;
46  }
47 
52  class EXIV2API Cr2Image : public Image {
53  public:
55 
56 
71  Cr2Image(BasicIo::AutoPtr io, bool create);
73 
75 
76  void readMetadata();
77  void writeMetadata();
84  void printStructure(std::ostream& out, PrintStructureOption option,int depth);
89  void setComment(const std::string& comment);
91 
93 
94  std::string mimeType() const;
95  int pixelWidth() const;
96  int pixelHeight() const;
98 
99  private:
101 
102  Cr2Image(const Cr2Image& rhs);
105  Cr2Image& operator=(const Cr2Image& rhs);
107 
108  }; // class Cr2Image
109 
115  class EXIV2API Cr2Parser {
116  public:
122  static ByteOrder decode(
123  ExifData& exifData,
124  IptcData& iptcData,
125  XmpData& xmpData,
126  const byte* pData,
127  uint32_t size
128  );
133  static WriteMethod encode(
134  BasicIo& io,
135  const byte* pData,
136  uint32_t size,
137  ByteOrder byteOrder,
138  const ExifData& exifData,
139  const IptcData& iptcData,
140  const XmpData& xmpData
141  );
142 
143  }; // class Cr2Parser
144 
145 // *****************************************************************************
146 // template, inline and free functions
147 
148  // These could be static private functions on Image subclasses but then
149  // ImageFactory needs to be made a friend.
155  EXIV2API Image::AutoPtr newCr2Instance(BasicIo::AutoPtr io, bool create);
156 
158  EXIV2API bool isCr2Type(BasicIo& iIo, bool advance);
159 
160 } // namespace Exiv2
161 
162 #endif // #ifndef CR2IMAGE_HPP_
Exiv2::BasicIo::error
virtual int error() const =0
Returns 0 if the IO source is in a valid state, otherwise nonzero.
Exiv2::Image::iptcData_
IptcData iptcData_
IPTC data container.
Definition: image.hpp:489
Exiv2::Cr2Image::writeMetadata
void writeMetadata()
Write metadata back to the image.
Definition: cr2image.cpp:113
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:581
Exiv2::Internal::OffsetWriter::cr2RawIfdOffset
CR2 RAW IFD offset, a pointer in the CR2 header to the 4th IFD in a CR2 image.
Definition: tiffimage_int.hpp:430
Exiv2::isCr2Type
EXIV2API bool isCr2Type(BasicIo &iIo, bool advance)
Check if the file iIo is a CR2 image.
Definition: cr2image.cpp:212
Exiv2::Internal::IfdId
IfdId
Type to specify the IFD to which a metadata belongs.
Definition: tags_int.hpp:54
Exiv2::ExifData::begin
iterator begin()
Begin of the metadata.
Definition: exif.hpp:490
Exiv2::ExifData::const_iterator
ExifMetadata::const_iterator const_iterator
ExifMetadata const iterator type.
Definition: exif.hpp:439
Exiv2::Cr2Parser::encode
static WriteMethod encode(BasicIo &io, const byte *pData, uint32_t size, ByteOrder byteOrder, const ExifData &exifData, const IptcData &iptcData, const XmpData &xmpData)
Encode metadata from the provided metadata to CR2 format. See TiffParser::encode().
Definition: cr2image.cpp:159
Exiv2::ImageType::cr2
const int cr2
CR2 image type (see class Cr2Image)
Definition: cr2image.hpp:45
Exiv2::ExifData::erase
iterator erase(iterator pos)
Delete the Exifdatum at iterator position pos, return the position of the next exifdatum....
Definition: exif.cpp:607
Exiv2::comment
Exiv2 type for the Exif user comment.
Definition: types.hpp:150
Exiv2::Cr2Parser
Stateless parser class for data in CR2 format. Images use this class to decode and encode CR2 data....
Definition: cr2image.hpp:115
Exiv2::strError
EXIV2API std::string strError()
Return a system error message and the error code (errno). See strerror(3).
Definition: futils.cpp:352
Exiv2::Internal::FindExifdatum
Unary predicate that matches an Exifdatum with a given IfdId.
Definition: tiffimage_int.hpp:476
EXV_COUNTOF
#define EXV_COUNTOF(a)
Macro to determine the size of an array.
Definition: types.hpp:517
Exiv2::Image::exifData_
ExifData exifData_
Exif data container.
Definition: image.hpp:488
Exiv2::ExifData::end
iterator end()
End of the metadata.
Definition: exif.hpp:492
Exiv2::Internal::Cr2Header::read
bool read(const byte *pData, uint32_t size)
Read the image header from a data buffer. Return false if the data buffer does not contain an image h...
Definition: cr2header_int.cpp:18
Exiv2::Cr2Image::setComment
void setComment(const std::string &comment)
Not supported. CR2 format does not contain a comment. Calling this function will throw an Error(kerIn...
Definition: cr2image.cpp:84
cr2image.hpp
Class Cr2Image.
Exiv2::Internal::Cr2Header::offset2addr
static uint32_t offset2addr()
Return the address of offset2 from the start of the header.
Definition: cr2header_int.hpp:67
Exiv2::Cr2Image::readMetadata
void readMetadata()
Read all metadata supported by a specific image format from the image. Before this method is called,...
Definition: cr2image.cpp:90
Exiv2::Image::clearMetadata
virtual void clearMetadata()
Erase all buffered metadata. Metadata is not removed from the actual image until the writeMetadata() ...
Definition: image.cpp:541
Exiv2::newCr2Instance
EXIV2API Image::AutoPtr newCr2Instance(BasicIo::AutoPtr io, bool create)
Create a new Cr2Image instance and return an auto-pointer to it. Caller owns the returned object and ...
Definition: cr2image.cpp:203
Exiv2::Internal::TiffMapping::findEncoder
static EncoderFct findEncoder(const std::string &make, uint32_t extendedTag, IfdId group)
Find special encoder function for a key.
Definition: tiffimage_int.cpp:1534
Exiv2::Cr2Image::Cr2Image
Cr2Image(BasicIo::AutoPtr io, bool create)
Constructor that can either open an existing CR2 image or create a new image from scratch....
Definition: cr2image.cpp:49
Exiv2::Internal::TiffMapping::findDecoder
static DecoderFct findDecoder(const std::string &make, uint32_t extendedTag, IfdId group)
Find the decoder function for a key.
Definition: tiffimage_int.cpp:1520
Exiv2::Image::setByteOrder
void setByteOrder(ByteOrder byteOrder)
Set the byte order to encode the Exif metadata in.
Definition: image.cpp:678
Exiv2::Image::byteOrder
ByteOrder byteOrder() const
Return the byte order in which the Exif metadata of the image is encoded. Initially,...
Definition: image.cpp:683
tiffimage_int.hpp
Internal class TiffParserWorker to parse TIFF data.
Exiv2::Image::printTiffStructure
void printTiffStructure(BasicIo &io, std::ostream &out, PrintStructureOption option, int depth, size_t offset=0)
Print out the structure of image file.
Definition: image.cpp:523
Exiv2::ExifKey
Concrete keys for Exif metadata and access to Exif tag reference data.
Definition: tags.hpp:148
Exiv2::Cr2Image
Class to access raw Canon CR2 images. Exif metadata is supported directly, IPTC is read from the Exif...
Definition: cr2image.hpp:52
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::XmpData
A container for XMP data. This is a top-level class of the Exiv2 library.
Definition: xmp_exiv2.hpp:173
Exiv2::Internal::Cr2Header
Canon CR2 header structure.
Definition: cr2header_int.hpp:43
Exiv2::Image::io
virtual BasicIo & io() const
Return a reference to the BasicIo instance being used for Io.
Definition: image.cpp:723
image.hpp
Exiv2::Cr2Image::pixelHeight
int pixelHeight() const
Return the pixel height of the image.
Definition: cr2image.cpp:68
Exiv2::Internal::OffsetWriter
Class to insert pointers or offsets to computed addresses at specific locations in an image....
Definition: tiffimage_int.hpp:426
Exiv2::Internal::TiffParserWorker::encode
static WriteMethod encode(BasicIo &io, const byte *pData, uint32_t size, const ExifData &exifData, const IptcData &iptcData, const XmpData &xmpData, uint32_t root, FindEncoderFct findEncoderFct, TiffHeaderBase *pHeader, OffsetWriter *pOffsetWriter)
Encode TIFF metadata from the metadata containers into a memory block blob.
Definition: tiffimage_int.cpp:1627
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::Cr2Image::mimeType
std::string mimeType() const
Return the MIME type of the image.
Definition: cr2image.cpp:54
Exiv2::Image::AutoPtr
std::auto_ptr< Image > AutoPtr
Image auto_ptr type.
Definition: image.hpp:84
Exiv2::Internal::OffsetWriter::setOrigin
void setOrigin(OffsetId id, uint32_t origin, ByteOrder byteOrder)
Set the origin of the offset for id, i.e., the location in the image where the offset is,...
Definition: tiffimage_int.cpp:2007
Exiv2::Internal::Tag::root
const uint32_t root
Special tag: root IFD.
Definition: tiffcomposite_int.hpp:80
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::IptcData
A container for IPTC data. This is a top-level class of the Exiv2 library.
Definition: iptc.hpp:173
Exiv2::string
IPTC string type.
Definition: types.hpp:147
Exiv2::PrintStructureOption
PrintStructureOption
Options for printStructure.
Definition: image.hpp:67
Exiv2::Cr2Image::pixelWidth
int pixelWidth() const
Return the pixel width of the image.
Definition: cr2image.cpp:59
Exiv2::Cr2Image::printStructure
void printStructure(std::ostream &out, PrintStructureOption option, int depth)
Print out the structure of image file.
Definition: cr2image.cpp:77
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
Exiv2::WriteMethod
WriteMethod
Type to indicate write method used by TIFF parsers.
Definition: types.hpp:116
Exiv2::Internal::TiffHeaderBase::byteOrder
virtual ByteOrder byteOrder() const
Return the byte order (little or big endian).
Definition: tiffimage_int.cpp:1836
futils.hpp
Basic file utility functions required by Exiv2.
Exiv2::Internal::TiffParserWorker::decode
static ByteOrder decode(ExifData &exifData, IptcData &iptcData, XmpData &xmpData, const byte *pData, uint32_t size, uint32_t root, FindDecoderFct findDecoderFct, TiffHeaderBase *pHeader=0)
Decode TIFF metadata from a data buffer pData of length size into the provided metadata containers.
Definition: tiffimage_int.cpp:1597
Exiv2::Cr2Parser::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 CR2 format to the provided metadata c...
Definition: cr2image.cpp:140
error.hpp
Error class for exceptions, log message class.
tiffcomposite_int.hpp
Internal classes used in a TIFF composite structure.
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