Add patch for libtiff 4.0 API changes

This commit is contained in:
Tom Lane 2012-08-03 11:04:51 -04:00
parent 42b5fea005
commit 980a5258c4
2 changed files with 167 additions and 1 deletions

View File

@ -0,0 +1,160 @@
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;

View File

@ -3,7 +3,7 @@
Name: freeimage
Version: 3.10.0
Release: 10%{?dist}
Release: 11%{?dist}
Summary: Multi-format image decoder library
Group: System Environment/Libraries
# freeimage is dual-licensed, see Whatsnew.txt (search for license) or:
@ -14,6 +14,7 @@ Source0: http://downloads.sourceforge.net/%{name}/FreeImage%{_version}.zi
Patch0: FreeImage-3.10.0-syslibs.patch
Patch1: FreeImage-3.10.0-doxygen.patch
Patch2: FreeImage-3.10.0-libpng15.patch
Patch3: FreeImage-3.10.0-libtiff4.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libjpeg-devel libpng-devel libtiff-devel OpenEXR-devel
BuildRequires: libmng-devel openjpeg-devel doxygen
@ -39,6 +40,7 @@ developing applications that use %{name}.
%patch0 -p1 -z .syslibs
%patch1 -p1
%patch2 -p0
%patch3 -p1
touch -r Source/FreeImage.h.syslibs Source/FreeImage.h
# remove all included libs to make sure these don't get used during compile
@ -116,6 +118,10 @@ rm -rf $RPM_BUILD_ROOT
%changelog
* Fri Aug 3 2012 Tom Lane <tgl@redhat.com> 3.10.0-11
- Add patch for libtiff 4.0 API changes
Resolves: #845407
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.0-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild