DocumentationOverviewBuilding ASL Documentation Library Wiki Docs Indices Browse Perforce More InfoRelease NotesWiki Site Search License Success Stories Contributors MediaDownloadPerforce Depots SupportASL SourceForge HomeMailing Lists Discussion Forums Report Bugs Suggest Features Contribute to ASL RSSShort-text newsFull-text news File releases Other Adobe ProjectsAdobe AirAdobe GIL Adobe Labs Adobe Media Gallery Adobe XMP Tamarin project (Mozilla Foundation) Other ResourcesBoostRIAForge SGI STL |
dng_ifd.hGo to the documentation of this file.00001 /*****************************************************************************/ 00002 // Copyright 2006-2008 Adobe Systems Incorporated 00003 // All Rights Reserved. 00004 // 00005 // NOTICE: Adobe permits you to use, modify, and distribute this file in 00006 // accordance with the terms of the Adobe license agreement accompanying it. 00007 /*****************************************************************************/ 00008 00009 /* $Id: //mondo/dng_sdk_1_2/dng_sdk/source/dng_ifd.h#1 $ */ 00010 /* $DateTime: 2008/03/09 14:29:54 $ */ 00011 /* $Change: 431850 $ */ 00012 /* $Author: tknoll $ */ 00013 00018 /*****************************************************************************/ 00019 00020 #ifndef __dng_ifd__ 00021 #define __dng_ifd__ 00022 00023 /*****************************************************************************/ 00024 00025 #include "dng_fingerprint.h" 00026 #include "dng_rect.h" 00027 #include "dng_shared.h" 00028 #include "dng_stream.h" 00029 #include "dng_string.h" 00030 #include "dng_sdk_limits.h" 00031 #include "dng_tag_values.h" 00032 00033 /*****************************************************************************/ 00034 00035 class dng_preview_info 00036 { 00037 00038 public: 00039 00040 bool fIsPrimary; 00041 00042 dng_string fApplicationName; 00043 00044 dng_string fApplicationVersion; 00045 00046 dng_string fSettingsName; 00047 00048 dng_fingerprint fSettingsDigest; 00049 00050 PreviewColorSpaceEnum fColorSpace; 00051 00052 dng_string fDateTime; 00053 00054 public: 00055 00056 dng_preview_info (); 00057 00058 ~dng_preview_info (); 00059 00060 }; 00061 00062 /*****************************************************************************/ 00063 00067 00068 class dng_ifd 00069 { 00070 00071 public: 00072 00073 bool fUsesNewSubFileType; 00074 00075 uint32 fNewSubFileType; 00076 00077 uint32 fImageWidth; 00078 uint32 fImageLength; 00079 00080 uint32 fBitsPerSample [kMaxSamplesPerPixel]; 00081 00082 uint32 fCompression; 00083 00084 uint32 fPredictor; 00085 00086 uint32 fPhotometricInterpretation; 00087 00088 uint32 fFillOrder; 00089 00090 uint32 fOrientation; 00091 uint32 fOrientationType; 00092 uint64 fOrientationOffset; 00093 bool fOrientationBigEndian; 00094 00095 uint32 fSamplesPerPixel; 00096 00097 uint32 fPlanarConfiguration; 00098 00099 real64 fXResolution; 00100 real64 fYResolution; 00101 00102 uint32 fResolutionUnit; 00103 00104 bool fUsesStrips; 00105 bool fUsesTiles; 00106 00107 uint32 fTileWidth; 00108 uint32 fTileLength; 00109 00110 enum 00111 { 00112 kMaxTileInfo = 32 00113 }; 00114 00115 uint32 fTileOffsetsType; 00116 uint32 fTileOffsetsCount; 00117 uint64 fTileOffsetsOffset; 00118 uint64 fTileOffset [kMaxTileInfo]; 00119 00120 uint32 fTileByteCountsType; 00121 uint32 fTileByteCountsCount; 00122 uint64 fTileByteCountsOffset; 00123 uint32 fTileByteCount [kMaxTileInfo]; 00124 00125 uint32 fSubIFDsCount; 00126 uint64 fSubIFDsOffset; 00127 00128 uint32 fExtraSamplesCount; 00129 uint32 fExtraSamples [kMaxSamplesPerPixel]; 00130 00131 uint32 fSampleFormat [kMaxSamplesPerPixel]; 00132 00133 uint32 fJPEGTablesCount; 00134 uint64 fJPEGTablesOffset; 00135 00136 uint64 fJPEGInterchangeFormat; 00137 uint32 fJPEGInterchangeFormatLength; 00138 00139 real64 fYCbCrCoefficientR; 00140 real64 fYCbCrCoefficientG; 00141 real64 fYCbCrCoefficientB; 00142 00143 uint32 fYCbCrSubSampleH; 00144 uint32 fYCbCrSubSampleV; 00145 00146 uint32 fYCbCrPositioning; 00147 00148 real64 fReferenceBlackWhite [6]; 00149 00150 uint32 fCFARepeatPatternRows; 00151 uint32 fCFARepeatPatternCols; 00152 00153 uint8 fCFAPattern [kMaxCFAPattern] [kMaxCFAPattern]; 00154 00155 uint8 fCFAPlaneColor [kMaxColorPlanes]; 00156 00157 uint32 fCFALayout; 00158 00159 uint32 fLinearizationTableType; 00160 uint32 fLinearizationTableCount; 00161 uint64 fLinearizationTableOffset; 00162 00163 uint32 fBlackLevelRepeatRows; 00164 uint32 fBlackLevelRepeatCols; 00165 00166 real64 fBlackLevel [kMaxBlackPattern] [kMaxBlackPattern] [kMaxSamplesPerPixel]; 00167 00168 uint32 fBlackLevelDeltaHType; 00169 uint32 fBlackLevelDeltaHCount; 00170 uint64 fBlackLevelDeltaHOffset; 00171 00172 uint32 fBlackLevelDeltaVType; 00173 uint32 fBlackLevelDeltaVCount; 00174 uint64 fBlackLevelDeltaVOffset; 00175 00176 real64 fWhiteLevel [kMaxSamplesPerPixel]; 00177 00178 dng_urational fDefaultScaleH; 00179 dng_urational fDefaultScaleV; 00180 00181 dng_urational fBestQualityScale; 00182 00183 dng_urational fDefaultCropOriginH; 00184 dng_urational fDefaultCropOriginV; 00185 00186 dng_urational fDefaultCropSizeH; 00187 dng_urational fDefaultCropSizeV; 00188 00189 uint32 fBayerGreenSplit; 00190 00191 dng_urational fChromaBlurRadius; 00192 00193 dng_urational fAntiAliasStrength; 00194 00195 dng_rect fActiveArea; 00196 00197 uint32 fMaskedAreaCount; 00198 dng_rect fMaskedArea [kMaxMaskedAreas]; 00199 00200 uint32 fRowInterleaveFactor; 00201 00202 uint32 fSubTileBlockRows; 00203 uint32 fSubTileBlockCols; 00204 00205 dng_preview_info fPreviewInfo; 00206 00207 bool fLosslessJPEGBug16; 00208 00209 uint32 fSampleBitShift; 00210 00211 uint64 fThisIFD; 00212 uint64 fNextIFD; 00213 00214 public: 00215 00216 dng_ifd (); 00217 00218 virtual ~dng_ifd (); 00219 00220 virtual bool ParseTag (dng_stream &stream, 00221 uint32 parentCode, 00222 uint32 tagCode, 00223 uint32 tagType, 00224 uint32 tagCount, 00225 uint64 tagOffset); 00226 00227 virtual void PostParse (); 00228 00229 virtual bool IsValidDNG (dng_shared &shared, 00230 uint32 parentCode); 00231 00232 dng_rect Bounds () const 00233 { 00234 return dng_rect (0, 00235 0, 00236 fImageLength, 00237 fImageWidth); 00238 } 00239 00240 uint32 TilesAcross () const; 00241 00242 uint32 TilesDown () const; 00243 00244 uint32 TilesPerImage () const; 00245 00246 dng_rect TileArea (uint32 rowIndex, 00247 uint32 colIndex) const; 00248 00249 virtual uint32 TileByteCount (const dng_rect &tile) const; 00250 00251 void SetSingleStrip (); 00252 00253 void FindTileSize (uint32 bytesPerTile = 128 * 1024, 00254 uint32 cellH = 16, 00255 uint32 cellV = 16); 00256 00257 void FindStripSize (uint32 bytesPerStrip = 128 * 1024, 00258 uint32 cellV = 16); 00259 00260 virtual uint32 PixelType () const; 00261 00262 virtual bool IsBaselineJPEG () const; 00263 00264 virtual bool CanRead () const; 00265 00266 virtual void ReadImage (dng_host &host, 00267 dng_stream &stream, 00268 dng_image &image) const; 00269 00270 protected: 00271 00272 virtual bool IsValidCFA (dng_shared &shared, 00273 uint32 parentCode); 00274 00275 }; 00276 00277 /*****************************************************************************/ 00278 00279 #endif 00280 00281 /*****************************************************************************/ | |||
