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> 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