Exiv2
crwimage.hpp
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 
12 #ifndef CRWIMAGE_HPP_
13 #define CRWIMAGE_HPP_
14 
15 // *****************************************************************************
16 #include "exiv2lib_export.h"
17 
18 // included header files
19 #include "image.hpp"
20 
21 // *****************************************************************************
22 // namespace extensions
23 namespace Exiv2 {
24 // *****************************************************************************
25 // class declarations
26 class ExifData;
27 class IptcData;
28 
29 // *****************************************************************************
30 // class definitions
31 
36 class EXIV2API CrwImage : public Image {
37  public:
39 
40 
55  CrwImage(BasicIo::UniquePtr io, bool create);
57 
59 
60  void readMetadata() override;
61  void writeMetadata() override;
66  void setIptcData(const IptcData& iptcData) override;
68 
70 
71  [[nodiscard]] std::string mimeType() const override;
72  [[nodiscard]] uint32_t pixelWidth() const override;
73  [[nodiscard]] uint32_t pixelHeight() const override;
75 }; // class CrwImage
76 
80 class EXIV2API CrwParser {
81  public:
97  static void decode(CrwImage* pCrwImage, const byte* pData, size_t size);
112  static void encode(Blob& blob, const byte* pData, size_t size, const CrwImage* pCrwImage);
113 
114 }; // class CrwParser
115 
116 // *****************************************************************************
117 // template, inline and free functions
118 
119 // These could be static private functions on Image subclasses but then
120 // ImageFactory needs to be made a friend.
126 EXIV2API Image::UniquePtr newCrwInstance(BasicIo::UniquePtr io, bool create);
127 
129 EXIV2API bool isCrwType(BasicIo& iIo, bool advance);
130 
131 } // namespace Exiv2
132 
133 #endif // #ifndef CRWIMAGE_HPP_
std::unique_ptr< Image > UniquePtr
Image auto_ptr type.
Definition: image.hpp:53
An interface for simple binary IO.
Definition: basicio.hpp:35
EXIV2API bool isCrwType(BasicIo &iIo, bool advance)
Check if the file iIo is a CRW image.
Definition: crwimage.cpp:139
EXIV2API Image::UniquePtr newCrwInstance(BasicIo::UniquePtr io, bool create)
Create a new CrwImage instance and return an auto-pointer to it. Caller owns the returned object and ...
Definition: crwimage.cpp:131
uint8_t byte
1 byte unsigned integer type.
Definition: types.hpp:26
Abstract base class defining the interface for an image. This is the top-level interface to the Exiv2...
Definition: image.hpp:50
A container for IPTC data. This is a top-level class of the Exiv2 library.
Definition: iptc.hpp:153
List of TIFF compression to MIME type mappings.
Definition: tiffimage.cpp:47
Class to access raw Canon CRW images. Only Exif metadata and a comment are supported. CRW format does not contain IPTC metadata.
Definition: crwimage.hpp:36
Definition: crwimage.hpp:80
std::unique_ptr< BasicIo > UniquePtr
BasicIo auto_ptr type.
Definition: basicio.hpp:38
Class CrwImage to access Canon CRW images. References: The Canon RAW (CRW) File Format by Phil Harv...
Definition: asfvideo.hpp:15
std::vector< byte > Blob
Container for binary data.
Definition: types.hpp:102