| /*****************************************************************************/ |
| // Copyright 2006-2012 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_ifd.h#3 $ */ |
| /* $DateTime: 2012/06/05 11:05:39 $ */ |
| /* $Change: 833352 $ */ |
| /* $Author: tknoll $ */ |
| |
| /** \file |
| * DNG image file directory support. |
| */ |
| |
| /*****************************************************************************/ |
| |
| #ifndef __dng_ifd__ |
| #define __dng_ifd__ |
| |
| /*****************************************************************************/ |
| |
| #include "dng_fingerprint.h" |
| #include "dng_rect.h" |
| #include "dng_shared.h" |
| #include "dng_stream.h" |
| #include "dng_string.h" |
| #include "dng_sdk_limits.h" |
| #include "dng_tag_values.h" |
| |
| /*****************************************************************************/ |
| |
| class dng_preview_info |
| { |
| |
| public: |
| |
| bool fIsPrimary; |
| |
| dng_string fApplicationName; |
| |
| dng_string fApplicationVersion; |
| |
| dng_string fSettingsName; |
| |
| dng_fingerprint fSettingsDigest; |
| |
| PreviewColorSpaceEnum fColorSpace; |
| |
| dng_string fDateTime; |
| |
| real64 fRawToPreviewGain; |
| |
| uint32 fCacheVersion; |
| |
| public: |
| |
| dng_preview_info (); |
| |
| ~dng_preview_info (); |
| |
| }; |
| |
| /*****************************************************************************/ |
| |
| /// \brief Container for a single image file directory of a digital negative. |
| /// |
| /// See \ref spec_dng "DNG 1.1.0 specification" for documentation of specific tags. |
| |
| class dng_ifd |
| { |
| |
| public: |
| |
| bool fUsesNewSubFileType; |
| |
| uint32 fNewSubFileType; |
| |
| uint32 fImageWidth; |
| uint32 fImageLength; |
| |
| uint32 fBitsPerSample [kMaxSamplesPerPixel]; |
| |
| uint32 fCompression; |
| |
| uint32 fPredictor; |
| |
| uint32 fPhotometricInterpretation; |
| |
| uint32 fFillOrder; |
| |
| uint32 fOrientation; |
| uint32 fOrientationType; |
| uint64 fOrientationOffset; |
| bool fOrientationBigEndian; |
| |
| uint32 fSamplesPerPixel; |
| |
| uint32 fPlanarConfiguration; |
| |
| real64 fXResolution; |
| real64 fYResolution; |
| |
| uint32 fResolutionUnit; |
| |
| bool fUsesStrips; |
| bool fUsesTiles; |
| |
| uint32 fTileWidth; |
| uint32 fTileLength; |
| |
| enum |
| { |
| kMaxTileInfo = 32 |
| }; |
| |
| uint32 fTileOffsetsType; |
| uint32 fTileOffsetsCount; |
| uint64 fTileOffsetsOffset; |
| uint64 fTileOffset [kMaxTileInfo]; |
| |
| uint32 fTileByteCountsType; |
| uint32 fTileByteCountsCount; |
| uint64 fTileByteCountsOffset; |
| uint32 fTileByteCount [kMaxTileInfo]; |
| |
| uint32 fSubIFDsCount; |
| uint64 fSubIFDsOffset; |
| |
| uint32 fExtraSamplesCount; |
| uint32 fExtraSamples [kMaxSamplesPerPixel]; |
| |
| uint32 fSampleFormat [kMaxSamplesPerPixel]; |
| |
| uint32 fJPEGTablesCount; |
| uint64 fJPEGTablesOffset; |
| |
| uint64 fJPEGInterchangeFormat; |
| uint32 fJPEGInterchangeFormatLength; |
| |
| real64 fYCbCrCoefficientR; |
| real64 fYCbCrCoefficientG; |
| real64 fYCbCrCoefficientB; |
| |
| uint32 fYCbCrSubSampleH; |
| uint32 fYCbCrSubSampleV; |
| |
| uint32 fYCbCrPositioning; |
| |
| real64 fReferenceBlackWhite [6]; |
| |
| uint32 fCFARepeatPatternRows; |
| uint32 fCFARepeatPatternCols; |
| |
| uint8 fCFAPattern [kMaxCFAPattern] [kMaxCFAPattern]; |
| |
| uint8 fCFAPlaneColor [kMaxColorPlanes]; |
| |
| uint32 fCFALayout; |
| |
| uint32 fLinearizationTableType; |
| uint32 fLinearizationTableCount; |
| uint64 fLinearizationTableOffset; |
| |
| uint32 fBlackLevelRepeatRows; |
| uint32 fBlackLevelRepeatCols; |
| |
| real64 fBlackLevel [kMaxBlackPattern] [kMaxBlackPattern] [kMaxSamplesPerPixel]; |
| |
| uint32 fBlackLevelDeltaHType; |
| uint32 fBlackLevelDeltaHCount; |
| uint64 fBlackLevelDeltaHOffset; |
| |
| uint32 fBlackLevelDeltaVType; |
| uint32 fBlackLevelDeltaVCount; |
| uint64 fBlackLevelDeltaVOffset; |
| |
| real64 fWhiteLevel [kMaxSamplesPerPixel]; |
| |
| dng_urational fDefaultScaleH; |
| dng_urational fDefaultScaleV; |
| |
| dng_urational fBestQualityScale; |
| |
| dng_urational fDefaultCropOriginH; |
| dng_urational fDefaultCropOriginV; |
| |
| dng_urational fDefaultCropSizeH; |
| dng_urational fDefaultCropSizeV; |
| |
| dng_urational fDefaultUserCropT; |
| dng_urational fDefaultUserCropL; |
| dng_urational fDefaultUserCropB; |
| dng_urational fDefaultUserCropR; |
| |
| uint32 fBayerGreenSplit; |
| |
| dng_urational fChromaBlurRadius; |
| |
| dng_urational fAntiAliasStrength; |
| |
| dng_rect fActiveArea; |
| |
| uint32 fMaskedAreaCount; |
| dng_rect fMaskedArea [kMaxMaskedAreas]; |
| |
| uint32 fRowInterleaveFactor; |
| |
| uint32 fSubTileBlockRows; |
| uint32 fSubTileBlockCols; |
| |
| dng_preview_info fPreviewInfo; |
| |
| uint32 fOpcodeList1Count; |
| uint64 fOpcodeList1Offset; |
| |
| uint32 fOpcodeList2Count; |
| uint64 fOpcodeList2Offset; |
| |
| uint32 fOpcodeList3Count; |
| uint64 fOpcodeList3Offset; |
| |
| bool fLosslessJPEGBug16; |
| |
| uint32 fSampleBitShift; |
| |
| uint64 fThisIFD; |
| uint64 fNextIFD; |
| |
| int32 fCompressionQuality; |
| |
| bool fPatchFirstJPEGByte; |
| |
| public: |
| |
| dng_ifd (); |
| |
| virtual ~dng_ifd (); |
| |
| virtual bool ParseTag (dng_stream &stream, |
| uint32 parentCode, |
| uint32 tagCode, |
| uint32 tagType, |
| uint32 tagCount, |
| uint64 tagOffset); |
| |
| virtual void PostParse (); |
| |
| virtual bool IsValidDNG (dng_shared &shared, |
| uint32 parentCode); |
| |
| dng_rect Bounds () const |
| { |
| return dng_rect (0, |
| 0, |
| fImageLength, |
| fImageWidth); |
| } |
| |
| uint32 TilesAcross () const; |
| |
| uint32 TilesDown () const; |
| |
| uint32 TilesPerImage () const; |
| |
| dng_rect TileArea (uint32 rowIndex, |
| uint32 colIndex) const; |
| |
| virtual uint32 TileByteCount (const dng_rect &tile) const; |
| |
| void SetSingleStrip (); |
| |
| void FindTileSize (uint32 bytesPerTile = 128 * 1024, |
| uint32 cellH = 16, |
| uint32 cellV = 16); |
| |
| void FindStripSize (uint32 bytesPerStrip = 128 * 1024, |
| uint32 cellV = 16); |
| |
| virtual uint32 PixelType () const; |
| |
| virtual bool IsBaselineJPEG () const; |
| |
| virtual bool CanRead () const; |
| |
| virtual void ReadImage (dng_host &host, |
| dng_stream &stream, |
| dng_image &image, |
| dng_jpeg_image *jpegImage = NULL, |
| dng_fingerprint *jpegDigest = NULL) const; |
| |
| protected: |
| |
| virtual bool IsValidCFA (dng_shared &shared, |
| uint32 parentCode); |
| |
| }; |
| |
| /*****************************************************************************/ |
| |
| #endif |
| |
| /*****************************************************************************/ |