/*****************************************************************************/ // Copyright 2006-2008 Adobe Systems Incorporated // All Rights Reserved. // // NOTICE: Adobe permits you to use, modify, and distribute this file in // accordance with the terms of the Adobe license agreement accompanying it. /*****************************************************************************/ /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_shared.h#1 $ */ /* $DateTime: 2012/05/30 13:28:51 $ */ /* $Change: 832332 $ */ /* $Author: tknoll $ */ /*****************************************************************************/ #ifndef __dng_shared__ #define __dng_shared__ /*****************************************************************************/ #include "dng_classes.h" #include "dng_fingerprint.h" #include "dng_matrix.h" #include "dng_memory.h" #include "dng_negative.h" #include "dng_rational.h" #include "dng_string.h" #include "dng_stream.h" #include "dng_sdk_limits.h" #include "dng_types.h" #include "dng_xy_coord.h" #include <vector> /*****************************************************************************/ class dng_camera_profile_info { public: bool fBigEndian; uint32 fColorPlanes; uint32 fCalibrationIlluminant1; uint32 fCalibrationIlluminant2; dng_matrix fColorMatrix1; dng_matrix fColorMatrix2; dng_matrix fForwardMatrix1; dng_matrix fForwardMatrix2; dng_matrix fReductionMatrix1; dng_matrix fReductionMatrix2; dng_string fProfileCalibrationSignature; dng_string fProfileName; dng_string fProfileCopyright; uint32 fEmbedPolicy; uint32 fProfileHues; uint32 fProfileSats; uint32 fProfileVals; uint64 fHueSatDeltas1Offset; uint32 fHueSatDeltas1Count; uint64 fHueSatDeltas2Offset; uint32 fHueSatDeltas2Count; uint32 fHueSatMapEncoding; uint32 fLookTableHues; uint32 fLookTableSats; uint32 fLookTableVals; uint64 fLookTableOffset; uint32 fLookTableCount; uint32 fLookTableEncoding; dng_srational fBaselineExposureOffset; uint32 fDefaultBlackRender; uint64 fToneCurveOffset; uint32 fToneCurveCount; dng_string fUniqueCameraModel; public: dng_camera_profile_info (); ~dng_camera_profile_info (); bool ParseTag (dng_stream &stream, uint32 parentCode, uint32 tagCode, uint32 tagType, uint32 tagCount, uint64 tagOffset); bool ParseExtended (dng_stream &stream); }; /*****************************************************************************/ class dng_shared { public: uint64 fExifIFD; uint64 fGPSInfo; uint64 fInteroperabilityIFD; uint64 fKodakDCRPrivateIFD; uint64 fKodakKDCPrivateIFD; uint32 fXMPCount; uint64 fXMPOffset; uint32 fIPTC_NAA_Count; uint64 fIPTC_NAA_Offset; uint32 fMakerNoteCount; uint64 fMakerNoteOffset; uint32 fMakerNoteSafety; uint32 fDNGVersion; uint32 fDNGBackwardVersion; dng_string fUniqueCameraModel; dng_string fLocalizedCameraModel; dng_camera_profile_info fCameraProfile; dng_std_vector<dng_camera_profile_info> fExtraCameraProfiles; dng_matrix fCameraCalibration1; dng_matrix fCameraCalibration2; dng_string fCameraCalibrationSignature; dng_vector fAnalogBalance; dng_vector fAsShotNeutral; dng_xy_coord fAsShotWhiteXY; dng_srational fBaselineExposure; dng_urational fBaselineNoise; dng_urational fNoiseReductionApplied; dng_urational fBaselineSharpness; dng_urational fLinearResponseLimit; dng_urational fShadowScale; bool fHasBaselineExposure; bool fHasShadowScale; uint32 fDNGPrivateDataCount; uint64 fDNGPrivateDataOffset; dng_fingerprint fRawImageDigest; dng_fingerprint fNewRawImageDigest; dng_fingerprint fRawDataUniqueID; dng_string fOriginalRawFileName; uint32 fOriginalRawFileDataCount; uint64 fOriginalRawFileDataOffset; dng_fingerprint fOriginalRawFileDigest; uint32 fAsShotICCProfileCount; uint64 fAsShotICCProfileOffset; dng_matrix fAsShotPreProfileMatrix; uint32 fCurrentICCProfileCount; uint64 fCurrentICCProfileOffset; dng_matrix fCurrentPreProfileMatrix; uint32 fColorimetricReference; dng_string fAsShotProfileName; dng_noise_profile fNoiseProfile; dng_point fOriginalDefaultFinalSize; dng_point fOriginalBestQualityFinalSize; dng_urational fOriginalDefaultCropSizeH; dng_urational fOriginalDefaultCropSizeV; public: dng_shared (); virtual ~dng_shared (); virtual bool ParseTag (dng_stream &stream, dng_exif &exif, uint32 parentCode, bool isMainIFD, uint32 tagCode, uint32 tagType, uint32 tagCount, uint64 tagOffset, int64 offsetDelta); virtual void PostParse (dng_host &host, dng_exif &exif); virtual bool IsValidDNG (); protected: virtual bool Parse_ifd0 (dng_stream &stream, dng_exif &exif, uint32 parentCode, uint32 tagCode, uint32 tagType, uint32 tagCount, uint64 tagOffset); virtual bool Parse_ifd0_exif (dng_stream &stream, dng_exif &exif, uint32 parentCode, uint32 tagCode, uint32 tagType, uint32 tagCount, uint64 tagOffset); }; /*****************************************************************************/ #endif /*****************************************************************************/