27 #ifndef _CIFFCONTAINER_H_
28 #define _CIFFCONTAINER_H_
31 #include <boost/shared_ptr.hpp>
33 #include "rawcontainer.h"
45 STORAGELOC_MASK = 0xc000,
55 TAG_NULLRECORD = 0x0000,
56 TAG_FREEBYTES = 0x0001,
57 TAG_COLORINFO1 = 0x0032,
58 TAG_FILEDESCRIPTION = 0x0805,
59 TAG_RAWMAKEMODEL = 0x080a,
60 TAG_FIRMWAREVERSION = 0x080b,
61 TAG_COMPONENTVERSION = 0x080c,
62 TAG_ROMOPERATIONMODE = 0x080d,
63 TAG_OWNERNAME = 0x0810,
64 TAG_IMAGETYPE = 0x0815,
65 TAG_ORIGINALFILENAME = 0x0816,
66 TAG_THUMBNAILFILENAME = 0x0817,
68 TAG_TARGETIMAGETYPE = 0x100a,
69 TAG_SHUTTERRELEASEMETHOD = 0x1010,
70 TAG_SHUTTERRELEASETIMING = 0x1011,
71 TAG_RELEASESETTING = 0x1016,
73 TAG_FOCALLENGTH = 0x1029,
74 TAG_SHOTINFO = 0x102a,
75 TAG_COLORINFO2 = 0x102c,
76 TAG_CAMERASETTINGS = 0x102d,
77 TAG_SENSORINFO = 0x1031,
78 TAG_CUSTOMFUNCTIONS = 0x1033,
79 TAG_PICTUREINFO = 0x1038,
80 TAG_WHITEBALANCETABLE = 0x10a9,
81 TAG_COLORSPACE = 0x10b4,
83 TAG_IMAGESPEC = 0x1803,
84 TAG_RECORDID = 0x1804,
85 TAG_SELFTIMERTIME = 0x1806,
86 TAG_TARGETDISTANCESETTING = 0x1807,
87 TAG_SERIALNUMBER = 0x180b,
88 TAG_CAPTUREDTIME = 0x180e,
89 TAG_IMAGEINFO = 0x1810,
90 TAG_FLASHINFO = 0x1813,
91 TAG_MEASUREDEV = 0x1814,
92 TAG_FILENUMBER = 0x1817,
93 TAG_EXPOSUREINFO = 0x1818,
94 TAG_DECODERTABLE = 0x1835,
96 TAG_RAWIMAGEDATA = 0x2005,
97 TAG_JPEGIMAGE = 0x2007,
98 TAG_JPEGTHUMBNAIL = 0x2008,
100 TAG_IMAGEDESCRIPTION = 0x2804,
101 TAG_CAMERAOBJECT = 0x2807,
102 TAG_SHOOTINGRECORD = 0x3002,
103 TAG_MEASUREDINFO = 0x3003,
104 TAG_CAMERASPECIFICATION = 0x3004,
105 TAG_IMAGEPROPS = 0x300a,
106 TAG_EXIFINFORMATION = 0x300b
116 : imageWidth(0), imageHeight(0),
117 pixelAspectRatio(0), rotationAngle(0),
118 componentBitDepth(0), colorBitDepth(0),
129 int32_t exifOrientation()
const;
132 uint32_t imageHeight;
133 uint32_t pixelAspectRatio;
134 int32_t rotationAngle;
135 uint32_t componentBitDepth;
136 uint32_t colorBitDepth;
144 typedef std::vector<RecordEntry> List;
164 bool isA(uint16_t _typeCode)
const
166 Debug::Trace(DEBUG2) <<
"typeCode = " << typeCode <<
"\n";
167 return typeCode == (TAGCODE_MASK & _typeCode);
179 typedef boost::shared_ptr<Heap> Ref;
188 RecordEntry::List & records();
207 RecordEntry::List m_records;
217 uint32_t headerLength;
237 CIFF::Heap::Ref heap();
243 CIFF::Heap::Ref getImageProps();
246 const CIFF::Heap::Ref getCameraProps();
257 CIFF::Heap::Ref m_heap;
258 CIFF::Heap::Ref m_imageprops;
261 CIFF::Heap::Ref m_cameraprops;
CIFF is the container for CRW files. It is an attempt from Canon to make this a standard. I guess it failed.
bool readFrom(CIFFContainer *container)
Heap(off_t start, off_t length, CIFFContainer *container)
bool readFrom(off_t offset, CIFFContainer *container)
bool isA(uint16_t _typeCode) const
size_t fetchData(Heap *heap, void *buf, size_t size) const
base virtual class for IO