1 2 // Copyright 2019 - 2021 Michael D. Parker 3 // Distributed under the Boost Software License, Version 1.0. 4 // (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 module bindbc.freeimage.binddynamic; 8 9 version(BindFI_Static) {} 10 else version = BindFI_Dynamic; 11 12 version(BindFI_Dynamic): 13 14 import core.stdc.config, 15 core.stdc.stddef; 16 17 import bindbc.loader; 18 import bindbc.freeimage.types; 19 20 extern(System) @nogc nothrow { 21 alias pFreeImage_Initialise = void function(BOOL load_local_plugins_only = FALSE); 22 alias pFreeImage_DeInitialise = void function(); 23 alias pFreeImage_GetVersion = const(char)* function(); 24 alias pFreeImage_GetCopyrightMessage = const(char)* function(); 25 26 alias pFreeImage_SetOutputMessageStdCall = void function(FreeImage_OutputMessageFunctionStdCall); 27 alias pFreeImage_SetOutputMessage = void function(FreeImage_OutputMessageFunction); 28 29 alias pFreeImage_OutputMessageProc = void function(int,const(char)* fmt, ...); 30 31 alias pFreeImage_Allocate = FIBITMAP* function(int,int,int,uint red_mask = 0,uint green_mask = 0,uint blue_mask = 0); 32 alias pFreeImage_AllocateT = FIBITMAP* function(FREE_IMAGE_TYPE type,int,int,int bpp = 8,uint red_mask = 0,uint green_mask = 0,uint blue_mask = 0); 33 alias pFreeImage_Clone = FIBITMAP* function(FIBITMAP*); 34 alias pFreeImage_Unload = void function(FIBITMAP*); 35 36 alias pFreeImage_HasPixels = BOOL function(FIBITMAP*); 37 38 alias pFreeImage_Load = FIBITMAP* function(FREE_IMAGE_FORMAT,const(char)*,int flags = 0); 39 alias pFreeImage_LoadU = FIBITMAP* function(FREE_IMAGE_FORMAT,const(wchar_t)*,int flags = 0); 40 alias pFreeImage_LoadFromHandle = FIBITMAP* function(FREE_IMAGE_FORMAT,FreeImageIO*,fi_handle,int flags = 0); 41 alias pFreeImage_Save = BOOL function(FREE_IMAGE_FORMAT,FIBITMAP*,const(char)*,int flags = 0); 42 alias pFreeImage_SaveU = BOOL function(FREE_IMAGE_FORMAT,FIBITMAP*,const(wchar_t)*,int flags = 0); 43 alias pFreeImage_SaveToHandle = BOOL function(FREE_IMAGE_FORMAT,FIBITMAP*,FreeImageIO*,fi_handle,int flags = 0); 44 45 alias pFreeImage_OpenMemory = FIMEMORY* function(BYTE* data = null,DWORD size_in_bytes = 0); 46 alias pFreeImage_CloseMemory = void function(FIMEMORY*); 47 alias pFreeImage_LoadFromMemory = FIBITMAP* function(FREE_IMAGE_FORMAT,FIMEMORY*,int flags = 0); 48 alias pFreeImage_SaveToMemory = BOOL function(FREE_IMAGE_FORMAT,FIBITMAP*,FIMEMORY*,int flags = 0); 49 alias pFreeImage_TellMemory = c_long function(FIMEMORY*); 50 alias pFreeImage_SeekMemory = BOOL function(FIMEMORY*,c_long,int); 51 alias pFreeImage_AcquireMemory = BOOL function(FIMEMORY*,BYTE**,DWORD*); 52 alias pFreeImage_ReadMemory = uint function(void*,uint,uint,FIMEMORY*); 53 alias pFreeImage_WriteMemory = uint function(const(void*),uint,uint,FIMEMORY*); 54 55 alias pFreeImage_LoadMultiBitmapFromMemory = FIMULTIBITMAP* function(FREE_IMAGE_FORMAT,FIMEMORY*,int flags = 0); 56 alias pFreeImage_SaveMultiBitmapToMemory = BOOL function(FREE_IMAGE_FORMAT,FIMULTIBITMAP*,FIMEMORY*,int flags); 57 58 alias pFreeImage_RegisterLocalPlugin = FREE_IMAGE_FORMAT function(FI_InitProc proc_address,const(char)* format = null,const(char)* description = null,const(char)* extension = null,const(char)* regexpr = null); 59 60 version(Windows) { 61 alias pFreeImage_RegisterExternalPlugin = FREE_IMAGE_FORMAT function(const(char)* path,const(char)* format = null,const(char)* description = null,const(char)* extension = null,const(char)* regexpr = null); 62 } 63 64 alias pFreeImage_GetFIFCount = int function(); 65 alias pFreeImage_SetPluginEnabled = int function(FREE_IMAGE_FORMAT,BOOL); 66 alias pFreeImage_IsPluginEnabled = int function(FREE_IMAGE_FORMAT); 67 alias pFreeImage_GetFIFFromFormat = FREE_IMAGE_FORMAT function(const(char)*); 68 alias pFreeImage_GetFIFFromMime = FREE_IMAGE_FORMAT function(const(char)*); 69 alias pFreeImage_GetFormatFromFIF = const(char)* function(FREE_IMAGE_FORMAT); 70 alias pFreeImage_GetFIFExtensionList = const(char)* function(FREE_IMAGE_FORMAT); 71 alias pFreeImage_GetFIFDescription = const(char)* function(FREE_IMAGE_FORMAT); 72 alias pFreeImage_GetFIFRegExpr = const(char)* function(FREE_IMAGE_FORMAT); 73 alias pFreeImage_GetFIFMimeType = const(char)* function(FREE_IMAGE_FORMAT); 74 alias pFreeImage_GetFIFFromFilename = FREE_IMAGE_FORMAT function(const(char)*); 75 alias pFreeImage_GetFIFFromFilenameU = FREE_IMAGE_FORMAT function(const(wchar_t)*); 76 alias pFreeImage_FIFSupportsReading = BOOL function(FREE_IMAGE_FORMAT); 77 alias pFreeImage_FIFSupportsWriting = BOOL function(FREE_IMAGE_FORMAT); 78 alias pFreeImage_FIFSupportsExportBPP = BOOL function(FREE_IMAGE_FORMAT,int); 79 alias pFreeImage_FIFSupportsExportType = BOOL function(FREE_IMAGE_FORMAT, FREE_IMAGE_TYPE); 80 alias pFreeImage_FIFSupportsICCProfiles = BOOL function(FREE_IMAGE_FORMAT); 81 alias pFreeImage_FIFSupportsNoPixels = BOOL function(FREE_IMAGE_FORMAT); 82 83 alias pFreeImage_OpenMultiBitmap = FIMULTIBITMAP* function(FREE_IMAGE_FORMAT,const(char)*,BOOL,BOOL,BOOL keep_cache_in_memory = FALSE,int flags = 0); 84 alias pFreeImage_OpenMultiBitmapFromHandle = FIMULTIBITMAP* function(FREE_IMAGE_FORMAT,FreeImageIO*,fi_handle,int flags = 0); 85 alias pFreeImage_SaveMultiBitmapToHandle = BOOL function(FREE_IMAGE_FORMAT, FIMULTIBITMAP* bitmap,FreeImageIO*,fi_handle,int flags = 0); 86 alias pFreeImage_CloseMultiBitmap = BOOL function(FIMULTIBITMAP*,int flags = 0); 87 alias pFreeImage_GetPageCount = int function(FIMULTIBITMAP*); 88 alias pFreeImage_AppendPage = void function(FIMULTIBITMAP*,FIBITMAP*); 89 alias pFreeImage_InsertPage = void function(FIMULTIBITMAP*,int,FIBITMAP*); 90 alias pFreeImage_DeletePage = void function(FIMULTIBITMAP*,int); 91 alias pFreeImage_LockPage = FIBITMAP* function(FIMULTIBITMAP*,int); 92 alias pFreeImage_UnlockPage = void function(FIMULTIBITMAP*,FIBITMAP*,BOOL); 93 alias pFreeImage_MovePage = BOOL function(FIMULTIBITMAP*,int,int); 94 alias pFreeImage_GetLockedPageNumbers = BOOL function(FIMULTIBITMAP*,int*,int*); 95 96 alias pFreeImage_GetFileType = FREE_IMAGE_FORMAT function(const(char)*,int size = 0); 97 alias pFreeImage_GetFileTypeU = FREE_IMAGE_FORMAT function(const(wchar_t)*,int size = 0); 98 alias pFreeImage_GetFileTypeFromHandle = FREE_IMAGE_FORMAT function(FreeImageIO*,fi_handle,int size = 0); 99 alias pFreeImage_GetFileTypeFromMemory = FREE_IMAGE_FORMAT function(FIMEMORY*,int size = 0); 100 101 alias pFreeImage_GetImageType = FREE_IMAGE_TYPE function(FIBITMAP*); 102 103 alias pFreeImage_IsLittleEndian = BOOL function(); 104 alias pFreeImage_LookupX11Color = BOOL function(const(char)*,BYTE*,BYTE*,BYTE*); 105 alias pFreeImage_LookupSVGColor = BOOL function(const(char)*,BYTE*,BYTE*,BYTE*); 106 107 alias pFreeImage_GetBits = BYTE* function(FIBITMAP*); 108 alias pFreeImage_GetScanLine = BYTE* function(FIBITMAP*,int); 109 110 alias pFreeImage_GetPixelIndex = BOOL function(FIBITMAP*,uint,uint,BYTE*); 111 alias pFreeImage_GetPixelColor = BOOL function(FIBITMAP*,uint,uint,RGBQUAD*); 112 alias pFreeImage_SetPixelIndex = BOOL function(FIBITMAP*,uint,uint,BYTE*); 113 alias pFreeImage_SetPixelColor = BOOL function(FIBITMAP*,uint,uint,RGBQUAD*); 114 115 alias pFreeImage_GetColorsUsed = uint function(FIBITMAP*); 116 alias pFreeImage_GetBPP = uint function(FIBITMAP*); 117 alias pFreeImage_GetWidth = uint function(FIBITMAP*); 118 alias pFreeImage_GetHeight = uint function(FIBITMAP*); 119 alias pFreeImage_GetLine = uint function(FIBITMAP*); 120 alias pFreeImage_GetPitch = uint function(FIBITMAP*); 121 alias pFreeImage_GetDIBSize = uint function(FIBITMAP*); 122 alias pFreeImage_GetMemorySize = uint function(FIBITMAP*); // Added in 3.17.0 123 alias pFreeImage_GetPalette =RGBQUAD* function(FIBITMAP*); 124 125 alias pFreeImage_GetDotsPerMeterX = uint function(FIBITMAP*); 126 alias pFreeImage_GetDotsPerMeterY = uint function(FIBITMAP*); 127 alias pFreeImage_SetDotsPerMeterX = void function(FIBITMAP*,uint); 128 alias pFreeImage_SetDotsPerMeterY = void function(FIBITMAP*,uint); 129 130 alias pFreeImage_GetInfoHeader = BITMAPINFOHEADER* function(FIBITMAP*); 131 alias pFreeImage_GetInfo = BITMAPINFO* function(FIBITMAP*); 132 alias pFreeImage_GetColorType = FREE_IMAGE_COLOR_TYPE function(FIBITMAP*); 133 134 alias pFreeImage_GetRedMask = uint function(FIBITMAP*); 135 alias pFreeImage_GetGreenMask = uint function(FIBITMAP*); 136 alias pFreeImage_GetBlueMask = uint function(FIBITMAP*); 137 138 alias pFreeImage_GetTransparencyCount = uint function(FIBITMAP*); 139 alias pFreeImage_GetTransparencyTable = BYTE* function(FIBITMAP*); 140 alias pFreeImage_SetTransparent = void function(FIBITMAP*,BOOL); 141 alias pFreeImage_SetTransparencyTable = void function(FIBITMAP*,BYTE*,int); 142 alias pFreeImage_IsTransparent = BOOL function(FIBITMAP*); 143 alias pFreeImage_SetTransparentIndex = void function(FIBITMAP*,int); 144 alias pFreeImage_GetTransparentIndex = int function(FIBITMAP*); 145 146 alias pFreeImage_HasBackgroundColor = BOOL function(FIBITMAP*); 147 alias pFreeImage_GetBackgroundColor = BOOL function(FIBITMAP*,RGBQUAD*); 148 alias pFreeImage_SetBackgroundColor = BOOL function(FIBITMAP*,RGBQUAD*); 149 150 alias pFreeImage_GetThumbnail = FIBITMAP* function(FIBITMAP*); 151 alias pFreeImage_SetThumbnail = BOOL function(FIBITMAP*,FIBITMAP*); 152 153 alias pFreeImage_GetICCProfile = FIICCPROFILE* function(FIBITMAP*); 154 alias pFreeImage_CreateICCProfile = FIICCPROFILE* function(FIBITMAP*,void*,c_long); 155 alias pFreeImage_DestroyICCProfile = void function(FIBITMAP*); 156 157 alias pFreeImage_ConvertLine1To4 = void function(BYTE*,BYTE*,int); 158 alias pFreeImage_ConvertLine8To4 = void function(BYTE*,BYTE*,int,RGBQUAD*); 159 alias pFreeImage_ConvertLine16To4_555 = void function(BYTE*,BYTE*,int); 160 alias pFreeImage_ConvertLine16To4_565 = void function(BYTE*,BYTE*,int); 161 alias pFreeImage_ConvertLine24To4 = void function(BYTE*,BYTE*,int); 162 alias pFreeImage_ConvertLine32To4 = void function(BYTE*,BYTE*,int); 163 alias pFreeImage_ConvertLine1To8 = void function(BYTE*,BYTE*,int); 164 alias pFreeImage_ConvertLine4To8 = void function(BYTE*,BYTE*,int); 165 alias pFreeImage_ConvertLine16To8_555 = void function(BYTE*,BYTE*,int); 166 alias pFreeImage_ConvertLine16To8_565 = void function(BYTE*,BYTE*,int); 167 alias pFreeImage_ConvertLine24To8 = void function(BYTE*,BYTE*,int); 168 alias pFreeImage_ConvertLine32To8 = void function(BYTE*,BYTE*,int); 169 alias pFreeImage_ConvertLine1To16_555 = void function(BYTE*,BYTE*,int,RGBQUAD*); 170 alias pFreeImage_ConvertLine4To16_555 = void function(BYTE*,BYTE*,int,RGBQUAD*); 171 alias pFreeImage_ConvertLine8To16_555 = void function(BYTE*,BYTE*,int,RGBQUAD*); 172 alias pFreeImage_ConvertLine16_565_To16_555 = void function(BYTE*,BYTE*,int); 173 alias pFreeImage_ConvertLine24To16_555 = void function(BYTE*,BYTE*,int); 174 alias pFreeImage_ConvertLine32To16_555 = void function(BYTE*,BYTE*,int); 175 alias pFreeImage_ConvertLine1To16_565 = void function(BYTE*,BYTE*,int,RGBQUAD*); 176 alias pFreeImage_ConvertLine4To16_565 = void function(BYTE*,BYTE*,int,RGBQUAD*); 177 alias pFreeImage_ConvertLine8To16_565 = void function(BYTE*,BYTE*,int,RGBQUAD*); 178 alias pFreeImage_ConvertLine16_555_To16_565 = void function(BYTE*,BYTE*,int); 179 alias pFreeImage_ConvertLine24To16_565 = void function(BYTE*,BYTE*,int); 180 alias pFreeImage_ConvertLine32To16_565 = void function(BYTE*,BYTE*,int); 181 alias pFreeImage_ConvertLine1To24 = void function(BYTE*,BYTE*,int,RGBQUAD*); 182 alias pFreeImage_ConvertLine4To24 = void function(BYTE*,BYTE*,int,RGBQUAD*); 183 alias pFreeImage_ConvertLine8To24 = void function(BYTE*,BYTE*,int,RGBQUAD*); 184 alias pFreeImage_ConvertLine16To24_555 = void function(BYTE*,BYTE*,int); 185 alias pFreeImage_ConvertLine16To24_565 = void function(BYTE*,BYTE*,int); 186 alias pFreeImage_ConvertLine32To24 = void function(BYTE*,BYTE*,int); 187 alias pFreeImage_ConvertLine1To32 = void function(BYTE*,BYTE*,int,RGBQUAD*); 188 alias pFreeImage_ConvertLine4To32 = void function(BYTE*,BYTE*,int,RGBQUAD*); 189 alias pFreeImage_ConvertLine8To32 = void function(BYTE*,BYTE*,int,RGBQUAD*); 190 alias pFreeImage_ConvertLine16To32_555 = void function(BYTE*,BYTE*,int); 191 alias pFreeImage_ConvertLine16To32_565 = void function(BYTE*,BYTE*,int); 192 alias pFreeImage_ConvertLine24To32 = void function(BYTE*,BYTE*,int); 193 194 alias pFreeImage_ConvertTo4Bits = FIBITMAP* function(FIBITMAP*); 195 alias pFreeImage_ConvertTo8Bits = FIBITMAP* function(FIBITMAP*); 196 alias pFreeImage_ConvertToGreyscale = FIBITMAP* function(FIBITMAP*); 197 alias pFreeImage_ConvertTo16Bits555 = FIBITMAP* function(FIBITMAP*); 198 alias pFreeImage_ConvertTo16Bits565 = FIBITMAP* function(FIBITMAP*); 199 alias pFreeImage_ConvertTo24Bits = FIBITMAP* function(FIBITMAP*); 200 alias pFreeImage_ConvertTo32Bits = FIBITMAP* function(FIBITMAP*); 201 alias pFreeImage_ColorQuantize = FIBITMAP* function(FIBITMAP*,FREE_IMAGE_QUANTIZE); 202 alias pFreeImage_ColorQuantizeEx = FIBITMAP* function(FIBITMAP*,FREE_IMAGE_QUANTIZE quantize = FIQ_WUQUANT,int PaletteSize = 256,int ReserveSize = 0,RGBQUAD* ReservePalette = null); 203 alias pFreeImage_Threshold = FIBITMAP* function(FIBITMAP*,BYTE); 204 alias pFreeImage_Dither = FIBITMAP* function(FIBITMAP*,FREE_IMAGE_DITHER); 205 206 alias pFreeImage_ConvertFromRawBits = FIBITMAP* function(BYTE*,int,int,int,uint,uint,uint,uint,BOOL topdown = FALSE); 207 alias pFreeImage_ConvertFromRawBitsEx = FIBITMAP* function(BOOL,BYTE*,FREE_IMAGE_TYPE,int,int,int,uint,uint,uint,uint,BOOL topdown=FALSE); // Added in 3.17.0 208 alias pFreeImage_ConvertToRawBits = void function(BYTE*,FIBITMAP*,int,uint,uint,uint,uint,BOOL topdown = FALSE); 209 210 alias pFreeImage_ConvertToFloat = FIBITMAP* function(FIBITMAP*); 211 alias pFreeImage_ConvertToRGBF = FIBITMAP* function(FIBITMAP*); 212 alias pFreeImage_ConvertToRGBAF = FIBITMAP* function(FIBITMAP*); // Added in 3.17.0 213 alias pFreeImage_ConvertToUINT16 = FIBITMAP* function(FIBITMAP*); 214 alias pFreeImage_ConvertToRGB16 = FIBITMAP* function(FIBITMAP*); 215 alias pFreeImage_ConvertToRGBA16 = FIBITMAP* function(FIBITMAP*); // Added in 3.17.0 216 217 alias pFreeImage_ConvertToStandardType = FIBITMAP* function(FIBITMAP*,BOOL scale_linear = TRUE); 218 alias pFreeImage_ConvertToType = FIBITMAP* function(FIBITMAP*, FREE_IMAGE_TYPE,BOOL scale_linear = TRUE); 219 220 alias pFreeImage_ToneMapping = FIBITMAP* function(FIBITMAP*, FREE_IMAGE_TMO,double first_param = 0,double second_param = 0); 221 alias pFreeImage_TmoDrago03 = FIBITMAP* function(FIBITMAP* src,double gamma = 2.2,double exposure = 0); 222 alias pFreeImage_TmoReinhard05 = FIBITMAP* function(FIBITMAP* src,double intensity = 0,double contrast = 0); 223 alias pFreeImage_TmoReinhard05Ex = FIBITMAP* function(FIBITMAP* src,double intensity = 0,double contrast = 0,double adaptation = 1,double color_correction = 0); 224 225 alias pFreeImage_TmoFattal02 = FIBITMAP* function(FIBITMAP* src,double color_saturation = 0.5,double attenuation = 0.85); 226 227 alias pFreeImage_ZLibCompress =DWORD function(BYTE*,DWORD,BYTE*,DWORD); 228 alias pFreeImage_ZLibUncompress =DWORD function(BYTE*,DWORD,BYTE*,DWORD); 229 alias pFreeImage_ZLibGZip =DWORD function(BYTE*,DWORD,BYTE*,DWORD); 230 alias pFreeImage_ZLibGUnzip =DWORD function(BYTE*,DWORD,BYTE*,DWORD); 231 alias pFreeImage_ZLibCRC32 =DWORD function(DWORD,BYTE*,DWORD); 232 233 alias pFreeImage_CreateTag = FITAG* function(); 234 alias pFreeImage_DeleteTag = void function(FITAG*); 235 alias pFreeImage_CloneTag = FITAG* function(FITAG*); 236 237 alias pFreeImage_GetTagKey = const(char)* function(FITAG*); 238 alias pFreeImage_GetTagDescription = const(char)* function(FITAG*); 239 alias pFreeImage_GetTagID = WORD function(FITAG*); 240 alias pFreeImage_GetTagType = FREE_IMAGE_MDTYPE function(FITAG*); 241 alias pFreeImage_GetTagCount =DWORD function(FITAG*); 242 alias pFreeImage_GetTagLength =DWORD function(FITAG*); 243 alias pFreeImage_GetTagValue = const(void)* function(FITAG*); 244 245 alias pFreeImage_SetTagKey = BOOL function(FITAG*,const(char)*); 246 alias pFreeImage_SetTagDescription = BOOL function(FITAG*,const(char)*); 247 alias pFreeImage_SetTagID = BOOL function(FITAG*,WORD); 248 alias pFreeImage_SetTagType = BOOL function(FITAG*,FREE_IMAGE_MDTYPE); 249 alias pFreeImage_SetTagCount = BOOL function(FITAG*,DWORD); 250 alias pFreeImage_SetTagLength = BOOL function(FITAG*,DWORD); 251 alias pFreeImage_SetTagValue = BOOL function(FITAG*, const(void)*); 252 253 alias pFreeImage_FindFirstMetadata = FIMETADATA* function(FREE_IMAGE_MDMODEL,FIBITMAP*,FITAG**); 254 alias pFreeImage_FindNextMetadata = BOOL function(FIMETADATA*,FITAG**); 255 alias pFreeImage_FindCloseMetadata = void function(FIMETADATA*); 256 257 alias pFreeImage_SetMetadata = BOOL function(FREE_IMAGE_MDMODEL,FIBITMAP*,const(char)*,FITAG*); 258 alias pFreeImage_GetMetadata = BOOL function(FREE_IMAGE_MDMODEL,FIBITMAP*,const(char)*,FITAG**); 259 alias pFreeImage_SetMetadataKeyValue = BOOL function(FREE_IMAGE_MDMODEL,FIBITMAP*,const(char)*,const(char)*); // Added in 3.17.0 260 261 alias pFreeImage_GetMetadataCount = uint function(FREE_IMAGE_MDMODEL,FIBITMAP*); 262 alias pFreeImage_CloneMetadata = BOOL function(FIBITMAP*,FIBITMAP*); 263 264 alias pFreeImage_TagToString = const(char)* function(FREE_IMAGE_MDMODEL,FITAG*,char* Make = null); 265 266 version(BindFI_JPEGTransform) { 267 alias pFreeImage_JPEGTransform = BOOL function(const(char)*,const(char)*, FREE_IMAGE_JPEG_OPERATION,BOOL perfect=TRUE); 268 alias pFreeImage_JPEGTransformU = BOOL function(const(wchar_t)*,const(wchar_t)*, FREE_IMAGE_JPEG_OPERATION,BOOL perfect=TRUE); 269 alias pFreeImage_JPEGCrop = BOOL function(const(char)*,const(char)*,int,int,int,int); 270 alias pFreeImage_JPEGCropU = BOOL function(const(wchar_t)*,const(wchar_t)*,int,int,int,int); 271 272 // FreeImage 3.16.0 -- 4 functions 273 alias pFreeImage_JPEGTransformFromHandle = BOOL function(FreeImageIO*,fi_handle,FreeImageIO*,fi_handle,FREE_IMAGE_JPEG_OPERATION,int*,int*,int*,int*,BOOL perfect=TRUE); 274 alias pFreeImage_JPEGTransformCombined = BOOL function(const(char)*,const(char)*,FREE_IMAGE_JPEG_OPERATION,int*,int*,int*,int*,BOOL perfect=TRUE); 275 alias pFreeImage_JPEGTransformCombinedU = BOOL function(const(wchar_t)*,const(wchar_t)*,FREE_IMAGE_JPEG_OPERATION,int*,int*,int*,int*,BOOL perfect=TRUE); 276 alias pFreeImage_JPEGTransformCombinedFromMemory = BOOL function(FIMEMORY*,FIMEMORY*,FREE_IMAGE_JPEG_OPERATION,int*,int*,int*,int*,BOOL perfect=TRUE); 277 } 278 279 alias pFreeImage_Rotate = FIBITMAP* function(FIBITMAP*,double, const(void*) = null); 280 alias pFreeImage_RotateEx = FIBITMAP* function(FIBITMAP*,double,double,double,double,double,BOOL); 281 alias pFreeImage_FlipHorizontal = BOOL function(FIBITMAP*); 282 alias pFreeImage_FlipVertical = BOOL function(FIBITMAP*); 283 284 alias pFreeImage_Rescale = FIBITMAP* function(FIBITMAP*,int,int, FREE_IMAGE_FILTER); 285 alias pFreeImage_MakeThumbnail = FIBITMAP* function(FIBITMAP*,int,BOOL convert = TRUE); 286 alias pFreeImage_RescaleRect = FIBITMAP* function(FIBITMAP*,int,int,int,int,int,int,FREE_IMAGE_FILTER filter = FILTER_CATMULLROM,uint flags = 0); // Added in 3.17.0 287 288 alias pFreeImage_AdjustCurve = BOOL function(FIBITMAP*,BYTE* LUT, FREE_IMAGE_COLOR_CHANNEL); 289 alias pFreeImage_AdjustGamma = BOOL function(FIBITMAP*,double); 290 alias pFreeImage_AdjustBrightness = BOOL function(FIBITMAP*,double); 291 alias pFreeImage_AdjustContrast = BOOL function(FIBITMAP*,double); 292 alias pFreeImage_Invert = BOOL function(FIBITMAP*); 293 alias pFreeImage_GetHistogram = BOOL function(FIBITMAP*,DWORD*, FREE_IMAGE_COLOR_CHANNEL channel = FICC_BLACK); 294 alias pFreeImage_GetAdjustColorsLookupTable = int function(BYTE* LUT,double,double,double,BOOL); 295 alias pFreeImage_AdjustColors = BOOL function(FIBITMAP*,double,double,double,BOOL invert = FALSE); 296 alias pFreeImage_ApplyColorMapping = uint function(FIBITMAP*,RGBQUAD*,RGBQUAD*,uint,BOOL,BOOL); 297 alias pFreeImage_SwapColors = uint function(FIBITMAP*,RGBQUAD*,RGBQUAD*,BOOL); 298 alias pFreeImage_ApplyPaletteIndexMapping = uint function(FIBITMAP*,BYTE*,BYTE*,uint,BOOL); 299 alias pFreeImage_SwapPaletteIndices = uint function(FIBITMAP*,BYTE*,BYTE*); 300 301 alias pFreeImage_GetChannel = FIBITMAP* function(FIBITMAP*,FREE_IMAGE_COLOR_CHANNEL); 302 alias pFreeImage_SetChannel = BOOL function(FIBITMAP*,FIBITMAP*,FREE_IMAGE_COLOR_CHANNEL); 303 alias pFreeImage_GetComplexChannel = FIBITMAP* function(FIBITMAP*,FREE_IMAGE_COLOR_CHANNEL); 304 alias pFreeImage_SetComplexChannel = BOOL function(FIBITMAP*,FIBITMAP*,FREE_IMAGE_COLOR_CHANNEL); 305 306 alias pFreeImage_Copy = FIBITMAP* function(FIBITMAP*,int,int,int,int); 307 alias pFreeImage_Paste = BOOL function(FIBITMAP*,FIBITMAP*,int,int,int); 308 alias pFreeImage_CreateView = FIBITMAP* function(FIBITMAP*,uint,uint,uint,uint); // Added in 3.17.0 309 310 alias pFreeImage_Composite = FIBITMAP* function(FIBITMAP*,BOOL useFileBkg = FALSE,RGBQUAD* appBkColor = null,FIBITMAP*bg = null); 311 alias pFreeImage_PreMultiplyWithAlpha = BOOL function(FIBITMAP*); 312 313 alias pFreeImage_FillBackground = BOOL function(FIBITMAP*, const(void*),int options = 0); 314 alias pFreeImage_EnlargeCanvas = FIBITMAP* function(FIBITMAP*,int,int,int,int,const(void*),int options = 0); 315 alias pFreeImage_AllocateEx = FIBITMAP* function(int,int,int,const(RGBQUAD)*,int options = 0,const(RGBQUAD)* palette = null,uint red_mask = 0,uint green_mask = 0,uint blue_mask = 0); 316 alias pFreeImage_AllocateExT = FIBITMAP* function(FREE_IMAGE_TYPE,int,int,int,const(void*),int options = 0,const(RGBQUAD)* palette = null,uint red_mask = 0,uint green_mask = 0,uint blue_mask = 0); 317 318 alias pFreeImage_MultigridPoissonSolver = FIBITMAP* function(FIBITMAP*,int ncycle = 3); 319 320 static if(fiSupport >= FISupport.fi318) { 321 alias pFreeImage_Validate = BOOL function(FREE_IMAGE_FORMAT,const(char)*); 322 alias pFreeImage_ValidateU = BOOL function(FREE_IMAGE_FORMAT,const(wchar_t)*); 323 alias pFreeImage_ValidateFromHandle = BOOL function(FREE_IMAGE_FORMAT,FreeImageIO*,fi_handle); 324 alias pFreeImage_ValidateFromMemory = BOOL function(FREE_IMAGE_FORMAT,FIMEMORY); 325 alias pFreeImage_ConvertLine1To32MapTransparency = void function(BYTE*,BYTE*,int,RGBQUAD*,BYTE*,int); 326 alias pFreeImage_ConvertLine4To32MapTransparency = void function(BYTE*,BYTE*,int,RGBQUAD*,BYTE*,int); 327 alias pFreeImage_ConvertLine8To32MapTransparency = void function(BYTE*,BYTE*,int,RGBQUAD*,BYTE*,int); 328 } 329 } 330 331 __gshared { 332 pFreeImage_Initialise FreeImage_Initialise; 333 pFreeImage_DeInitialise FreeImage_DeInitialise; 334 pFreeImage_GetVersion FreeImage_GetVersion; 335 pFreeImage_GetCopyrightMessage FreeImage_GetCopyrightMessage; 336 pFreeImage_SetOutputMessageStdCall FreeImage_SetOutputMessageStdCall; 337 pFreeImage_SetOutputMessage FreeImage_SetOutputMessage; 338 pFreeImage_OutputMessageProc FreeImage_OutputMessageProc; 339 pFreeImage_Allocate FreeImage_Allocate; 340 pFreeImage_AllocateT FreeImage_AllocateT; 341 pFreeImage_Clone FreeImage_Clone; 342 pFreeImage_Unload FreeImage_Unload; 343 pFreeImage_HasPixels FreeImage_HasPixels; 344 pFreeImage_Load FreeImage_Load; 345 pFreeImage_LoadU FreeImage_LoadU; 346 pFreeImage_LoadFromHandle FreeImage_LoadFromHandle; 347 pFreeImage_Save FreeImage_Save; 348 pFreeImage_SaveU FreeImage_SaveU; 349 pFreeImage_SaveToHandle FreeImage_SaveToHandle; 350 pFreeImage_OpenMemory FreeImage_OpenMemory; 351 pFreeImage_CloseMemory FreeImage_CloseMemory; 352 pFreeImage_LoadFromMemory FreeImage_LoadFromMemory; 353 pFreeImage_SaveToMemory FreeImage_SaveToMemory; 354 pFreeImage_TellMemory FreeImage_TellMemory; 355 pFreeImage_SeekMemory FreeImage_SeekMemory; 356 pFreeImage_AcquireMemory FreeImage_AcquireMemory; 357 pFreeImage_ReadMemory FreeImage_ReadMemory; 358 pFreeImage_WriteMemory FreeImage_WriteMemory; 359 pFreeImage_LoadMultiBitmapFromMemory FreeImage_LoadMultiBitmapFromMemory; 360 pFreeImage_SaveMultiBitmapToMemory FreeImage_SaveMultiBitmapToMemory; 361 pFreeImage_RegisterLocalPlugin FreeImage_RegisterLocalPlugin; 362 363 version(Windows) { 364 pFreeImage_RegisterExternalPlugin FreeImage_RegisterExternalPlugin; 365 } 366 367 pFreeImage_GetFIFCount FreeImage_GetFIFCount; 368 pFreeImage_SetPluginEnabled FreeImage_SetPluginEnabled; 369 pFreeImage_IsPluginEnabled FreeImage_IsPluginEnabled; 370 pFreeImage_GetFIFFromFormat FreeImage_GetFIFFromFormat; 371 pFreeImage_GetFIFFromMime FreeImage_GetFIFFromMime; 372 pFreeImage_GetFormatFromFIF FreeImage_GetFormatFromFIF; 373 pFreeImage_GetFIFExtensionList FreeImage_GetFIFExtensionList; 374 pFreeImage_GetFIFDescription FreeImage_GetFIFDescription; 375 pFreeImage_GetFIFRegExpr FreeImage_GetFIFRegExpr; 376 pFreeImage_GetFIFMimeType FreeImage_GetFIFMimeType; 377 pFreeImage_GetFIFFromFilename FreeImage_GetFIFFromFilename; 378 pFreeImage_GetFIFFromFilenameU FreeImage_GetFIFFromFilenameU; 379 pFreeImage_FIFSupportsReading FreeImage_FIFSupportsReading; 380 pFreeImage_FIFSupportsWriting FreeImage_FIFSupportsWriting; 381 pFreeImage_FIFSupportsExportBPP FreeImage_FIFSupportsExportBPP; 382 pFreeImage_FIFSupportsExportType FreeImage_FIFSupportsExportType; 383 pFreeImage_FIFSupportsICCProfiles FreeImage_FIFSupportsICCProfiles; 384 pFreeImage_FIFSupportsNoPixels FreeImage_FIFSupportsNoPixels; 385 pFreeImage_OpenMultiBitmap FreeImage_OpenMultiBitmap; 386 pFreeImage_OpenMultiBitmapFromHandle FreeImage_OpenMultiBitmapFromHandle; 387 pFreeImage_SaveMultiBitmapToHandle FreeImage_SaveMultiBitmapToHandle; 388 pFreeImage_CloseMultiBitmap FreeImage_CloseMultiBitmap; 389 pFreeImage_GetPageCount FreeImage_GetPageCount; 390 pFreeImage_AppendPage FreeImage_AppendPage; 391 pFreeImage_InsertPage FreeImage_InsertPage; 392 pFreeImage_DeletePage FreeImage_DeletePage; 393 pFreeImage_LockPage FreeImage_LockPage; 394 pFreeImage_UnlockPage FreeImage_UnlockPage; 395 pFreeImage_MovePage FreeImage_MovePage; 396 pFreeImage_GetLockedPageNumbers FreeImage_GetLockedPageNumbers; 397 pFreeImage_GetFileType FreeImage_GetFileType; 398 pFreeImage_GetFileTypeU FreeImage_GetFileTypeU; 399 pFreeImage_GetFileTypeFromHandle FreeImage_GetFileTypeFromHandle; 400 pFreeImage_GetFileTypeFromMemory FreeImage_GetFileTypeFromMemory; 401 pFreeImage_GetImageType FreeImage_GetImageType; 402 pFreeImage_IsLittleEndian FreeImage_IsLittleEndian; 403 pFreeImage_LookupX11Color FreeImage_LookupX11Color; 404 pFreeImage_LookupSVGColor FreeImage_LookupSVGColor; 405 pFreeImage_GetBits FreeImage_GetBits; 406 pFreeImage_GetScanLine FreeImage_GetScanLine; 407 pFreeImage_GetPixelIndex FreeImage_GetPixelIndex; 408 pFreeImage_GetPixelColor FreeImage_GetPixelColor; 409 pFreeImage_SetPixelIndex FreeImage_SetPixelIndex; 410 pFreeImage_SetPixelColor FreeImage_SetPixelColor; 411 pFreeImage_GetColorsUsed FreeImage_GetColorsUsed; 412 pFreeImage_GetBPP FreeImage_GetBPP; 413 pFreeImage_GetWidth FreeImage_GetWidth; 414 pFreeImage_GetHeight FreeImage_GetHeight; 415 pFreeImage_GetLine FreeImage_GetLine; 416 pFreeImage_GetPitch FreeImage_GetPitch; 417 pFreeImage_GetDIBSize FreeImage_GetDIBSize; 418 pFreeImage_GetMemorySize FreeImage_GetMemorySize; 419 pFreeImage_GetPalette FreeImage_GetPalette; 420 pFreeImage_GetDotsPerMeterX FreeImage_GetDotsPerMeterX; 421 pFreeImage_GetDotsPerMeterY FreeImage_GetDotsPerMeterY; 422 pFreeImage_SetDotsPerMeterX FreeImage_SetDotsPerMeterX; 423 pFreeImage_SetDotsPerMeterY FreeImage_SetDotsPerMeterY; 424 pFreeImage_GetInfoHeader FreeImage_GetInfoHeader; 425 pFreeImage_GetInfo FreeImage_GetInfo; 426 pFreeImage_GetColorType FreeImage_GetColorType; 427 pFreeImage_GetRedMask FreeImage_GetRedMask; 428 pFreeImage_GetGreenMask FreeImage_GetGreenMask; 429 pFreeImage_GetBlueMask FreeImage_GetBlueMask; 430 pFreeImage_GetTransparencyCount FreeImage_GetTransparencyCount; 431 pFreeImage_GetTransparencyTable FreeImage_GetTransparencyTable; 432 pFreeImage_SetTransparent FreeImage_SetTransparent; 433 pFreeImage_SetTransparencyTable FreeImage_SetTransparencyTable; 434 pFreeImage_IsTransparent FreeImage_IsTransparent; 435 pFreeImage_SetTransparentIndex FreeImage_SetTransparentIndex; 436 pFreeImage_GetTransparentIndex FreeImage_GetTransparentIndex; 437 pFreeImage_HasBackgroundColor FreeImage_HasBackgroundColor; 438 pFreeImage_GetBackgroundColor FreeImage_GetBackgroundColor; 439 pFreeImage_SetBackgroundColor FreeImage_SetBackgroundColor; 440 pFreeImage_GetThumbnail FreeImage_GetThumbnail; 441 pFreeImage_SetThumbnail FreeImage_SetThumbnail; 442 pFreeImage_GetICCProfile FreeImage_GetICCProfile; 443 pFreeImage_CreateICCProfile FreeImage_CreateICCProfile; 444 pFreeImage_DestroyICCProfile FreeImage_DestroyICCProfile; 445 pFreeImage_ConvertLine1To4 FreeImage_ConvertLine1To4; 446 pFreeImage_ConvertLine8To4 FreeImage_ConvertLine8To4; 447 pFreeImage_ConvertLine16To4_555 FreeImage_ConvertLine16To4_555; 448 pFreeImage_ConvertLine16To4_565 FreeImage_ConvertLine16To4_565; 449 pFreeImage_ConvertLine24To4 FreeImage_ConvertLine24To4; 450 pFreeImage_ConvertLine32To4 FreeImage_ConvertLine32To4; 451 pFreeImage_ConvertLine1To8 FreeImage_ConvertLine1To8; 452 pFreeImage_ConvertLine4To8 FreeImage_ConvertLine4To8; 453 pFreeImage_ConvertLine16To8_555 FreeImage_ConvertLine16To8_555; 454 pFreeImage_ConvertLine16To8_565 FreeImage_ConvertLine16To8_565; 455 pFreeImage_ConvertLine24To8 FreeImage_ConvertLine24To8; 456 pFreeImage_ConvertLine32To8 FreeImage_ConvertLine32To8; 457 pFreeImage_ConvertLine1To16_555 FreeImage_ConvertLine1To16_555; 458 pFreeImage_ConvertLine4To16_555 FreeImage_ConvertLine4To16_555; 459 pFreeImage_ConvertLine8To16_555 FreeImage_ConvertLine8To16_555; 460 pFreeImage_ConvertLine16_565_To16_555 FreeImage_ConvertLine16_565_To16_555; 461 pFreeImage_ConvertLine24To16_555 FreeImage_ConvertLine24To16_555; 462 pFreeImage_ConvertLine32To16_555 FreeImage_ConvertLine32To16_555; 463 pFreeImage_ConvertLine1To16_565 FreeImage_ConvertLine1To16_565; 464 pFreeImage_ConvertLine4To16_565 FreeImage_ConvertLine4To16_565; 465 pFreeImage_ConvertLine8To16_565 FreeImage_ConvertLine8To16_565; 466 pFreeImage_ConvertLine16_555_To16_565 FreeImage_ConvertLine16_555_To16_565; 467 pFreeImage_ConvertLine24To16_565 FreeImage_ConvertLine24To16_565; 468 pFreeImage_ConvertLine32To16_565 FreeImage_ConvertLine32To16_565; 469 pFreeImage_ConvertLine1To24 FreeImage_ConvertLine1To24; 470 pFreeImage_ConvertLine4To24 FreeImage_ConvertLine4To24; 471 pFreeImage_ConvertLine8To24 FreeImage_ConvertLine8To24; 472 pFreeImage_ConvertLine16To24_555 FreeImage_ConvertLine16To24_555; 473 pFreeImage_ConvertLine16To24_565 FreeImage_ConvertLine16To24_565; 474 pFreeImage_ConvertLine32To24 FreeImage_ConvertLine32To24; 475 pFreeImage_ConvertLine1To32 FreeImage_ConvertLine1To32; 476 pFreeImage_ConvertLine4To32 FreeImage_ConvertLine4To32; 477 pFreeImage_ConvertLine8To32 FreeImage_ConvertLine8To32; 478 pFreeImage_ConvertLine16To32_555 FreeImage_ConvertLine16To32_555; 479 pFreeImage_ConvertLine16To32_565 FreeImage_ConvertLine16To32_565; 480 pFreeImage_ConvertLine24To32 FreeImage_ConvertLine24To32; 481 pFreeImage_ConvertTo4Bits FreeImage_ConvertTo4Bits; 482 pFreeImage_ConvertTo8Bits FreeImage_ConvertTo8Bits; 483 pFreeImage_ConvertToGreyscale FreeImage_ConvertToGreyscale; 484 pFreeImage_ConvertTo16Bits555 FreeImage_ConvertTo16Bits555; 485 pFreeImage_ConvertTo16Bits565 FreeImage_ConvertTo16Bits565; 486 pFreeImage_ConvertTo24Bits FreeImage_ConvertTo24Bits; 487 pFreeImage_ConvertTo32Bits FreeImage_ConvertTo32Bits; 488 pFreeImage_ColorQuantize FreeImage_ColorQuantize; 489 pFreeImage_ColorQuantizeEx FreeImage_ColorQuantizeEx; 490 pFreeImage_Threshold FreeImage_Threshold; 491 pFreeImage_Dither FreeImage_Dither; 492 pFreeImage_ConvertFromRawBits FreeImage_ConvertFromRawBits; 493 pFreeImage_ConvertFromRawBitsEx FreeImage_ConvertFromRawBitsEx; 494 pFreeImage_ConvertToRawBits FreeImage_ConvertToRawBits; 495 pFreeImage_ConvertToFloat FreeImage_ConvertToFloat; 496 pFreeImage_ConvertToRGBF FreeImage_ConvertToRGBF; 497 pFreeImage_ConvertToRGBAF FreeImage_ConvertToRGBAF; 498 pFreeImage_ConvertToUINT16 FreeImage_ConvertToUINT16; 499 pFreeImage_ConvertToRGB16 FreeImage_ConvertToRGB16; 500 pFreeImage_ConvertToRGBA16 FreeImage_ConvertToRGBA16; 501 pFreeImage_ConvertToStandardType FreeImage_ConvertToStandardType; 502 pFreeImage_ConvertToType FreeImage_ConvertToType; 503 pFreeImage_ToneMapping FreeImage_ToneMapping; 504 pFreeImage_TmoDrago03 FreeImage_TmoDrago03; 505 pFreeImage_TmoReinhard05 FreeImage_TmoReinhard05; 506 pFreeImage_TmoReinhard05Ex FreeImage_TmoReinhard05Ex; 507 pFreeImage_TmoFattal02 FreeImage_TmoFattal02; 508 pFreeImage_ZLibCompress FreeImage_ZLibCompress; 509 pFreeImage_ZLibUncompress FreeImage_ZLibUncompress; 510 pFreeImage_ZLibGZip FreeImage_ZLibGZip; 511 pFreeImage_ZLibGUnzip FreeImage_ZLibGUnzip; 512 pFreeImage_ZLibCRC32 FreeImage_ZLibCRC32; 513 pFreeImage_CreateTag FreeImage_CreateTag; 514 pFreeImage_DeleteTag FreeImage_DeleteTag; 515 pFreeImage_CloneTag FreeImage_CloneTag; 516 pFreeImage_GetTagKey FreeImage_GetTagKey; 517 pFreeImage_GetTagDescription FreeImage_GetTagDescription; 518 pFreeImage_GetTagID FreeImage_GetTagID; 519 pFreeImage_GetTagType FreeImage_GetTagType; 520 pFreeImage_GetTagCount FreeImage_GetTagCount; 521 pFreeImage_GetTagLength FreeImage_GetTagLength; 522 pFreeImage_GetTagValue FreeImage_GetTagValue; 523 pFreeImage_SetTagKey FreeImage_SetTagKey; 524 pFreeImage_SetTagDescription FreeImage_SetTagDescription; 525 pFreeImage_SetTagID FreeImage_SetTagID; 526 pFreeImage_SetTagType FreeImage_SetTagType; 527 pFreeImage_SetTagCount FreeImage_SetTagCount; 528 pFreeImage_SetTagLength FreeImage_SetTagLength; 529 pFreeImage_SetTagValue FreeImage_SetTagValue; 530 pFreeImage_FindFirstMetadata FreeImage_FindFirstMetadata; 531 pFreeImage_FindNextMetadata FreeImage_FindNextMetadata; 532 pFreeImage_FindCloseMetadata FreeImage_FindCloseMetadata; 533 pFreeImage_SetMetadata FreeImage_SetMetadata; 534 pFreeImage_GetMetadata FreeImage_GetMetadata; 535 pFreeImage_SetMetadataKeyValue FreeImage_SetMetadataKeyValue; 536 pFreeImage_GetMetadataCount FreeImage_GetMetadataCount; 537 pFreeImage_CloneMetadata FreeImage_CloneMetadata; 538 pFreeImage_TagToString FreeImage_TagToString; 539 version(BindFI_JPEGTransform) { 540 pFreeImage_JPEGTransform FreeImage_JPEGTransform; 541 pFreeImage_JPEGTransformU FreeImage_JPEGTransformU; 542 pFreeImage_JPEGCrop FreeImage_JPEGCrop; 543 pFreeImage_JPEGCropU FreeImage_JPEGCropU; 544 pFreeImage_JPEGTransformFromHandle FreeImage_JPEGTransformFromHandle; 545 pFreeImage_JPEGTransformCombined FreeImage_JPEGTransformCombined; 546 pFreeImage_JPEGTransformCombinedU FreeImage_JPEGTransformCombinedU; 547 pFreeImage_JPEGTransformCombinedFromMemory FreeImage_JPEGTransformCombinedFromMemory; 548 } 549 pFreeImage_Rotate FreeImage_Rotate; 550 pFreeImage_RotateEx FreeImage_RotateEx; 551 pFreeImage_FlipHorizontal FreeImage_FlipHorizontal; 552 pFreeImage_FlipVertical FreeImage_FlipVertical; 553 pFreeImage_Rescale FreeImage_Rescale; 554 pFreeImage_MakeThumbnail FreeImage_MakeThumbnail; 555 pFreeImage_RescaleRect FreeImage_RescaleRect; 556 pFreeImage_AdjustCurve FreeImage_AdjustCurve; 557 pFreeImage_AdjustGamma FreeImage_AdjustGamma; 558 pFreeImage_AdjustBrightness FreeImage_AdjustBrightness; 559 pFreeImage_AdjustContrast FreeImage_AdjustContrast; 560 pFreeImage_Invert FreeImage_Invert; 561 pFreeImage_GetHistogram FreeImage_GetHistogram; 562 pFreeImage_GetAdjustColorsLookupTable FreeImage_GetAdjustColorsLookupTable; 563 pFreeImage_AdjustColors FreeImage_AdjustColors; 564 pFreeImage_ApplyColorMapping FreeImage_ApplyColorMapping; 565 pFreeImage_SwapColors FreeImage_SwapColors; 566 pFreeImage_ApplyPaletteIndexMapping FreeImage_ApplyPaletteIndexMapping; 567 pFreeImage_SwapPaletteIndices FreeImage_SwapPaletteIndices; 568 pFreeImage_GetChannel FreeImage_GetChannel; 569 pFreeImage_SetChannel FreeImage_SetChannel; 570 pFreeImage_GetComplexChannel FreeImage_GetComplexChannel; 571 pFreeImage_SetComplexChannel FreeImage_SetComplexChannel; 572 pFreeImage_Copy FreeImage_Copy; 573 pFreeImage_Paste FreeImage_Paste; 574 pFreeImage_CreateView FreeImage_CreateView; 575 pFreeImage_Composite FreeImage_Composite; 576 pFreeImage_PreMultiplyWithAlpha FreeImage_PreMultiplyWithAlpha; 577 pFreeImage_FillBackground FreeImage_FillBackground; 578 pFreeImage_EnlargeCanvas FreeImage_EnlargeCanvas; 579 pFreeImage_AllocateEx FreeImage_AllocateEx; 580 pFreeImage_AllocateExT FreeImage_AllocateExT; 581 pFreeImage_MultigridPoissonSolver FreeImage_MultigridPoissonSolver; 582 583 static if(fiSupport >= FISupport.fi318) { 584 pFreeImage_Validate FreeImage_Validate; 585 pFreeImage_ValidateU FreeImage_ValidateU; 586 pFreeImage_ValidateFromHandle FreeImage_ValidateFromHandle; 587 pFreeImage_ValidateFromMemory FreeImage_ValidateFromMemory; 588 pFreeImage_ConvertLine1To32MapTransparency FreeImage_ConvertLine1To32MapTransparency; 589 pFreeImage_ConvertLine4To32MapTransparency FreeImage_ConvertLine4To32MapTransparency; 590 pFreeImage_ConvertLine8To32MapTransparency FreeImage_ConvertLine8To32MapTransparency; 591 } 592 593 } 594 595 private { 596 SharedLib lib; 597 FISupport loadedVersion; 598 } 599 600 @nogc nothrow: 601 602 FISupport loadedFreeImageVersion() { return loadedVersion; } 603 bool isFreeImageLoaded() { return lib != invalidHandle; } 604 605 FISupport loadFreeImage() 606 { 607 version(Windows) { 608 const(char)[][1] libNames = [ 609 "FreeImage.dll" 610 ]; 611 } 612 else version(OSX) { 613 const(char)[][2] libNames = [ 614 "libfreeimage.dylib", 615 "libfreeimage.dylib.3" 616 ]; 617 } 618 else version(Posix) { 619 const(char)[][2] libNames = [ 620 "libfreeimage.so", 621 "libfreeimage.so.3" 622 ]; 623 } 624 else static assert(0, "bindbc-freeimage is not yet supported on this platform."); 625 626 FISupport ret; 627 foreach(name; libNames) { 628 ret = loadFreeImage(name.ptr); 629 if(ret != FISupport.noLibrary) break; 630 } 631 return ret; 632 } 633 634 FISupport loadFreeImage(const(char)* libName) 635 { 636 lib = load(libName); 637 if(lib == invalidHandle) { 638 return FISupport.noLibrary; 639 } 640 641 auto errCount = errorCount(); 642 loadedVersion = FISupport.badLibrary; 643 644 lib.bindSymbol_stdcall(FreeImage_Initialise, "FreeImage_Initialise"); 645 lib.bindSymbol_stdcall(FreeImage_DeInitialise, "FreeImage_DeInitialise"); 646 lib.bindSymbol_stdcall(FreeImage_GetVersion, "FreeImage_GetVersion"); 647 lib.bindSymbol_stdcall(FreeImage_GetCopyrightMessage, "FreeImage_GetCopyrightMessage"); 648 lib.bindSymbol_stdcall(FreeImage_SetOutputMessageStdCall, "FreeImage_SetOutputMessageStdCall"); 649 lib.bindSymbol_stdcall(FreeImage_SetOutputMessage, "FreeImage_SetOutputMessage"); 650 651 // This one isn't mangled like the rest, likely because of the variable args. 652 lib.bindSymbol(cast(void**)&FreeImage_OutputMessageProc, "FreeImage_OutputMessageProc"); 653 654 lib.bindSymbol_stdcall(FreeImage_Allocate, "FreeImage_Allocate"); 655 lib.bindSymbol_stdcall(FreeImage_AllocateT, "FreeImage_AllocateT"); 656 lib.bindSymbol_stdcall(FreeImage_Clone, "FreeImage_Clone"); 657 lib.bindSymbol_stdcall(FreeImage_Unload, "FreeImage_Unload"); 658 lib.bindSymbol_stdcall(FreeImage_HasPixels, "FreeImage_HasPixels"); 659 lib.bindSymbol_stdcall(FreeImage_Load, "FreeImage_Load"); 660 lib.bindSymbol_stdcall(FreeImage_LoadU, "FreeImage_LoadU"); 661 lib.bindSymbol_stdcall(FreeImage_LoadFromHandle, "FreeImage_LoadFromHandle"); 662 lib.bindSymbol_stdcall(FreeImage_Save, "FreeImage_Save"); 663 lib.bindSymbol_stdcall(FreeImage_SaveU, "FreeImage_SaveU"); 664 lib.bindSymbol_stdcall(FreeImage_SaveToHandle, "FreeImage_SaveToHandle"); 665 lib.bindSymbol_stdcall(FreeImage_OpenMemory, "FreeImage_OpenMemory"); 666 lib.bindSymbol_stdcall(FreeImage_CloseMemory, "FreeImage_CloseMemory"); 667 lib.bindSymbol_stdcall(FreeImage_LoadFromMemory, "FreeImage_LoadFromMemory"); 668 lib.bindSymbol_stdcall(FreeImage_SaveToMemory, "FreeImage_SaveToMemory"); 669 lib.bindSymbol_stdcall(FreeImage_TellMemory, "FreeImage_TellMemory"); 670 lib.bindSymbol_stdcall(FreeImage_SeekMemory, "FreeImage_SeekMemory"); 671 lib.bindSymbol_stdcall(FreeImage_AcquireMemory, "FreeImage_AcquireMemory"); 672 lib.bindSymbol_stdcall(FreeImage_ReadMemory, "FreeImage_ReadMemory"); 673 lib.bindSymbol_stdcall(FreeImage_WriteMemory, "FreeImage_WriteMemory"); 674 lib.bindSymbol_stdcall(FreeImage_LoadMultiBitmapFromMemory, "FreeImage_LoadMultiBitmapFromMemory"); 675 lib.bindSymbol_stdcall(FreeImage_SaveMultiBitmapToMemory, "FreeImage_SaveMultiBitmapToMemory"); 676 lib.bindSymbol_stdcall(FreeImage_RegisterLocalPlugin, "FreeImage_RegisterLocalPlugin"); 677 678 version(Windows) { 679 lib.bindSymbol_stdcall(FreeImage_RegisterExternalPlugin, "FreeImage_RegisterExternalPlugin"); 680 } 681 682 lib.bindSymbol_stdcall(FreeImage_GetFIFCount, "FreeImage_GetFIFCount"); 683 lib.bindSymbol_stdcall(FreeImage_SetPluginEnabled, "FreeImage_SetPluginEnabled"); 684 lib.bindSymbol_stdcall(FreeImage_IsPluginEnabled, "FreeImage_IsPluginEnabled"); 685 lib.bindSymbol_stdcall(FreeImage_GetFIFFromFormat, "FreeImage_GetFIFFromFormat"); 686 lib.bindSymbol_stdcall(FreeImage_GetFIFFromMime, "FreeImage_GetFIFFromMime"); 687 lib.bindSymbol_stdcall(FreeImage_GetFormatFromFIF, "FreeImage_GetFormatFromFIF"); 688 lib.bindSymbol_stdcall(FreeImage_GetFIFExtensionList, "FreeImage_GetFIFExtensionList"); 689 lib.bindSymbol_stdcall(FreeImage_GetFIFDescription, "FreeImage_GetFIFDescription"); 690 lib.bindSymbol_stdcall(FreeImage_GetFIFRegExpr, "FreeImage_GetFIFRegExpr"); 691 lib.bindSymbol_stdcall(FreeImage_GetFIFMimeType, "FreeImage_GetFIFMimeType"); 692 lib.bindSymbol_stdcall(FreeImage_GetFIFFromFilename, "FreeImage_GetFIFFromFilename"); 693 lib.bindSymbol_stdcall(FreeImage_GetFIFFromFilenameU, "FreeImage_GetFIFFromFilenameU"); 694 lib.bindSymbol_stdcall(FreeImage_FIFSupportsReading, "FreeImage_FIFSupportsReading"); 695 lib.bindSymbol_stdcall(FreeImage_FIFSupportsWriting, "FreeImage_FIFSupportsWriting"); 696 lib.bindSymbol_stdcall(FreeImage_FIFSupportsExportBPP, "FreeImage_FIFSupportsExportBPP"); 697 lib.bindSymbol_stdcall(FreeImage_FIFSupportsExportType, "FreeImage_FIFSupportsExportType"); 698 lib.bindSymbol_stdcall(FreeImage_FIFSupportsICCProfiles, "FreeImage_FIFSupportsICCProfiles"); 699 lib.bindSymbol_stdcall(FreeImage_FIFSupportsNoPixels, "FreeImage_FIFSupportsNoPixels"); 700 lib.bindSymbol_stdcall(FreeImage_OpenMultiBitmap, "FreeImage_OpenMultiBitmap"); 701 lib.bindSymbol_stdcall(FreeImage_OpenMultiBitmapFromHandle, "FreeImage_OpenMultiBitmapFromHandle"); 702 lib.bindSymbol_stdcall(FreeImage_SaveMultiBitmapToHandle, "FreeImage_SaveMultiBitmapToHandle"); 703 lib.bindSymbol_stdcall(FreeImage_CloseMultiBitmap, "FreeImage_CloseMultiBitmap"); 704 lib.bindSymbol_stdcall(FreeImage_GetPageCount, "FreeImage_GetPageCount"); 705 lib.bindSymbol_stdcall(FreeImage_AppendPage, "FreeImage_AppendPage"); 706 lib.bindSymbol_stdcall(FreeImage_InsertPage, "FreeImage_InsertPage"); 707 lib.bindSymbol_stdcall(FreeImage_DeletePage, "FreeImage_DeletePage"); 708 lib.bindSymbol_stdcall(FreeImage_LockPage, "FreeImage_LockPage"); 709 lib.bindSymbol_stdcall(FreeImage_UnlockPage, "FreeImage_UnlockPage"); 710 lib.bindSymbol_stdcall(FreeImage_MovePage, "FreeImage_MovePage"); 711 lib.bindSymbol_stdcall(FreeImage_GetLockedPageNumbers, "FreeImage_GetLockedPageNumbers"); 712 lib.bindSymbol_stdcall(FreeImage_GetFileType, "FreeImage_GetFileType"); 713 lib.bindSymbol_stdcall(FreeImage_GetFileTypeU, "FreeImage_GetFileTypeU"); 714 lib.bindSymbol_stdcall(FreeImage_GetFileTypeFromHandle, "FreeImage_GetFileTypeFromHandle"); 715 lib.bindSymbol_stdcall(FreeImage_GetFileTypeFromMemory, "FreeImage_GetFileTypeFromMemory"); 716 lib.bindSymbol_stdcall(FreeImage_GetImageType, "FreeImage_GetImageType"); 717 lib.bindSymbol_stdcall(FreeImage_IsLittleEndian, "FreeImage_IsLittleEndian"); 718 lib.bindSymbol_stdcall(FreeImage_LookupX11Color, "FreeImage_LookupX11Color"); 719 lib.bindSymbol_stdcall(FreeImage_LookupSVGColor, "FreeImage_LookupSVGColor"); 720 lib.bindSymbol_stdcall(FreeImage_GetBits, "FreeImage_GetBits"); 721 lib.bindSymbol_stdcall(FreeImage_GetScanLine, "FreeImage_GetScanLine"); 722 lib.bindSymbol_stdcall(FreeImage_GetPixelIndex, "FreeImage_GetPixelIndex"); 723 lib.bindSymbol_stdcall(FreeImage_GetPixelColor, "FreeImage_GetPixelColor"); 724 lib.bindSymbol_stdcall(FreeImage_SetPixelIndex, "FreeImage_SetPixelIndex"); 725 lib.bindSymbol_stdcall(FreeImage_SetPixelColor, "FreeImage_SetPixelColor"); 726 lib.bindSymbol_stdcall(FreeImage_GetColorsUsed, "FreeImage_GetColorsUsed"); 727 lib.bindSymbol_stdcall(FreeImage_GetBPP, "FreeImage_GetBPP"); 728 lib.bindSymbol_stdcall(FreeImage_GetWidth, "FreeImage_GetWidth"); 729 lib.bindSymbol_stdcall(FreeImage_GetHeight, "FreeImage_GetHeight"); 730 lib.bindSymbol_stdcall(FreeImage_GetLine, "FreeImage_GetLine"); 731 lib.bindSymbol_stdcall(FreeImage_GetPitch, "FreeImage_GetPitch"); 732 lib.bindSymbol_stdcall(FreeImage_GetDIBSize, "FreeImage_GetDIBSize"); 733 lib.bindSymbol_stdcall(FreeImage_GetMemorySize, "FreeImage_GetMemorySize"); 734 lib.bindSymbol_stdcall(FreeImage_GetPalette, "FreeImage_GetPalette"); 735 lib.bindSymbol_stdcall(FreeImage_GetDotsPerMeterX, "FreeImage_GetDotsPerMeterX"); 736 lib.bindSymbol_stdcall(FreeImage_GetDotsPerMeterY, "FreeImage_GetDotsPerMeterY"); 737 lib.bindSymbol_stdcall(FreeImage_SetDotsPerMeterX, "FreeImage_SetDotsPerMeterX"); 738 lib.bindSymbol_stdcall(FreeImage_SetDotsPerMeterY, "FreeImage_SetDotsPerMeterY"); 739 lib.bindSymbol_stdcall(FreeImage_GetInfoHeader, "FreeImage_GetInfoHeader"); 740 lib.bindSymbol_stdcall(FreeImage_GetInfo, "FreeImage_GetInfo"); 741 lib.bindSymbol_stdcall(FreeImage_GetColorType, "FreeImage_GetColorType"); 742 lib.bindSymbol_stdcall(FreeImage_GetRedMask, "FreeImage_GetRedMask"); 743 lib.bindSymbol_stdcall(FreeImage_GetGreenMask, "FreeImage_GetGreenMask"); 744 lib.bindSymbol_stdcall(FreeImage_GetBlueMask, "FreeImage_GetBlueMask"); 745 lib.bindSymbol_stdcall(FreeImage_GetTransparencyCount, "FreeImage_GetTransparencyCount"); 746 lib.bindSymbol_stdcall(FreeImage_GetTransparencyTable, "FreeImage_GetTransparencyTable"); 747 lib.bindSymbol_stdcall(FreeImage_SetTransparent, "FreeImage_SetTransparent"); 748 lib.bindSymbol_stdcall(FreeImage_SetTransparencyTable, "FreeImage_SetTransparencyTable"); 749 lib.bindSymbol_stdcall(FreeImage_IsTransparent, "FreeImage_IsTransparent"); 750 lib.bindSymbol_stdcall(FreeImage_SetTransparentIndex, "FreeImage_SetTransparentIndex"); 751 lib.bindSymbol_stdcall(FreeImage_GetTransparentIndex, "FreeImage_GetTransparentIndex"); 752 lib.bindSymbol_stdcall(FreeImage_HasBackgroundColor, "FreeImage_HasBackgroundColor"); 753 lib.bindSymbol_stdcall(FreeImage_GetBackgroundColor, "FreeImage_GetBackgroundColor"); 754 lib.bindSymbol_stdcall(FreeImage_SetBackgroundColor, "FreeImage_SetBackgroundColor"); 755 lib.bindSymbol_stdcall(FreeImage_GetThumbnail, "FreeImage_GetThumbnail"); 756 lib.bindSymbol_stdcall(FreeImage_SetThumbnail, "FreeImage_SetThumbnail"); 757 lib.bindSymbol_stdcall(FreeImage_GetICCProfile, "FreeImage_GetICCProfile"); 758 lib.bindSymbol_stdcall(FreeImage_CreateICCProfile, "FreeImage_CreateICCProfile"); 759 lib.bindSymbol_stdcall(FreeImage_DestroyICCProfile, "FreeImage_DestroyICCProfile"); 760 lib.bindSymbol_stdcall(FreeImage_ConvertLine1To4, "FreeImage_ConvertLine1To4"); 761 lib.bindSymbol_stdcall(FreeImage_ConvertLine8To4, "FreeImage_ConvertLine8To4"); 762 lib.bindSymbol_stdcall(FreeImage_ConvertLine16To4_555, "FreeImage_ConvertLine16To4_555"); 763 lib.bindSymbol_stdcall(FreeImage_ConvertLine16To4_565, "FreeImage_ConvertLine16To4_565"); 764 lib.bindSymbol_stdcall(FreeImage_ConvertLine24To4, "FreeImage_ConvertLine24To4"); 765 lib.bindSymbol_stdcall(FreeImage_ConvertLine32To4, "FreeImage_ConvertLine32To4"); 766 lib.bindSymbol_stdcall(FreeImage_ConvertLine1To8, "FreeImage_ConvertLine1To8"); 767 lib.bindSymbol_stdcall(FreeImage_ConvertLine4To8, "FreeImage_ConvertLine4To8"); 768 lib.bindSymbol_stdcall(FreeImage_ConvertLine16To8_555, "FreeImage_ConvertLine16To8_555"); 769 lib.bindSymbol_stdcall(FreeImage_ConvertLine16To8_565, "FreeImage_ConvertLine16To8_565"); 770 lib.bindSymbol_stdcall(FreeImage_ConvertLine24To8, "FreeImage_ConvertLine24To8"); 771 lib.bindSymbol_stdcall(FreeImage_ConvertLine32To8, "FreeImage_ConvertLine32To8"); 772 lib.bindSymbol_stdcall(FreeImage_ConvertLine1To16_555, "FreeImage_ConvertLine1To16_555"); 773 lib.bindSymbol_stdcall(FreeImage_ConvertLine4To16_555, "FreeImage_ConvertLine4To16_555"); 774 lib.bindSymbol_stdcall(FreeImage_ConvertLine8To16_555, "FreeImage_ConvertLine8To16_555"); 775 lib.bindSymbol_stdcall(FreeImage_ConvertLine16_565_To16_555, "FreeImage_ConvertLine16_565_To16_555"); 776 lib.bindSymbol_stdcall(FreeImage_ConvertLine24To16_555, "FreeImage_ConvertLine24To16_555"); 777 lib.bindSymbol_stdcall(FreeImage_ConvertLine32To16_555, "FreeImage_ConvertLine32To16_555"); 778 lib.bindSymbol_stdcall(FreeImage_ConvertLine1To16_565, "FreeImage_ConvertLine1To16_565"); 779 lib.bindSymbol_stdcall(FreeImage_ConvertLine4To16_565, "FreeImage_ConvertLine4To16_565"); 780 lib.bindSymbol_stdcall(FreeImage_ConvertLine8To16_565, "FreeImage_ConvertLine8To16_565"); 781 lib.bindSymbol_stdcall(FreeImage_ConvertLine16_555_To16_565, "FreeImage_ConvertLine16_555_To16_565"); 782 lib.bindSymbol_stdcall(FreeImage_ConvertLine24To16_565, "FreeImage_ConvertLine24To16_565"); 783 lib.bindSymbol_stdcall(FreeImage_ConvertLine32To16_565, "FreeImage_ConvertLine32To16_565"); 784 lib.bindSymbol_stdcall(FreeImage_ConvertLine1To24, "FreeImage_ConvertLine1To24"); 785 lib.bindSymbol_stdcall(FreeImage_ConvertLine4To24, "FreeImage_ConvertLine4To24"); 786 lib.bindSymbol_stdcall(FreeImage_ConvertLine8To24, "FreeImage_ConvertLine8To24"); 787 lib.bindSymbol_stdcall(FreeImage_ConvertLine16To24_555, "FreeImage_ConvertLine16To24_555"); 788 lib.bindSymbol_stdcall(FreeImage_ConvertLine16To24_565, "FreeImage_ConvertLine16To24_565"); 789 lib.bindSymbol_stdcall(FreeImage_ConvertLine32To24, "FreeImage_ConvertLine32To24"); 790 lib.bindSymbol_stdcall(FreeImage_ConvertLine1To32, "FreeImage_ConvertLine1To32"); 791 lib.bindSymbol_stdcall(FreeImage_ConvertLine4To32, "FreeImage_ConvertLine4To32"); 792 lib.bindSymbol_stdcall(FreeImage_ConvertLine8To32, "FreeImage_ConvertLine8To32"); 793 lib.bindSymbol_stdcall(FreeImage_ConvertLine16To32_555, "FreeImage_ConvertLine16To32_555"); 794 lib.bindSymbol_stdcall(FreeImage_ConvertLine16To32_565, "FreeImage_ConvertLine16To32_565"); 795 lib.bindSymbol_stdcall(FreeImage_ConvertLine24To32, "FreeImage_ConvertLine24To32"); 796 lib.bindSymbol_stdcall(FreeImage_ConvertTo4Bits, "FreeImage_ConvertTo4Bits"); 797 lib.bindSymbol_stdcall(FreeImage_ConvertTo8Bits, "FreeImage_ConvertTo8Bits"); 798 lib.bindSymbol_stdcall(FreeImage_ConvertToGreyscale, "FreeImage_ConvertToGreyscale"); 799 lib.bindSymbol_stdcall(FreeImage_ConvertTo16Bits555, "FreeImage_ConvertTo16Bits555"); 800 lib.bindSymbol_stdcall(FreeImage_ConvertTo16Bits565, "FreeImage_ConvertTo16Bits565"); 801 lib.bindSymbol_stdcall(FreeImage_ConvertTo24Bits, "FreeImage_ConvertTo24Bits"); 802 lib.bindSymbol_stdcall(FreeImage_ConvertTo32Bits, "FreeImage_ConvertTo32Bits"); 803 lib.bindSymbol_stdcall(FreeImage_ColorQuantize, "FreeImage_ColorQuantize"); 804 lib.bindSymbol_stdcall(FreeImage_ColorQuantizeEx, "FreeImage_ColorQuantizeEx"); 805 lib.bindSymbol_stdcall(FreeImage_Threshold, "FreeImage_Threshold"); 806 lib.bindSymbol_stdcall(FreeImage_Dither, "FreeImage_Dither"); 807 lib.bindSymbol_stdcall(FreeImage_ConvertFromRawBits, "FreeImage_ConvertFromRawBits"); 808 lib.bindSymbol_stdcall(FreeImage_ConvertFromRawBitsEx, "FreeImage_ConvertFromRawBitsEx"); 809 lib.bindSymbol_stdcall(FreeImage_ConvertToRawBits, "FreeImage_ConvertToRawBits"); 810 lib.bindSymbol_stdcall(FreeImage_ConvertToFloat, "FreeImage_ConvertToFloat"); 811 lib.bindSymbol_stdcall(FreeImage_ConvertToRGBF, "FreeImage_ConvertToRGBF"); 812 lib.bindSymbol_stdcall(FreeImage_ConvertToRGBAF, "FreeImage_ConvertToRGBAF"); 813 lib.bindSymbol_stdcall(FreeImage_ConvertToUINT16, "FreeImage_ConvertToUINT16"); 814 lib.bindSymbol_stdcall(FreeImage_ConvertToRGB16, "FreeImage_ConvertToRGB16"); 815 lib.bindSymbol_stdcall(FreeImage_ConvertToRGBA16, "FreeImage_ConvertToRGBA16"); 816 lib.bindSymbol_stdcall(FreeImage_ConvertToStandardType, "FreeImage_ConvertToStandardType"); 817 lib.bindSymbol_stdcall(FreeImage_ConvertToType, "FreeImage_ConvertToType"); 818 lib.bindSymbol_stdcall(FreeImage_ToneMapping, "FreeImage_ToneMapping"); 819 lib.bindSymbol_stdcall(FreeImage_TmoDrago03, "FreeImage_TmoDrago03"); 820 lib.bindSymbol_stdcall(FreeImage_TmoReinhard05, "FreeImage_TmoReinhard05"); 821 lib.bindSymbol_stdcall(FreeImage_TmoReinhard05Ex, "FreeImage_TmoReinhard05Ex"); 822 lib.bindSymbol_stdcall(FreeImage_TmoFattal02, "FreeImage_TmoFattal02"); 823 lib.bindSymbol_stdcall(FreeImage_ZLibCompress, "FreeImage_ZLibCompress"); 824 lib.bindSymbol_stdcall(FreeImage_ZLibUncompress, "FreeImage_ZLibUncompress"); 825 lib.bindSymbol_stdcall(FreeImage_ZLibGZip, "FreeImage_ZLibGZip"); 826 lib.bindSymbol_stdcall(FreeImage_ZLibGUnzip, "FreeImage_ZLibGUnzip"); 827 lib.bindSymbol_stdcall(FreeImage_ZLibCRC32, "FreeImage_ZLibCRC32"); 828 829 lib.bindSymbol_stdcall(FreeImage_CreateTag, "FreeImage_CreateTag"); 830 lib.bindSymbol_stdcall(FreeImage_DeleteTag, "FreeImage_DeleteTag"); 831 lib.bindSymbol_stdcall(FreeImage_CloneTag, "FreeImage_CloneTag"); 832 lib.bindSymbol_stdcall(FreeImage_GetTagKey, "FreeImage_GetTagKey"); 833 lib.bindSymbol_stdcall(FreeImage_GetTagDescription, "FreeImage_GetTagDescription"); 834 lib.bindSymbol_stdcall(FreeImage_GetTagID, "FreeImage_GetTagID"); 835 lib.bindSymbol_stdcall(FreeImage_GetTagType, "FreeImage_GetTagType"); 836 lib.bindSymbol_stdcall(FreeImage_GetTagCount, "FreeImage_GetTagCount"); 837 lib.bindSymbol_stdcall(FreeImage_GetTagLength, "FreeImage_GetTagLength"); 838 lib.bindSymbol_stdcall(FreeImage_GetTagValue, "FreeImage_GetTagValue"); 839 lib.bindSymbol_stdcall(FreeImage_SetTagKey, "FreeImage_SetTagKey"); 840 lib.bindSymbol_stdcall(FreeImage_SetTagDescription, "FreeImage_SetTagDescription"); 841 lib.bindSymbol_stdcall(FreeImage_SetTagID, "FreeImage_SetTagID"); 842 lib.bindSymbol_stdcall(FreeImage_SetTagType, "FreeImage_SetTagType"); 843 lib.bindSymbol_stdcall(FreeImage_SetTagCount, "FreeImage_SetTagCount"); 844 lib.bindSymbol_stdcall(FreeImage_SetTagLength, "FreeImage_SetTagLength"); 845 lib.bindSymbol_stdcall(FreeImage_SetTagValue, "FreeImage_SetTagValue"); 846 lib.bindSymbol_stdcall(FreeImage_FindFirstMetadata, "FreeImage_FindFirstMetadata"); 847 lib.bindSymbol_stdcall(FreeImage_FindNextMetadata, "FreeImage_FindNextMetadata"); 848 lib.bindSymbol_stdcall(FreeImage_FindCloseMetadata, "FreeImage_FindCloseMetadata"); 849 lib.bindSymbol_stdcall(FreeImage_SetMetadata, "FreeImage_SetMetadata"); 850 lib.bindSymbol_stdcall(FreeImage_GetMetadata, "FreeImage_GetMetadata"); 851 lib.bindSymbol_stdcall(FreeImage_SetMetadataKeyValue, "FreeImage_SetMetadataKeyValue"); 852 lib.bindSymbol_stdcall(FreeImage_GetMetadataCount, "FreeImage_GetMetadataCount"); 853 lib.bindSymbol_stdcall(FreeImage_CloneMetadata, "FreeImage_CloneMetadata"); 854 lib.bindSymbol_stdcall(FreeImage_TagToString, "FreeImage_TagToString"); 855 856 version(BindFI_JPEGTransform) { 857 lib.bindSymbol_stdcall(FreeImage_JPEGTransform, "FreeImage_JPEGTransform"); 858 lib.bindSymbol_stdcall(FreeImage_JPEGTransformU, "FreeImage_JPEGTransformU"); 859 lib.bindSymbol_stdcall(FreeImage_JPEGCrop, "FreeImage_JPEGCrop"); 860 lib.bindSymbol_stdcall(FreeImage_JPEGCropU, "FreeImage_JPEGCropU"); 861 lib.bindSymbol_stdcall(FreeImage_JPEGTransformFromHandle, "FreeImage_JPEGTransformFromHandle"); 862 lib.bindSymbol_stdcall(FreeImage_JPEGTransformCombined, "FreeImage_JPEGTransformCombined"); 863 lib.bindSymbol_stdcall(FreeImage_JPEGTransformCombinedU, "FreeImage_JPEGTransformCombinedU"); 864 lib.bindSymbol_stdcall(FreeImage_JPEGTransformCombinedFromMemory, "FreeImage_JPEGTransformCombinedFromMemory"); 865 } 866 lib.bindSymbol_stdcall(FreeImage_Rotate, "FreeImage_Rotate"); 867 lib.bindSymbol_stdcall(FreeImage_RotateEx, "FreeImage_RotateEx"); 868 lib.bindSymbol_stdcall(FreeImage_FlipHorizontal, "FreeImage_FlipHorizontal"); 869 lib.bindSymbol_stdcall(FreeImage_FlipVertical, "FreeImage_FlipVertical"); 870 lib.bindSymbol_stdcall(FreeImage_Rescale, "FreeImage_Rescale"); 871 lib.bindSymbol_stdcall(FreeImage_MakeThumbnail, "FreeImage_MakeThumbnail"); 872 lib.bindSymbol_stdcall(FreeImage_RescaleRect, "FreeImage_RescaleRect"); 873 lib.bindSymbol_stdcall(FreeImage_AdjustCurve, "FreeImage_AdjustCurve"); 874 lib.bindSymbol_stdcall(FreeImage_AdjustGamma, "FreeImage_AdjustGamma"); 875 lib.bindSymbol_stdcall(FreeImage_AdjustBrightness, "FreeImage_AdjustBrightness"); 876 lib.bindSymbol_stdcall(FreeImage_AdjustContrast, "FreeImage_AdjustContrast"); 877 lib.bindSymbol_stdcall(FreeImage_Invert, "FreeImage_Invert"); 878 lib.bindSymbol_stdcall(FreeImage_GetHistogram, "FreeImage_GetHistogram"); 879 lib.bindSymbol_stdcall(FreeImage_GetAdjustColorsLookupTable, "FreeImage_GetAdjustColorsLookupTable"); 880 lib.bindSymbol_stdcall(FreeImage_AdjustColors, "FreeImage_AdjustColors"); 881 lib.bindSymbol_stdcall(FreeImage_ApplyColorMapping, "FreeImage_ApplyColorMapping"); 882 lib.bindSymbol_stdcall(FreeImage_SwapColors, "FreeImage_SwapColors"); 883 lib.bindSymbol_stdcall(FreeImage_ApplyPaletteIndexMapping, "FreeImage_ApplyPaletteIndexMapping"); 884 lib.bindSymbol_stdcall(FreeImage_SwapPaletteIndices, "FreeImage_SwapPaletteIndices"); 885 lib.bindSymbol_stdcall(FreeImage_GetChannel, "FreeImage_GetChannel"); 886 lib.bindSymbol_stdcall(FreeImage_SetChannel, "FreeImage_SetChannel"); 887 lib.bindSymbol_stdcall(FreeImage_GetComplexChannel, "FreeImage_GetComplexChannel"); 888 lib.bindSymbol_stdcall(FreeImage_SetComplexChannel, "FreeImage_SetComplexChannel"); 889 lib.bindSymbol_stdcall(FreeImage_Copy, "FreeImage_Copy"); 890 lib.bindSymbol_stdcall(FreeImage_Paste, "FreeImage_Paste"); 891 lib.bindSymbol_stdcall(FreeImage_CreateView, "FreeImage_CreateView"); 892 lib.bindSymbol_stdcall(FreeImage_Composite, "FreeImage_Composite"); 893 lib.bindSymbol_stdcall(FreeImage_PreMultiplyWithAlpha, "FreeImage_PreMultiplyWithAlpha"); 894 lib.bindSymbol_stdcall(FreeImage_FillBackground, "FreeImage_FillBackground"); 895 lib.bindSymbol_stdcall(FreeImage_EnlargeCanvas, "FreeImage_EnlargeCanvas"); 896 lib.bindSymbol_stdcall(FreeImage_AllocateEx, "FreeImage_AllocateEx"); 897 lib.bindSymbol_stdcall(FreeImage_AllocateExT, "FreeImage_AllocateExT"); 898 lib.bindSymbol_stdcall(FreeImage_MultigridPoissonSolver, "FreeImage_MultigridPoissonSolver"); 899 900 if(errorCount() != errCount) return FISupport.badLibrary; 901 else loadedVersion = FISupport.fi317; 902 903 static if(fiSupport >= FISupport.fi318) { 904 lib.bindSymbol_stdcall(FreeImage_Validate, "FreeImage_Validate"); 905 lib.bindSymbol_stdcall(FreeImage_ValidateU, "FreeImage_ValidateU"); 906 lib.bindSymbol_stdcall(FreeImage_ValidateFromHandle, "FreeImage_ValidateFromHandle"); 907 lib.bindSymbol_stdcall(FreeImage_ValidateFromMemory, "FreeImage_ValidateFromMemory"); 908 lib.bindSymbol_stdcall(FreeImage_ConvertLine1To32MapTransparency, "FreeImage_ConvertLine1To32MapTransparency"); 909 lib.bindSymbol_stdcall(FreeImage_ConvertLine4To32MapTransparency, "FreeImage_ConvertLine4To32MapTransparency"); 910 lib.bindSymbol_stdcall(FreeImage_ConvertLine8To32MapTransparency, "FreeImage_ConvertLine8To32MapTransparency"); 911 912 if(errorCount() != errCount) return FISupport.badLibrary; 913 else loadedVersion = FISupport.fi318; 914 } 915 916 return loadedVersion; 917 }