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 | |
37 | class 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 | |
115 | class 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> ; |
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 | |