1/*****************************************************************************/
2// Copyright 2006-2008 Adobe Systems Incorporated
3// All Rights Reserved.
4//
5// NOTICE: Adobe permits you to use, modify, and distribute this file in
6// accordance with the terms of the Adobe license agreement accompanying it.
7/*****************************************************************************/
8
9/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_shared.h#1 $ */
10/* $DateTime: 2012/05/30 13:28:51 $ */
11/* $Change: 832332 $ */
12/* $Author: tknoll $ */
13
14/*****************************************************************************/
15
16#ifndef __dng_shared__
17#define __dng_shared__
18
19/*****************************************************************************/
20
21#include "dng_classes.h"
22#include "dng_fingerprint.h"
23#include "dng_matrix.h"
24#include "dng_memory.h"
25#include "dng_negative.h"
26#include "dng_rational.h"
27#include "dng_string.h"
28#include "dng_stream.h"
29#include "dng_sdk_limits.h"
30#include "dng_types.h"
31#include "dng_xy_coord.h"
32
33#include <vector>
34
35/*****************************************************************************/
36
37class dng_camera_profile_info
38 {
39
40 public:
41
42 bool fBigEndian;
43
44 uint32 fColorPlanes;
45
46 uint32 fCalibrationIlluminant1;
47 uint32 fCalibrationIlluminant2;
48
49 dng_matrix fColorMatrix1;
50 dng_matrix fColorMatrix2;
51
52 dng_matrix fForwardMatrix1;
53 dng_matrix fForwardMatrix2;
54
55 dng_matrix fReductionMatrix1;
56 dng_matrix fReductionMatrix2;
57
58 dng_string fProfileCalibrationSignature;
59
60 dng_string fProfileName;
61
62 dng_string fProfileCopyright;
63
64 uint32 fEmbedPolicy;
65
66 uint32 fProfileHues;
67 uint32 fProfileSats;
68 uint32 fProfileVals;
69
70 uint64 fHueSatDeltas1Offset;
71 uint32 fHueSatDeltas1Count;
72
73 uint64 fHueSatDeltas2Offset;
74 uint32 fHueSatDeltas2Count;
75
76 uint32 fHueSatMapEncoding;
77
78 uint32 fLookTableHues;
79 uint32 fLookTableSats;
80 uint32 fLookTableVals;
81
82 uint64 fLookTableOffset;
83 uint32 fLookTableCount;
84
85 uint32 fLookTableEncoding;
86
87 dng_srational fBaselineExposureOffset;
88
89 uint32 fDefaultBlackRender;
90
91 uint64 fToneCurveOffset;
92 uint32 fToneCurveCount;
93
94 dng_string fUniqueCameraModel;
95
96 public:
97
98 dng_camera_profile_info ();
99
100 ~dng_camera_profile_info ();
101
102 bool ParseTag (dng_stream &stream,
103 uint32 parentCode,
104 uint32 tagCode,
105 uint32 tagType,
106 uint32 tagCount,
107 uint64 tagOffset);
108
109 bool ParseExtended (dng_stream &stream);
110
111 };
112
113/*****************************************************************************/
114
115class dng_shared
116 {
117
118 public:
119
120 uint64 fExifIFD;
121 uint64 fGPSInfo;
122 uint64 fInteroperabilityIFD;
123 uint64 fKodakDCRPrivateIFD;
124 uint64 fKodakKDCPrivateIFD;
125
126 uint32 fXMPCount;
127 uint64 fXMPOffset;
128
129 uint32 fIPTC_NAA_Count;
130 uint64 fIPTC_NAA_Offset;
131
132 uint32 fMakerNoteCount;
133 uint64 fMakerNoteOffset;
134 uint32 fMakerNoteSafety;
135
136 uint32 fDNGVersion;
137 uint32 fDNGBackwardVersion;
138
139 dng_string fUniqueCameraModel;
140 dng_string fLocalizedCameraModel;
141
142 dng_camera_profile_info fCameraProfile;
143
144 dng_std_vector<dng_camera_profile_info> fExtraCameraProfiles;
145
146 dng_matrix fCameraCalibration1;
147 dng_matrix fCameraCalibration2;
148
149 dng_string fCameraCalibrationSignature;
150
151 dng_vector fAnalogBalance;
152
153 dng_vector fAsShotNeutral;
154
155 dng_xy_coord fAsShotWhiteXY;
156
157 dng_srational fBaselineExposure;
158 dng_urational fBaselineNoise;
159 dng_urational fNoiseReductionApplied;
160 dng_urational fBaselineSharpness;
161 dng_urational fLinearResponseLimit;
162 dng_urational fShadowScale;
163
164 bool fHasBaselineExposure;
165 bool fHasShadowScale;
166
167 uint32 fDNGPrivateDataCount;
168 uint64 fDNGPrivateDataOffset;
169
170 dng_fingerprint fRawImageDigest;
171 dng_fingerprint fNewRawImageDigest;
172
173 dng_fingerprint fRawDataUniqueID;
174
175 dng_string fOriginalRawFileName;
176
177 uint32 fOriginalRawFileDataCount;
178 uint64 fOriginalRawFileDataOffset;
179
180 dng_fingerprint fOriginalRawFileDigest;
181
182 uint32 fAsShotICCProfileCount;
183 uint64 fAsShotICCProfileOffset;
184
185 dng_matrix fAsShotPreProfileMatrix;
186
187 uint32 fCurrentICCProfileCount;
188 uint64 fCurrentICCProfileOffset;
189
190 dng_matrix fCurrentPreProfileMatrix;
191
192 uint32 fColorimetricReference;
193
194 dng_string fAsShotProfileName;
195
196 dng_noise_profile fNoiseProfile;
197
198 dng_point fOriginalDefaultFinalSize;
199 dng_point fOriginalBestQualityFinalSize;
200
201 dng_urational fOriginalDefaultCropSizeH;
202 dng_urational fOriginalDefaultCropSizeV;
203
204 public:
205
206 dng_shared ();
207
208 virtual ~dng_shared ();
209
210 virtual bool ParseTag (dng_stream &stream,
211 dng_exif &exif,
212 uint32 parentCode,
213 bool isMainIFD,
214 uint32 tagCode,
215 uint32 tagType,
216 uint32 tagCount,
217 uint64 tagOffset,
218 int64 offsetDelta);
219
220 virtual void PostParse (dng_host &host,
221 dng_exif &exif);
222
223 virtual bool IsValidDNG ();
224
225 protected:
226
227 virtual bool Parse_ifd0 (dng_stream &stream,
228 dng_exif &exif,
229 uint32 parentCode,
230 uint32 tagCode,
231 uint32 tagType,
232 uint32 tagCount,
233 uint64 tagOffset);
234
235 virtual bool Parse_ifd0_exif (dng_stream &stream,
236 dng_exif &exif,
237 uint32 parentCode,
238 uint32 tagCode,
239 uint32 tagType,
240 uint32 tagCount,
241 uint64 tagOffset);
242
243 };
244
245/*****************************************************************************/
246
247#endif
248
249/*****************************************************************************/
250