/*****************************************************************************/
// Copyright 2006-2007 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_parse_utils.h#1 $ */
/* $DateTime: 2012/05/30 13:28:51 $ */
/* $Change: 832332 $ */
/* $Author: tknoll $ */
/*****************************************************************************/
#ifndef __dng_parse_utils__
#define __dng_parse_utils__
/*****************************************************************************/
#include "dng_classes.h"
#include "dng_flags.h"
#include "dng_types.h"
#include "dng_stream.h"
#include "dng_string.h"
#include "dng_matrix.h"
/*****************************************************************************/
#if qDNGValidate
/*****************************************************************************/
const char * LookupParentCode (uint32 parentCode);
/*****************************************************************************/
const char * LookupTagCode (uint32 parentCode,
uint32 tagCode);
/*****************************************************************************/
const char * LookupTagType (uint32 tagType);
/*****************************************************************************/
const char * LookupNewSubFileType (uint32 key);
const char * LookupCompression (uint32 key);
const char * LookupPredictor (uint32 key);
const char * LookupSampleFormat (uint32 key);
const char * LookupPhotometricInterpretation (uint32 key);
const char * LookupOrientation (uint32 key);
const char * LookupResolutionUnit (uint32 key);
const char * LookupCFAColor (uint32 key);
const char * LookupSensingMethod (uint32 key);
const char * LookupExposureProgram (uint32 key);
const char * LookupMeteringMode (uint32 key);
const char * LookupLightSource (uint32 key);
const char * LookupColorSpace (uint32 key);
const char * LookupFileSource (uint32 key);
const char * LookupSceneType (uint32 key);
const char * LookupCustomRendered (uint32 key);
const char * LookupExposureMode (uint32 key);
const char * LookupWhiteBalance (uint32 key);
const char * LookupSceneCaptureType (uint32 key);
const char * LookupGainControl (uint32 key);
const char * LookupContrast (uint32 key);
const char * LookupSaturation (uint32 key);
const char * LookupSharpness (uint32 key);
const char * LookupSubjectDistanceRange (uint32 key);
const char * LookupComponent (uint32 key);
const char * LookupCFALayout (uint32 key);
const char * LookupMakerNoteSafety (uint32 key);
const char * LookupColorimetricReference (uint32 key);
const char * LookupPreviewColorSpace (uint32 key);
const char * LookupJPEGMarker (uint32 key);
const char * LookupSensitivityType (uint32 key);
/*****************************************************************************/
void DumpHexAscii (dng_stream &stream,
uint32 count);
void DumpHexAscii (const uint8 *buf,
uint32 count);
void DumpXMP (dng_stream &stream,
uint32 count);
void DumpString (const dng_string &s);
void DumpTagValues (dng_stream &stream,
const char *entry_name,
uint32 parentCode,
uint32 tagCode,
uint32 tagType,
uint32 tagCount,
const char *tag_name = NULL);
void DumpMatrix (const dng_matrix &m);
void DumpVector (const dng_vector &v);
void DumpDateTime (const dng_date_time &dt);
void DumpExposureTime (real64 x);
void DumpFingerprint (const dng_fingerprint &p);
void DumpHueSatMap (dng_stream &stream,
uint32 hues,
uint32 sats,
uint32 vals,
bool skipSat0);
/*****************************************************************************/
#endif
/*****************************************************************************/
bool CheckTagType (uint32 parentCode,
uint32 tagCode,
uint32 tagType,
uint16 validType0,
uint16 validType1 = 0,
uint16 validType2 = 0,
uint16 validType3 = 0);
bool CheckTagCount (uint32 parentCode,
uint32 tagCode,
uint32 tagCount,
uint32 minCount,
uint32 maxCount = 0);
bool CheckColorImage (uint32 parentCode,
uint32 tagCode,
uint32 colorPlanes);
bool CheckMainIFD (uint32 parentCode,
uint32 tagCode,
uint32 newSubFileType);
bool CheckRawIFD (uint32 parentCode,
uint32 tagCode,
uint32 photometricInterpretation);
bool CheckCFA (uint32 parentCode,
uint32 tagCode,
uint32 photometricInterpretation);
/*****************************************************************************/
void ParseStringTag (dng_stream &stream,
uint32 parentCode,
uint32 tagCode,
uint32 tagCount,
dng_string &s,
bool trimBlanks = true);
void ParseDualStringTag (dng_stream &stream,
uint32 parentCode,
uint32 tagCode,
uint32 tagCount,
dng_string &s1,
dng_string &s2);
void ParseEncodedStringTag (dng_stream &stream,
uint32 parentCode,
uint32 tagCode,
uint32 tagCount,
dng_string &s);
bool ParseMatrixTag (dng_stream &stream,
uint32 parentCode,
uint32 tagCode,
uint32 tagType,
uint32 tagCount,
uint32 rows,
uint32 cols,
dng_matrix &m);
bool ParseVectorTag (dng_stream &stream,
uint32 parentCode,
uint32 tagCode,
uint32 tagType,
uint32 tagCount,
uint32 count,
dng_vector &v);
bool ParseDateTimeTag (dng_stream &stream,
uint32 parentCode,
uint32 tagCode,
uint32 tagType,
uint32 tagCount,
dng_date_time &dt);
/*****************************************************************************/
#endif
/*****************************************************************************/