Files
RaindropViewer/Assets/Plugins/asyncImageLoader/FreeImage.cs
T

121 lines
3.5 KiB
C#

using System;
using System.Runtime.InteropServices;
public static partial class AsyncImageLoader {
public class FreeImage
{
public enum Format
{
FIF_UNKNOWN = -1,
FIF_BMP = 0,
FIF_ICO = 1,
FIF_JPEG = 2,
FIF_JNG = 3,
FIF_KOALA = 4,
FIF_LBM = 5,
FIF_IFF = FIF_LBM,
FIF_MNG = 6,
FIF_PBM = 7,
FIF_PBMRAW = 8,
FIF_PCD = 9,
FIF_PCX = 10,
FIF_PGM = 11,
FIF_PGMRAW = 12,
FIF_PNG = 13,
FIF_PPM = 14,
FIF_PPMRAW = 15,
FIF_RAS = 16,
FIF_TARGA = 17,
FIF_TIFF = 18,
FIF_WBMP = 19,
FIF_PSD = 20,
FIF_CUT = 21,
FIF_XBM = 22,
FIF_XPM = 23,
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
}
internal enum Type
{
FIT_UNKNOWN = 0,
FIT_BITMAP = 1,
FIT_UINT16 = 2,
FIT_INT16 = 3,
FIT_UINT32 = 4,
FIT_INT32 = 5,
FIT_FLOAT = 6,
FIT_DOUBLE = 7,
FIT_COMPLEX = 8,
FIT_RGB16 = 9,
FIT_RGBA16 = 10,
FIT_RGBF = 11,
FIT_RGBAF = 12
}
internal enum ColorType
{
FIC_MINISWHITE = 0,
FIC_MINISBLACK = 1,
FIC_RGB = 2,
FIC_PALETTE = 3,
FIC_RGBALPHA = 4,
FIC_CMYK = 5
}
const string FreeImageLibrary = "FreeImage";
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_GetFileTypeFromMemory")]
internal static extern Format GetFileTypeFromMemory(IntPtr memory, int size);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_OpenMemory")]
internal static extern IntPtr OpenMemory(IntPtr data, uint size_in_bytes);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_CloseMemory")]
internal static extern IntPtr CloseMemory(IntPtr data);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_LoadFromMemory")]
internal static extern IntPtr LoadFromMemory(Format format, IntPtr stream, int flags);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_SaveToMemory")]
internal static extern bool SaveToMemory(Format format, IntPtr fi_bitmap, IntPtr stream, int flags);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_Unload")]
internal static extern void Unload(IntPtr dib);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_ConvertToRawBits")]
internal static extern void ConvertToRawBits(IntPtr bits, IntPtr dib, int pitch, uint bpp, uint red_mask,
uint green_mask, uint blue_mask, bool topdown);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_ConvertFromRawBits")]
internal static extern IntPtr ConvertFromRawBits(IntPtr bits, int width, int height, int pitch, uint bpp,
uint red_mask, uint green_mask, uint blue_mask, bool topdown);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_GetWidth")]
internal static extern uint GetWidth(IntPtr handle);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_GetHeight")]
internal static extern uint GetHeight(IntPtr handle);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_GetImageType")]
internal static extern Type GetImageType(IntPtr dib);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_GetBPP")]
internal static extern int GetBPP(IntPtr dib);
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_AcquireMemory")]
internal static extern void AcquireMemory(IntPtr mem, ref IntPtr data, ref int size);
}
}