class FreeImage extends Library -- ========================================================================================== -- FreeImage 2.3.0 (March 9th 2001) -- -- Design and implementation by -- - Floris van den Berg (flvdberg@wxs.nl) -- -- Contributors: -- - Adam Gates (adam.gates@str.com.au) -- - Alex Kwak -- - Alexander Dymerets (sashad@te.net.ua) -- - Hervé Drolon (drolon@iut.univ-lehavre.fr) -- - Jan L. Nauta (jln@magentammt.com) -- - Jani Kajala (janik@remedy.fi) -- - Luca Piergentili (l.pierge@terra.es) -- - Markus Loibl (markus.loibl@epost.de) -- -- This file is part of FreeImage 2 -- -- 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! -- ========================================================================================== private library_name = "freeimage" -- FREE_IMAGE_FORMAT id's: const int FIF_UNKNOWN = -1 const int FIF_BMP = 0 const int FIF_ICO = 1 const int FIF_JPEG = 2 const int FIF_JNG = 3 const int FIF_KOALA = 4 const int FIF_LBM = 5 const int FIF_MNG = 6 const int FIF_PBM = 7 const int FIF_PBMRAW = 8 const int FIF_PCD = 9 const int FIF_PCX = 10 const int FIF_PGM = 11 const int FIF_PGMRAW = 12 const int FIF_PNG = 13 const int FIF_PPM = 14 const int FIF_PPMRAW = 15 const int FIF_RAS = 16 const int FIF_TARGA = 17 const int FIF_TIFF = 18 const int FIF_WBMP = 19 -- FREE_IMAGE_COLOR_TYPE id's: const int FIC_MINISWHITE = 0 const int FIC_MINISBLACK = 1 const int FIC_RGB = 2 const int FIC_PALETTE = 3 -- FREE_IMAGE_QUANTIZE id's: const int FIQ_WUQUANT = 0 const int FIQ_NNQUANT = 1 -- Load/Save flag contants: const int BMP_DEFAULT = 0 const int ICO_DEFAULT = 0 const int ICO_FIRST = 1 const int ICO_SECOND = 2 const int ICO_THIRD = 3 const int JPEG_DEFAULT = 0 const int JPEG_FAST = 1 const int JPEG_ACCURATE = 2 const int JPEG_QUALITYSUPERB = 128 const int JPEG_QUALITYGOOD = 256 const int JPEG_QUALITYNORMAL = 512 const int JPEG_QUALITYAVERAGE = 1024 const int JPEG_QUALITYBAD = 2048 const int KOALA_DEFAULT = 0 const int LBM_DEFAULT = 0 const int PCD_DEFAULT = 0 const int PCD_BASE = 1 const int PCD_BASEDIV4 = 2 const int PCD_BASEDIV16 = 3 const int PCX_DEFAULT = 0 const int PNG_DEFAULT = 0 const int PNM_DEFAULT = 0 const int PNM_SAVE_RAW = 0 const int PNM_SAVE_ASCII = 1 const int RAS_DEFAULT = 0 const int TARGA_DEFAULT = 0 const int TARGA_LOAD_RGB888 = 1 const int TARGA_LOAD_RGB555 = 2 const int TIFF_DEFAULT = 0 const int WBMP_DEFAULT = 0 private farproc_t get_version_proc private farproc_t allocate_proc private farproc_t free_proc private farproc_t get_fif_count_proc private farproc_t get_fif_from_format_proc private farproc_t get_format_from_fif_proc private farproc_t get_fif_extension_list_proc private farproc_t get_fif_description_proc private farproc_t get_fif_reg_expr_proc private farproc_t get_fif_from_filename_proc private farproc_t fif_supports_reading_proc private farproc_t fif_supports_writing_proc private farproc_t load_proc private farproc_t load_bmp_proc private farproc_t load_ico_proc private farproc_t load_lbm_proc private farproc_t load_jpeg_proc private farproc_t load_koala_proc private farproc_t load_mng_proc private farproc_t load_pcd_proc private farproc_t load_pcx_proc private farproc_t load_pnm_proc private farproc_t load_png_proc private farproc_t load_ras_proc private farproc_t load_targa_proc private farproc_t load_tiff_proc private farproc_t load_wbmp_proc private farproc_t save_proc private farproc_t save_bmp_proc private farproc_t save_jpeg_proc private farproc_t save_png_proc private farproc_t save_pnm_proc private farproc_t save_tiff_proc private farproc_t save_wbmp_proc private farproc_t get_width_proc private farproc_t get_height_proc private farproc_t get_bpp_proc private farproc_t get_line_proc private farproc_t get_pitch_proc private farproc_t get_red_mask_proc private farproc_t get_green_mask_proc private farproc_t get_blue_mask_proc private farproc_t get_bits_proc private farproc_t get_scanline_proc private farproc_t convert_to_8_bits_proc private farproc_t convert_to_16_bits_555_proc private farproc_t convert_to_16_bits_565_proc private farproc_t convert_to_24_bits_proc private farproc_t convert_to_32_bits_proc private farproc_t color_quantize_proc private farproc_t convert_from_raw_bits_proc private farproc_t convert_to_raw_bits_proc on Load(string name) do inherited Load(name) if IsLoaded then let get_version_proc = GetProcAddress(library, "_FreeImage_GetVersion@0") let allocate_proc = GetProcAddress(library, "_FreeImage_Allocate@24") let free_proc = GetProcAddress(library, "_FreeImage_Free@4") let get_fif_count_proc = GetProcAddress(library, "_FreeImage_GetFIFCount@0") let get_fif_from_format_proc = GetProcAddress(library, "_FreeImage_GetFIFFromFormat@4") let get_format_from_fif_proc = GetProcAddress(library, "_FreeImage_GetFormatFromFIF@4") let get_fif_extension_list_proc = GetProcAddress(library, "_FreeImage_GetFIFExtensionList@4") let get_fif_description_proc = GetProcAddress(library, "_FreeImage_GetFIFDescription@4") let get_fif_reg_expr_proc = GetProcAddress(library, "_FreeImage_GetFIFRegExpr@4") let get_fif_from_filename_proc = GetProcAddress(library, "_FreeImage_GetFIFFromFilename@4") let fif_supports_reading_proc = GetProcAddress(library, "_FreeImage_FIFSupportsReading@4") let fif_supports_writing_proc = GetProcAddress(library, "_FreeImage_FIFSupportsWriting@4") let load_proc = GetProcAddress(library, "_FreeImage_Load@12") let load_bmp_proc = GetProcAddress(library, "_FreeImage_LoadBMP@8") let load_ico_proc = GetProcAddress(library, "_FreeImage_LoadICO@8") let load_jpeg_proc = GetProcAddress(library, "_FreeImage_LoadJPEG@8") let load_koala_proc = GetProcAddress(library, "_FreeImage_LoadKOALA@8") let load_lbm_proc = GetProcAddress(library, "_FreeImage_LoadLBM@8") let load_mng_proc = GetProcAddress(library, "_FreeImage_LoadMNG@8") let load_pcd_proc = GetProcAddress(library, "_FreeImage_LoadPCD@8") let load_pcx_proc = GetProcAddress(library, "_FreeImage_LoadPCX@8") let load_pnm_proc = GetProcAddress(library, "_FreeImage_LoadPNM@8") let load_png_proc = GetProcAddress(library, "_FreeImage_LoadPNG@8") let load_ras_proc = GetProcAddress(library, "_FreeImage_LoadRAS@8") let load_targa_proc = GetProcAddress(library, "_FreeImage_LoadTARGA@8") let load_tiff_proc = GetProcAddress(library, "_FreeImage_LoadTIFF@8") let load_wbmp_proc = GetProcAddress(library, "_FreeImage_LoadWBMP@8") let save_proc = GetProcAddress(library, "_FreeImage_Save@16") let save_bmp_proc = GetProcAddress(library, "_FreeImage_SaveBMP@12") let save_jpeg_proc = GetProcAddress(library, "_FreeImage_SaveJPEG@12") let save_png_proc = GetProcAddress(library, "_FreeImage_SavePNG@12") let save_pnm_proc = GetProcAddress(library, "_FreeImage_SavePNM@12") let save_tiff_proc = GetProcAddress(library, "_FreeImage_SaveTIFF@12") let save_wbmp_proc = GetProcAddress(library, "_FreeImage_SaveWBMP@12") let get_width_proc = GetProcAddress(library, "_FreeImage_GetWidth@4") let get_height_proc = GetProcAddress(library, "_FreeImage_GetHeight@4") let get_bpp_proc = GetProcAddress(library, "_FreeImage_GetBPP@4") let get_line_proc = GetProcAddress(library, "_FreeImage_GetLine@4") let get_pitch_proc = GetProcAddress(library, "_FreeImage_GetPitch@4") let get_red_mask_proc = GetProcAddress(library, "_FreeImage_GetRedMask@4") let get_green_mask_proc = GetProcAddress(library, "_FreeImage_GetGreen@4") let get_blue_mask_proc = GetProcAddress(library, "_FreeImage_GetBlueMask@4") let get_bits_proc = GetProcAddress(library, "_FreeImage_GetBits@4") let get_scanline_proc = GetProcAddress(library, "_FreeImage_GetScanLine@8") let convert_to_8_bits_proc = GetProcAddress(library, "_FreeImage_ConvertTo8Bits@4") let convert_to_16_bits_555_proc = GetProcAddress(library, "_FreeImage_ConvertTo16Bits555@4") let convert_to_16_bits_565_proc = GetProcAddress(library, "_FreeImage_ConvertTo16Bits565@4") let convert_to_24_bits_proc = GetProcAddress(library, "_FreeImage_ConvertTo24Bits@4") let convert_to_32_bits_proc = GetProcAddress(library, "_FreeImage_ConvertTo32Bits@4") let color_quantize_proc = GetProcAddress(library, "_FreeImage_ColorQuantize@8") let convert_from_raw_bits_proc = GetProcAddress(library, "_FreeImage_ConvertFromRawBits@36") let convert_to_raw_bits_proc = GetProcAddress(library, "_FreeImage_ConvertToRawBits@32") else trace("Failed to load FreeImage") end end on string GetVersion do return StringFromAnsi(CallProc(get_version_proc) as handle) end on handle Allocate(int width, int height, int bpp, int redmask, int greenmask, int bluemask) do return CallProc(bluemask, greenmask, redmask, bpp, height, width, allocate_proc) as handle end on Free(handle dib) do CallProc(dib, free_proc) end on int GetFIFCount do return CallProc(get_fif_count_proc) end on int GetFIFFromFormat(string format) do return CallProc(format.AnsiBuffer(), get_fif_from_format_proc) end on string GetFormatFromFIF(int fif) do return StringFromAnsi(CallProc(fif, get_format_from_fif_proc) as handle) end on string GetFIFDescription(int fif) do return StringFromAnsi(CallProc(fif, get_fif_description_proc) as handle) end on string GetFIFRegExpr(int fif) do return StringFromAnsi(CallProc(fif, get_fif_reg_expr_proc) as handle) end on int GetFIFFromFilename(string filename) do return CallProc(filename.AnsiBuffer(), get_fif_from_filename_proc) end on bool FIFSupportsReading(int fif) do return CallProc(fif, fif_supports_reading_proc) as bool end on bool FIFSupportsWriting(int fif) do return CallProc(fif, fif_supports_writing_proc) as bool end on string GetFIFExtensionList(int fif) do return StringFromAnsi(CallProc(fif, get_fif_extension_list_proc) as handle) end on handle FILoad(int fif, string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), fif, load_proc) as handle end on handle LoadBMP(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_bmp_proc) as handle end on handle LoadICO(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_ico_proc) as handle end on handle LoadJPEG(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_jpeg_proc) as handle end on handle LoadKOALA(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_koala_proc) as handle end on handle LoadLBM(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_lbm_proc) as handle end on handle LoadMNG(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_mng_proc) as handle end on handle LoadPCD(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_pcd_proc) as handle end on handle LoadPCX(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_pcx_proc) as handle end on handle LoadPNM(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_pnm_proc) as handle end on handle LoadPNG(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_png_proc) as handle end on handle LoadRAS(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_ras_proc) as handle end on handle LoadTARGA(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_targa_proc) as handle end on handle LoadTIFF(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_tiff_proc) as handle end on handle LoadWBMP(string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), load_wbmp_proc) as handle end on bool FISave(int fif, handle dib, string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), dib, fif, save_proc) as bool end on bool SaveBMP(handle dib, string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), dib, save_bmp_proc) as bool end on bool SaveJPEG(handle dib, string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), dib, save_jpeg_proc) as bool end on bool SavePNG(handle dib, string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), dib, save_png_proc) as bool end on bool SavePNM(handle dib, string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), dib, save_pnm_proc) as bool end on bool SaveTIFF(handle dib, string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), dib, save_tiff_proc) as bool end on bool SaveWBMP(handle dib, string filename, int flags) do return CallProc(flags, filename.AnsiBuffer(), dib, save_wbmp_proc) as bool end on int GetWidth(handle dib) do return CallProc(dib, get_width_proc) as int end on int GetHeight(handle dib) do return CallProc(dib, get_height_proc) as int end on int GetBPP(handle dib) do return CallProc(dib, get_bpp_proc) as int end on int GetLine(handle dib) do return CallProc(dib, get_line_proc) as int end on int GetPitch(handle dib) do return CallProc(dib, get_pitch_proc) as int end on int GetRedMask(handle dib) do return CallProc(dib, get_red_mask_proc) as int end on int GetGreenMask(handle dib) do return CallProc(dib, get_green_mask_proc) as int end on int GetBlueMask(handle dib) do return CallProc(dib, get_blue_mask_proc) as int end on handle GetBits(handle dib) do return CallProc(dib, get_bits_proc) as handle end on handle GetScanline(handle dib, int scanline) do return CallProc(scanline, dib, get_scanline_proc) as handle end on handle ConvertTo8Bits(handle dib) do return CallProc(dib, convert_to_8_bits_proc) as handle end on handle ConvertTo16Bits555(handle dib) do return CallProc(dib, convert_to_16_bits_555_proc) as handle end on handle ConvertTo16Bits565(handle dib) do return CallProc(dib, convert_to_16_bits_565_proc) as handle end on handle ConvertTo24Bits(handle dib) do return CallProc(dib, convert_to_24_bits_proc) as handle end on handle ConvertTo32Bits(handle dib) do return CallProc(dib, convert_to_32_bits_proc) as handle end on handle ColorQuantize(handle dib, int quantize) do return CallProc(quantize, dib, color_quantize_proc) as handle end on handle ConvertFromRawBits(handle bits, int width, int height, int bpp, int pitch, int red_mask, int green_mask, int blue_mask, bool topdown) do return CallProc(topdown, blue_mask, green_mask, red_mask, pitch, bpp, height, width, bits, convert_from_raw_bits_proc) as handle end on ConvertToRawBits(handle bits, handle dib, int pitch, int bpp, int red_mask, int green_mask, int blue_mask, bool topdown) do CallProc(topdown, blue_mask, green_mask, red_mask, bpp, pitch, dib, bits, convert_to_raw_bits_proc) end end