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/workarea/stern/camera_raw/dng_sdk/source/dng_ifd.h#15 $ */ 00010 /* $DateTime: 2008/12/18 14:11:35 $ */ 00011 /* $Change: 528310 $ */ 00012 /* $Author: stern $ */ 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 uint32 fOpcodeList1Count; 00208 uint64 fOpcodeList1Offset; 00209 00210 uint32 fOpcodeList2Count; 00211 uint64 fOpcodeList2Offset; 00212 00213 uint32 fOpcodeList3Count; 00214 uint64 fOpcodeList3Offset; 00215 00216 bool fLosslessJPEGBug16; 00217 00218 uint32 fSampleBitShift; 00219 00220 uint64 fThisIFD; 00221 uint64 fNextIFD; 00222 00223 public: 00224 00225 dng_ifd (); 00226 00227 virtual ~dng_ifd (); 00228 00229 virtual bool ParseTag (dng_stream &stream, 00230 uint32 parentCode, 00231 uint32 tagCode, 00232 uint32 tagType, 00233 uint32 tagCount, 00234 uint64 tagOffset); 00235 00236 virtual void PostParse (); 00237 00238 virtual bool IsValidDNG (dng_shared &shared, 00239 uint32 parentCode); 00240 00241 dng_rect Bounds () const 00242 { 00243 return dng_rect (0, 00244 0, 00245 fImageLength, 00246 fImageWidth); 00247 } 00248 00249 uint32 TilesAcross () const; 00250 00251 uint32 TilesDown () const; 00252 00253 uint32 TilesPerImage () const; 00254 00255 dng_rect TileArea (uint32 rowIndex, 00256 uint32 colIndex) const; 00257 00258 virtual uint32 TileByteCount (const dng_rect &tile) const; 00259 00260 void SetSingleStrip (); 00261 00262 void FindTileSize (uint32 bytesPerTile = 128 * 1024, 00263 uint32 cellH = 16, 00264 uint32 cellV = 16); 00265 00266 void FindStripSize (uint32 bytesPerStrip = 128 * 1024, 00267 uint32 cellV = 16); 00268 00269 virtual uint32 PixelType () const; 00270 00271 virtual bool IsBaselineJPEG () const; 00272 00273 virtual bool CanRead () const; 00274 00275 virtual void ReadImage (dng_host &host, 00276 dng_stream &stream, 00277 dng_image &image) const; 00278 00279 protected: 00280 00281 virtual bool IsValidCFA (dng_shared &shared, 00282 uint32 parentCode); 00283 00284 }; 00285 00286 /*****************************************************************************/ 00287 00288 #endif 00289 00290 /*****************************************************************************/ |