161 lines
6.6 KiB
Diff
161 lines
6.6 KiB
Diff
|
This patch depends on functions that will appear in upstream libtiff in
|
||
|
4.0.3. In Fedora, it will only build against libtiff 4.0.2-5 or later.
|
||
|
|
||
|
|
||
|
diff -Naur FreeImage-3.10.0-syslibs/Source/Metadata/XTIFF.cpp FreeImage-3.10.0/Source/Metadata/XTIFF.cpp
|
||
|
--- FreeImage-3.10.0-syslibs/Source/Metadata/XTIFF.cpp 2012-07-29 14:15:00.057023161 -0400
|
||
|
+++ FreeImage-3.10.0/Source/Metadata/XTIFF.cpp 2012-07-29 14:21:35.278415039 -0400
|
||
|
@@ -214,7 +214,7 @@
|
||
|
count = (short) TIFFGetTagListCount(tif);
|
||
|
for(i = 0; i < count; i++) {
|
||
|
ttag_t tag = TIFFGetTagListEntry(tif, i);
|
||
|
- const TIFFFieldInfo *fip;
|
||
|
+ const TIFFField *fip;
|
||
|
uint32 value_count;
|
||
|
int mem_alloc = 0;
|
||
|
void *raw_data;
|
||
|
@@ -229,29 +229,30 @@
|
||
|
if(fip == NULL)
|
||
|
continue;
|
||
|
|
||
|
- if(fip->field_passcount) {
|
||
|
+ if(TIFFFieldPassCount(fip)) {
|
||
|
if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1)
|
||
|
continue;
|
||
|
} else {
|
||
|
- if (fip->field_readcount == TIFF_VARIABLE || fip->field_readcount == TIFF_VARIABLE2)
|
||
|
+ if (TIFFFieldReadCount(fip) == TIFF_VARIABLE ||
|
||
|
+ TIFFFieldReadCount(fip) == TIFF_VARIABLE2)
|
||
|
value_count = 1;
|
||
|
- else if (fip->field_readcount == TIFF_SPP) {
|
||
|
+ else if (TIFFFieldReadCount(fip) == TIFF_SPP) {
|
||
|
uint16 spp;
|
||
|
TIFFGetFieldDefaulted(tif,
|
||
|
TIFFTAG_SAMPLESPERPIXEL, &spp);
|
||
|
value_count = spp;
|
||
|
}
|
||
|
else
|
||
|
- value_count = fip->field_readcount;
|
||
|
- if (fip->field_type == TIFF_ASCII
|
||
|
- || fip->field_readcount == TIFF_VARIABLE
|
||
|
- || fip->field_readcount == TIFF_VARIABLE2
|
||
|
- || fip->field_readcount == TIFF_SPP
|
||
|
+ value_count = TIFFFieldReadCount(fip);
|
||
|
+ if (TIFFFieldDataType(fip) == TIFF_ASCII
|
||
|
+ || TIFFFieldReadCount(fip) == TIFF_VARIABLE
|
||
|
+ || TIFFFieldReadCount(fip) == TIFF_VARIABLE2
|
||
|
+ || TIFFFieldReadCount(fip) == TIFF_SPP
|
||
|
|| value_count > 1) {
|
||
|
if(TIFFGetField(tif, tag, &raw_data) != 1)
|
||
|
continue;
|
||
|
} else {
|
||
|
- raw_data = _TIFFmalloc(_TIFFDataSize(fip->field_type) * value_count);
|
||
|
+ raw_data = _TIFFmalloc(_TIFFDataSize(TIFFFieldDataType(fip)) * value_count);
|
||
|
mem_alloc = 1;
|
||
|
if(TIFFGetField(tif, tag, raw_data) != 1) {
|
||
|
_TIFFfree(raw_data);
|
||
|
@@ -271,59 +272,59 @@
|
||
|
FreeImage_SetTagID(fitag, (WORD)tag);
|
||
|
FreeImage_SetTagKey(fitag, key);
|
||
|
|
||
|
- switch(fip->field_type) {
|
||
|
+ switch(TIFFFieldDataType(fip)) {
|
||
|
case TIFF_BYTE:
|
||
|
FreeImage_SetTagType(fitag, FIDT_BYTE);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|
||
|
|
||
|
case TIFF_UNDEFINED:
|
||
|
FreeImage_SetTagType(fitag, FIDT_UNDEFINED);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|
||
|
|
||
|
case TIFF_SBYTE:
|
||
|
FreeImage_SetTagType(fitag, FIDT_SBYTE);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|
||
|
|
||
|
case TIFF_SHORT:
|
||
|
FreeImage_SetTagType(fitag, FIDT_SHORT);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|
||
|
|
||
|
case TIFF_SSHORT:
|
||
|
FreeImage_SetTagType(fitag, FIDT_SSHORT);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|
||
|
|
||
|
case TIFF_LONG:
|
||
|
FreeImage_SetTagType(fitag, FIDT_LONG);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|
||
|
|
||
|
case TIFF_IFD:
|
||
|
FreeImage_SetTagType(fitag, FIDT_IFD);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|
||
|
|
||
|
case TIFF_SLONG:
|
||
|
FreeImage_SetTagType(fitag, FIDT_SLONG);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|
||
|
@@ -339,7 +340,7 @@
|
||
|
rvalue[2*i+1] = rational.getDenominator();
|
||
|
}
|
||
|
FreeImage_SetTagType(fitag, FIDT_RATIONAL);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, rvalue);
|
||
|
free(rvalue);
|
||
|
@@ -357,7 +358,7 @@
|
||
|
rvalue[2*i+1] = rational.getDenominator();
|
||
|
}
|
||
|
FreeImage_SetTagType(fitag, FIDT_RATIONAL);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, rvalue);
|
||
|
free(rvalue);
|
||
|
@@ -366,14 +367,14 @@
|
||
|
|
||
|
case TIFF_FLOAT:
|
||
|
FreeImage_SetTagType(fitag, FIDT_FLOAT);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|
||
|
|
||
|
case TIFF_DOUBLE:
|
||
|
FreeImage_SetTagType(fitag, FIDT_DOUBLE);
|
||
|
- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count);
|
||
|
+ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count);
|
||
|
FreeImage_SetTagCount(fitag, value_count);
|
||
|
FreeImage_SetTagValue(fitag, raw_data);
|
||
|
break;
|