Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 850745 Details for
Bug 501993
RFE: update to 3.17.0
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Patch to unbundle libraries in 3.15.4
FreeImage-3.15.4_unbundle.patch (text/plain), 28.04 KB, created by
Sandro Mani
on 2014-01-16 00:04:44 UTC
(
hide
)
Description:
Patch to unbundle libraries in 3.15.4
Filename:
MIME Type:
Creator:
Sandro Mani
Created:
2014-01-16 00:04:44 UTC
Size:
28.04 KB
patch
obsolete
>diff -rupN FreeImage/FreeImage.2008.vcproj FreeImage-new/FreeImage.2008.vcproj >--- FreeImage/FreeImage.2008.vcproj 2014-01-16 00:27:04.000000000 +0100 >+++ FreeImage-new/FreeImage.2008.vcproj 2014-01-16 00:49:42.334523250 +0100 >@@ -486,10 +486,6 @@ > > > </File> > <File >- RelativePath="Source\FreeImage\PluginG3.cpp" >- > >- </File> >- <File > RelativePath="Source\FreeImage\PluginGIF.cpp" > > > </File> >@@ -832,10 +828,6 @@ > > > </File> > <File >- RelativePath="Source\FreeImageToolkit\JPEGTransform.cpp" >- > >- </File> >- <File > RelativePath="Source\FreeImageToolkit\MultigridPoissonSolver.cpp" > > > </File> >diff -rupN FreeImage/genfipsrclist.sh FreeImage-new/genfipsrclist.sh >--- FreeImage/genfipsrclist.sh 2014-01-16 00:27:04.000000000 +0100 >+++ FreeImage-new/genfipsrclist.sh 2014-01-16 00:49:42.334523250 +0100 >@@ -1,6 +1,6 @@ > #!/bin/sh > >-DIRLIST=". Source Source/Metadata Source/FreeImageToolkit Source/LibJPEG Source/LibPNG Source/LibTIFF4 Source/ZLib Source/LibOpenJPEG Source/OpenEXR Source/OpenEXR/Half Source/OpenEXR/Iex Source/OpenEXR/IlmImf Source/OpenEXR/IlmThread Source/OpenEXR/Imath Source/LibRawLite Source/LibRawLite/dcraw Source/LibRawLite/internal Source/LibRawLite/libraw Source/LibRawLite/src Wrapper/FreeImagePlus" >+DIRLIST="Wrapper/FreeImagePlus" > > > echo "VER_MAJOR = 3" > fipMakefile.srcs >diff -rupN FreeImage/gensrclist.sh FreeImage-new/gensrclist.sh >--- FreeImage/gensrclist.sh 2014-01-16 00:27:04.000000000 +0100 >+++ FreeImage-new/gensrclist.sh 2014-01-16 00:49:42.335523267 +0100 >@@ -1,6 +1,6 @@ > #!/bin/sh > >-DIRLIST=". Source Source/Metadata Source/FreeImageToolkit Source/LibJPEG Source/LibPNG Source/LibTIFF4 Source/ZLib Source/LibOpenJPEG Source/OpenEXR Source/OpenEXR/Half Source/OpenEXR/Iex Source/OpenEXR/IlmImf Source/OpenEXR/IlmThread Source/OpenEXR/Imath Source/LibRawLite Source/LibRawLite/dcraw Source/LibRawLite/internal Source/LibRawLite/libraw Source/LibRawLite/src" >+DIRLIST=". Source Source/Metadata Source/FreeImageToolkit" > > echo "VER_MAJOR = 3" > Makefile.srcs > echo "VER_MINOR = 15.4" >> Makefile.srcs >diff -rupN FreeImage/Makefile.fip FreeImage-new/Makefile.fip >--- FreeImage/Makefile.fip 2014-01-16 00:27:04.000000000 +0100 >+++ FreeImage-new/Makefile.fip 2014-01-16 00:49:42.335523267 +0100 >@@ -11,7 +11,8 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib > # Converts cr/lf to just lf > DOS2UNIX = dos2unix > >-LIBRARIES = -lstdc++ >+INCLUDE += -ISource >+LIBRARIES = -lstdc++ -lfreeimage-$(VER_MAJOR).$(VER_MINOR) -L. > > MODULES = $(SRCS:.c=.o) > MODULES := $(MODULES:.cpp=.o) >diff -rupN FreeImage/Makefile.gnu FreeImage-new/Makefile.gnu >--- FreeImage/Makefile.gnu 2014-01-16 00:27:04.000000000 +0100 >+++ FreeImage-new/Makefile.gnu 2014-01-16 00:49:42.335523267 +0100 >@@ -11,8 +11,8 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib > # Converts cr/lf to just lf > DOS2UNIX = dos2unix > >-LIBRARIES = -lstdc++ >- >+INCLUDE += $(shell pkg-config --cflags libopenjpeg libpng libraw OpenEXR zlib libtiff-4) >+LIBRARIES = -lstdc++ $(shell pkg-config --libs libopenjpeg libpng libraw libraw OpenEXR zlib libtiff-4) -ljpeg > MODULES = $(SRCS:.c=.o) > MODULES := $(MODULES:.cpp=.o) > CFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -DNO_LCMS >diff -rupN FreeImage/Source/FreeImage/J2KHelper.cpp FreeImage-new/Source/FreeImage/J2KHelper.cpp >--- FreeImage/Source/FreeImage/J2KHelper.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/J2KHelper.cpp 2014-01-16 00:49:42.335523267 +0100 >@@ -21,7 +21,7 @@ > > #include "FreeImage.h" > #include "Utilities.h" >-#include "../LibOpenJPEG/openjpeg.h" >+#include <openjpeg.h> > > /** > Divide an integer by a power of 2 and round upwards >diff -rupN FreeImage/Source/FreeImage/Plugin.cpp FreeImage-new/Source/FreeImage/Plugin.cpp >--- FreeImage/Source/FreeImage/Plugin.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/Plugin.cpp 2014-01-16 00:49:42.335523267 +0100 >@@ -258,7 +258,12 @@ FreeImage_Initialise(BOOL load_local_plu > s_plugins->AddNode(InitDDS); > s_plugins->AddNode(InitGIF); > s_plugins->AddNode(InitHDR); >+/* The G3 fax format plugin is deliberately disabled in the Fedora build of >+ FreeImage as it requires that FreeImage uses a private copy of libtiff >+ which is a no no because of security reasons. */ >+#if 0 > s_plugins->AddNode(InitG3); >+#endif > s_plugins->AddNode(InitSGI); > s_plugins->AddNode(InitEXR); > s_plugins->AddNode(InitJ2K); >diff -rupN FreeImage/Source/FreeImage/PluginEXR.cpp FreeImage-new/Source/FreeImage/PluginEXR.cpp >--- FreeImage/Source/FreeImage/PluginEXR.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/PluginEXR.cpp 2014-01-16 00:49:42.336523283 +0100 >@@ -22,16 +22,16 @@ > > #include "FreeImage.h" > #include "Utilities.h" >-#include "../OpenEXR/IlmImf/ImfIO.h" >-#include "../OpenEXR/Iex/Iex.h" >-#include "../OpenEXR/IlmImf/ImfOutputFile.h" >-#include "../OpenEXR/IlmImf/ImfInputFile.h" >-#include "../OpenEXR/IlmImf/ImfRgbaFile.h" >-#include "../OpenEXR/IlmImf/ImfChannelList.h" >-#include "../OpenEXR/IlmImf/ImfRgba.h" >-#include "../OpenEXR/IlmImf/ImfArray.h" >-#include "../OpenEXR/IlmImf/ImfPreviewImage.h" >-#include "../OpenEXR/Half/half.h" >+#include <OpenEXR/ImfIO.h> >+#include <OpenEXR/Iex.h> >+#include <OpenEXR/ImfOutputFile.h> >+#include <OpenEXR/ImfInputFile.h> >+#include <OpenEXR/ImfRgbaFile.h> >+#include <OpenEXR/ImfChannelList.h> >+#include <OpenEXR/ImfRgba.h> >+#include <OpenEXR/ImfArray.h> >+#include <OpenEXR/ImfPreviewImage.h> >+#include <OpenEXR/half.h> > > > // ========================================================== >diff -rupN FreeImage/Source/FreeImage/PluginJ2K.cpp FreeImage-new/Source/FreeImage/PluginJ2K.cpp >--- FreeImage/Source/FreeImage/PluginJ2K.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/PluginJ2K.cpp 2014-01-16 00:49:42.336523283 +0100 >@@ -21,7 +21,7 @@ > > #include "FreeImage.h" > #include "Utilities.h" >-#include "../LibOpenJPEG/openjpeg.h" >+#include <openjpeg.h> > > // ========================================================== > // Plugin Interface >diff -rupN FreeImage/Source/FreeImage/PluginJP2.cpp FreeImage-new/Source/FreeImage/PluginJP2.cpp >--- FreeImage/Source/FreeImage/PluginJP2.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/PluginJP2.cpp 2014-01-16 00:49:42.336523283 +0100 >@@ -21,7 +21,7 @@ > > #include "FreeImage.h" > #include "Utilities.h" >-#include "../LibOpenJPEG/openjpeg.h" >+#include <openjpeg.h> > > // ========================================================== > // Plugin Interface >diff -rupN FreeImage/Source/FreeImage/PluginJPEG.cpp FreeImage-new/Source/FreeImage/PluginJPEG.cpp >--- FreeImage/Source/FreeImage/PluginJPEG.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/PluginJPEG.cpp 2014-01-16 00:49:42.336523283 +0100 >@@ -35,9 +35,9 @@ extern "C" { > #undef FAR > #include <setjmp.h> > >-#include "../LibJPEG/jinclude.h" >-#include "../LibJPEG/jpeglib.h" >-#include "../LibJPEG/jerror.h" >+#include <stdio.h> >+#include <jpeglib.h> >+#include <jerror.h> > } > > #include "FreeImage.h" >diff -rupN FreeImage/Source/FreeImage/PluginPNG.cpp FreeImage-new/Source/FreeImage/PluginPNG.cpp >--- FreeImage/Source/FreeImage/PluginPNG.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/PluginPNG.cpp 2014-01-16 00:49:42.337523300 +0100 >@@ -37,8 +37,8 @@ > > // ---------------------------------------------------------- > >-#include "../ZLib/zlib.h" >-#include "../LibPNG/png.h" >+#include <zlib.h> >+#include <png.h> > > // ---------------------------------------------------------- > >@@ -106,7 +106,11 @@ ReadMetadata(png_structp png_ptr, png_in > tag = FreeImage_CreateTag(); > if(!tag) return FALSE; > >+#ifdef PNG_iTXt_SUPPORTED > DWORD tag_length = (DWORD) MAX(text_ptr[i].text_length, text_ptr[i].itxt_length); >+#else >+ DWORD tag_length = text_ptr[i].text_length; >+#endif > > FreeImage_SetTagLength(tag, tag_length); > FreeImage_SetTagCount(tag, tag_length); >@@ -153,10 +157,11 @@ WriteMetadata(png_structp png_ptr, png_i > text_metadata.key = (char*)FreeImage_GetTagKey(tag); // keyword, 1-79 character description of "text" > text_metadata.text = (char*)FreeImage_GetTagValue(tag); // comment, may be an empty string (ie "") > text_metadata.text_length = FreeImage_GetTagLength(tag);// length of the text string >+#ifdef PNG_iTXt_SUPPORTED > text_metadata.itxt_length = FreeImage_GetTagLength(tag);// length of the itxt string > text_metadata.lang = 0; // language code, 0-79 characters or a NULL pointer > text_metadata.lang_key = 0; // keyword translated UTF-8 string, 0 or more chars or a NULL pointer >- >+#endif > // set the tag > png_set_text(png_ptr, info_ptr, &text_metadata, 1); > >@@ -175,10 +180,11 @@ WriteMetadata(png_structp png_ptr, png_i > text_metadata.key = (char*)g_png_xmp_keyword; // keyword, 1-79 character description of "text" > text_metadata.text = (char*)FreeImage_GetTagValue(tag); // comment, may be an empty string (ie "") > text_metadata.text_length = FreeImage_GetTagLength(tag);// length of the text string >+#ifdef PNG_iTXt_SUPPORTED > text_metadata.itxt_length = FreeImage_GetTagLength(tag);// length of the itxt string > text_metadata.lang = 0; // language code, 0-79 characters or a NULL pointer > text_metadata.lang_key = 0; // keyword translated UTF-8 string, 0 or more chars or a NULL pointer >- >+#endif > // set the tag > png_set_text(png_ptr, info_ptr, &text_metadata, 1); > bResult &= TRUE; >diff -rupN FreeImage/Source/FreeImage/PluginRAW.cpp FreeImage-new/Source/FreeImage/PluginRAW.cpp >--- FreeImage/Source/FreeImage/PluginRAW.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/PluginRAW.cpp 2014-01-16 00:55:13.692904877 +0100 >@@ -19,7 +19,7 @@ > // Use at your own risk! > // ========================================================== > >-#include "../LibRawLite/libraw/libraw.h" >+#include <libraw/libraw.h> > > #include "FreeImage.h" > #include "Utilities.h" >diff -rupN FreeImage/Source/FreeImage/PluginTIFF.cpp FreeImage-new/Source/FreeImage/PluginTIFF.cpp >--- FreeImage/Source/FreeImage/PluginTIFF.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/PluginTIFF.cpp 2014-01-16 00:49:42.337523300 +0100 >@@ -37,9 +37,9 @@ > > #include "FreeImage.h" > #include "Utilities.h" >-#include "../LibTIFF4/tiffiop.h" >+#include <tiffio.h> > #include "../Metadata/FreeImageTag.h" >-#include "../OpenEXR/Half/half.h" >+#include <half.h> > > #include "FreeImageIO.h" > #include "PSDParser.h" >@@ -202,27 +202,9 @@ TIFFFdOpen(thandle_t handle, const char > _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc, > _tiffSizeProc, _tiffMapProc, _tiffUnmapProc); > >- // Warning: tif_fd is declared as 'int' currently (see libTIFF), >- // may result in incorrect file pointers inside libTIFF on >- // 64bit machines (sizeof(int) != sizeof(long)). >- // Needs to be fixed within libTIFF. >- if (tif) { >- tif->tif_fd = (long)handle; >- } >- > return tif; > } > >-/** >-Open a TIFF file for reading or writing >-@param name >-@param mode >-*/ >-TIFF* >-TIFFOpen(const char* name, const char* mode) { >- return 0; >-} >- > // ---------------------------------------------------------- > // TIFF library FreeImage-specific routines. > // ---------------------------------------------------------- >diff -rupN FreeImage/Source/FreeImage/ZLibInterface.cpp FreeImage-new/Source/FreeImage/ZLibInterface.cpp >--- FreeImage/Source/FreeImage/ZLibInterface.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage/ZLibInterface.cpp 2014-01-16 00:49:42.338523316 +0100 >@@ -19,10 +19,9 @@ > // Use at your own risk! > // ========================================================== > >-#include "../ZLib/zlib.h" >+#include <zlib.h> > #include "FreeImage.h" > #include "Utilities.h" >-#include "../ZLib/zutil.h" /* must be the last header because of error C3163 in VS2008 (_vsnprintf defined in stdio.h) */ > > /** > Compresses a source buffer into a target buffer, using the ZLib library. >@@ -115,7 +114,7 @@ FreeImage_ZLibGZip(BYTE *target, DWORD t > return 0; > case Z_OK: { > // patch header, setup crc and length (stolen from mod_trace_output) >- BYTE *p = target + 8; *p++ = 2; *p = OS_CODE; // xflags, os_code >+ BYTE *p = target + 8; *p++ = 2; *p = 0x03; // xflags, os_code (unix) > crc = crc32(crc, source, source_size); > memcpy(target + 4 + dest_len, &crc, 4); > memcpy(target + 8 + dest_len, &source_size, 4); >diff -rupN FreeImage/Source/FreeImage.h FreeImage-new/Source/FreeImage.h >--- FreeImage/Source/FreeImage.h 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/FreeImage.h 2014-01-16 00:49:42.338523316 +0100 >@@ -396,7 +396,12 @@ FI_ENUM(FREE_IMAGE_FORMAT) { > FIF_DDS = 24, > FIF_GIF = 25, > FIF_HDR = 26, >+/* The G3 fax format plugin is deliberately disabled in the Fedora build of >+ FreeImage as it requires that FreeImage uses a private copy of libtiff >+ which is a no no because of security reasons. */ >+#if 0 > FIF_FAXG3 = 27, >+#endif > FIF_SGI = 28, > FIF_EXR = 29, > FIF_J2K = 30, >@@ -456,6 +461,10 @@ FI_ENUM(FREE_IMAGE_DITHER) { > FID_BAYER16x16 = 6 // Bayer ordered dispersed dot dithering (order 4 dithering matrix) > }; > >+/* The FreeImage_JPEGTransform functions are deliberately disabled in the >+ Fedora build of FreeImage as they require that FreeImage uses a private copy >+ of libjpeg which is a no no because of security reasons. */ >+#if 0 > /** Lossless JPEG transformations > Constants used in FreeImage_JPEGTransform > */ >@@ -469,6 +478,7 @@ FI_ENUM(FREE_IMAGE_JPEG_OPERATION) { > FIJPEG_OP_ROTATE_180 = 6, // 180-degree rotation > FIJPEG_OP_ROTATE_270 = 7 // 270-degree clockwise (or 90 ccw) > }; >+#endif > > /** Tone mapping operators. > Constants used in FreeImage_ToneMapping. >@@ -704,7 +714,6 @@ typedef void (DLL_CALLCONV *FI_InitProc) > #define PNG_DEFAULT 0 > #define PNG_IGNOREGAMMA 1 // loading: avoid gamma correction > #define PNG_Z_BEST_SPEED 0x0001 // save using ZLib level 1 compression flag (default value is 6) >-#define PNG_Z_DEFAULT_COMPRESSION 0x0006 // save using ZLib level 6 compression flag (default recommended value) > #define PNG_Z_BEST_COMPRESSION 0x0009 // save using ZLib level 9 compression flag (default value is 6) > #define PNG_Z_NO_COMPRESSION 0x0100 // save without ZLib compression > #define PNG_INTERLACED 0x0200 // save using Adam7 interlacing (use | to combine with other save flags) >@@ -1048,8 +1057,13 @@ DLL_API FIBITMAP *DLL_CALLCONV FreeImage > DLL_API FIBITMAP *DLL_CALLCONV FreeImage_RotateEx(FIBITMAP *dib, double angle, double x_shift, double y_shift, double x_origin, double y_origin, BOOL use_mask); > DLL_API BOOL DLL_CALLCONV FreeImage_FlipHorizontal(FIBITMAP *dib); > DLL_API BOOL DLL_CALLCONV FreeImage_FlipVertical(FIBITMAP *dib); >+/* The FreeImage_JPEGTransform functions are deliberately disabled in the >+ Fedora build of FreeImage as they require that FreeImage uses a private copy >+ of libjpeg which is a no no because of security reasons. */ >+#if 0 > DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransform(const char *src_file, const char *dst_file, FREE_IMAGE_JPEG_OPERATION operation, BOOL perfect FI_DEFAULT(FALSE)); > DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformU(const wchar_t *src_file, const wchar_t *dst_file, FREE_IMAGE_JPEG_OPERATION operation, BOOL perfect FI_DEFAULT(FALSE)); >+#endif > > // upsampling / downsampling > DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Rescale(FIBITMAP *dib, int dst_width, int dst_height, FREE_IMAGE_FILTER filter); >@@ -1079,8 +1093,13 @@ DLL_API BOOL DLL_CALLCONV FreeImage_SetC > DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Copy(FIBITMAP *dib, int left, int top, int right, int bottom); > DLL_API BOOL DLL_CALLCONV FreeImage_Paste(FIBITMAP *dst, FIBITMAP *src, int left, int top, int alpha); > DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Composite(FIBITMAP *fg, BOOL useFileBkg FI_DEFAULT(FALSE), RGBQUAD *appBkColor FI_DEFAULT(NULL), FIBITMAP *bg FI_DEFAULT(NULL)); >+/* The FreeImage_JPEGTransform functions are deliberately disabled in the >+ Fedora build of FreeImage as they require that FreeImage uses a private copy >+ of libjpeg which is a no no because of security reasons. */ >+#if 0 > DLL_API BOOL DLL_CALLCONV FreeImage_JPEGCrop(const char *src_file, const char *dst_file, int left, int top, int right, int bottom); > DLL_API BOOL DLL_CALLCONV FreeImage_JPEGCropU(const wchar_t *src_file, const wchar_t *dst_file, int left, int top, int right, int bottom); >+#endif > DLL_API BOOL DLL_CALLCONV FreeImage_PreMultiplyWithAlpha(FIBITMAP *dib); > > // background filling routines >diff -rupN FreeImage/Source/Metadata/XTIFF.cpp FreeImage-new/Source/Metadata/XTIFF.cpp >--- FreeImage/Source/Metadata/XTIFF.cpp 2014-01-16 00:27:03.000000000 +0100 >+++ FreeImage-new/Source/Metadata/XTIFF.cpp 2014-01-16 00:49:42.338523316 +0100 >@@ -29,13 +29,22 @@ > #pragma warning (disable : 4786) // identifier was truncated to 'number' characters > #endif > >-#include "../LibTIFF4/tiffiop.h" >+#include <tiffio.h> > > #include "FreeImage.h" > #include "Utilities.h" > #include "FreeImageTag.h" > #include "FIRational.h" > >+/* >+ * Caveat emperor this is a private libtiff functions which we need, >+ * there is no better solution I'm afraid. >+ */ >+extern "C" >+{ >+ int _TIFFDataSize(TIFFDataType type); >+} >+ > // ---------------------------------------------------------- > // Extended TIFF Directory GEO Tag Support > // ---------------------------------------------------------- >@@ -205,7 +214,7 @@ tiff_write_geotiff_profile(TIFF *tif, FI > Read a single exif tag > */ > static BOOL >-tiff_read_exif_tag(TIFF *tif, TagLib::MDMODEL md_model, FIBITMAP *dib, TagLib& tagLib, TIFFDirectory *td, uint32 tag) { >+tiff_read_exif_tag(TIFF *tif, TagLib::MDMODEL md_model, FIBITMAP *dib, TagLib& tagLib, uint32 tag) { > const TIFFField *fip; > uint32 value_count; > int mem_alloc = 0; >@@ -226,8 +235,8 @@ tiff_read_exif_tag(TIFF *tif, TagLib::MD > return TRUE; > } > >- if(fip->field_passcount) { //<- "passcount" means "returns count" >- if (fip->field_readcount != TIFF_VARIABLE2) { //<- TIFF_VARIABLE2 means "uses LONG count" >+ if(TIFFFieldPassCount(fip)) { //<- "passcount" means "returns count" >+ if (TIFFFieldReadCount(fip) != TIFF_VARIABLE2) { //<- TIFF_VARIABLE2 means "uses LONG count" > > // assume TIFF_VARIABLE (uses SHORT count) > uint16 value_count16; >@@ -244,35 +253,37 @@ tiff_read_exif_tag(TIFF *tif, TagLib::MD > > // determine count > >- 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) { >- value_count = td->td_samplesperpixel; >+ } else if (TIFFFieldReadCount(fip) == TIFF_SPP) { >+ uint16 spp; >+ TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &spp); >+ value_count = spp; > } else { >- value_count = fip->field_readcount; >+ value_count = TIFFFieldReadCount(fip); > } > > // access fields as pointers to data > // (### determining this is NOT robust... and hardly can be. It is implemented looking the _TIFFVGetField code) > >- if(fip->field_tag == TIFFTAG_TRANSFERFUNCTION) { >+ if(TIFFFieldTag(fip) == TIFFTAG_TRANSFERFUNCTION) { > // reading this tag cause a bug probably located somewhere inside libtiff > return TRUE; > } > >- if ((fip->field_type == TIFF_ASCII >- || fip->field_readcount == TIFF_VARIABLE >- || fip->field_readcount == TIFF_VARIABLE2 >- || fip->field_readcount == TIFF_SPP >+ if ((TIFFFieldDataType(fip) == TIFF_ASCII >+ || TIFFFieldReadCount(fip) == TIFF_VARIABLE >+ || TIFFFieldReadCount(fip) == TIFF_VARIABLE2 >+ || TIFFFieldReadCount(fip) == TIFF_SPP > || value_count > 1) > >- && fip->field_tag != TIFFTAG_PAGENUMBER >- && fip->field_tag != TIFFTAG_HALFTONEHINTS >- && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING >- && fip->field_tag != TIFFTAG_DOTRANGE >+ && TIFFFieldTag(fip) != TIFFTAG_PAGENUMBER >+ && TIFFFieldTag(fip) != TIFFTAG_HALFTONEHINTS >+ && TIFFFieldTag(fip) != TIFFTAG_YCBCRSUBSAMPLING >+ && TIFFFieldTag(fip) != TIFFTAG_DOTRANGE > >- && fip->field_tag != TIFFTAG_BITSPERSAMPLE //<- these two are tricky - >- && fip->field_tag != TIFFTAG_COMPRESSION //<- they are defined as TIFF_VARIABLE but in reality return a single value >+ && TIFFFieldTag(fip) != TIFFTAG_BITSPERSAMPLE //<- these two are tricky: >+ && TIFFFieldTag(fip) != TIFFTAG_COMPRESSION //<- they are defined as TIFF_VARIABLE but in reality return a single value > ) { > if(TIFFGetField(tif, tag, &raw_data) != 1) { > return TRUE; >@@ -281,7 +292,7 @@ tiff_read_exif_tag(TIFF *tif, TagLib::MD > > // access fields as values > >- const int value_size = _TIFFDataSize(fip->field_type); >+ const int value_size = _TIFFDataSize((TIFFFieldDataType(fip))); > raw_data = _TIFFmalloc(value_size * value_count); > mem_alloc = 1; > int ok = FALSE; >@@ -302,7 +313,7 @@ tiff_read_exif_tag(TIFF *tif, TagLib::MD > break; > */ > default: >- FreeImage_OutputMessageProc(FIF_TIFF, "Unimplemented variable number of parameters for Tiff Tag %s", fip->field_name); >+ FreeImage_OutputMessageProc(FIF_TIFF, "Unimplemented variable number of parameters for Tiff Tag %s", TIFFFieldName(fip)); > break; > } > if(ok != 1) { >@@ -325,59 +336,59 @@ tiff_read_exif_tag(TIFF *tif, TagLib::MD > 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; >@@ -392,7 +403,7 @@ tiff_read_exif_tag(TIFF *tif, TagLib::MD > 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); >@@ -409,7 +420,7 @@ tiff_read_exif_tag(TIFF *tif, TagLib::MD > 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); >@@ -418,42 +429,42 @@ tiff_read_exif_tag(TIFF *tif, TagLib::MD > > 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; > > case TIFF_LONG8: // BigTIFF 64-bit unsigned integer > FreeImage_SetTagType(fitag, FIDT_LONG8); >- 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_IFD8: // BigTIFF 64-bit unsigned integer (offset) > FreeImage_SetTagType(fitag, FIDT_IFD8); >- 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_SLONG8: // BigTIFF 64-bit signed integer > FreeImage_SetTagType(fitag, FIDT_SLONG8); >- 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; > > default: { > // remember that raw_data = _TIFFmalloc(value_size * value_count); >- const int value_size = _TIFFDataSize(fip->field_type); >+ const int value_size = _TIFFDataSize(TIFFFieldDataType(fip)); > size_t length = value_size * value_count; > FreeImage_SetTagType(fitag, FIDT_ASCII); > FreeImage_SetTagLength(fitag, (DWORD)length); >@@ -489,16 +500,16 @@ tiff_read_exif_tags(TIFF *tif, TagLib::M > > TagLib& tagLib = TagLib::instance(); > >- TIFFDirectory *td = &tif->tif_dir; >- > count = (short) TIFFGetTagListCount(tif); > for(i = 0; i < count; i++) { > uint32 tag = TIFFGetTagListEntry(tif, i); > // read the tag >- if (!tiff_read_exif_tag(tif, md_model, dib, tagLib, td, tag)) >+ if (!tiff_read_exif_tag(tif, md_model, dib, tagLib, tag)) > return FALSE; > } > >+/* Disabled for Fedora as it is using internal library structures. */ >+#if 0 > // we want to know values of standard tags too!! > > // loop over all Core Directory Tags >@@ -533,13 +544,14 @@ tiff_read_exif_tags(TIFF *tif, TagLib::M > > // process *all* other tags (some will be ignored) > >- tiff_read_exif_tag(tif, md_model, dib, tagLib, td, fld->field_tag); >+ tiff_read_exif_tag(tif, md_model, dib, tagLib, fld->field_tag); > > > lastTag = fld->field_tag; > } > > } >+#endif > > return TRUE; > >@@ -611,6 +623,10 @@ Write all known exif tags > */ > BOOL > tiff_write_exif_tags(TIFF *tif, TagLib::MDMODEL md_model, FIBITMAP *dib) { >+/* Disabled for Fedora as it is using internal library structures. Siberia >+ * winter on upstream developer! :-) */ >+ return FALSE; >+#if 0 > char defaultKey[16]; > > // only EXIF_MAIN so far >@@ -662,4 +678,5 @@ tiff_write_exif_tags(TIFF *tif, TagLib:: > } > > return TRUE; >+#endif > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 501993
: 850745