|
|
|
@ -47,8 +47,8 @@
|
|
|
|
|
// Version information ------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
#define FREEIMAGE_MAJOR_VERSION 3
|
|
|
|
|
#define FREEIMAGE_MINOR_VERSION 10
|
|
|
|
|
#define FREEIMAGE_RELEASE_SERIAL 0
|
|
|
|
|
#define FREEIMAGE_MINOR_VERSION 13
|
|
|
|
|
#define FREEIMAGE_RELEASE_SERIAL 1
|
|
|
|
|
|
|
|
|
|
// Compiler options ---------------------------------------------------------
|
|
|
|
|
|
|
|
|
@ -98,7 +98,7 @@
|
|
|
|
|
// This really only affects 24 and 32 bit formats, the rest are always RGB order.
|
|
|
|
|
#define FREEIMAGE_COLORORDER_BGR 0
|
|
|
|
|
#define FREEIMAGE_COLORORDER_RGB 1
|
|
|
|
|
#if defined(__APPLE__) || defined(FREEIMAGE_BIGENDIAN)
|
|
|
|
|
#if defined(FREEIMAGE_BIGENDIAN)
|
|
|
|
|
#define FREEIMAGE_COLORORDER FREEIMAGE_COLORORDER_RGB
|
|
|
|
|
#else
|
|
|
|
|
#define FREEIMAGE_COLORORDER FREEIMAGE_COLORORDER_BGR
|
|
|
|
@ -128,6 +128,10 @@ FI_STRUCT (FIMULTIBITMAP) { void *data; };
|
|
|
|
|
|
|
|
|
|
// Types used in the library (directly copied from Windows) -----------------
|
|
|
|
|
|
|
|
|
|
#if defined(__MINGW32__) && defined(_WINDOWS_H)
|
|
|
|
|
#define _WINDOWS_ // prevent a bug in MinGW32
|
|
|
|
|
#endif // __MINGW32__
|
|
|
|
|
|
|
|
|
|
#ifndef _WINDOWS_
|
|
|
|
|
#define _WINDOWS_
|
|
|
|
|
|
|
|
|
@ -410,7 +414,10 @@ FI_ENUM(FREE_IMAGE_FORMAT) {
|
|
|
|
|
FIF_SGI = 28,
|
|
|
|
|
FIF_EXR = 29,
|
|
|
|
|
FIF_J2K = 30,
|
|
|
|
|
FIF_JP2 = 31
|
|
|
|
|
FIF_JP2 = 31,
|
|
|
|
|
FIF_PFM = 32,
|
|
|
|
|
FIF_PICT = 33,
|
|
|
|
|
FIF_RAW = 34
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/** Image type used in FreeImage.
|
|
|
|
@ -609,10 +616,10 @@ FI_STRUCT (FIMEMORY) { void *data; };
|
|
|
|
|
#ifndef PLUGINS
|
|
|
|
|
#define PLUGINS
|
|
|
|
|
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_FormatProc) ();
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_DescriptionProc) ();
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_ExtensionListProc) ();
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_RegExprProc) ();
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_FormatProc)(void);
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_DescriptionProc)(void);
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_ExtensionListProc)(void);
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_RegExprProc)(void);
|
|
|
|
|
typedef void *(DLL_CALLCONV *FI_OpenProc)(FreeImageIO *io, fi_handle handle, BOOL read);
|
|
|
|
|
typedef void (DLL_CALLCONV *FI_CloseProc)(FreeImageIO *io, fi_handle handle, void *data);
|
|
|
|
|
typedef int (DLL_CALLCONV *FI_PageCountProc)(FreeImageIO *io, fi_handle handle, void *data);
|
|
|
|
@ -620,10 +627,10 @@ typedef int (DLL_CALLCONV *FI_PageCapabilityProc)(FreeImageIO *io, fi_handle han
|
|
|
|
|
typedef FIBITMAP *(DLL_CALLCONV *FI_LoadProc)(FreeImageIO *io, fi_handle handle, int page, int flags, void *data);
|
|
|
|
|
typedef BOOL (DLL_CALLCONV *FI_SaveProc)(FreeImageIO *io, FIBITMAP *dib, fi_handle handle, int page, int flags, void *data);
|
|
|
|
|
typedef BOOL (DLL_CALLCONV *FI_ValidateProc)(FreeImageIO *io, fi_handle handle);
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_MimeProc) ();
|
|
|
|
|
typedef const char *(DLL_CALLCONV *FI_MimeProc)(void);
|
|
|
|
|
typedef BOOL (DLL_CALLCONV *FI_SupportsExportBPPProc)(int bpp);
|
|
|
|
|
typedef BOOL (DLL_CALLCONV *FI_SupportsExportTypeProc)(FREE_IMAGE_TYPE type);
|
|
|
|
|
typedef BOOL (DLL_CALLCONV *FI_SupportsICCProfilesProc)();
|
|
|
|
|
typedef BOOL (DLL_CALLCONV *FI_SupportsICCProfilesProc)(void);
|
|
|
|
|
|
|
|
|
|
FI_STRUCT (Plugin) {
|
|
|
|
|
FI_FormatProc format_proc;
|
|
|
|
@ -672,16 +679,21 @@ typedef void (DLL_CALLCONV *FI_InitProc)(Plugin *plugin, int format_id);
|
|
|
|
|
#define IFF_DEFAULT 0
|
|
|
|
|
#define J2K_DEFAULT 0 // save with a 16:1 rate
|
|
|
|
|
#define JP2_DEFAULT 0 // save with a 16:1 rate
|
|
|
|
|
#define JPEG_DEFAULT 0 // loading (see JPEG_FAST); saving (see JPEG_QUALITYGOOD)
|
|
|
|
|
#define JPEG_DEFAULT 0 // loading (see JPEG_FAST); saving (see JPEG_QUALITYGOOD|JPEG_SUBSAMPLING_420)
|
|
|
|
|
#define JPEG_FAST 0x0001 // load the file as fast as possible, sacrificing some quality
|
|
|
|
|
#define JPEG_ACCURATE 0x0002 // load the file with the best quality, sacrificing some speed
|
|
|
|
|
#define JPEG_CMYK 0x0004 // load separated CMYK "as is" (use | to combine with other load flags)
|
|
|
|
|
#define JPEG_EXIFROTATE 0x0008 // load and rotate according to Exif 'Orientation' tag if available
|
|
|
|
|
#define JPEG_QUALITYSUPERB 0x80 // save with superb quality (100:1)
|
|
|
|
|
#define JPEG_QUALITYGOOD 0x0100 // save with good quality (75:1)
|
|
|
|
|
#define JPEG_QUALITYNORMAL 0x0200 // save with normal quality (50:1)
|
|
|
|
|
#define JPEG_QUALITYAVERAGE 0x0400 // save with average quality (25:1)
|
|
|
|
|
#define JPEG_QUALITYBAD 0x0800 // save with bad quality (10:1)
|
|
|
|
|
#define JPEG_PROGRESSIVE 0x2000 // save as a progressive-JPEG (use | to combine with other save flags)
|
|
|
|
|
#define JPEG_SUBSAMPLING_411 0x1000 // save with high 4x1 chroma subsampling (4:1:1)
|
|
|
|
|
#define JPEG_SUBSAMPLING_420 0x4000 // save with medium 2x2 medium chroma subsampling (4:2:0) - default value
|
|
|
|
|
#define JPEG_SUBSAMPLING_422 0x8000 // save with low 2x1 chroma subsampling (4:2:2)
|
|
|
|
|
#define JPEG_SUBSAMPLING_444 0x10000 // save with no chroma subsampling (4:4:4)
|
|
|
|
|
#define KOALA_DEFAULT 0
|
|
|
|
|
#define LBM_DEFAULT 0
|
|
|
|
|
#define MNG_DEFAULT 0
|
|
|
|
@ -690,13 +702,23 @@ typedef void (DLL_CALLCONV *FI_InitProc)(Plugin *plugin, int format_id);
|
|
|
|
|
#define PCD_BASEDIV4 2 // load the bitmap sized 384 x 256
|
|
|
|
|
#define PCD_BASEDIV16 3 // load the bitmap sized 192 x 128
|
|
|
|
|
#define PCX_DEFAULT 0
|
|
|
|
|
#define PFM_DEFAULT 0
|
|
|
|
|
#define PICT_DEFAULT 0
|
|
|
|
|
#define PNG_DEFAULT 0
|
|
|
|
|
#define PNG_IGNOREGAMMA 1 // avoid gamma correction
|
|
|
|
|
#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)
|
|
|
|
|
#define PNM_DEFAULT 0
|
|
|
|
|
#define PNM_SAVE_RAW 0 // If set the writer saves in RAW format (i.e. P4, P5 or P6)
|
|
|
|
|
#define PNM_SAVE_ASCII 1 // If set the writer saves in ASCII format (i.e. P1, P2 or P3)
|
|
|
|
|
#define PSD_DEFAULT 0
|
|
|
|
|
#define RAS_DEFAULT 0
|
|
|
|
|
#define RAW_DEFAULT 0 // load the file as linear RGB 48-bit
|
|
|
|
|
#define RAW_PREVIEW 1 // try to load the embedded JPEG preview with included Exif Data or default to RGB 24-bit
|
|
|
|
|
#define RAW_DISPLAY 2 // load the file as RGB 24-bit
|
|
|
|
|
#define SGI_DEFAULT 0
|
|
|
|
|
#define TARGA_DEFAULT 0
|
|
|
|
|
#define TARGA_LOAD_RGB888 1 // If set the loader converts RGB555 and ARGB8888 -> RGB888.
|
|
|
|
@ -714,6 +736,15 @@ typedef void (DLL_CALLCONV *FI_InitProc)(Plugin *plugin, int format_id);
|
|
|
|
|
#define XBM_DEFAULT 0
|
|
|
|
|
#define XPM_DEFAULT 0
|
|
|
|
|
|
|
|
|
|
// Background filling options ---------------------------------------------------------
|
|
|
|
|
// Constants used in FreeImage_FillBackground and FreeImage_EnlargeCanvas
|
|
|
|
|
|
|
|
|
|
#define FI_COLOR_IS_RGB_COLOR 0x00 // RGBQUAD color is a RGB color (contains no valid alpha channel)
|
|
|
|
|
#define FI_COLOR_IS_RGBA_COLOR 0x01 // RGBQUAD color is a RGBA color (contains a valid alpha channel)
|
|
|
|
|
#define FI_COLOR_FIND_EQUAL_COLOR 0x02 // For palettized images: lookup equal RGB color from palette
|
|
|
|
|
#define FI_COLOR_ALPHA_IS_INDEX 0x04 // The color's rgbReserved member (alpha) contains the palette index to be used
|
|
|
|
|
#define FI_COLOR_PALETTE_SEARCH_MASK (FI_COLOR_FIND_EQUAL_COLOR | FI_COLOR_ALPHA_IS_INDEX) // No color lookup is performed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
@ -792,6 +823,7 @@ DLL_API BOOL DLL_CALLCONV FreeImage_FIFSupportsICCProfiles(FREE_IMAGE_FORMAT fif
|
|
|
|
|
// Multipaging interface ----------------------------------------------------
|
|
|
|
|
|
|
|
|
|
DLL_API FIMULTIBITMAP * DLL_CALLCONV FreeImage_OpenMultiBitmap(FREE_IMAGE_FORMAT fif, const char *filename, BOOL create_new, BOOL read_only, BOOL keep_cache_in_memory FI_DEFAULT(FALSE), int flags FI_DEFAULT(0));
|
|
|
|
|
DLL_API FIMULTIBITMAP * DLL_CALLCONV FreeImage_OpenMultiBitmapFromHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle, int flags FI_DEFAULT(0));
|
|
|
|
|
DLL_API BOOL DLL_CALLCONV FreeImage_CloseMultiBitmap(FIMULTIBITMAP *bitmap, int flags FI_DEFAULT(0));
|
|
|
|
|
DLL_API int DLL_CALLCONV FreeImage_GetPageCount(FIMULTIBITMAP *bitmap);
|
|
|
|
|
DLL_API void DLL_CALLCONV FreeImage_AppendPage(FIMULTIBITMAP *bitmap, FIBITMAP *data);
|
|
|
|
@ -819,7 +851,6 @@ DLL_API BOOL DLL_CALLCONV FreeImage_IsLittleEndian(void);
|
|
|
|
|
DLL_API BOOL DLL_CALLCONV FreeImage_LookupX11Color(const char *szColor, BYTE *nRed, BYTE *nGreen, BYTE *nBlue);
|
|
|
|
|
DLL_API BOOL DLL_CALLCONV FreeImage_LookupSVGColor(const char *szColor, BYTE *nRed, BYTE *nGreen, BYTE *nBlue);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Pixel access routines ----------------------------------------------------
|
|
|
|
|
|
|
|
|
|
DLL_API BYTE *DLL_CALLCONV FreeImage_GetBits(FIBITMAP *dib);
|
|
|
|
@ -938,6 +969,8 @@ DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ConvertToType(FIBITMAP *src, FREE_IMAGE
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ToneMapping(FIBITMAP *dib, FREE_IMAGE_TMO tmo, double first_param FI_DEFAULT(0), double second_param FI_DEFAULT(0));
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_TmoDrago03(FIBITMAP *src, double gamma FI_DEFAULT(2.2), double exposure FI_DEFAULT(0));
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_TmoReinhard05(FIBITMAP *src, double intensity FI_DEFAULT(0), double contrast FI_DEFAULT(0));
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_TmoReinhard05Ex(FIBITMAP *src, double intensity FI_DEFAULT(0), double contrast FI_DEFAULT(0), double adaptation FI_DEFAULT(1), double color_correction FI_DEFAULT(0));
|
|
|
|
|
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_TmoFattal02(FIBITMAP *src, double color_saturation FI_DEFAULT(0.5), double attenuation FI_DEFAULT(0.85));
|
|
|
|
|
|
|
|
|
|
// ZLib interface -----------------------------------------------------------
|
|
|
|
@ -953,7 +986,7 @@ DLL_API DWORD DLL_CALLCONV FreeImage_ZLibCRC32(DWORD crc, BYTE *source, DWORD so
|
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
// tag creation / destruction
|
|
|
|
|
DLL_API FITAG *DLL_CALLCONV FreeImage_CreateTag();
|
|
|
|
|
DLL_API FITAG *DLL_CALLCONV FreeImage_CreateTag(void);
|
|
|
|
|
DLL_API void DLL_CALLCONV FreeImage_DeleteTag(FITAG *tag);
|
|
|
|
|
DLL_API FITAG *DLL_CALLCONV FreeImage_CloneTag(FITAG *tag);
|
|
|
|
|
|
|
|
|
@ -985,6 +1018,7 @@ DLL_API BOOL DLL_CALLCONV FreeImage_GetMetadata(FREE_IMAGE_MDMODEL model, FIBITM
|
|
|
|
|
|
|
|
|
|
// helpers
|
|
|
|
|
DLL_API unsigned DLL_CALLCONV FreeImage_GetMetadataCount(FREE_IMAGE_MDMODEL model, FIBITMAP *dib);
|
|
|
|
|
DLL_API BOOL DLL_CALLCONV FreeImage_CloneMetadata(FIBITMAP *dst, FIBITMAP *src);
|
|
|
|
|
|
|
|
|
|
// tag to C string conversion
|
|
|
|
|
DLL_API const char* DLL_CALLCONV FreeImage_TagToString(FREE_IMAGE_MDMODEL model, FITAG *tag, char *Make FI_DEFAULT(NULL));
|
|
|
|
@ -994,11 +1028,14 @@ DLL_API const char* DLL_CALLCONV FreeImage_TagToString(FREE_IMAGE_MDMODEL model,
|
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
// rotation and flipping
|
|
|
|
|
/// @deprecated see FreeImage_Rotate
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_RotateClassic(FIBITMAP *dib, double angle);
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Rotate(FIBITMAP *dib, double angle, const void *bkcolor FI_DEFAULT(NULL));
|
|
|
|
|
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);
|
|
|
|
|
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));
|
|
|
|
|
|
|
|
|
|
// upsampling / downsampling
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Rescale(FIBITMAP *dib, int dst_width, int dst_height, FREE_IMAGE_FILTER filter);
|
|
|
|
@ -1029,8 +1066,15 @@ DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Copy(FIBITMAP *dib, int left, int top,
|
|
|
|
|
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));
|
|
|
|
|
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);
|
|
|
|
|
DLL_API BOOL DLL_CALLCONV FreeImage_PreMultiplyWithAlpha(FIBITMAP *dib);
|
|
|
|
|
|
|
|
|
|
// background filling routines
|
|
|
|
|
DLL_API BOOL DLL_CALLCONV FreeImage_FillBackground(FIBITMAP *dib, const void *color, int options FI_DEFAULT(0));
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_EnlargeCanvas(FIBITMAP *src, int left, int top, int right, int bottom, const void *color, int options FI_DEFAULT(0));
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_AllocateEx(int width, int height, int bpp, const RGBQUAD *color, int options FI_DEFAULT(0), const RGBQUAD *palette FI_DEFAULT(NULL), unsigned red_mask FI_DEFAULT(0), unsigned green_mask FI_DEFAULT(0), unsigned blue_mask FI_DEFAULT(0));
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_AllocateExT(FREE_IMAGE_TYPE type, int width, int height, int bpp, const void *color, int options FI_DEFAULT(0), const RGBQUAD *palette FI_DEFAULT(NULL), unsigned red_mask FI_DEFAULT(0), unsigned green_mask FI_DEFAULT(0), unsigned blue_mask FI_DEFAULT(0));
|
|
|
|
|
|
|
|
|
|
// miscellaneous algorithms
|
|
|
|
|
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_MultigridPoissonSolver(FIBITMAP *Laplacian, int ncycle FI_DEFAULT(3));
|
|
|
|
|
|
|
|
|
|