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_2/dng_sdk/source/dng_shared.h#2 $ */ 10 /* $DateTime: 2008/04/02 14:06:57 $ */ 11 /* $Change: 440485 $ */ 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_rational.h" 25 #include "dng_string.h" 26 #include "dng_stream.h" 27 #include "dng_sdk_limits.h" 28 #include "dng_types.h" 29 #include "dng_xy_coord.h" 30 31 #include <vector> 32 33 /*****************************************************************************/ 34 35 class dng_camera_profile_info 36 { 37 38 public: 39 40 bool fBigEndian; 41 42 uint32 fColorPlanes; 43 44 uint32 fCalibrationIlluminant1; 45 uint32 fCalibrationIlluminant2; 46 47 dng_matrix fColorMatrix1; 48 dng_matrix fColorMatrix2; 49 50 dng_matrix fForwardMatrix1; 51 dng_matrix fForwardMatrix2; 52 53 dng_matrix fReductionMatrix1; 54 dng_matrix fReductionMatrix2; 55 56 dng_string fProfileCalibrationSignature; 57 58 dng_string fProfileName; 59 60 dng_string fProfileCopyright; 61 62 uint32 fEmbedPolicy; 63 64 uint32 fProfileHues; 65 uint32 fProfileSats; 66 uint32 fProfileVals; 67 68 uint64 fHueSatDeltas1Offset; 69 uint32 fHueSatDeltas1Count; 70 71 uint64 fHueSatDeltas2Offset; 72 uint32 fHueSatDeltas2Count; 73 74 uint32 fLookTableHues; 75 uint32 fLookTableSats; 76 uint32 fLookTableVals; 77 78 uint64 fLookTableOffset; 79 uint32 fLookTableCount; 80 81 uint64 fToneCurveOffset; 82 uint32 fToneCurveCount; 83 84 dng_string fUniqueCameraModel; 85 86 public: 87 88 dng_camera_profile_info (); 89 90 ~dng_camera_profile_info (); 91 92 bool ParseTag (dng_stream &stream, 93 uint32 parentCode, 94 uint32 tagCode, 95 uint32 tagType, 96 uint32 tagCount, 97 uint64 tagOffset); 98 99 bool ParseExtended (dng_stream &stream); 100 101 }; 102 103 /*****************************************************************************/ 104 105 class dng_shared 106 { 107 108 public: 109 110 uint64 fExifIFD; 111 uint64 fGPSInfo; 112 uint64 fInteroperabilityIFD; 113 uint64 fKodakDCRPrivateIFD; 114 uint64 fKodakKDCPrivateIFD; 115 116 uint32 fXMPCount; 117 uint64 fXMPOffset; 118 119 uint32 fIPTC_NAA_Count; 120 uint64 fIPTC_NAA_Offset; 121 122 uint32 fMakerNoteCount; 123 uint64 fMakerNoteOffset; 124 uint32 fMakerNoteSafety; 125 126 uint32 fDNGVersion; 127 uint32 fDNGBackwardVersion; 128 129 dng_string fUniqueCameraModel; 130 dng_string fLocalizedCameraModel; 131 132 dng_camera_profile_info fCameraProfile; 133 134 std::vector<dng_camera_profile_info> fExtraCameraProfiles; 135 136 dng_matrix fCameraCalibration1; 137 dng_matrix fCameraCalibration2; 138 139 dng_string fCameraCalibrationSignature; 140 141 dng_vector fAnalogBalance; 142 143 dng_vector fAsShotNeutral; 144 145 dng_xy_coord fAsShotWhiteXY; 146 147 dng_srational fBaselineExposure; 148 dng_urational fBaselineNoise; 149 dng_urational fNoiseReductionApplied; 150 dng_urational fBaselineSharpness; 151 dng_urational fLinearResponseLimit; 152 dng_urational fShadowScale; 153 154 uint32 fDNGPrivateDataCount; 155 uint64 fDNGPrivateDataOffset; 156 157 dng_fingerprint fRawImageDigest; 158 159 dng_fingerprint fRawDataUniqueID; 160 161 dng_string fOriginalRawFileName; 162 163 uint32 fOriginalRawFileDataCount; 164 uint64 fOriginalRawFileDataOffset; 165 166 dng_fingerprint fOriginalRawFileDigest; 167 168 uint32 fAsShotICCProfileCount; 169 uint64 fAsShotICCProfileOffset; 170 171 dng_matrix fAsShotPreProfileMatrix; 172 173 uint32 fCurrentICCProfileCount; 174 uint64 fCurrentICCProfileOffset; 175 176 dng_matrix fCurrentPreProfileMatrix; 177 178 uint32 fColorimetricReference; 179 180 dng_string fAsShotProfileName; 181 182 public: 183 184 dng_shared (); 185 186 virtual ~dng_shared (); 187 188 virtual bool ParseTag (dng_stream &stream, 189 dng_exif &exif, 190 uint32 parentCode, 191 bool isMainIFD, 192 uint32 tagCode, 193 uint32 tagType, 194 uint32 tagCount, 195 uint64 tagOffset, 196 int64 offsetDelta); 197 198 virtual void PostParse (dng_host &host, 199 dng_exif &exif); 200 201 virtual bool IsValidDNG (); 202 203 protected: 204 205 virtual bool Parse_ifd0 (dng_stream &stream, 206 dng_exif &exif, 207 uint32 parentCode, 208 uint32 tagCode, 209 uint32 tagType, 210 uint32 tagCount, 211 uint64 tagOffset); 212 213 virtual bool Parse_ifd0_exif (dng_stream &stream, 214 dng_exif &exif, 215 uint32 parentCode, 216 uint32 tagCode, 217 uint32 tagType, 218 uint32 tagCount, 219 uint64 tagOffset); 220 221 }; 222 223 /*****************************************************************************/ 224 225 #endif 226 227 /*****************************************************************************/ 228