--- Code/IO/itkTIFFImageIO.cxx 2009-07-03 22:41:50.000000000 +0400 +++ Code/IO/itkTIFFImageIO.cxx.new 2011-03-10 18:50:40.708000005 +0300 @@ -66,6 +66,75 @@ float m_YResolution; short m_SampleFormat; }; +typedef enum { +TIFF_SETGET_UNDEFINED = 0, +TIFF_SETGET_ASCII = 1, +TIFF_SETGET_UINT8 = 2, +TIFF_SETGET_SINT8 = 3, +TIFF_SETGET_UINT16 = 4, +TIFF_SETGET_SINT16 = 5, +TIFF_SETGET_UINT32 = 6, +TIFF_SETGET_SINT32 = 7, +TIFF_SETGET_UINT64 = 8, +TIFF_SETGET_SINT64 = 9, +TIFF_SETGET_FLOAT = 10, +TIFF_SETGET_DOUBLE = 11, +TIFF_SETGET_IFD8 = 12, +TIFF_SETGET_INT = 13, +TIFF_SETGET_UINT16_PAIR = 14, +TIFF_SETGET_C0_ASCII = 15, +TIFF_SETGET_C0_UINT8 = 16, +TIFF_SETGET_C0_SINT8 = 17, +TIFF_SETGET_C0_UINT16 = 18, +TIFF_SETGET_C0_SINT16 = 19, +TIFF_SETGET_C0_UINT32 = 20, +TIFF_SETGET_C0_SINT32 = 21, +TIFF_SETGET_C0_UINT64 = 22, +TIFF_SETGET_C0_SINT64 = 23, +TIFF_SETGET_C0_FLOAT = 24, +TIFF_SETGET_C0_DOUBLE = 25, +TIFF_SETGET_C0_IFD8 = 26, +TIFF_SETGET_C16_ASCII = 27, +TIFF_SETGET_C16_UINT8 = 28, +TIFF_SETGET_C16_SINT8 = 29, +TIFF_SETGET_C16_UINT16 = 30, +TIFF_SETGET_C16_SINT16 = 31, +TIFF_SETGET_C16_UINT32 = 32, +TIFF_SETGET_C16_SINT32 = 33, +TIFF_SETGET_C16_UINT64 = 34, +TIFF_SETGET_C16_SINT64 = 35, +TIFF_SETGET_C16_FLOAT = 36, +TIFF_SETGET_C16_DOUBLE = 37, +TIFF_SETGET_C16_IFD8 = 38, +TIFF_SETGET_C32_ASCII = 39, +TIFF_SETGET_C32_UINT8 = 40, +TIFF_SETGET_C32_SINT8 = 41, +TIFF_SETGET_C32_UINT16 = 42, +TIFF_SETGET_C32_SINT16 = 43, +TIFF_SETGET_C32_UINT32 = 44, +TIFF_SETGET_C32_SINT32 = 45, +TIFF_SETGET_C32_UINT64 = 46, +TIFF_SETGET_C32_SINT64 = 47, +TIFF_SETGET_C32_FLOAT = 48, +TIFF_SETGET_C32_DOUBLE = 49, +TIFF_SETGET_C32_IFD8 = 50, +TIFF_SETGET_OTHER = 51 +} __TIFFSetGetFieldType; + +struct __TIFFField { +uint32 field_tag; /* field's tag */ +short field_readcount; /* read count/TIFF_VARIABLE/TIFF_SPP */ +short field_writecount; /* write count/TIFF_VARIABLE */ +TIFFDataType field_type; /* type of associated data */ +uint32 reserved; /* reserved for future extension */ +__TIFFSetGetFieldType set_field_type; /* type to be passed to TIFFSetField */ +__TIFFSetGetFieldType get_field_type; /* type to be passed to TIFFGetField */ +unsigned short field_bit; /* bit in fieldsset bit vector */ +unsigned char field_oktochange; /* if true, can change while writing */ +unsigned char field_passcount; /* if true, pass dir count on set */ + char* field_name; /* ASCII name */ + TIFFFieldArray* field_subfields; /* if field points to child ifds, child ifd field definition array */ +}; int TIFFReaderInternal::Open( const char *filename ) { @@ -1866,7 +1935,10 @@ } ttag_t tag = t; // 32bits integer - const TIFFFieldInfo *fld = TIFFFieldWithTag( m_InternalImage->m_Image, tag ); + //const TIFFFieldInfo *fld = (const TIFFFieldInfo *)TIFFFieldWithTag( m_InternalImage->m_Image, tag ); + //const TIFFField *fld = TIFFFieldWithTag( m_InternalImage->m_Image, tag ); + const __TIFFField *fld = (const __TIFFField *)TIFFFieldWithTag( m_InternalImage->m_Image, tag ); + if( fld == NULL ) { return false; @@ -1884,7 +1956,10 @@ } ttag_t tag = t; void *raw_data = NULL; - const TIFFFieldInfo *fld = TIFFFieldWithTag( m_InternalImage->m_Image, tag ); + //const TIFFFieldInfo *fld = (const TIFFFieldInfo *)TIFFFieldWithTag( m_InternalImage->m_Image, tag ); + //const TIFFField *fld = TIFFFieldWithTag( m_InternalImage->m_Image, tag ); + const __TIFFField *fld = (const __TIFFField *)TIFFFieldWithTag( m_InternalImage->m_Image, tag ); + if( fld == NULL ) { itkExceptionMacro( << "fld is NULL" ); @@ -1901,7 +1976,7 @@ } else { - if( fld->field_type != TIFF_BYTE ) + if( fld->field_type != TIFF_BYTE ) { itkExceptionMacro( << "Tag is not of type TIFF_BYTE" ); return NULL;