You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
306 lines
6.4 KiB
306 lines
6.4 KiB
/*****************************************************************************/
|
|
// 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
|
|
|
|
/*****************************************************************************/
|