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