initial import

This commit is contained in:
2025-06-22 20:39:04 -05:00
commit f8a70886f0
3428 changed files with 302546 additions and 0 deletions

68
freeimage/PKGBUILD Normal file
View File

@@ -0,0 +1,68 @@
# Maintainer: Jesus E. <heckyel@riseup.net>
pkgname=freeimage
pkgver=3.18.0
_debver=$pkgver
_debrel=6
pkgrel=3
pkgdesc="Free software library project for developers who would like to support popular graphics image formats"
arch=('i686' 'x86_64')
license=('GPL-2' 'custom:FIPL')
url='https://freeimage.sourceforge.net/'
depends=('libjpeg-turbo' 'openjpeg2' 'libtiff' 'libraw')
makedepends=('mesa' 'glu' 'quilt')
source=("https://downloads.sourceforge.net/project/freeimage/Source%20Distribution/${pkgver}/FreeImage${pkgver//./}.zip"
"https://deb.debian.org/debian/pool/main/f/freeimage/freeimage_${_debver}+ds2-${_debrel}+deb11u1.debian.tar.xz"
"fix-build.patch")
sha512sums=('9d9cc7e2d57552c3115e277aeb036e0455204d389026b17a3f513da5be1fd595421655488bb1ec2f76faebed66049119ca55e26e2a6d37024b3fb7ef36ad4818'
'22f9088f0a961329c245fab6e641ddd9ecbef8f83a344cdef3faed6df63415484e4ffdccd676464a6e1690f4eab286928c8e58348c90ea0032a86a472c6d2cd4'
'ae113ded05f94b15168dabc7c8997a26e4136000792144da390a6ef570b367e861163041e772b2705daf1265ef0e34cee7fae743bfce5a54a035ed0817d369d8')
prepare() {
cd FreeImage
if [[ ${pkgver%.*} = ${_debver%.*} ]]; then
# Debian patches
export QUILT_PATCHES=debian/patches
export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index'
export QUILT_DIFF_ARGS='--no-timestamps'
mv "$srcdir"/debian .
quilt push -av
fi
rm Source/FreeImage/GetType.cpp
rm -r Source/Lib* Source/ZLib Source/OpenEXR
# can't be built due to private headers
> Source/FreeImage/PluginG3.cpp
> Source/FreeImageToolkit/JPEGTransform.cpp
}
build() {
cd FreeImage
sh gensrclist.sh
sh genfipsrclist.sh
# change build-flags for compiling
if [[ $CARCH = "i686" ]]; then
export CXXFLAGS="-Og"
export CFLAGS="-Og"
elif [[ $CARCH = "x86_64" ]]; then
export CXXFLAGS="-fPIC"
export CFLAGS="-fPIC"
fi
# additional patch before build, removal of non-free parts
patch -Np1 -i "${srcdir}"/fix-build.patch
make -f Makefile.gnu
make -f Makefile.fip
}
package() {
cd FreeImage
make -f Makefile.gnu DESTDIR="${pkgdir}" install
make -f Makefile.fip DESTDIR="${pkgdir}" install
install -Dm644 "${srcdir}"/FreeImage/license-{fi,gplv2}.txt -t "${pkgdir}"/usr/share/licenses/${pkgname}
}

345
freeimage/fix-build.patch Normal file
View File

@@ -0,0 +1,345 @@
--- a/Makefile.fip 2022-09-13 14:23:00.000000000 +0200
+++ b/Makefile.fip 2022-09-13 14:28:02.177207076 +0200
@@ -11,7 +11,7 @@
# Converts cr/lf to just lf
DOS2UNIX = dos2unix
-LIBRARIES = -lstdc++ -ljxrglue $(shell pkg-config --libs libjpeg libopenjp2 libpng libraw libtiff-4 libwebpmux OpenEXR zlib) -lm
+LIBRARIES = -lstdc++ $(shell pkg-config --libs libjpeg libopenjp2 libpng libraw zlib) -lm
MODULES = $(SRCS:.c=.o)
MODULES := $(MODULES:.cpp=.o)
--- a/Makefile.gnu 2022-09-13 14:23:00.000000000 +0200
+++ b/Makefile.gnu 2022-09-13 14:27:40.215833103 +0200
@@ -14,7 +14,7 @@
# See Bug-Debian #845279
PKG_CONFIG ?= pkg-config
-LIBRARIES = -lstdc++ -ljxrglue $(shell $(PKG_CONFIG) --libs libjpeg libopenjp2 libpng libraw libtiff-4 libwebpmux OpenEXR zlib) -lm
+LIBRARIES = -lstdc++ $(shell $(PKG_CONFIG) --libs libjpeg libopenjp2 libpng libraw zlib) -lm
MODULES = $(SRCS:.c=.o)
MODULES := $(MODULES:.cpp=.o)
@@ -24,14 +24,14 @@
override CFLAGS += -DOPJ_STATIC
# LibRaw
override CFLAGS += -DNO_LCMS
-# LibJXR
+
override CFLAGS += -DDISABLE_PERF_MEASUREMENT -D__ANSI__
-override CFLAGS += $(INCLUDE) -I/usr/include/jxrlib $(shell $(PKG_CONFIG) --cflags libjpeg libopenjp2 libpng libraw libtiff-4 libwebpmux OpenEXR zlib)
+override CFLAGS += $(INCLUDE) $(shell $(PKG_CONFIG) --cflags libjpeg libopenjp2 libpng libraw zlib)
CXXFLAGS ?= -O3 -fPIC
override CXXFLAGS += -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy
-# LibJXR
+
override CXXFLAGS += -D__ANSI__
-override CXXFLAGS += $(INCLUDE) -I/usr/include/jxrlib $(shell $(PKG_CONFIG) --cflags libjpeg libopenjp2 libpng libraw libtiff-4 libwebpmux OpenEXR zlib)
+override CXXFLAGS += $(INCLUDE) $(shell $(PKG_CONFIG) --cflags libjpeg libopenjp2 libpng libraw zlib)
TARGET = freeimage
STATICLIB = lib$(TARGET).a
--- a/Makefile.srcs 2024-12-19 19:33:07.554120559 +0100
+++ b/Makefile.srcs 2024-12-19 19:36:01.988856257 +0100
@@ -1,5 +1,5 @@
VER_MAJOR = 3
VER_MINOR = 18.0
-SRCS = Source/FreeImage/BitmapAccess.cpp Source/FreeImage/CacheFile.cpp Source/FreeImage/ColorLookup.cpp Source/FreeImage/Conversion.cpp Source/FreeImage/Conversion16_555.cpp Source/FreeImage/Conversion16_565.cpp Source/FreeImage/Conversion24.cpp Source/FreeImage/Conversion32.cpp Source/FreeImage/Conversion4.cpp Source/FreeImage/Conversion8.cpp Source/FreeImage/ConversionFloat.cpp Source/FreeImage/ConversionRGB16.cpp Source/FreeImage/ConversionRGBA16.cpp Source/FreeImage/ConversionRGBAF.cpp Source/FreeImage/ConversionRGBF.cpp Source/FreeImage/ConversionType.cpp Source/FreeImage/ConversionUINT16.cpp Source/FreeImage/FreeImage.cpp Source/FreeImage/FreeImageC.c Source/FreeImage/FreeImageIO.cpp Source/FreeImage/Halftoning.cpp Source/FreeImage/J2KHelper.cpp Source/FreeImage/LFPQuantizer.cpp Source/FreeImage/MNGHelper.cpp Source/FreeImage/MemoryIO.cpp Source/FreeImage/MultiPage.cpp Source/FreeImage/NNQuantizer.cpp Source/FreeImage/PSDParser.cpp Source/FreeImage/PixelAccess.cpp Source/FreeImage/Plugin.cpp Source/FreeImage/PluginBMP.cpp Source/FreeImage/PluginCUT.cpp Source/FreeImage/PluginDDS.cpp Source/FreeImage/PluginEXR.cpp Source/FreeImage/PluginG3.cpp Source/FreeImage/PluginGIF.cpp Source/FreeImage/PluginHDR.cpp Source/FreeImage/PluginICO.cpp Source/FreeImage/PluginIFF.cpp Source/FreeImage/PluginJ2K.cpp Source/FreeImage/PluginJNG.cpp Source/FreeImage/PluginJP2.cpp Source/FreeImage/PluginJPEG.cpp Source/FreeImage/PluginJXR.cpp Source/FreeImage/PluginKOALA.cpp Source/FreeImage/PluginMNG.cpp Source/FreeImage/PluginPCD.cpp Source/FreeImage/PluginPCX.cpp Source/FreeImage/PluginPFM.cpp Source/FreeImage/PluginPICT.cpp Source/FreeImage/PluginPNG.cpp Source/FreeImage/PluginPNM.cpp Source/FreeImage/PluginPSD.cpp Source/FreeImage/PluginRAS.cpp Source/FreeImage/PluginRAW.cpp Source/FreeImage/PluginSGI.cpp Source/FreeImage/PluginTARGA.cpp Source/FreeImage/PluginTIFF.cpp Source/FreeImage/PluginWBMP.cpp Source/FreeImage/PluginWebP.cpp Source/FreeImage/PluginXBM.cpp Source/FreeImage/PluginXPM.cpp Source/FreeImage/TIFFLogLuv.cpp Source/FreeImage/ToneMapping.cpp Source/FreeImage/WuQuantizer.cpp Source/FreeImage/ZLibInterface.cpp Source/FreeImage/tmoColorConvert.cpp Source/FreeImage/tmoDrago03.cpp Source/FreeImage/tmoFattal02.cpp Source/FreeImage/tmoReinhard05.cpp Source/FreeImageToolkit/BSplineRotate.cpp Source/FreeImageToolkit/Background.cpp Source/FreeImageToolkit/Channels.cpp Source/FreeImageToolkit/ClassicRotate.cpp Source/FreeImageToolkit/Colors.cpp Source/FreeImageToolkit/CopyPaste.cpp Source/FreeImageToolkit/Display.cpp Source/FreeImageToolkit/Flip.cpp Source/FreeImageToolkit/MultigridPoissonSolver.cpp Source/FreeImageToolkit/Rescale.cpp Source/FreeImageToolkit/Resize.cpp Source/Metadata/Exif.cpp Source/Metadata/FIRational.cpp Source/Metadata/FreeImageTag.cpp Source/Metadata/IPTC.cpp Source/Metadata/TagConversion.cpp Source/Metadata/TagLib.cpp Source/Metadata/XTIFF.cpp
+SRCS = Source/FreeImage/BitmapAccess.cpp Source/FreeImage/CacheFile.cpp Source/FreeImage/ColorLookup.cpp Source/FreeImage/Conversion.cpp Source/FreeImage/Conversion16_555.cpp Source/FreeImage/Conversion16_565.cpp Source/FreeImage/Conversion24.cpp Source/FreeImage/Conversion32.cpp Source/FreeImage/Conversion4.cpp Source/FreeImage/Conversion8.cpp Source/FreeImage/ConversionFloat.cpp Source/FreeImage/ConversionRGB16.cpp Source/FreeImage/ConversionRGBA16.cpp Source/FreeImage/ConversionRGBAF.cpp Source/FreeImage/ConversionRGBF.cpp Source/FreeImage/ConversionType.cpp Source/FreeImage/ConversionUINT16.cpp Source/FreeImage/FreeImage.cpp Source/FreeImage/FreeImageC.c Source/FreeImage/FreeImageIO.cpp Source/FreeImage/GetType.cpp Source/FreeImage/Halftoning.cpp Source/FreeImage/J2KHelper.cpp Source/FreeImage/LFPQuantizer.cpp Source/FreeImage/MNGHelper.cpp Source/FreeImage/MemoryIO.cpp Source/FreeImage/MultiPage.cpp Source/FreeImage/NNQuantizer.cpp Source/FreeImage/PSDParser.cpp Source/FreeImage/PixelAccess.cpp Source/FreeImage/Plugin.cpp Source/FreeImage/PluginBMP.cpp Source/FreeImage/PluginCUT.cpp Source/FreeImage/PluginDDS.cpp Source/FreeImage/PluginG3.cpp Source/FreeImage/PluginGIF.cpp Source/FreeImage/PluginHDR.cpp Source/FreeImage/PluginICO.cpp Source/FreeImage/PluginIFF.cpp Source/FreeImage/PluginJ2K.cpp Source/FreeImage/PluginJNG.cpp Source/FreeImage/PluginJP2.cpp Source/FreeImage/PluginJPEG.cpp Source/FreeImage/PluginKOALA.cpp Source/FreeImage/PluginMNG.cpp Source/FreeImage/PluginPCD.cpp Source/FreeImage/PluginPCX.cpp Source/FreeImage/PluginPFM.cpp Source/FreeImage/PluginPICT.cpp Source/FreeImage/PluginPNG.cpp Source/FreeImage/PluginPNM.cpp Source/FreeImage/PluginPSD.cpp Source/FreeImage/PluginRAS.cpp Source/FreeImage/PluginRAW.cpp Source/FreeImage/PluginSGI.cpp Source/FreeImage/PluginTARGA.cpp Source/FreeImage/PluginWBMP.cpp Source/FreeImage/PluginXBM.cpp Source/FreeImage/PluginXPM.cpp Source/FreeImage/ToneMapping.cpp Source/FreeImage/WuQuantizer.cpp Source/FreeImage/ZLibInterface.cpp Source/FreeImage/tmoColorConvert.cpp Source/FreeImage/tmoDrago03.cpp Source/FreeImage/tmoFattal02.cpp Source/FreeImage/tmoReinhard05.cpp Source/FreeImageToolkit/BSplineRotate.cpp Source/FreeImageToolkit/Background.cpp Source/FreeImageToolkit/Channels.cpp Source/FreeImageToolkit/ClassicRotate.cpp Source/FreeImageToolkit/Colors.cpp Source/FreeImageToolkit/CopyPaste.cpp Source/FreeImageToolkit/Display.cpp Source/FreeImageToolkit/Flip.cpp Source/FreeImageToolkit/MultigridPoissonSolver.cpp Source/FreeImageToolkit/Rescale.cpp Source/FreeImageToolkit/Resize.cpp Source/Metadata/Exif.cpp Source/Metadata/FIRational.cpp Source/Metadata/FreeImageTag.cpp Source/Metadata/IPTC.cpp Source/Metadata/TagConversion.cpp Source/Metadata/TagLib.cpp
INCLS = Source/CacheFile.h Source/FreeImage.h Source/FreeImage/J2KHelper.h Source/FreeImage/PSDParser.h Source/FreeImageIO.h Source/FreeImageToolkit/Filters.h Source/FreeImageToolkit/Resize.h Source/MapIntrospector.h Source/Metadata/FIRational.h Source/Metadata/FreeImageTag.h Source/Plugin.h Source/Quantizers.h Source/ToneMapping.h Source/Utilities.h
-INCLUDE = -I. -ISource -ISource/Metadata -ISource/FreeImageToolkit -ISource/LibJPEG -ISource/LibPNG -ISource/LibTIFF4 -ISource/ZLib -ISource/LibOpenJPEG -ISource/OpenEXR -ISource/OpenEXR/Half -ISource/OpenEXR/Iex -ISource/OpenEXR/IlmImf -ISource/OpenEXR/IlmThread -ISource/OpenEXR/Imath -ISource/OpenEXR/IexMath -ISource/LibRawLite -ISource/LibRawLite/dcraw -ISource/LibRawLite/internal -ISource/LibRawLite/libraw -ISource/LibRawLite/src -ISource/LibWebP -ISource/LibJXR -ISource/LibJXR/common/include -ISource/LibJXR/image/sys -ISource/LibJXR/jxrgluelib
+INCLUDE = -I. -ISource -ISource/Metadata -ISource/FreeImageToolkit -ISource/LibJPEG -ISource/LibPNG -ISource/ZLib -ISource/LibOpenJPEG -ISource/LibRawLite -ISource/LibRawLite/dcraw -ISource/LibRawLite/internal -ISource/LibRawLite/libraw -ISource/LibRawLite/src
--- a/Source/FreeImage/Plugin.cpp 2017-02-18 16:09:28.000000000 +0100
+++ b/Source/FreeImage/Plugin.cpp 2024-12-19 19:03:31.000000000 +0100
@@ -254,27 +254,20 @@
s_plugins->AddNode(InitPNM, NULL, "PPMRAW", "Portable Pixelmap (RAW)", "ppm", "^P6");
s_plugins->AddNode(InitRAS);
s_plugins->AddNode(InitTARGA);
- s_plugins->AddNode(InitTIFF);
s_plugins->AddNode(InitWBMP);
s_plugins->AddNode(InitPSD);
s_plugins->AddNode(InitCUT);
s_plugins->AddNode(InitXBM);
s_plugins->AddNode(InitXPM);
s_plugins->AddNode(InitDDS);
- s_plugins->AddNode(InitGIF);
- s_plugins->AddNode(InitHDR);
- s_plugins->AddNode(InitG3);
+ s_plugins->AddNode(InitGIF);
+ s_plugins->AddNode(InitHDR);
s_plugins->AddNode(InitSGI);
- s_plugins->AddNode(InitEXR);
s_plugins->AddNode(InitJ2K);
s_plugins->AddNode(InitJP2);
s_plugins->AddNode(InitPFM);
s_plugins->AddNode(InitPICT);
s_plugins->AddNode(InitRAW);
- s_plugins->AddNode(InitWEBP);
-#if !(defined(_MSC_VER) && (_MSC_VER <= 1310))
- s_plugins->AddNode(InitJXR);
-#endif // unsupported by MS Visual Studio 2003 !!!
// external plugin initialization
--- a/Source/FreeImage.h 2024-12-19 19:05:24.238963346 +0100
+++ b/Source/FreeImage.h 2024-12-19 19:04:39.000000000 +0100
@@ -403,7 +403,6 @@
FIF_PPMRAW = 15,
FIF_RAS = 16,
FIF_TARGA = 17,
- FIF_TIFF = 18,
FIF_WBMP = 19,
FIF_PSD = 20,
FIF_CUT = 21,
@@ -412,16 +411,12 @@
FIF_DDS = 24,
FIF_GIF = 25,
FIF_HDR = 26,
- FIF_FAXG3 = 27,
FIF_SGI = 28,
- FIF_EXR = 29,
FIF_J2K = 30,
FIF_JP2 = 31,
FIF_PFM = 32,
FIF_PICT = 33,
- FIF_RAW = 34,
- FIF_WEBP = 35,
- FIF_JXR = 36
+ FIF_RAW = 34
};
/** Image type used in FreeImage.
@@ -678,15 +673,6 @@
#define BMP_SAVE_RLE 1
#define CUT_DEFAULT 0
#define DDS_DEFAULT 0
-#define EXR_DEFAULT 0 //! save data as half with piz-based wavelet compression
-#define EXR_FLOAT 0x0001 //! save data as float instead of as half (not recommended)
-#define EXR_NONE 0x0002 //! save with no compression
-#define EXR_ZIP 0x0004 //! save with zlib compression, in blocks of 16 scan lines
-#define EXR_PIZ 0x0008 //! save with piz-based wavelet compression
-#define EXR_PXR24 0x0010 //! save with lossy 24-bit float compression
-#define EXR_B44 0x0020 //! save with lossy 44% float compression - goes to 22% when combined with EXR_LC
-#define EXR_LC 0x0040 //! save images with one luminance and two chroma channels, rather than as RGB (lossy compression)
-#define FAXG3_DEFAULT 0
#define GIF_DEFAULT 0
#define GIF_LOAD256 1 //! load the image as a 256 color image with ununsed palette entries, if it's 16 or 2 color
#define GIF_PLAYBACK 2 //! 'Play' the GIF to generate each frame (as 32bpp) instead of returning raw frame data when loading
@@ -750,25 +736,9 @@
#define TARGA_DEFAULT 0
#define TARGA_LOAD_RGB888 1 //! if set the loader converts RGB555 and ARGB8888 -> RGB888.
#define TARGA_SAVE_RLE 2 //! if set, the writer saves with RLE compression
-#define TIFF_DEFAULT 0
-#define TIFF_CMYK 0x0001 //! reads/stores tags for separated CMYK (use | to combine with compression flags)
-#define TIFF_PACKBITS 0x0100 //! save using PACKBITS compression
-#define TIFF_DEFLATE 0x0200 //! save using DEFLATE compression (a.k.a. ZLIB compression)
-#define TIFF_ADOBE_DEFLATE 0x0400 //! save using ADOBE DEFLATE compression
-#define TIFF_NONE 0x0800 //! save without any compression
-#define TIFF_CCITTFAX3 0x1000 //! save using CCITT Group 3 fax encoding
-#define TIFF_CCITTFAX4 0x2000 //! save using CCITT Group 4 fax encoding
-#define TIFF_LZW 0x4000 //! save using LZW compression
-#define TIFF_JPEG 0x8000 //! save using JPEG compression
-#define TIFF_LOGLUV 0x10000 //! save using LogLuv compression
#define WBMP_DEFAULT 0
#define XBM_DEFAULT 0
#define XPM_DEFAULT 0
-#define WEBP_DEFAULT 0 //! save with good quality (75:1)
-#define WEBP_LOSSLESS 0x100 //! save in lossless mode
-#define JXR_DEFAULT 0 //! save with quality 80 and no chroma subsampling (4:4:4)
-#define JXR_LOSSLESS 0x0064 //! save lossless
-#define JXR_PROGRESSIVE 0x2000 //! save as a progressive-JXR (use | to combine with other save flags)
// Background filling options ---------------------------------------------------------
// Constants used in FreeImage_FillBackground and FreeImage_EnlargeCanvas
--- a/Source/Plugin.h 2017-02-18 16:09:28.000000000 +0100
+++ b/Source/Plugin.h 2024-12-19 19:04:54.000000000 +0100
@@ -122,23 +122,18 @@
void DLL_CALLCONV InitPSD(Plugin *plugin, int format_id);
void DLL_CALLCONV InitRAS(Plugin *plugin, int format_id);
void DLL_CALLCONV InitTARGA(Plugin *plugin, int format_id);
-void DLL_CALLCONV InitTIFF(Plugin *plugin, int format_id);
void DLL_CALLCONV InitWBMP(Plugin *plugin, int format_id);
void DLL_CALLCONV InitXBM(Plugin *plugin, int format_id);
void DLL_CALLCONV InitXPM(Plugin *plugin, int format_id);
void DLL_CALLCONV InitDDS(Plugin *plugin, int format_id);
void DLL_CALLCONV InitGIF(Plugin *plugin, int format_id);
void DLL_CALLCONV InitHDR(Plugin *plugin, int format_id);
-void DLL_CALLCONV InitG3(Plugin *plugin, int format_id);
void DLL_CALLCONV InitSGI(Plugin *plugin, int format_id);
-void DLL_CALLCONV InitEXR(Plugin *plugin, int format_id);
void DLL_CALLCONV InitJ2K(Plugin *plugin, int format_id);
void DLL_CALLCONV InitJP2(Plugin *plugin, int format_id);
void DLL_CALLCONV InitPFM(Plugin *plugin, int format_id);
void DLL_CALLCONV InitPICT(Plugin *plugin, int format_id);
void DLL_CALLCONV InitRAW(Plugin *plugin, int format_id);
void DLL_CALLCONV InitJNG(Plugin *plugin, int format_id);
-void DLL_CALLCONV InitWEBP(Plugin *plugin, int format_id);
-void DLL_CALLCONV InitJXR(Plugin *plugin, int format_id);
#endif //!PLUGIN_H
--- /dev/null 2024-11-01 21:59:53.158793231 +0100
+++ b/Source/FreeImage/GetType.cpp 2024-12-19 19:30:44.660241140 +0100
@@ -0,0 +1,163 @@
+// ==========================================================
+// GetType / Validate
+//
+// Design and implementation by
+// - Floris van den Berg (flvdberg@wxs.nl)
+// - Hervé Drolon (drolon@infonie.fr)
+//
+// This file is part of FreeImage 3
+//
+// COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
+// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
+// THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
+// OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
+// CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
+// THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
+// SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
+// PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
+// THIS DISCLAIMER.
+//
+// Use at your own risk!
+// ==========================================================
+
+#ifdef _MSC_VER
+#pragma warning (disable : 4786) // identifier was truncated to 'number' characters
+#endif
+
+#include "FreeImage.h"
+#include "Utilities.h"
+#include "FreeImageIO.h"
+#include "Plugin.h"
+
+// =====================================================================
+// Generic stream file type access
+// =====================================================================
+
+FREE_IMAGE_FORMAT DLL_CALLCONV
+FreeImage_GetFileTypeFromHandle(FreeImageIO *io, fi_handle handle, int size) {
+ if (handle != NULL) {
+ int fif_count = FreeImage_GetFIFCount();
+
+ for (int i = 0; i < fif_count; ++i) {
+ FREE_IMAGE_FORMAT fif = (FREE_IMAGE_FORMAT)i;
+ if (FreeImage_ValidateFIF(fif, io, handle)) {
+ // many camera raw files use a TIFF signature ...
+ // ... try to revalidate against FIF_RAW (even if it breaks the code genericity)
+ if (FreeImage_ValidateFIF(FIF_RAW, io, handle)) {
+ return FIF_RAW;
+ }
+ return fif;
+ }
+ }
+ }
+
+ return FIF_UNKNOWN;
+}
+
+// =====================================================================
+// File stream file type access
+// =====================================================================
+
+FREE_IMAGE_FORMAT DLL_CALLCONV
+FreeImage_GetFileType(const char *filename, int size) {
+ FreeImageIO io;
+ SetDefaultIO(&io);
+
+ FILE *handle = fopen(filename, "rb");
+
+ if (handle != NULL) {
+ FREE_IMAGE_FORMAT format = FreeImage_GetFileTypeFromHandle(&io, (fi_handle)handle, size);
+
+ fclose(handle);
+
+ return format;
+ }
+
+ return FIF_UNKNOWN;
+}
+
+FREE_IMAGE_FORMAT DLL_CALLCONV
+FreeImage_GetFileTypeU(const wchar_t *filename, int size) {
+#ifdef _WIN32
+ FreeImageIO io;
+ SetDefaultIO(&io);
+ FILE *handle = _wfopen(filename, L"rb");
+
+ if (handle != NULL) {
+ FREE_IMAGE_FORMAT format = FreeImage_GetFileTypeFromHandle(&io, (fi_handle)handle, size);
+
+ fclose(handle);
+
+ return format;
+ }
+#endif
+ return FIF_UNKNOWN;
+}
+
+// =====================================================================
+// Memory stream file type access
+// =====================================================================
+
+FREE_IMAGE_FORMAT DLL_CALLCONV
+FreeImage_GetFileTypeFromMemory(FIMEMORY *stream, int size) {
+ FreeImageIO io;
+ SetMemoryIO(&io);
+
+ if (stream != NULL) {
+ return FreeImage_GetFileTypeFromHandle(&io, (fi_handle)stream, size);
+ }
+
+ return FIF_UNKNOWN;
+}
+
+// --------------------------------------------------------------------------
+
+BOOL DLL_CALLCONV
+FreeImage_ValidateFromHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle) {
+ return FreeImage_ValidateFIF(fif, io, handle);
+}
+
+BOOL DLL_CALLCONV
+FreeImage_Validate(FREE_IMAGE_FORMAT fif, const char *filename) {
+ FreeImageIO io;
+ SetDefaultIO(&io);
+
+ FILE *handle = fopen(filename, "rb");
+
+ if (handle != NULL) {
+ BOOL bIsValidFIF = FreeImage_ValidateFromHandle(fif, &io, (fi_handle)handle);
+ fclose(handle);
+ return bIsValidFIF;
+ }
+
+ return FALSE;
+}
+
+BOOL DLL_CALLCONV
+FreeImage_ValidateU(FREE_IMAGE_FORMAT fif, const wchar_t *filename) {
+#ifdef _WIN32
+ FreeImageIO io;
+ SetDefaultIO(&io);
+ FILE *handle = _wfopen(filename, L"rb");
+
+ if (handle != NULL) {
+ BOOL bIsValidFIF = FreeImage_ValidateFromHandle(fif, &io, (fi_handle)handle);
+ fclose(handle);
+ return bIsValidFIF;
+ }
+#endif
+ return FALSE;
+}
+
+BOOL DLL_CALLCONV
+FreeImage_ValidateFromMemory(FREE_IMAGE_FORMAT fif, FIMEMORY *stream) {
+ FreeImageIO io;
+ SetMemoryIO(&io);
+
+ if (stream != NULL) {
+ BOOL bIsValidFIF = FreeImage_ValidateFromHandle(fif, &io, (fi_handle)stream);
+ return bIsValidFIF;
+ }
+
+ return FALSE;
+}