1*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 2*fd1fabb7SAndroid Build Coastguard Worker // Copyright 2006-2012 Adobe Systems Incorporated 3*fd1fabb7SAndroid Build Coastguard Worker // All Rights Reserved. 4*fd1fabb7SAndroid Build Coastguard Worker // 5*fd1fabb7SAndroid Build Coastguard Worker // NOTICE: Adobe permits you to use, modify, and distribute this file in 6*fd1fabb7SAndroid Build Coastguard Worker // accordance with the terms of the Adobe license agreement accompanying it. 7*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 8*fd1fabb7SAndroid Build Coastguard Worker 9*fd1fabb7SAndroid Build Coastguard Worker /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_image_writer.h#3 $ */ 10*fd1fabb7SAndroid Build Coastguard Worker /* $DateTime: 2012/07/31 22:04:34 $ */ 11*fd1fabb7SAndroid Build Coastguard Worker /* $Change: 840853 $ */ 12*fd1fabb7SAndroid Build Coastguard Worker /* $Author: tknoll $ */ 13*fd1fabb7SAndroid Build Coastguard Worker 14*fd1fabb7SAndroid Build Coastguard Worker /** \file 15*fd1fabb7SAndroid Build Coastguard Worker * Support for writing DNG images to files. 16*fd1fabb7SAndroid Build Coastguard Worker */ 17*fd1fabb7SAndroid Build Coastguard Worker 18*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 19*fd1fabb7SAndroid Build Coastguard Worker 20*fd1fabb7SAndroid Build Coastguard Worker #ifndef __dng_image_writer__ 21*fd1fabb7SAndroid Build Coastguard Worker #define __dng_image_writer__ 22*fd1fabb7SAndroid Build Coastguard Worker 23*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 24*fd1fabb7SAndroid Build Coastguard Worker 25*fd1fabb7SAndroid Build Coastguard Worker #include "dng_auto_ptr.h" 26*fd1fabb7SAndroid Build Coastguard Worker #include "dng_classes.h" 27*fd1fabb7SAndroid Build Coastguard Worker #include "dng_fingerprint.h" 28*fd1fabb7SAndroid Build Coastguard Worker #include "dng_memory.h" 29*fd1fabb7SAndroid Build Coastguard Worker #include "dng_point.h" 30*fd1fabb7SAndroid Build Coastguard Worker #include "dng_rational.h" 31*fd1fabb7SAndroid Build Coastguard Worker #include "dng_sdk_limits.h" 32*fd1fabb7SAndroid Build Coastguard Worker #include "dng_string.h" 33*fd1fabb7SAndroid Build Coastguard Worker #include "dng_tag_types.h" 34*fd1fabb7SAndroid Build Coastguard Worker #include "dng_tag_values.h" 35*fd1fabb7SAndroid Build Coastguard Worker #include "dng_types.h" 36*fd1fabb7SAndroid Build Coastguard Worker 37*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 38*fd1fabb7SAndroid Build Coastguard Worker 39*fd1fabb7SAndroid Build Coastguard Worker /// \brief Image resolution. 40*fd1fabb7SAndroid Build Coastguard Worker 41*fd1fabb7SAndroid Build Coastguard Worker class dng_resolution 42*fd1fabb7SAndroid Build Coastguard Worker { 43*fd1fabb7SAndroid Build Coastguard Worker 44*fd1fabb7SAndroid Build Coastguard Worker public: 45*fd1fabb7SAndroid Build Coastguard Worker 46*fd1fabb7SAndroid Build Coastguard Worker dng_urational fXResolution; 47*fd1fabb7SAndroid Build Coastguard Worker dng_urational fYResolution; 48*fd1fabb7SAndroid Build Coastguard Worker 49*fd1fabb7SAndroid Build Coastguard Worker uint16 fResolutionUnit; 50*fd1fabb7SAndroid Build Coastguard Worker 51*fd1fabb7SAndroid Build Coastguard Worker public: 52*fd1fabb7SAndroid Build Coastguard Worker 53*fd1fabb7SAndroid Build Coastguard Worker dng_resolution (); 54*fd1fabb7SAndroid Build Coastguard Worker 55*fd1fabb7SAndroid Build Coastguard Worker }; 56*fd1fabb7SAndroid Build Coastguard Worker 57*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 58*fd1fabb7SAndroid Build Coastguard Worker 59*fd1fabb7SAndroid Build Coastguard Worker class tiff_tag 60*fd1fabb7SAndroid Build Coastguard Worker { 61*fd1fabb7SAndroid Build Coastguard Worker 62*fd1fabb7SAndroid Build Coastguard Worker protected: 63*fd1fabb7SAndroid Build Coastguard Worker 64*fd1fabb7SAndroid Build Coastguard Worker uint16 fCode; 65*fd1fabb7SAndroid Build Coastguard Worker 66*fd1fabb7SAndroid Build Coastguard Worker uint16 fType; 67*fd1fabb7SAndroid Build Coastguard Worker 68*fd1fabb7SAndroid Build Coastguard Worker uint32 fCount; 69*fd1fabb7SAndroid Build Coastguard Worker 70*fd1fabb7SAndroid Build Coastguard Worker protected: 71*fd1fabb7SAndroid Build Coastguard Worker tiff_tag(uint16 code,uint16 type,uint32 count)72*fd1fabb7SAndroid Build Coastguard Worker tiff_tag (uint16 code, 73*fd1fabb7SAndroid Build Coastguard Worker uint16 type, 74*fd1fabb7SAndroid Build Coastguard Worker uint32 count) 75*fd1fabb7SAndroid Build Coastguard Worker 76*fd1fabb7SAndroid Build Coastguard Worker : fCode (code) 77*fd1fabb7SAndroid Build Coastguard Worker , fType (type) 78*fd1fabb7SAndroid Build Coastguard Worker , fCount (count) 79*fd1fabb7SAndroid Build Coastguard Worker 80*fd1fabb7SAndroid Build Coastguard Worker { 81*fd1fabb7SAndroid Build Coastguard Worker } 82*fd1fabb7SAndroid Build Coastguard Worker 83*fd1fabb7SAndroid Build Coastguard Worker public: 84*fd1fabb7SAndroid Build Coastguard Worker ~tiff_tag()85*fd1fabb7SAndroid Build Coastguard Worker virtual ~tiff_tag () 86*fd1fabb7SAndroid Build Coastguard Worker { 87*fd1fabb7SAndroid Build Coastguard Worker } 88*fd1fabb7SAndroid Build Coastguard Worker Code()89*fd1fabb7SAndroid Build Coastguard Worker uint16 Code () const 90*fd1fabb7SAndroid Build Coastguard Worker { 91*fd1fabb7SAndroid Build Coastguard Worker return fCode; 92*fd1fabb7SAndroid Build Coastguard Worker } 93*fd1fabb7SAndroid Build Coastguard Worker Type()94*fd1fabb7SAndroid Build Coastguard Worker uint16 Type () const 95*fd1fabb7SAndroid Build Coastguard Worker { 96*fd1fabb7SAndroid Build Coastguard Worker return fType; 97*fd1fabb7SAndroid Build Coastguard Worker } 98*fd1fabb7SAndroid Build Coastguard Worker Count()99*fd1fabb7SAndroid Build Coastguard Worker uint32 Count () const 100*fd1fabb7SAndroid Build Coastguard Worker { 101*fd1fabb7SAndroid Build Coastguard Worker return fCount; 102*fd1fabb7SAndroid Build Coastguard Worker } 103*fd1fabb7SAndroid Build Coastguard Worker SetCount(uint32 count)104*fd1fabb7SAndroid Build Coastguard Worker void SetCount (uint32 count) 105*fd1fabb7SAndroid Build Coastguard Worker { 106*fd1fabb7SAndroid Build Coastguard Worker fCount = count; 107*fd1fabb7SAndroid Build Coastguard Worker } 108*fd1fabb7SAndroid Build Coastguard Worker Size()109*fd1fabb7SAndroid Build Coastguard Worker uint32 Size () const 110*fd1fabb7SAndroid Build Coastguard Worker { 111*fd1fabb7SAndroid Build Coastguard Worker return TagTypeSize (Type ()) * Count (); 112*fd1fabb7SAndroid Build Coastguard Worker } 113*fd1fabb7SAndroid Build Coastguard Worker 114*fd1fabb7SAndroid Build Coastguard Worker virtual void Put (dng_stream &stream) const = 0; 115*fd1fabb7SAndroid Build Coastguard Worker 116*fd1fabb7SAndroid Build Coastguard Worker private: 117*fd1fabb7SAndroid Build Coastguard Worker 118*fd1fabb7SAndroid Build Coastguard Worker // Hidden copy constructor and assignment operator. 119*fd1fabb7SAndroid Build Coastguard Worker 120*fd1fabb7SAndroid Build Coastguard Worker tiff_tag (const tiff_tag &tag); 121*fd1fabb7SAndroid Build Coastguard Worker 122*fd1fabb7SAndroid Build Coastguard Worker tiff_tag & operator= (const tiff_tag &tag); 123*fd1fabb7SAndroid Build Coastguard Worker 124*fd1fabb7SAndroid Build Coastguard Worker }; 125*fd1fabb7SAndroid Build Coastguard Worker 126*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 127*fd1fabb7SAndroid Build Coastguard Worker 128*fd1fabb7SAndroid Build Coastguard Worker class tag_data_ptr: public tiff_tag 129*fd1fabb7SAndroid Build Coastguard Worker { 130*fd1fabb7SAndroid Build Coastguard Worker 131*fd1fabb7SAndroid Build Coastguard Worker protected: 132*fd1fabb7SAndroid Build Coastguard Worker 133*fd1fabb7SAndroid Build Coastguard Worker const void *fData; 134*fd1fabb7SAndroid Build Coastguard Worker 135*fd1fabb7SAndroid Build Coastguard Worker public: 136*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr(uint16 code,uint16 type,uint32 count,const void * data)137*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr (uint16 code, 138*fd1fabb7SAndroid Build Coastguard Worker uint16 type, 139*fd1fabb7SAndroid Build Coastguard Worker uint32 count, 140*fd1fabb7SAndroid Build Coastguard Worker const void *data) 141*fd1fabb7SAndroid Build Coastguard Worker 142*fd1fabb7SAndroid Build Coastguard Worker : tiff_tag (code, type, count) 143*fd1fabb7SAndroid Build Coastguard Worker 144*fd1fabb7SAndroid Build Coastguard Worker , fData (data) 145*fd1fabb7SAndroid Build Coastguard Worker 146*fd1fabb7SAndroid Build Coastguard Worker { 147*fd1fabb7SAndroid Build Coastguard Worker } 148*fd1fabb7SAndroid Build Coastguard Worker SetData(const void * data)149*fd1fabb7SAndroid Build Coastguard Worker void SetData (const void *data) 150*fd1fabb7SAndroid Build Coastguard Worker { 151*fd1fabb7SAndroid Build Coastguard Worker fData = data; 152*fd1fabb7SAndroid Build Coastguard Worker } 153*fd1fabb7SAndroid Build Coastguard Worker 154*fd1fabb7SAndroid Build Coastguard Worker virtual void Put (dng_stream &stream) const; 155*fd1fabb7SAndroid Build Coastguard Worker 156*fd1fabb7SAndroid Build Coastguard Worker private: 157*fd1fabb7SAndroid Build Coastguard Worker 158*fd1fabb7SAndroid Build Coastguard Worker // Hidden copy constructor and assignment operator. 159*fd1fabb7SAndroid Build Coastguard Worker 160*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr (const tag_data_ptr &tag); 161*fd1fabb7SAndroid Build Coastguard Worker 162*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr & operator= (const tag_data_ptr &tag); 163*fd1fabb7SAndroid Build Coastguard Worker 164*fd1fabb7SAndroid Build Coastguard Worker }; 165*fd1fabb7SAndroid Build Coastguard Worker 166*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 167*fd1fabb7SAndroid Build Coastguard Worker 168*fd1fabb7SAndroid Build Coastguard Worker class tag_string: public tiff_tag 169*fd1fabb7SAndroid Build Coastguard Worker { 170*fd1fabb7SAndroid Build Coastguard Worker 171*fd1fabb7SAndroid Build Coastguard Worker protected: 172*fd1fabb7SAndroid Build Coastguard Worker 173*fd1fabb7SAndroid Build Coastguard Worker dng_string fString; 174*fd1fabb7SAndroid Build Coastguard Worker 175*fd1fabb7SAndroid Build Coastguard Worker public: 176*fd1fabb7SAndroid Build Coastguard Worker 177*fd1fabb7SAndroid Build Coastguard Worker tag_string (uint16 code, 178*fd1fabb7SAndroid Build Coastguard Worker const dng_string &s, 179*fd1fabb7SAndroid Build Coastguard Worker bool forceASCII = true); 180*fd1fabb7SAndroid Build Coastguard Worker 181*fd1fabb7SAndroid Build Coastguard Worker virtual void Put (dng_stream &stream) const; 182*fd1fabb7SAndroid Build Coastguard Worker 183*fd1fabb7SAndroid Build Coastguard Worker }; 184*fd1fabb7SAndroid Build Coastguard Worker 185*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 186*fd1fabb7SAndroid Build Coastguard Worker 187*fd1fabb7SAndroid Build Coastguard Worker class tag_encoded_text: public tiff_tag 188*fd1fabb7SAndroid Build Coastguard Worker { 189*fd1fabb7SAndroid Build Coastguard Worker 190*fd1fabb7SAndroid Build Coastguard Worker private: 191*fd1fabb7SAndroid Build Coastguard Worker 192*fd1fabb7SAndroid Build Coastguard Worker dng_string fText; 193*fd1fabb7SAndroid Build Coastguard Worker 194*fd1fabb7SAndroid Build Coastguard Worker dng_memory_data fUTF16; 195*fd1fabb7SAndroid Build Coastguard Worker 196*fd1fabb7SAndroid Build Coastguard Worker public: 197*fd1fabb7SAndroid Build Coastguard Worker 198*fd1fabb7SAndroid Build Coastguard Worker tag_encoded_text (uint16 code, 199*fd1fabb7SAndroid Build Coastguard Worker const dng_string &text); 200*fd1fabb7SAndroid Build Coastguard Worker 201*fd1fabb7SAndroid Build Coastguard Worker virtual void Put (dng_stream &stream) const; 202*fd1fabb7SAndroid Build Coastguard Worker 203*fd1fabb7SAndroid Build Coastguard Worker }; 204*fd1fabb7SAndroid Build Coastguard Worker 205*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 206*fd1fabb7SAndroid Build Coastguard Worker 207*fd1fabb7SAndroid Build Coastguard Worker class tag_uint8: public tag_data_ptr 208*fd1fabb7SAndroid Build Coastguard Worker { 209*fd1fabb7SAndroid Build Coastguard Worker 210*fd1fabb7SAndroid Build Coastguard Worker private: 211*fd1fabb7SAndroid Build Coastguard Worker 212*fd1fabb7SAndroid Build Coastguard Worker uint8 fValue; 213*fd1fabb7SAndroid Build Coastguard Worker 214*fd1fabb7SAndroid Build Coastguard Worker public: 215*fd1fabb7SAndroid Build Coastguard Worker 216*fd1fabb7SAndroid Build Coastguard Worker tag_uint8 (uint16 code, 217*fd1fabb7SAndroid Build Coastguard Worker uint8 value = 0) 218*fd1fabb7SAndroid Build Coastguard Worker 219*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttByte, 1, &fValue) 220*fd1fabb7SAndroid Build Coastguard Worker 221*fd1fabb7SAndroid Build Coastguard Worker , fValue (value) 222*fd1fabb7SAndroid Build Coastguard Worker 223*fd1fabb7SAndroid Build Coastguard Worker { 224*fd1fabb7SAndroid Build Coastguard Worker } 225*fd1fabb7SAndroid Build Coastguard Worker Set(uint8 value)226*fd1fabb7SAndroid Build Coastguard Worker void Set (uint8 value) 227*fd1fabb7SAndroid Build Coastguard Worker { 228*fd1fabb7SAndroid Build Coastguard Worker fValue = value; 229*fd1fabb7SAndroid Build Coastguard Worker } 230*fd1fabb7SAndroid Build Coastguard Worker 231*fd1fabb7SAndroid Build Coastguard Worker }; 232*fd1fabb7SAndroid Build Coastguard Worker 233*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 234*fd1fabb7SAndroid Build Coastguard Worker 235*fd1fabb7SAndroid Build Coastguard Worker class tag_uint8_ptr: public tag_data_ptr 236*fd1fabb7SAndroid Build Coastguard Worker { 237*fd1fabb7SAndroid Build Coastguard Worker 238*fd1fabb7SAndroid Build Coastguard Worker public: 239*fd1fabb7SAndroid Build Coastguard Worker 240*fd1fabb7SAndroid Build Coastguard Worker tag_uint8_ptr (uint16 code, 241*fd1fabb7SAndroid Build Coastguard Worker const uint8 *data, 242*fd1fabb7SAndroid Build Coastguard Worker uint32 count = 1) 243*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr(code,ttByte,count,data)244*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttByte, count, data) 245*fd1fabb7SAndroid Build Coastguard Worker 246*fd1fabb7SAndroid Build Coastguard Worker { 247*fd1fabb7SAndroid Build Coastguard Worker } 248*fd1fabb7SAndroid Build Coastguard Worker 249*fd1fabb7SAndroid Build Coastguard Worker }; 250*fd1fabb7SAndroid Build Coastguard Worker 251*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 252*fd1fabb7SAndroid Build Coastguard Worker 253*fd1fabb7SAndroid Build Coastguard Worker class tag_uint16: public tag_data_ptr 254*fd1fabb7SAndroid Build Coastguard Worker { 255*fd1fabb7SAndroid Build Coastguard Worker 256*fd1fabb7SAndroid Build Coastguard Worker private: 257*fd1fabb7SAndroid Build Coastguard Worker 258*fd1fabb7SAndroid Build Coastguard Worker uint16 fValue; 259*fd1fabb7SAndroid Build Coastguard Worker 260*fd1fabb7SAndroid Build Coastguard Worker public: 261*fd1fabb7SAndroid Build Coastguard Worker 262*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 (uint16 code, 263*fd1fabb7SAndroid Build Coastguard Worker uint16 value = 0) 264*fd1fabb7SAndroid Build Coastguard Worker 265*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttShort, 1, &fValue) 266*fd1fabb7SAndroid Build Coastguard Worker 267*fd1fabb7SAndroid Build Coastguard Worker , fValue (value) 268*fd1fabb7SAndroid Build Coastguard Worker 269*fd1fabb7SAndroid Build Coastguard Worker { 270*fd1fabb7SAndroid Build Coastguard Worker } 271*fd1fabb7SAndroid Build Coastguard Worker Set(uint16 value)272*fd1fabb7SAndroid Build Coastguard Worker void Set (uint16 value) 273*fd1fabb7SAndroid Build Coastguard Worker { 274*fd1fabb7SAndroid Build Coastguard Worker fValue = value; 275*fd1fabb7SAndroid Build Coastguard Worker } 276*fd1fabb7SAndroid Build Coastguard Worker 277*fd1fabb7SAndroid Build Coastguard Worker }; 278*fd1fabb7SAndroid Build Coastguard Worker 279*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 280*fd1fabb7SAndroid Build Coastguard Worker 281*fd1fabb7SAndroid Build Coastguard Worker class tag_int16_ptr: public tag_data_ptr 282*fd1fabb7SAndroid Build Coastguard Worker { 283*fd1fabb7SAndroid Build Coastguard Worker 284*fd1fabb7SAndroid Build Coastguard Worker public: 285*fd1fabb7SAndroid Build Coastguard Worker 286*fd1fabb7SAndroid Build Coastguard Worker tag_int16_ptr (uint16 code, 287*fd1fabb7SAndroid Build Coastguard Worker const int16 *data, 288*fd1fabb7SAndroid Build Coastguard Worker uint32 count = 1) 289*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr(code,ttSShort,count,data)290*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttSShort, count, data) 291*fd1fabb7SAndroid Build Coastguard Worker 292*fd1fabb7SAndroid Build Coastguard Worker { 293*fd1fabb7SAndroid Build Coastguard Worker } 294*fd1fabb7SAndroid Build Coastguard Worker 295*fd1fabb7SAndroid Build Coastguard Worker }; 296*fd1fabb7SAndroid Build Coastguard Worker 297*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 298*fd1fabb7SAndroid Build Coastguard Worker 299*fd1fabb7SAndroid Build Coastguard Worker class tag_uint16_ptr: public tag_data_ptr 300*fd1fabb7SAndroid Build Coastguard Worker { 301*fd1fabb7SAndroid Build Coastguard Worker 302*fd1fabb7SAndroid Build Coastguard Worker public: 303*fd1fabb7SAndroid Build Coastguard Worker 304*fd1fabb7SAndroid Build Coastguard Worker tag_uint16_ptr (uint16 code, 305*fd1fabb7SAndroid Build Coastguard Worker const uint16 *data, 306*fd1fabb7SAndroid Build Coastguard Worker uint32 count = 1) 307*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr(code,ttShort,count,data)308*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttShort, count, data) 309*fd1fabb7SAndroid Build Coastguard Worker 310*fd1fabb7SAndroid Build Coastguard Worker { 311*fd1fabb7SAndroid Build Coastguard Worker } 312*fd1fabb7SAndroid Build Coastguard Worker 313*fd1fabb7SAndroid Build Coastguard Worker }; 314*fd1fabb7SAndroid Build Coastguard Worker 315*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 316*fd1fabb7SAndroid Build Coastguard Worker 317*fd1fabb7SAndroid Build Coastguard Worker class tag_uint32: public tag_data_ptr 318*fd1fabb7SAndroid Build Coastguard Worker { 319*fd1fabb7SAndroid Build Coastguard Worker 320*fd1fabb7SAndroid Build Coastguard Worker private: 321*fd1fabb7SAndroid Build Coastguard Worker 322*fd1fabb7SAndroid Build Coastguard Worker uint32 fValue; 323*fd1fabb7SAndroid Build Coastguard Worker 324*fd1fabb7SAndroid Build Coastguard Worker public: 325*fd1fabb7SAndroid Build Coastguard Worker 326*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 (uint16 code, 327*fd1fabb7SAndroid Build Coastguard Worker uint32 value = 0) 328*fd1fabb7SAndroid Build Coastguard Worker 329*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttLong, 1, &fValue) 330*fd1fabb7SAndroid Build Coastguard Worker 331*fd1fabb7SAndroid Build Coastguard Worker , fValue (value) 332*fd1fabb7SAndroid Build Coastguard Worker 333*fd1fabb7SAndroid Build Coastguard Worker { 334*fd1fabb7SAndroid Build Coastguard Worker } 335*fd1fabb7SAndroid Build Coastguard Worker Set(uint32 value)336*fd1fabb7SAndroid Build Coastguard Worker void Set (uint32 value) 337*fd1fabb7SAndroid Build Coastguard Worker { 338*fd1fabb7SAndroid Build Coastguard Worker fValue = value; 339*fd1fabb7SAndroid Build Coastguard Worker } 340*fd1fabb7SAndroid Build Coastguard Worker 341*fd1fabb7SAndroid Build Coastguard Worker }; 342*fd1fabb7SAndroid Build Coastguard Worker 343*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 344*fd1fabb7SAndroid Build Coastguard Worker 345*fd1fabb7SAndroid Build Coastguard Worker class tag_uint32_ptr: public tag_data_ptr 346*fd1fabb7SAndroid Build Coastguard Worker { 347*fd1fabb7SAndroid Build Coastguard Worker 348*fd1fabb7SAndroid Build Coastguard Worker public: 349*fd1fabb7SAndroid Build Coastguard Worker 350*fd1fabb7SAndroid Build Coastguard Worker tag_uint32_ptr (uint16 code, 351*fd1fabb7SAndroid Build Coastguard Worker const uint32 *data, 352*fd1fabb7SAndroid Build Coastguard Worker uint32 count = 1) 353*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr(code,ttLong,count,data)354*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttLong, count, data) 355*fd1fabb7SAndroid Build Coastguard Worker 356*fd1fabb7SAndroid Build Coastguard Worker { 357*fd1fabb7SAndroid Build Coastguard Worker } 358*fd1fabb7SAndroid Build Coastguard Worker 359*fd1fabb7SAndroid Build Coastguard Worker }; 360*fd1fabb7SAndroid Build Coastguard Worker 361*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 362*fd1fabb7SAndroid Build Coastguard Worker 363*fd1fabb7SAndroid Build Coastguard Worker class tag_urational: public tag_data_ptr 364*fd1fabb7SAndroid Build Coastguard Worker { 365*fd1fabb7SAndroid Build Coastguard Worker 366*fd1fabb7SAndroid Build Coastguard Worker private: 367*fd1fabb7SAndroid Build Coastguard Worker 368*fd1fabb7SAndroid Build Coastguard Worker const dng_urational fValue; 369*fd1fabb7SAndroid Build Coastguard Worker 370*fd1fabb7SAndroid Build Coastguard Worker public: 371*fd1fabb7SAndroid Build Coastguard Worker tag_urational(uint16 code,const dng_urational & value)372*fd1fabb7SAndroid Build Coastguard Worker tag_urational (uint16 code, 373*fd1fabb7SAndroid Build Coastguard Worker const dng_urational &value) 374*fd1fabb7SAndroid Build Coastguard Worker 375*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttRational, 1, &fValue) 376*fd1fabb7SAndroid Build Coastguard Worker 377*fd1fabb7SAndroid Build Coastguard Worker , fValue (value) 378*fd1fabb7SAndroid Build Coastguard Worker 379*fd1fabb7SAndroid Build Coastguard Worker { 380*fd1fabb7SAndroid Build Coastguard Worker } 381*fd1fabb7SAndroid Build Coastguard Worker 382*fd1fabb7SAndroid Build Coastguard Worker }; 383*fd1fabb7SAndroid Build Coastguard Worker 384*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 385*fd1fabb7SAndroid Build Coastguard Worker 386*fd1fabb7SAndroid Build Coastguard Worker class tag_urational_ptr: public tag_data_ptr 387*fd1fabb7SAndroid Build Coastguard Worker { 388*fd1fabb7SAndroid Build Coastguard Worker 389*fd1fabb7SAndroid Build Coastguard Worker public: 390*fd1fabb7SAndroid Build Coastguard Worker 391*fd1fabb7SAndroid Build Coastguard Worker tag_urational_ptr (uint16 code, 392*fd1fabb7SAndroid Build Coastguard Worker const dng_urational *data = NULL, 393*fd1fabb7SAndroid Build Coastguard Worker uint32 count = 1) 394*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr(code,ttRational,count,data)395*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttRational, count, data) 396*fd1fabb7SAndroid Build Coastguard Worker 397*fd1fabb7SAndroid Build Coastguard Worker { 398*fd1fabb7SAndroid Build Coastguard Worker } 399*fd1fabb7SAndroid Build Coastguard Worker 400*fd1fabb7SAndroid Build Coastguard Worker }; 401*fd1fabb7SAndroid Build Coastguard Worker 402*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 403*fd1fabb7SAndroid Build Coastguard Worker 404*fd1fabb7SAndroid Build Coastguard Worker class tag_srational: public tag_data_ptr 405*fd1fabb7SAndroid Build Coastguard Worker { 406*fd1fabb7SAndroid Build Coastguard Worker 407*fd1fabb7SAndroid Build Coastguard Worker private: 408*fd1fabb7SAndroid Build Coastguard Worker 409*fd1fabb7SAndroid Build Coastguard Worker const dng_srational fValue; 410*fd1fabb7SAndroid Build Coastguard Worker 411*fd1fabb7SAndroid Build Coastguard Worker public: 412*fd1fabb7SAndroid Build Coastguard Worker tag_srational(uint16 code,const dng_srational & value)413*fd1fabb7SAndroid Build Coastguard Worker tag_srational (uint16 code, 414*fd1fabb7SAndroid Build Coastguard Worker const dng_srational &value) 415*fd1fabb7SAndroid Build Coastguard Worker 416*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttSRational, 1, &fValue) 417*fd1fabb7SAndroid Build Coastguard Worker 418*fd1fabb7SAndroid Build Coastguard Worker , fValue (value) 419*fd1fabb7SAndroid Build Coastguard Worker 420*fd1fabb7SAndroid Build Coastguard Worker { 421*fd1fabb7SAndroid Build Coastguard Worker } 422*fd1fabb7SAndroid Build Coastguard Worker 423*fd1fabb7SAndroid Build Coastguard Worker }; 424*fd1fabb7SAndroid Build Coastguard Worker 425*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 426*fd1fabb7SAndroid Build Coastguard Worker 427*fd1fabb7SAndroid Build Coastguard Worker class tag_srational_ptr: public tag_data_ptr 428*fd1fabb7SAndroid Build Coastguard Worker { 429*fd1fabb7SAndroid Build Coastguard Worker 430*fd1fabb7SAndroid Build Coastguard Worker public: 431*fd1fabb7SAndroid Build Coastguard Worker 432*fd1fabb7SAndroid Build Coastguard Worker tag_srational_ptr (uint16 code, 433*fd1fabb7SAndroid Build Coastguard Worker const dng_srational *data = NULL, 434*fd1fabb7SAndroid Build Coastguard Worker uint32 count = 1) 435*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr(code,ttSRational,count,data)436*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttSRational, count, data) 437*fd1fabb7SAndroid Build Coastguard Worker 438*fd1fabb7SAndroid Build Coastguard Worker { 439*fd1fabb7SAndroid Build Coastguard Worker } 440*fd1fabb7SAndroid Build Coastguard Worker 441*fd1fabb7SAndroid Build Coastguard Worker }; 442*fd1fabb7SAndroid Build Coastguard Worker 443*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 444*fd1fabb7SAndroid Build Coastguard Worker 445*fd1fabb7SAndroid Build Coastguard Worker class tag_real64: public tag_data_ptr 446*fd1fabb7SAndroid Build Coastguard Worker { 447*fd1fabb7SAndroid Build Coastguard Worker 448*fd1fabb7SAndroid Build Coastguard Worker private: 449*fd1fabb7SAndroid Build Coastguard Worker 450*fd1fabb7SAndroid Build Coastguard Worker real64 fValue; 451*fd1fabb7SAndroid Build Coastguard Worker 452*fd1fabb7SAndroid Build Coastguard Worker public: 453*fd1fabb7SAndroid Build Coastguard Worker 454*fd1fabb7SAndroid Build Coastguard Worker tag_real64 (uint16 code, 455*fd1fabb7SAndroid Build Coastguard Worker real64 value = 0.0) 456*fd1fabb7SAndroid Build Coastguard Worker 457*fd1fabb7SAndroid Build Coastguard Worker : tag_data_ptr (code, ttDouble, 1, &fValue) 458*fd1fabb7SAndroid Build Coastguard Worker 459*fd1fabb7SAndroid Build Coastguard Worker , fValue (value) 460*fd1fabb7SAndroid Build Coastguard Worker 461*fd1fabb7SAndroid Build Coastguard Worker { 462*fd1fabb7SAndroid Build Coastguard Worker } 463*fd1fabb7SAndroid Build Coastguard Worker Set(real64 value)464*fd1fabb7SAndroid Build Coastguard Worker void Set (real64 value) 465*fd1fabb7SAndroid Build Coastguard Worker { 466*fd1fabb7SAndroid Build Coastguard Worker fValue = value; 467*fd1fabb7SAndroid Build Coastguard Worker } 468*fd1fabb7SAndroid Build Coastguard Worker 469*fd1fabb7SAndroid Build Coastguard Worker }; 470*fd1fabb7SAndroid Build Coastguard Worker 471*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 472*fd1fabb7SAndroid Build Coastguard Worker 473*fd1fabb7SAndroid Build Coastguard Worker class tag_matrix: public tag_srational_ptr 474*fd1fabb7SAndroid Build Coastguard Worker { 475*fd1fabb7SAndroid Build Coastguard Worker 476*fd1fabb7SAndroid Build Coastguard Worker private: 477*fd1fabb7SAndroid Build Coastguard Worker 478*fd1fabb7SAndroid Build Coastguard Worker dng_srational fEntry [kMaxColorPlanes * 479*fd1fabb7SAndroid Build Coastguard Worker kMaxColorPlanes]; 480*fd1fabb7SAndroid Build Coastguard Worker 481*fd1fabb7SAndroid Build Coastguard Worker public: 482*fd1fabb7SAndroid Build Coastguard Worker 483*fd1fabb7SAndroid Build Coastguard Worker tag_matrix (uint16 code, 484*fd1fabb7SAndroid Build Coastguard Worker const dng_matrix &m); 485*fd1fabb7SAndroid Build Coastguard Worker 486*fd1fabb7SAndroid Build Coastguard Worker }; 487*fd1fabb7SAndroid Build Coastguard Worker 488*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 489*fd1fabb7SAndroid Build Coastguard Worker 490*fd1fabb7SAndroid Build Coastguard Worker class tag_icc_profile: public tag_data_ptr 491*fd1fabb7SAndroid Build Coastguard Worker { 492*fd1fabb7SAndroid Build Coastguard Worker 493*fd1fabb7SAndroid Build Coastguard Worker public: 494*fd1fabb7SAndroid Build Coastguard Worker 495*fd1fabb7SAndroid Build Coastguard Worker tag_icc_profile (const void *profileData, uint32 profileSize); 496*fd1fabb7SAndroid Build Coastguard Worker 497*fd1fabb7SAndroid Build Coastguard Worker }; 498*fd1fabb7SAndroid Build Coastguard Worker 499*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 500*fd1fabb7SAndroid Build Coastguard Worker 501*fd1fabb7SAndroid Build Coastguard Worker class tag_cfa_pattern: public tiff_tag 502*fd1fabb7SAndroid Build Coastguard Worker { 503*fd1fabb7SAndroid Build Coastguard Worker 504*fd1fabb7SAndroid Build Coastguard Worker private: 505*fd1fabb7SAndroid Build Coastguard Worker 506*fd1fabb7SAndroid Build Coastguard Worker uint32 fRows; 507*fd1fabb7SAndroid Build Coastguard Worker uint32 fCols; 508*fd1fabb7SAndroid Build Coastguard Worker 509*fd1fabb7SAndroid Build Coastguard Worker const uint8 *fPattern; 510*fd1fabb7SAndroid Build Coastguard Worker 511*fd1fabb7SAndroid Build Coastguard Worker public: 512*fd1fabb7SAndroid Build Coastguard Worker tag_cfa_pattern(uint16 code,uint32 rows,uint32 cols,const uint8 * pattern)513*fd1fabb7SAndroid Build Coastguard Worker tag_cfa_pattern (uint16 code, 514*fd1fabb7SAndroid Build Coastguard Worker uint32 rows, 515*fd1fabb7SAndroid Build Coastguard Worker uint32 cols, 516*fd1fabb7SAndroid Build Coastguard Worker const uint8 *pattern) 517*fd1fabb7SAndroid Build Coastguard Worker 518*fd1fabb7SAndroid Build Coastguard Worker : tiff_tag (code, ttUndefined, 4 + rows * cols) 519*fd1fabb7SAndroid Build Coastguard Worker 520*fd1fabb7SAndroid Build Coastguard Worker , fRows (rows ) 521*fd1fabb7SAndroid Build Coastguard Worker , fCols (cols ) 522*fd1fabb7SAndroid Build Coastguard Worker , fPattern (pattern) 523*fd1fabb7SAndroid Build Coastguard Worker 524*fd1fabb7SAndroid Build Coastguard Worker { 525*fd1fabb7SAndroid Build Coastguard Worker } 526*fd1fabb7SAndroid Build Coastguard Worker 527*fd1fabb7SAndroid Build Coastguard Worker virtual void Put (dng_stream &stream) const; 528*fd1fabb7SAndroid Build Coastguard Worker 529*fd1fabb7SAndroid Build Coastguard Worker private: 530*fd1fabb7SAndroid Build Coastguard Worker 531*fd1fabb7SAndroid Build Coastguard Worker // Hidden copy constructor and assignment operator. 532*fd1fabb7SAndroid Build Coastguard Worker 533*fd1fabb7SAndroid Build Coastguard Worker tag_cfa_pattern (const tag_cfa_pattern &tag); 534*fd1fabb7SAndroid Build Coastguard Worker 535*fd1fabb7SAndroid Build Coastguard Worker tag_cfa_pattern & operator= (const tag_cfa_pattern &tag); 536*fd1fabb7SAndroid Build Coastguard Worker 537*fd1fabb7SAndroid Build Coastguard Worker }; 538*fd1fabb7SAndroid Build Coastguard Worker 539*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 540*fd1fabb7SAndroid Build Coastguard Worker 541*fd1fabb7SAndroid Build Coastguard Worker class tag_exif_date_time: public tag_data_ptr 542*fd1fabb7SAndroid Build Coastguard Worker { 543*fd1fabb7SAndroid Build Coastguard Worker 544*fd1fabb7SAndroid Build Coastguard Worker private: 545*fd1fabb7SAndroid Build Coastguard Worker 546*fd1fabb7SAndroid Build Coastguard Worker char fData [20]; 547*fd1fabb7SAndroid Build Coastguard Worker 548*fd1fabb7SAndroid Build Coastguard Worker public: 549*fd1fabb7SAndroid Build Coastguard Worker 550*fd1fabb7SAndroid Build Coastguard Worker tag_exif_date_time (uint16 code, 551*fd1fabb7SAndroid Build Coastguard Worker const dng_date_time &dt); 552*fd1fabb7SAndroid Build Coastguard Worker 553*fd1fabb7SAndroid Build Coastguard Worker }; 554*fd1fabb7SAndroid Build Coastguard Worker 555*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 556*fd1fabb7SAndroid Build Coastguard Worker 557*fd1fabb7SAndroid Build Coastguard Worker class tag_iptc: public tiff_tag 558*fd1fabb7SAndroid Build Coastguard Worker { 559*fd1fabb7SAndroid Build Coastguard Worker 560*fd1fabb7SAndroid Build Coastguard Worker private: 561*fd1fabb7SAndroid Build Coastguard Worker 562*fd1fabb7SAndroid Build Coastguard Worker const void *fData; 563*fd1fabb7SAndroid Build Coastguard Worker 564*fd1fabb7SAndroid Build Coastguard Worker uint32 fLength; 565*fd1fabb7SAndroid Build Coastguard Worker 566*fd1fabb7SAndroid Build Coastguard Worker public: 567*fd1fabb7SAndroid Build Coastguard Worker 568*fd1fabb7SAndroid Build Coastguard Worker tag_iptc (const void *data, 569*fd1fabb7SAndroid Build Coastguard Worker uint32 length); 570*fd1fabb7SAndroid Build Coastguard Worker 571*fd1fabb7SAndroid Build Coastguard Worker virtual void Put (dng_stream &stream) const; 572*fd1fabb7SAndroid Build Coastguard Worker 573*fd1fabb7SAndroid Build Coastguard Worker private: 574*fd1fabb7SAndroid Build Coastguard Worker 575*fd1fabb7SAndroid Build Coastguard Worker // Hidden copy constructor and assignment operator. 576*fd1fabb7SAndroid Build Coastguard Worker 577*fd1fabb7SAndroid Build Coastguard Worker tag_iptc (const tag_iptc &tag); 578*fd1fabb7SAndroid Build Coastguard Worker 579*fd1fabb7SAndroid Build Coastguard Worker tag_iptc & operator= (const tag_iptc &tag); 580*fd1fabb7SAndroid Build Coastguard Worker 581*fd1fabb7SAndroid Build Coastguard Worker }; 582*fd1fabb7SAndroid Build Coastguard Worker 583*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 584*fd1fabb7SAndroid Build Coastguard Worker 585*fd1fabb7SAndroid Build Coastguard Worker class tag_xmp: public tag_uint8_ptr 586*fd1fabb7SAndroid Build Coastguard Worker { 587*fd1fabb7SAndroid Build Coastguard Worker 588*fd1fabb7SAndroid Build Coastguard Worker private: 589*fd1fabb7SAndroid Build Coastguard Worker 590*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_memory_block> fBuffer; 591*fd1fabb7SAndroid Build Coastguard Worker 592*fd1fabb7SAndroid Build Coastguard Worker public: 593*fd1fabb7SAndroid Build Coastguard Worker 594*fd1fabb7SAndroid Build Coastguard Worker tag_xmp (const dng_xmp *xmp); 595*fd1fabb7SAndroid Build Coastguard Worker 596*fd1fabb7SAndroid Build Coastguard Worker private: 597*fd1fabb7SAndroid Build Coastguard Worker 598*fd1fabb7SAndroid Build Coastguard Worker // Hidden copy constructor and assignment operator. 599*fd1fabb7SAndroid Build Coastguard Worker 600*fd1fabb7SAndroid Build Coastguard Worker tag_xmp (const tag_xmp &tag); 601*fd1fabb7SAndroid Build Coastguard Worker 602*fd1fabb7SAndroid Build Coastguard Worker tag_xmp & operator= (const tag_xmp &tag); 603*fd1fabb7SAndroid Build Coastguard Worker 604*fd1fabb7SAndroid Build Coastguard Worker }; 605*fd1fabb7SAndroid Build Coastguard Worker 606*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 607*fd1fabb7SAndroid Build Coastguard Worker 608*fd1fabb7SAndroid Build Coastguard Worker class dng_tiff_directory 609*fd1fabb7SAndroid Build Coastguard Worker { 610*fd1fabb7SAndroid Build Coastguard Worker 611*fd1fabb7SAndroid Build Coastguard Worker private: 612*fd1fabb7SAndroid Build Coastguard Worker 613*fd1fabb7SAndroid Build Coastguard Worker enum 614*fd1fabb7SAndroid Build Coastguard Worker { 615*fd1fabb7SAndroid Build Coastguard Worker kMaxEntries = 100 616*fd1fabb7SAndroid Build Coastguard Worker }; 617*fd1fabb7SAndroid Build Coastguard Worker 618*fd1fabb7SAndroid Build Coastguard Worker uint32 fEntries; 619*fd1fabb7SAndroid Build Coastguard Worker 620*fd1fabb7SAndroid Build Coastguard Worker const tiff_tag *fTag [kMaxEntries]; 621*fd1fabb7SAndroid Build Coastguard Worker 622*fd1fabb7SAndroid Build Coastguard Worker uint32 fChained; 623*fd1fabb7SAndroid Build Coastguard Worker 624*fd1fabb7SAndroid Build Coastguard Worker public: 625*fd1fabb7SAndroid Build Coastguard Worker dng_tiff_directory()626*fd1fabb7SAndroid Build Coastguard Worker dng_tiff_directory () 627*fd1fabb7SAndroid Build Coastguard Worker 628*fd1fabb7SAndroid Build Coastguard Worker : fEntries (0) 629*fd1fabb7SAndroid Build Coastguard Worker , fChained (0) 630*fd1fabb7SAndroid Build Coastguard Worker 631*fd1fabb7SAndroid Build Coastguard Worker { 632*fd1fabb7SAndroid Build Coastguard Worker } 633*fd1fabb7SAndroid Build Coastguard Worker ~dng_tiff_directory()634*fd1fabb7SAndroid Build Coastguard Worker virtual ~dng_tiff_directory () 635*fd1fabb7SAndroid Build Coastguard Worker { 636*fd1fabb7SAndroid Build Coastguard Worker } 637*fd1fabb7SAndroid Build Coastguard Worker 638*fd1fabb7SAndroid Build Coastguard Worker void Add (const tiff_tag *tag); 639*fd1fabb7SAndroid Build Coastguard Worker SetChained(uint32 offset)640*fd1fabb7SAndroid Build Coastguard Worker void SetChained (uint32 offset) 641*fd1fabb7SAndroid Build Coastguard Worker { 642*fd1fabb7SAndroid Build Coastguard Worker fChained = offset; 643*fd1fabb7SAndroid Build Coastguard Worker } 644*fd1fabb7SAndroid Build Coastguard Worker 645*fd1fabb7SAndroid Build Coastguard Worker uint32 Size () const; 646*fd1fabb7SAndroid Build Coastguard Worker 647*fd1fabb7SAndroid Build Coastguard Worker enum OffsetsBase 648*fd1fabb7SAndroid Build Coastguard Worker { 649*fd1fabb7SAndroid Build Coastguard Worker offsetsRelativeToStream = 0, 650*fd1fabb7SAndroid Build Coastguard Worker offsetsRelativeToExplicitBase = 1, 651*fd1fabb7SAndroid Build Coastguard Worker offsetsRelativeToIFD = 2 652*fd1fabb7SAndroid Build Coastguard Worker }; 653*fd1fabb7SAndroid Build Coastguard Worker 654*fd1fabb7SAndroid Build Coastguard Worker void Put (dng_stream &stream, 655*fd1fabb7SAndroid Build Coastguard Worker OffsetsBase offsetsBase = offsetsRelativeToStream, 656*fd1fabb7SAndroid Build Coastguard Worker uint32 explicitBase = 0) const; 657*fd1fabb7SAndroid Build Coastguard Worker 658*fd1fabb7SAndroid Build Coastguard Worker private: 659*fd1fabb7SAndroid Build Coastguard Worker 660*fd1fabb7SAndroid Build Coastguard Worker // Hidden copy constructor and assignment operator. 661*fd1fabb7SAndroid Build Coastguard Worker 662*fd1fabb7SAndroid Build Coastguard Worker dng_tiff_directory (const dng_tiff_directory &dir); 663*fd1fabb7SAndroid Build Coastguard Worker 664*fd1fabb7SAndroid Build Coastguard Worker dng_tiff_directory & operator= (const dng_tiff_directory &dir); 665*fd1fabb7SAndroid Build Coastguard Worker 666*fd1fabb7SAndroid Build Coastguard Worker }; 667*fd1fabb7SAndroid Build Coastguard Worker 668*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 669*fd1fabb7SAndroid Build Coastguard Worker 670*fd1fabb7SAndroid Build Coastguard Worker class dng_basic_tag_set 671*fd1fabb7SAndroid Build Coastguard Worker { 672*fd1fabb7SAndroid Build Coastguard Worker 673*fd1fabb7SAndroid Build Coastguard Worker private: 674*fd1fabb7SAndroid Build Coastguard Worker 675*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fNewSubFileType; 676*fd1fabb7SAndroid Build Coastguard Worker 677*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fImageWidth; 678*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fImageLength; 679*fd1fabb7SAndroid Build Coastguard Worker 680*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fPhotoInterpretation; 681*fd1fabb7SAndroid Build Coastguard Worker 682*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fFillOrder; 683*fd1fabb7SAndroid Build Coastguard Worker 684*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fSamplesPerPixel; 685*fd1fabb7SAndroid Build Coastguard Worker 686*fd1fabb7SAndroid Build Coastguard Worker uint16 fBitsPerSampleData [kMaxSamplesPerPixel]; 687*fd1fabb7SAndroid Build Coastguard Worker 688*fd1fabb7SAndroid Build Coastguard Worker tag_uint16_ptr fBitsPerSample; 689*fd1fabb7SAndroid Build Coastguard Worker 690*fd1fabb7SAndroid Build Coastguard Worker bool fStrips; 691*fd1fabb7SAndroid Build Coastguard Worker 692*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fTileWidth; 693*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fTileLength; 694*fd1fabb7SAndroid Build Coastguard Worker 695*fd1fabb7SAndroid Build Coastguard Worker dng_memory_data fTileInfoBuffer; 696*fd1fabb7SAndroid Build Coastguard Worker 697*fd1fabb7SAndroid Build Coastguard Worker uint32 *fTileOffsetData; 698*fd1fabb7SAndroid Build Coastguard Worker 699*fd1fabb7SAndroid Build Coastguard Worker tag_uint32_ptr fTileOffsets; 700*fd1fabb7SAndroid Build Coastguard Worker 701*fd1fabb7SAndroid Build Coastguard Worker uint32 *fTileByteCountData; 702*fd1fabb7SAndroid Build Coastguard Worker 703*fd1fabb7SAndroid Build Coastguard Worker tag_uint32_ptr fTileByteCounts; 704*fd1fabb7SAndroid Build Coastguard Worker 705*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fPlanarConfiguration; 706*fd1fabb7SAndroid Build Coastguard Worker 707*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fCompression; 708*fd1fabb7SAndroid Build Coastguard Worker 709*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fPredictor; 710*fd1fabb7SAndroid Build Coastguard Worker 711*fd1fabb7SAndroid Build Coastguard Worker uint16 fExtraSamplesData [kMaxSamplesPerPixel]; 712*fd1fabb7SAndroid Build Coastguard Worker 713*fd1fabb7SAndroid Build Coastguard Worker tag_uint16_ptr fExtraSamples; 714*fd1fabb7SAndroid Build Coastguard Worker 715*fd1fabb7SAndroid Build Coastguard Worker uint16 fSampleFormatData [kMaxSamplesPerPixel]; 716*fd1fabb7SAndroid Build Coastguard Worker 717*fd1fabb7SAndroid Build Coastguard Worker tag_uint16_ptr fSampleFormat; 718*fd1fabb7SAndroid Build Coastguard Worker 719*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fRowInterleaveFactor; 720*fd1fabb7SAndroid Build Coastguard Worker 721*fd1fabb7SAndroid Build Coastguard Worker uint16 fSubTileBlockSizeData [2]; 722*fd1fabb7SAndroid Build Coastguard Worker 723*fd1fabb7SAndroid Build Coastguard Worker tag_uint16_ptr fSubTileBlockSize; 724*fd1fabb7SAndroid Build Coastguard Worker 725*fd1fabb7SAndroid Build Coastguard Worker public: 726*fd1fabb7SAndroid Build Coastguard Worker 727*fd1fabb7SAndroid Build Coastguard Worker dng_basic_tag_set (dng_tiff_directory &directory, 728*fd1fabb7SAndroid Build Coastguard Worker const dng_ifd &info); 729*fd1fabb7SAndroid Build Coastguard Worker ~dng_basic_tag_set()730*fd1fabb7SAndroid Build Coastguard Worker virtual ~dng_basic_tag_set () 731*fd1fabb7SAndroid Build Coastguard Worker { 732*fd1fabb7SAndroid Build Coastguard Worker } 733*fd1fabb7SAndroid Build Coastguard Worker SetTileOffset(uint32 index,uint32 offset)734*fd1fabb7SAndroid Build Coastguard Worker void SetTileOffset (uint32 index, 735*fd1fabb7SAndroid Build Coastguard Worker uint32 offset) 736*fd1fabb7SAndroid Build Coastguard Worker { 737*fd1fabb7SAndroid Build Coastguard Worker fTileOffsetData [index] = offset; 738*fd1fabb7SAndroid Build Coastguard Worker } 739*fd1fabb7SAndroid Build Coastguard Worker SetTileByteCount(uint32 index,uint32 count)740*fd1fabb7SAndroid Build Coastguard Worker void SetTileByteCount (uint32 index, 741*fd1fabb7SAndroid Build Coastguard Worker uint32 count) 742*fd1fabb7SAndroid Build Coastguard Worker { 743*fd1fabb7SAndroid Build Coastguard Worker fTileByteCountData [index] = count; 744*fd1fabb7SAndroid Build Coastguard Worker } 745*fd1fabb7SAndroid Build Coastguard Worker WritingStrips()746*fd1fabb7SAndroid Build Coastguard Worker bool WritingStrips () const 747*fd1fabb7SAndroid Build Coastguard Worker { 748*fd1fabb7SAndroid Build Coastguard Worker return fStrips; 749*fd1fabb7SAndroid Build Coastguard Worker } 750*fd1fabb7SAndroid Build Coastguard Worker 751*fd1fabb7SAndroid Build Coastguard Worker private: 752*fd1fabb7SAndroid Build Coastguard Worker 753*fd1fabb7SAndroid Build Coastguard Worker // Hidden copy constructor and assignment operator. 754*fd1fabb7SAndroid Build Coastguard Worker 755*fd1fabb7SAndroid Build Coastguard Worker dng_basic_tag_set (const dng_basic_tag_set &set); 756*fd1fabb7SAndroid Build Coastguard Worker 757*fd1fabb7SAndroid Build Coastguard Worker dng_basic_tag_set & operator= (const dng_basic_tag_set &set); 758*fd1fabb7SAndroid Build Coastguard Worker 759*fd1fabb7SAndroid Build Coastguard Worker }; 760*fd1fabb7SAndroid Build Coastguard Worker 761*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 762*fd1fabb7SAndroid Build Coastguard Worker 763*fd1fabb7SAndroid Build Coastguard Worker class exif_tag_set 764*fd1fabb7SAndroid Build Coastguard Worker { 765*fd1fabb7SAndroid Build Coastguard Worker 766*fd1fabb7SAndroid Build Coastguard Worker protected: 767*fd1fabb7SAndroid Build Coastguard Worker 768*fd1fabb7SAndroid Build Coastguard Worker dng_tiff_directory fExifIFD; 769*fd1fabb7SAndroid Build Coastguard Worker dng_tiff_directory fGPSIFD; 770*fd1fabb7SAndroid Build Coastguard Worker 771*fd1fabb7SAndroid Build Coastguard Worker private: 772*fd1fabb7SAndroid Build Coastguard Worker 773*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fExifLink; 774*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fGPSLink; 775*fd1fabb7SAndroid Build Coastguard Worker 776*fd1fabb7SAndroid Build Coastguard Worker bool fAddedExifLink; 777*fd1fabb7SAndroid Build Coastguard Worker bool fAddedGPSLink; 778*fd1fabb7SAndroid Build Coastguard Worker 779*fd1fabb7SAndroid Build Coastguard Worker uint8 fExifVersionData [4]; 780*fd1fabb7SAndroid Build Coastguard Worker 781*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr fExifVersion; 782*fd1fabb7SAndroid Build Coastguard Worker 783*fd1fabb7SAndroid Build Coastguard Worker tag_urational fExposureTime; 784*fd1fabb7SAndroid Build Coastguard Worker tag_srational fShutterSpeedValue; 785*fd1fabb7SAndroid Build Coastguard Worker 786*fd1fabb7SAndroid Build Coastguard Worker tag_urational fFNumber; 787*fd1fabb7SAndroid Build Coastguard Worker tag_urational fApertureValue; 788*fd1fabb7SAndroid Build Coastguard Worker 789*fd1fabb7SAndroid Build Coastguard Worker tag_srational fBrightnessValue; 790*fd1fabb7SAndroid Build Coastguard Worker 791*fd1fabb7SAndroid Build Coastguard Worker tag_srational fExposureBiasValue; 792*fd1fabb7SAndroid Build Coastguard Worker 793*fd1fabb7SAndroid Build Coastguard Worker tag_urational fMaxApertureValue; 794*fd1fabb7SAndroid Build Coastguard Worker 795*fd1fabb7SAndroid Build Coastguard Worker tag_urational fSubjectDistance; 796*fd1fabb7SAndroid Build Coastguard Worker 797*fd1fabb7SAndroid Build Coastguard Worker tag_urational fFocalLength; 798*fd1fabb7SAndroid Build Coastguard Worker 799*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fISOSpeedRatings; 800*fd1fabb7SAndroid Build Coastguard Worker 801*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fSensitivityType; 802*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fStandardOutputSensitivity; 803*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fRecommendedExposureIndex; 804*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fISOSpeed; 805*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fISOSpeedLatitudeyyy; 806*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fISOSpeedLatitudezzz; 807*fd1fabb7SAndroid Build Coastguard Worker 808*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fFlash; 809*fd1fabb7SAndroid Build Coastguard Worker 810*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fExposureProgram; 811*fd1fabb7SAndroid Build Coastguard Worker 812*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fMeteringMode; 813*fd1fabb7SAndroid Build Coastguard Worker 814*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fLightSource; 815*fd1fabb7SAndroid Build Coastguard Worker 816*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fSensingMethod; 817*fd1fabb7SAndroid Build Coastguard Worker 818*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fFocalLength35mm; 819*fd1fabb7SAndroid Build Coastguard Worker 820*fd1fabb7SAndroid Build Coastguard Worker uint8 fFileSourceData; 821*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr fFileSource; 822*fd1fabb7SAndroid Build Coastguard Worker 823*fd1fabb7SAndroid Build Coastguard Worker uint8 fSceneTypeData; 824*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr fSceneType; 825*fd1fabb7SAndroid Build Coastguard Worker 826*fd1fabb7SAndroid Build Coastguard Worker tag_cfa_pattern fCFAPattern; 827*fd1fabb7SAndroid Build Coastguard Worker 828*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fCustomRendered; 829*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fExposureMode; 830*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fWhiteBalance; 831*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fSceneCaptureType; 832*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fGainControl; 833*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fContrast; 834*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fSaturation; 835*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fSharpness; 836*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fSubjectDistanceRange; 837*fd1fabb7SAndroid Build Coastguard Worker 838*fd1fabb7SAndroid Build Coastguard Worker tag_urational fDigitalZoomRatio; 839*fd1fabb7SAndroid Build Coastguard Worker 840*fd1fabb7SAndroid Build Coastguard Worker tag_urational fExposureIndex; 841*fd1fabb7SAndroid Build Coastguard Worker 842*fd1fabb7SAndroid Build Coastguard Worker tag_uint32 fImageNumber; 843*fd1fabb7SAndroid Build Coastguard Worker 844*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fSelfTimerMode; 845*fd1fabb7SAndroid Build Coastguard Worker 846*fd1fabb7SAndroid Build Coastguard Worker tag_string fBatteryLevelA; 847*fd1fabb7SAndroid Build Coastguard Worker tag_urational fBatteryLevelR; 848*fd1fabb7SAndroid Build Coastguard Worker 849*fd1fabb7SAndroid Build Coastguard Worker tag_urational fFocalPlaneXResolution; 850*fd1fabb7SAndroid Build Coastguard Worker tag_urational fFocalPlaneYResolution; 851*fd1fabb7SAndroid Build Coastguard Worker 852*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fFocalPlaneResolutionUnit; 853*fd1fabb7SAndroid Build Coastguard Worker 854*fd1fabb7SAndroid Build Coastguard Worker uint16 fSubjectAreaData [4]; 855*fd1fabb7SAndroid Build Coastguard Worker 856*fd1fabb7SAndroid Build Coastguard Worker tag_uint16_ptr fSubjectArea; 857*fd1fabb7SAndroid Build Coastguard Worker 858*fd1fabb7SAndroid Build Coastguard Worker dng_urational fLensInfoData [4]; 859*fd1fabb7SAndroid Build Coastguard Worker 860*fd1fabb7SAndroid Build Coastguard Worker tag_urational_ptr fLensInfo; 861*fd1fabb7SAndroid Build Coastguard Worker 862*fd1fabb7SAndroid Build Coastguard Worker tag_exif_date_time fDateTime; 863*fd1fabb7SAndroid Build Coastguard Worker tag_exif_date_time fDateTimeOriginal; 864*fd1fabb7SAndroid Build Coastguard Worker tag_exif_date_time fDateTimeDigitized; 865*fd1fabb7SAndroid Build Coastguard Worker 866*fd1fabb7SAndroid Build Coastguard Worker tag_string fSubsecTime; 867*fd1fabb7SAndroid Build Coastguard Worker tag_string fSubsecTimeOriginal; 868*fd1fabb7SAndroid Build Coastguard Worker tag_string fSubsecTimeDigitized; 869*fd1fabb7SAndroid Build Coastguard Worker 870*fd1fabb7SAndroid Build Coastguard Worker tag_string fMake; 871*fd1fabb7SAndroid Build Coastguard Worker tag_string fModel; 872*fd1fabb7SAndroid Build Coastguard Worker tag_string fArtist; 873*fd1fabb7SAndroid Build Coastguard Worker tag_string fSoftware; 874*fd1fabb7SAndroid Build Coastguard Worker tag_string fCopyright; 875*fd1fabb7SAndroid Build Coastguard Worker tag_string fImageDescription; 876*fd1fabb7SAndroid Build Coastguard Worker 877*fd1fabb7SAndroid Build Coastguard Worker tag_string fSerialNumber; 878*fd1fabb7SAndroid Build Coastguard Worker 879*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fMakerNoteSafety; 880*fd1fabb7SAndroid Build Coastguard Worker 881*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr fMakerNote; 882*fd1fabb7SAndroid Build Coastguard Worker 883*fd1fabb7SAndroid Build Coastguard Worker tag_encoded_text fUserComment; 884*fd1fabb7SAndroid Build Coastguard Worker 885*fd1fabb7SAndroid Build Coastguard Worker char fImageUniqueIDData [33]; 886*fd1fabb7SAndroid Build Coastguard Worker 887*fd1fabb7SAndroid Build Coastguard Worker tag_data_ptr fImageUniqueID; 888*fd1fabb7SAndroid Build Coastguard Worker 889*fd1fabb7SAndroid Build Coastguard Worker // EXIF 2.3 tags. 890*fd1fabb7SAndroid Build Coastguard Worker 891*fd1fabb7SAndroid Build Coastguard Worker tag_string fCameraOwnerName; 892*fd1fabb7SAndroid Build Coastguard Worker tag_string fBodySerialNumber; 893*fd1fabb7SAndroid Build Coastguard Worker tag_urational_ptr fLensSpecification; 894*fd1fabb7SAndroid Build Coastguard Worker tag_string fLensMake; 895*fd1fabb7SAndroid Build Coastguard Worker tag_string fLensModel; 896*fd1fabb7SAndroid Build Coastguard Worker tag_string fLensSerialNumber; 897*fd1fabb7SAndroid Build Coastguard Worker 898*fd1fabb7SAndroid Build Coastguard Worker uint8 fGPSVersionData [4]; 899*fd1fabb7SAndroid Build Coastguard Worker 900*fd1fabb7SAndroid Build Coastguard Worker tag_uint8_ptr fGPSVersionID; 901*fd1fabb7SAndroid Build Coastguard Worker 902*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSLatitudeRef; 903*fd1fabb7SAndroid Build Coastguard Worker tag_urational_ptr fGPSLatitude; 904*fd1fabb7SAndroid Build Coastguard Worker 905*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSLongitudeRef; 906*fd1fabb7SAndroid Build Coastguard Worker tag_urational_ptr fGPSLongitude; 907*fd1fabb7SAndroid Build Coastguard Worker 908*fd1fabb7SAndroid Build Coastguard Worker tag_uint8 fGPSAltitudeRef; 909*fd1fabb7SAndroid Build Coastguard Worker tag_urational fGPSAltitude; 910*fd1fabb7SAndroid Build Coastguard Worker 911*fd1fabb7SAndroid Build Coastguard Worker tag_urational_ptr fGPSTimeStamp; 912*fd1fabb7SAndroid Build Coastguard Worker 913*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSSatellites; 914*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSStatus; 915*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSMeasureMode; 916*fd1fabb7SAndroid Build Coastguard Worker 917*fd1fabb7SAndroid Build Coastguard Worker tag_urational fGPSDOP; 918*fd1fabb7SAndroid Build Coastguard Worker 919*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSSpeedRef; 920*fd1fabb7SAndroid Build Coastguard Worker tag_urational fGPSSpeed; 921*fd1fabb7SAndroid Build Coastguard Worker 922*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSTrackRef; 923*fd1fabb7SAndroid Build Coastguard Worker tag_urational fGPSTrack; 924*fd1fabb7SAndroid Build Coastguard Worker 925*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSImgDirectionRef; 926*fd1fabb7SAndroid Build Coastguard Worker tag_urational fGPSImgDirection; 927*fd1fabb7SAndroid Build Coastguard Worker 928*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSMapDatum; 929*fd1fabb7SAndroid Build Coastguard Worker 930*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSDestLatitudeRef; 931*fd1fabb7SAndroid Build Coastguard Worker tag_urational_ptr fGPSDestLatitude; 932*fd1fabb7SAndroid Build Coastguard Worker 933*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSDestLongitudeRef; 934*fd1fabb7SAndroid Build Coastguard Worker tag_urational_ptr fGPSDestLongitude; 935*fd1fabb7SAndroid Build Coastguard Worker 936*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSDestBearingRef; 937*fd1fabb7SAndroid Build Coastguard Worker tag_urational fGPSDestBearing; 938*fd1fabb7SAndroid Build Coastguard Worker 939*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSDestDistanceRef; 940*fd1fabb7SAndroid Build Coastguard Worker tag_urational fGPSDestDistance; 941*fd1fabb7SAndroid Build Coastguard Worker 942*fd1fabb7SAndroid Build Coastguard Worker tag_encoded_text fGPSProcessingMethod; 943*fd1fabb7SAndroid Build Coastguard Worker tag_encoded_text fGPSAreaInformation; 944*fd1fabb7SAndroid Build Coastguard Worker 945*fd1fabb7SAndroid Build Coastguard Worker tag_string fGPSDateStamp; 946*fd1fabb7SAndroid Build Coastguard Worker 947*fd1fabb7SAndroid Build Coastguard Worker tag_uint16 fGPSDifferential; 948*fd1fabb7SAndroid Build Coastguard Worker 949*fd1fabb7SAndroid Build Coastguard Worker tag_urational fGPSHPositioningError; 950*fd1fabb7SAndroid Build Coastguard Worker 951*fd1fabb7SAndroid Build Coastguard Worker public: 952*fd1fabb7SAndroid Build Coastguard Worker 953*fd1fabb7SAndroid Build Coastguard Worker exif_tag_set (dng_tiff_directory &directory, 954*fd1fabb7SAndroid Build Coastguard Worker const dng_exif &exif, 955*fd1fabb7SAndroid Build Coastguard Worker bool makerNoteSafe = false, 956*fd1fabb7SAndroid Build Coastguard Worker const void *makerNoteData = NULL, 957*fd1fabb7SAndroid Build Coastguard Worker uint32 makerNoteLength = 0, 958*fd1fabb7SAndroid Build Coastguard Worker bool insideDNG = false); 959*fd1fabb7SAndroid Build Coastguard Worker Locate(uint32 offset)960*fd1fabb7SAndroid Build Coastguard Worker void Locate (uint32 offset) 961*fd1fabb7SAndroid Build Coastguard Worker { 962*fd1fabb7SAndroid Build Coastguard Worker fExifLink.Set (offset); 963*fd1fabb7SAndroid Build Coastguard Worker fGPSLink .Set (offset + fExifIFD.Size ()); 964*fd1fabb7SAndroid Build Coastguard Worker } 965*fd1fabb7SAndroid Build Coastguard Worker Size()966*fd1fabb7SAndroid Build Coastguard Worker uint32 Size () const 967*fd1fabb7SAndroid Build Coastguard Worker { 968*fd1fabb7SAndroid Build Coastguard Worker return fExifIFD.Size () + 969*fd1fabb7SAndroid Build Coastguard Worker fGPSIFD .Size (); 970*fd1fabb7SAndroid Build Coastguard Worker } 971*fd1fabb7SAndroid Build Coastguard Worker Put(dng_stream & stream)972*fd1fabb7SAndroid Build Coastguard Worker void Put (dng_stream &stream) const 973*fd1fabb7SAndroid Build Coastguard Worker { 974*fd1fabb7SAndroid Build Coastguard Worker fExifIFD.Put (stream); 975*fd1fabb7SAndroid Build Coastguard Worker fGPSIFD .Put (stream); 976*fd1fabb7SAndroid Build Coastguard Worker } 977*fd1fabb7SAndroid Build Coastguard Worker 978*fd1fabb7SAndroid Build Coastguard Worker protected: 979*fd1fabb7SAndroid Build Coastguard Worker 980*fd1fabb7SAndroid Build Coastguard Worker void AddLinks (dng_tiff_directory &directory); 981*fd1fabb7SAndroid Build Coastguard Worker 982*fd1fabb7SAndroid Build Coastguard Worker private: 983*fd1fabb7SAndroid Build Coastguard Worker 984*fd1fabb7SAndroid Build Coastguard Worker // Hidden copy constructor and assignment operator. 985*fd1fabb7SAndroid Build Coastguard Worker 986*fd1fabb7SAndroid Build Coastguard Worker exif_tag_set (const exif_tag_set &set); 987*fd1fabb7SAndroid Build Coastguard Worker 988*fd1fabb7SAndroid Build Coastguard Worker exif_tag_set & operator= (const exif_tag_set &set); 989*fd1fabb7SAndroid Build Coastguard Worker 990*fd1fabb7SAndroid Build Coastguard Worker }; 991*fd1fabb7SAndroid Build Coastguard Worker 992*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/ 993*fd1fabb7SAndroid Build Coastguard Worker 994*fd1fabb7SAndroid Build Coastguard Worker class tiff_dng_extended_color_profile: private dng_tiff_directory 995*fd1fabb7SAndroid Build Coastguard Worker { 996*fd1fabb7SAndroid Build Coastguard Worker 997*fd1fabb7SAndroid Build Coastguard Worker protected: 998*fd1fabb7SAndroid Build Coastguard Worker 999*fd1fabb7SAndroid Build Coastguard Worker const dng_camera_profile &fProfile; 1000*fd1fabb7SAndroid Build Coastguard Worker 1001*fd1fabb7SAndroid Build Coastguard Worker public: 1002*fd1fabb7SAndroid Build Coastguard Worker 1003*fd1fabb7SAndroid Build Coastguard Worker tiff_dng_extended_color_profile (const dng_camera_profile &profile); 1004*fd1fabb7SAndroid Build Coastguard Worker 1005*fd1fabb7SAndroid Build Coastguard Worker void Put (dng_stream &stream, 1006*fd1fabb7SAndroid Build Coastguard Worker bool includeModelRestriction = true); 1007*fd1fabb7SAndroid Build Coastguard Worker 1008*fd1fabb7SAndroid Build Coastguard Worker }; 1009*fd1fabb7SAndroid Build Coastguard Worker 1010*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 1011*fd1fabb7SAndroid Build Coastguard Worker 1012*fd1fabb7SAndroid Build Coastguard Worker class tag_dng_noise_profile: public tag_data_ptr 1013*fd1fabb7SAndroid Build Coastguard Worker { 1014*fd1fabb7SAndroid Build Coastguard Worker 1015*fd1fabb7SAndroid Build Coastguard Worker protected: 1016*fd1fabb7SAndroid Build Coastguard Worker 1017*fd1fabb7SAndroid Build Coastguard Worker real64 fValues [2 * kMaxColorPlanes]; 1018*fd1fabb7SAndroid Build Coastguard Worker 1019*fd1fabb7SAndroid Build Coastguard Worker public: 1020*fd1fabb7SAndroid Build Coastguard Worker 1021*fd1fabb7SAndroid Build Coastguard Worker explicit tag_dng_noise_profile (const dng_noise_profile &profile); 1022*fd1fabb7SAndroid Build Coastguard Worker 1023*fd1fabb7SAndroid Build Coastguard Worker }; 1024*fd1fabb7SAndroid Build Coastguard Worker 1025*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 1026*fd1fabb7SAndroid Build Coastguard Worker 1027*fd1fabb7SAndroid Build Coastguard Worker // Enum to control the subset of metadata to save to a file. 1028*fd1fabb7SAndroid Build Coastguard Worker 1029*fd1fabb7SAndroid Build Coastguard Worker enum dng_metadata_subset 1030*fd1fabb7SAndroid Build Coastguard Worker { 1031*fd1fabb7SAndroid Build Coastguard Worker 1032*fd1fabb7SAndroid Build Coastguard Worker kMetadataSubset_CopyrightOnly = 0, 1033*fd1fabb7SAndroid Build Coastguard Worker kMetadataSubset_CopyrightAndContact, 1034*fd1fabb7SAndroid Build Coastguard Worker kMetadataSubset_AllExceptCameraInfo, 1035*fd1fabb7SAndroid Build Coastguard Worker kMetadataSubset_All, 1036*fd1fabb7SAndroid Build Coastguard Worker kMetadataSubset_AllExceptLocationInfo, 1037*fd1fabb7SAndroid Build Coastguard Worker kMetadataSubset_AllExceptCameraAndLocation, 1038*fd1fabb7SAndroid Build Coastguard Worker 1039*fd1fabb7SAndroid Build Coastguard Worker kMetadataSubset_Last = kMetadataSubset_AllExceptCameraAndLocation 1040*fd1fabb7SAndroid Build Coastguard Worker 1041*fd1fabb7SAndroid Build Coastguard Worker }; 1042*fd1fabb7SAndroid Build Coastguard Worker 1043*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 1044*fd1fabb7SAndroid Build Coastguard Worker 1045*fd1fabb7SAndroid Build Coastguard Worker /// \brief Support for writing dng_image or dng_negative instances to a 1046*fd1fabb7SAndroid Build Coastguard Worker /// dng_stream in TIFF or DNG format. 1047*fd1fabb7SAndroid Build Coastguard Worker 1048*fd1fabb7SAndroid Build Coastguard Worker class dng_image_writer 1049*fd1fabb7SAndroid Build Coastguard Worker { 1050*fd1fabb7SAndroid Build Coastguard Worker 1051*fd1fabb7SAndroid Build Coastguard Worker friend class dng_jpeg_image; 1052*fd1fabb7SAndroid Build Coastguard Worker friend class dng_jpeg_image_encode_task; 1053*fd1fabb7SAndroid Build Coastguard Worker friend class dng_write_tiles_task; 1054*fd1fabb7SAndroid Build Coastguard Worker 1055*fd1fabb7SAndroid Build Coastguard Worker protected: 1056*fd1fabb7SAndroid Build Coastguard Worker 1057*fd1fabb7SAndroid Build Coastguard Worker enum 1058*fd1fabb7SAndroid Build Coastguard Worker { 1059*fd1fabb7SAndroid Build Coastguard Worker 1060*fd1fabb7SAndroid Build Coastguard Worker // Target size for buffer used to copy data to the image. 1061*fd1fabb7SAndroid Build Coastguard Worker 1062*fd1fabb7SAndroid Build Coastguard Worker kImageBufferSize = 128 * 1024 1063*fd1fabb7SAndroid Build Coastguard Worker 1064*fd1fabb7SAndroid Build Coastguard Worker }; 1065*fd1fabb7SAndroid Build Coastguard Worker 1066*fd1fabb7SAndroid Build Coastguard Worker public: 1067*fd1fabb7SAndroid Build Coastguard Worker 1068*fd1fabb7SAndroid Build Coastguard Worker dng_image_writer (); 1069*fd1fabb7SAndroid Build Coastguard Worker 1070*fd1fabb7SAndroid Build Coastguard Worker virtual ~dng_image_writer (); 1071*fd1fabb7SAndroid Build Coastguard Worker 1072*fd1fabb7SAndroid Build Coastguard Worker virtual void EncodeJPEGPreview (dng_host &host, 1073*fd1fabb7SAndroid Build Coastguard Worker const dng_image &image, 1074*fd1fabb7SAndroid Build Coastguard Worker dng_jpeg_preview &preview, 1075*fd1fabb7SAndroid Build Coastguard Worker int32 quality = -1); 1076*fd1fabb7SAndroid Build Coastguard Worker 1077*fd1fabb7SAndroid Build Coastguard Worker virtual void WriteImage (dng_host &host, 1078*fd1fabb7SAndroid Build Coastguard Worker const dng_ifd &ifd, 1079*fd1fabb7SAndroid Build Coastguard Worker dng_basic_tag_set &basic, 1080*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 1081*fd1fabb7SAndroid Build Coastguard Worker const dng_image &image, 1082*fd1fabb7SAndroid Build Coastguard Worker uint32 fakeChannels = 1); 1083*fd1fabb7SAndroid Build Coastguard Worker 1084*fd1fabb7SAndroid Build Coastguard Worker /// Write a dng_image to a dng_stream in TIFF format. 1085*fd1fabb7SAndroid Build Coastguard Worker /// \param host Host interface used for progress updates, abort testing, buffer allocation, etc. 1086*fd1fabb7SAndroid Build Coastguard Worker /// \param stream The dng_stream on which to write the TIFF. 1087*fd1fabb7SAndroid Build Coastguard Worker /// \param image The actual image data to be written. 1088*fd1fabb7SAndroid Build Coastguard Worker /// \param photometricInterpretation Either piBlackIsZero for monochrome or piRGB for RGB images. 1089*fd1fabb7SAndroid Build Coastguard Worker /// \param compression Must be ccUncompressed. 1090*fd1fabb7SAndroid Build Coastguard Worker /// \param negative or metadata If non-NULL, EXIF, IPTC, and XMP metadata from this negative is written to TIFF. 1091*fd1fabb7SAndroid Build Coastguard Worker /// \param space If non-null and color space has an ICC profile, TIFF will be tagged with this 1092*fd1fabb7SAndroid Build Coastguard Worker /// profile. No color space conversion of image data occurs. 1093*fd1fabb7SAndroid Build Coastguard Worker /// \param resolution If non-NULL, TIFF will be tagged with this resolution. 1094*fd1fabb7SAndroid Build Coastguard Worker /// \param thumbnail If non-NULL, will be stored in TIFF as preview image. 1095*fd1fabb7SAndroid Build Coastguard Worker /// \param imageResources If non-NULL, will image resources be stored in TIFF as well. 1096*fd1fabb7SAndroid Build Coastguard Worker /// \param metadataSubset The subset of metadata (e.g., copyright only) to include in the TIFF. 1097*fd1fabb7SAndroid Build Coastguard Worker 1098*fd1fabb7SAndroid Build Coastguard Worker void WriteTIFF (dng_host &host, 1099*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 1100*fd1fabb7SAndroid Build Coastguard Worker const dng_image &image, 1101*fd1fabb7SAndroid Build Coastguard Worker uint32 photometricInterpretation, 1102*fd1fabb7SAndroid Build Coastguard Worker uint32 compression, 1103*fd1fabb7SAndroid Build Coastguard Worker dng_negative *negative, 1104*fd1fabb7SAndroid Build Coastguard Worker const dng_color_space *space = NULL, 1105*fd1fabb7SAndroid Build Coastguard Worker const dng_resolution *resolution = NULL, 1106*fd1fabb7SAndroid Build Coastguard Worker const dng_jpeg_preview *thumbnail = NULL, 1107*fd1fabb7SAndroid Build Coastguard Worker const dng_memory_block *imageResources = NULL, 1108*fd1fabb7SAndroid Build Coastguard Worker dng_metadata_subset metadataSubset = kMetadataSubset_All); 1109*fd1fabb7SAndroid Build Coastguard Worker 1110*fd1fabb7SAndroid Build Coastguard Worker void WriteTIFF (dng_host &host, 1111*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 1112*fd1fabb7SAndroid Build Coastguard Worker const dng_image &image, 1113*fd1fabb7SAndroid Build Coastguard Worker uint32 photometricInterpretation = piBlackIsZero, 1114*fd1fabb7SAndroid Build Coastguard Worker uint32 compression = ccUncompressed, 1115*fd1fabb7SAndroid Build Coastguard Worker const dng_metadata *metadata = NULL, 1116*fd1fabb7SAndroid Build Coastguard Worker const dng_color_space *space = NULL, 1117*fd1fabb7SAndroid Build Coastguard Worker const dng_resolution *resolution = NULL, 1118*fd1fabb7SAndroid Build Coastguard Worker const dng_jpeg_preview *thumbnail = NULL, 1119*fd1fabb7SAndroid Build Coastguard Worker const dng_memory_block *imageResources = NULL, 1120*fd1fabb7SAndroid Build Coastguard Worker dng_metadata_subset metadataSubset = kMetadataSubset_All); 1121*fd1fabb7SAndroid Build Coastguard Worker 1122*fd1fabb7SAndroid Build Coastguard Worker /// Write a dng_image to a dng_stream in TIFF format. 1123*fd1fabb7SAndroid Build Coastguard Worker /// \param host Host interface used for progress updates, abort testing, buffer allocation, etc. 1124*fd1fabb7SAndroid Build Coastguard Worker /// \param stream The dng_stream on which to write the TIFF. 1125*fd1fabb7SAndroid Build Coastguard Worker /// \param image The actual image data to be written. 1126*fd1fabb7SAndroid Build Coastguard Worker /// \param photometricInterpretation Either piBlackIsZero for monochrome or piRGB for RGB images. 1127*fd1fabb7SAndroid Build Coastguard Worker /// \param compression Must be ccUncompressed. 1128*fd1fabb7SAndroid Build Coastguard Worker /// \param negative or metadata If non-NULL, EXIF, IPTC, and XMP metadata from this negative is written to TIFF. 1129*fd1fabb7SAndroid Build Coastguard Worker /// \param profileData If non-null, TIFF will be tagged with this profile. No color space conversion 1130*fd1fabb7SAndroid Build Coastguard Worker /// of image data occurs. 1131*fd1fabb7SAndroid Build Coastguard Worker /// \param profileSize The size for the profile data. 1132*fd1fabb7SAndroid Build Coastguard Worker /// \param resolution If non-NULL, TIFF will be tagged with this resolution. 1133*fd1fabb7SAndroid Build Coastguard Worker /// \param thumbnail If non-NULL, will be stored in TIFF as preview image. 1134*fd1fabb7SAndroid Build Coastguard Worker /// \param imageResources If non-NULL, will image resources be stored in TIFF as well. 1135*fd1fabb7SAndroid Build Coastguard Worker /// \param metadataSubset The subset of metadata (e.g., copyright only) to include in the TIFF. 1136*fd1fabb7SAndroid Build Coastguard Worker 1137*fd1fabb7SAndroid Build Coastguard Worker void WriteTIFFWithProfile (dng_host &host, 1138*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 1139*fd1fabb7SAndroid Build Coastguard Worker const dng_image &image, 1140*fd1fabb7SAndroid Build Coastguard Worker uint32 photometricInterpretation, 1141*fd1fabb7SAndroid Build Coastguard Worker uint32 compression, 1142*fd1fabb7SAndroid Build Coastguard Worker dng_negative *negative, 1143*fd1fabb7SAndroid Build Coastguard Worker const void *profileData = NULL, 1144*fd1fabb7SAndroid Build Coastguard Worker uint32 profileSize = 0, 1145*fd1fabb7SAndroid Build Coastguard Worker const dng_resolution *resolution = NULL, 1146*fd1fabb7SAndroid Build Coastguard Worker const dng_jpeg_preview *thumbnail = NULL, 1147*fd1fabb7SAndroid Build Coastguard Worker const dng_memory_block *imageResources = NULL, 1148*fd1fabb7SAndroid Build Coastguard Worker dng_metadata_subset metadataSubset = kMetadataSubset_All); 1149*fd1fabb7SAndroid Build Coastguard Worker 1150*fd1fabb7SAndroid Build Coastguard Worker virtual void WriteTIFFWithProfile (dng_host &host, 1151*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 1152*fd1fabb7SAndroid Build Coastguard Worker const dng_image &image, 1153*fd1fabb7SAndroid Build Coastguard Worker uint32 photometricInterpretation = piBlackIsZero, 1154*fd1fabb7SAndroid Build Coastguard Worker uint32 compression = ccUncompressed, 1155*fd1fabb7SAndroid Build Coastguard Worker const dng_metadata *metadata = NULL, 1156*fd1fabb7SAndroid Build Coastguard Worker const void *profileData = NULL, 1157*fd1fabb7SAndroid Build Coastguard Worker uint32 profileSize = 0, 1158*fd1fabb7SAndroid Build Coastguard Worker const dng_resolution *resolution = NULL, 1159*fd1fabb7SAndroid Build Coastguard Worker const dng_jpeg_preview *thumbnail = NULL, 1160*fd1fabb7SAndroid Build Coastguard Worker const dng_memory_block *imageResources = NULL, 1161*fd1fabb7SAndroid Build Coastguard Worker dng_metadata_subset metadataSubset = kMetadataSubset_All); 1162*fd1fabb7SAndroid Build Coastguard Worker 1163*fd1fabb7SAndroid Build Coastguard Worker /// Write a dng_image to a dng_stream in DNG format. 1164*fd1fabb7SAndroid Build Coastguard Worker /// \param host Host interface used for progress updates, abort testing, buffer allocation, etc. 1165*fd1fabb7SAndroid Build Coastguard Worker /// \param stream The dng_stream on which to write the TIFF. 1166*fd1fabb7SAndroid Build Coastguard Worker /// \param negative The image data and metadata (EXIF, IPTC, XMP) to be written. 1167*fd1fabb7SAndroid Build Coastguard Worker /// \param previewList List of previews (not counting thumbnail) to write to the file. Defaults to empty. 1168*fd1fabb7SAndroid Build Coastguard Worker /// \param maxBackwardVersion The DNG file should be readable by readers at least back to this version. 1169*fd1fabb7SAndroid Build Coastguard Worker /// \param uncompressed True to force uncompressed images. Otherwise use normal compression. 1170*fd1fabb7SAndroid Build Coastguard Worker 1171*fd1fabb7SAndroid Build Coastguard Worker void WriteDNG (dng_host &host, 1172*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 1173*fd1fabb7SAndroid Build Coastguard Worker dng_negative &negative, 1174*fd1fabb7SAndroid Build Coastguard Worker const dng_preview_list *previewList = NULL, 1175*fd1fabb7SAndroid Build Coastguard Worker uint32 maxBackwardVersion = dngVersion_SaveDefault, 1176*fd1fabb7SAndroid Build Coastguard Worker bool uncompressed = false); 1177*fd1fabb7SAndroid Build Coastguard Worker 1178*fd1fabb7SAndroid Build Coastguard Worker /// Write a dng_image to a dng_stream in DNG format. 1179*fd1fabb7SAndroid Build Coastguard Worker /// \param host Host interface used for progress updates, abort testing, buffer allocation, etc. 1180*fd1fabb7SAndroid Build Coastguard Worker /// \param stream The dng_stream on which to write the TIFF. 1181*fd1fabb7SAndroid Build Coastguard Worker /// \param negative The image data to be written. 1182*fd1fabb7SAndroid Build Coastguard Worker /// \param metadata The metadata (EXIF, IPTC, XMP) to be written. 1183*fd1fabb7SAndroid Build Coastguard Worker /// \param previewList List of previews (not counting thumbnail) to write to the file. Defaults to empty. 1184*fd1fabb7SAndroid Build Coastguard Worker /// \param maxBackwardVersion The DNG file should be readable by readers at least back to this version. 1185*fd1fabb7SAndroid Build Coastguard Worker /// \param uncompressed True to force uncompressed images. Otherwise use normal compression. 1186*fd1fabb7SAndroid Build Coastguard Worker 1187*fd1fabb7SAndroid Build Coastguard Worker virtual void WriteDNG (dng_host &host, 1188*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 1189*fd1fabb7SAndroid Build Coastguard Worker const dng_negative &negative, 1190*fd1fabb7SAndroid Build Coastguard Worker const dng_metadata &metadata, 1191*fd1fabb7SAndroid Build Coastguard Worker const dng_preview_list *previewList = NULL, 1192*fd1fabb7SAndroid Build Coastguard Worker uint32 maxBackwardVersion = dngVersion_SaveDefault, 1193*fd1fabb7SAndroid Build Coastguard Worker bool uncompressed = false); 1194*fd1fabb7SAndroid Build Coastguard Worker 1195*fd1fabb7SAndroid Build Coastguard Worker /// Resolve metadata conflicts and apply metadata policies in keeping 1196*fd1fabb7SAndroid Build Coastguard Worker /// with Metadata Working Group (MWG) guidelines. 1197*fd1fabb7SAndroid Build Coastguard Worker 1198*fd1fabb7SAndroid Build Coastguard Worker virtual void CleanUpMetadata (dng_host &host, 1199*fd1fabb7SAndroid Build Coastguard Worker dng_metadata &metadata, 1200*fd1fabb7SAndroid Build Coastguard Worker dng_metadata_subset metadataSubset, 1201*fd1fabb7SAndroid Build Coastguard Worker const char *dstMIMI, 1202*fd1fabb7SAndroid Build Coastguard Worker const char *software = NULL); 1203*fd1fabb7SAndroid Build Coastguard Worker 1204*fd1fabb7SAndroid Build Coastguard Worker protected: 1205*fd1fabb7SAndroid Build Coastguard Worker 1206*fd1fabb7SAndroid Build Coastguard Worker virtual uint32 CompressedBufferSize (const dng_ifd &ifd, 1207*fd1fabb7SAndroid Build Coastguard Worker uint32 uncompressedSize); 1208*fd1fabb7SAndroid Build Coastguard Worker 1209*fd1fabb7SAndroid Build Coastguard Worker virtual void EncodePredictor (dng_host &host, 1210*fd1fabb7SAndroid Build Coastguard Worker const dng_ifd &ifd, 1211*fd1fabb7SAndroid Build Coastguard Worker dng_pixel_buffer &buffer, 1212*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_memory_block> &tempBuffer); 1213*fd1fabb7SAndroid Build Coastguard Worker 1214*fd1fabb7SAndroid Build Coastguard Worker virtual void ByteSwapBuffer (dng_host &host, 1215*fd1fabb7SAndroid Build Coastguard Worker dng_pixel_buffer &buffer); 1216*fd1fabb7SAndroid Build Coastguard Worker 1217*fd1fabb7SAndroid Build Coastguard Worker void ReorderSubTileBlocks (const dng_ifd &ifd, 1218*fd1fabb7SAndroid Build Coastguard Worker dng_pixel_buffer &buffer, 1219*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_memory_block> &uncompressedBuffer, 1220*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_memory_block> &subTileBlockBuffer); 1221*fd1fabb7SAndroid Build Coastguard Worker 1222*fd1fabb7SAndroid Build Coastguard Worker virtual void WriteData (dng_host &host, 1223*fd1fabb7SAndroid Build Coastguard Worker const dng_ifd &ifd, 1224*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 1225*fd1fabb7SAndroid Build Coastguard Worker dng_pixel_buffer &buffer, 1226*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_memory_block> &compressedBuffer); 1227*fd1fabb7SAndroid Build Coastguard Worker 1228*fd1fabb7SAndroid Build Coastguard Worker virtual void WriteTile (dng_host &host, 1229*fd1fabb7SAndroid Build Coastguard Worker const dng_ifd &ifd, 1230*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 1231*fd1fabb7SAndroid Build Coastguard Worker const dng_image &image, 1232*fd1fabb7SAndroid Build Coastguard Worker const dng_rect &tileArea, 1233*fd1fabb7SAndroid Build Coastguard Worker uint32 fakeChannels, 1234*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_memory_block> &compressedBuffer, 1235*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_memory_block> &uncompressedBuffer, 1236*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_memory_block> &subTileBlockBuffer, 1237*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_memory_block> &tempBuffer); 1238*fd1fabb7SAndroid Build Coastguard Worker 1239*fd1fabb7SAndroid Build Coastguard Worker }; 1240*fd1fabb7SAndroid Build Coastguard Worker 1241*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 1242*fd1fabb7SAndroid Build Coastguard Worker 1243*fd1fabb7SAndroid Build Coastguard Worker #endif 1244*fd1fabb7SAndroid Build Coastguard Worker 1245*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 1246