646 lines
24 KiB
C
646 lines
24 KiB
C
//-----------------------------------------------------------------------------
|
|
//
|
|
// ImageLib Sources
|
|
// Copyright (C) 2000-2017 by Denton Woods
|
|
// Last modified: 03/07/2009
|
|
//
|
|
// Filename: IL/il.h
|
|
//
|
|
// Description: The main include file for DevIL
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Doxygen comment
|
|
/*! \file il.h
|
|
The main include file for DevIL
|
|
*/
|
|
|
|
#ifndef __il_h_
|
|
#ifndef __IL_H__
|
|
|
|
#define __il_h_
|
|
#define __IL_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//this define controls if floats and doubles are clamped to [0..1]
|
|
//during conversion. It takes a little more time, but it is the correct
|
|
//way of doing this. If you are sure your floats are always valid,
|
|
//you can undefine this value...
|
|
#define CLAMP_HALF 1
|
|
#define CLAMP_FLOATS 1
|
|
#define CLAMP_DOUBLES 1
|
|
|
|
/*#ifdef _WIN32_WCE
|
|
#define IL_NO_EXR
|
|
#define IL_NO_GIF
|
|
#define IL_NO_JP2
|
|
#define IL_NO_JPG
|
|
#define IL_NO_MNG
|
|
#define IL_NO_PNG
|
|
#define IL_NO_TIF
|
|
#define IL_NO_LCMS
|
|
#endif //_WIN32_WCE
|
|
|
|
#ifdef DJGPP
|
|
#define IL_NO_EXR
|
|
#define IL_NO_GIF
|
|
#define IL_NO_JP2
|
|
#define IL_NO_JPG
|
|
#define IL_NO_MNG
|
|
#define IL_NO_PNG
|
|
#define IL_NO_TIF
|
|
#define IL_NO_LCMS
|
|
#endif //DJGPP*/
|
|
|
|
#ifdef _WIN32
|
|
#if (defined(IL_USE_PRAGMA_LIBS)) && (!defined(_IL_BUILD_LIBRARY))
|
|
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
|
#pragma comment(lib, "DevIL.lib")
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(RESTRICT_KEYWORD) && !defined(__cplusplus)
|
|
#define RESTRICT restrict
|
|
#define CONST_RESTRICT const restrict
|
|
#else
|
|
#define RESTRICT
|
|
#define CONST_RESTRICT const
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
|
|
typedef unsigned int ILenum;
|
|
typedef unsigned char ILboolean;
|
|
typedef unsigned int ILbitfield;
|
|
typedef signed char ILbyte;
|
|
typedef signed short ILshort;
|
|
typedef int ILint;
|
|
typedef size_t ILsizei;
|
|
typedef unsigned char ILubyte;
|
|
typedef unsigned short ILushort;
|
|
typedef unsigned int ILuint;
|
|
typedef float ILfloat;
|
|
typedef float ILclampf;
|
|
typedef double ILdouble;
|
|
typedef double ILclampd;
|
|
|
|
#ifdef _MSC_VER
|
|
typedef __int64 ILint64;
|
|
typedef unsigned __int64 ILuint64;
|
|
#else
|
|
typedef long long int ILint64;
|
|
typedef long long unsigned int ILuint64;
|
|
#endif
|
|
|
|
|
|
#include <limits.h>
|
|
#ifdef _UNICODE
|
|
#ifndef _WIN32_WCE
|
|
#include <wchar.h>
|
|
#endif
|
|
//if we use a define instead of a typedef,
|
|
//ILconst_string works as intended
|
|
#define ILchar wchar_t
|
|
#define ILstring wchar_t*
|
|
#define ILconst_string wchar_t const *
|
|
#else
|
|
//if we use a define instead of a typedef,
|
|
//ILconst_string works as intended
|
|
#define ILchar char
|
|
#define ILstring char*
|
|
#define ILconst_string char const *
|
|
#endif //_UNICODE
|
|
|
|
#define IL_FALSE 0
|
|
#define IL_TRUE 1
|
|
|
|
// Matches OpenGL's right now.
|
|
//! Data formats \link Formats Formats\endlink
|
|
#define IL_COLOUR_INDEX 0x1900
|
|
#define IL_COLOR_INDEX 0x1900
|
|
#define IL_ALPHA 0x1906
|
|
#define IL_RGB 0x1907
|
|
#define IL_RGBA 0x1908
|
|
#define IL_BGR 0x80E0
|
|
#define IL_BGRA 0x80E1
|
|
#define IL_LUMINANCE 0x1909
|
|
#define IL_LUMINANCE_ALPHA 0x190A
|
|
|
|
//! Data types \link Types Types\endlink
|
|
#define IL_BYTE 0x1400
|
|
#define IL_UNSIGNED_BYTE 0x1401
|
|
#define IL_SHORT 0x1402
|
|
#define IL_UNSIGNED_SHORT 0x1403
|
|
#define IL_INT 0x1404
|
|
#define IL_UNSIGNED_INT 0x1405
|
|
#define IL_FLOAT 0x1406
|
|
#define IL_DOUBLE 0x140A
|
|
#define IL_HALF 0x140B
|
|
|
|
|
|
#define IL_MAX_BYTE SCHAR_MAX
|
|
#define IL_MAX_UNSIGNED_BYTE UCHAR_MAX
|
|
#define IL_MAX_SHORT SHRT_MAX
|
|
#define IL_MAX_UNSIGNED_SHORT USHRT_MAX
|
|
#define IL_MAX_INT INT_MAX
|
|
#define IL_MAX_UNSIGNED_INT UINT_MAX
|
|
|
|
#define IL_LIMIT(x,m,M) (x<m?m:(x>M?M:x))
|
|
#define IL_CLAMP(x) IL_LIMIT(x,0,1)
|
|
|
|
#define IL_VENDOR 0x1F00
|
|
#define IL_LOAD_EXT 0x1F01
|
|
#define IL_SAVE_EXT 0x1F02
|
|
|
|
|
|
//
|
|
// IL-specific #define's
|
|
//
|
|
|
|
#define IL_VERSION_1_8_0 1
|
|
#define IL_VERSION 180
|
|
|
|
|
|
// Attribute Bits
|
|
#define IL_ORIGIN_BIT 0x00000001
|
|
#define IL_FILE_BIT 0x00000002
|
|
#define IL_PAL_BIT 0x00000004
|
|
#define IL_FORMAT_BIT 0x00000008
|
|
#define IL_TYPE_BIT 0x00000010
|
|
#define IL_COMPRESS_BIT 0x00000020
|
|
#define IL_LOADFAIL_BIT 0x00000040
|
|
#define IL_FORMAT_SPECIFIC_BIT 0x00000080
|
|
#define IL_ALL_ATTRIB_BITS 0x000FFFFF
|
|
|
|
|
|
// Palette types
|
|
#define IL_PAL_NONE 0x0400
|
|
#define IL_PAL_RGB24 0x0401
|
|
#define IL_PAL_RGB32 0x0402
|
|
#define IL_PAL_RGBA32 0x0403
|
|
#define IL_PAL_BGR24 0x0404
|
|
#define IL_PAL_BGR32 0x0405
|
|
#define IL_PAL_BGRA32 0x0406
|
|
|
|
|
|
// Image types
|
|
#define IL_TYPE_UNKNOWN 0x0000
|
|
#define IL_BMP 0x0420 //!< Microsoft Windows Bitmap - .bmp extension
|
|
#define IL_CUT 0x0421 //!< Dr. Halo - .cut extension
|
|
#define IL_DOOM 0x0422 //!< DooM walls - no specific extension
|
|
#define IL_DOOM_FLAT 0x0423 //!< DooM flats - no specific extension
|
|
#define IL_ICO 0x0424 //!< Microsoft Windows Icons and Cursors - .ico and .cur extensions
|
|
#define IL_JPG 0x0425 //!< JPEG - .jpg, .jpe and .jpeg extensions
|
|
#define IL_JFIF 0x0425 //!<
|
|
#define IL_ILBM 0x0426 //!< Amiga IFF (FORM ILBM) - .iff, .ilbm, .lbm extensions
|
|
#define IL_PCD 0x0427 //!< Kodak PhotoCD - .pcd extension
|
|
#define IL_PCX 0x0428 //!< ZSoft PCX - .pcx extension
|
|
#define IL_PIC 0x0429 //!< PIC - .pic extension
|
|
#define IL_PNG 0x042A //!< Portable Network Graphics - .png extension
|
|
#define IL_PNM 0x042B //!< Portable Any Map - .pbm, .pgm, .ppm and .pnm extensions
|
|
#define IL_SGI 0x042C //!< Silicon Graphics - .sgi, .bw, .rgb and .rgba extensions
|
|
#define IL_TGA 0x042D //!< TrueVision Targa File - .tga, .vda, .icb and .vst extensions
|
|
#define IL_TIF 0x042E //!< Tagged Image File Format - .tif and .tiff extensions
|
|
#define IL_CHEAD 0x042F //!< C-Style Header - .h extension
|
|
#define IL_RAW 0x0430 //!< Raw Image Data - any extension
|
|
#define IL_MDL 0x0431 //!< Half-Life Model Texture - .mdl extension
|
|
#define IL_WAL 0x0432 //!< Quake 2 Texture - .wal extension
|
|
#define IL_LIF 0x0434 //!< Homeworld Texture - .lif extension
|
|
#define IL_MNG 0x0435 //!< Multiple-image Network Graphics - .mng extension
|
|
#define IL_JNG 0x0435 //!<
|
|
#define IL_GIF 0x0436 //!< Graphics Interchange Format - .gif extension
|
|
#define IL_DDS 0x0437 //!< DirectDraw Surface - .dds extension
|
|
#define IL_DCX 0x0438 //!< ZSoft Multi-PCX - .dcx extension
|
|
#define IL_PSD 0x0439 //!< Adobe PhotoShop - .psd extension
|
|
#define IL_EXIF 0x043A //!<
|
|
#define IL_PSP 0x043B //!< PaintShop Pro - .psp extension
|
|
#define IL_PIX 0x043C //!< PIX - .pix extension
|
|
#define IL_PXR 0x043D //!< Pixar - .pxr extension
|
|
#define IL_XPM 0x043E //!< X Pixel Map - .xpm extension
|
|
#define IL_HDR 0x043F //!< Radiance High Dynamic Range - .hdr extension
|
|
#define IL_ICNS 0x0440 //!< Macintosh Icon - .icns extension
|
|
#define IL_JP2 0x0441 //!< Jpeg 2000 - .jp2 extension
|
|
#define IL_EXR 0x0442 //!< OpenEXR - .exr extension
|
|
#define IL_WDP 0x0443 //!< Microsoft HD Photo - .wdp and .hdp extension
|
|
#define IL_VTF 0x0444 //!< Valve Texture Format - .vtf extension
|
|
#define IL_WBMP 0x0445 //!< Wireless Bitmap - .wbmp extension
|
|
#define IL_SUN 0x0446 //!< Sun Raster - .sun, .ras, .rs, .im1, .im8, .im24 and .im32 extensions
|
|
#define IL_IFF 0x0447 //!< Interchange File Format - .iff extension
|
|
#define IL_TPL 0x0448 //!< Gamecube Texture - .tpl extension
|
|
#define IL_FITS 0x0449 //!< Flexible Image Transport System - .fit and .fits extensions
|
|
#define IL_DICOM 0x044A //!< Digital Imaging and Communications in Medicine (DICOM) - .dcm and .dicom extensions
|
|
#define IL_IWI 0x044B //!< Call of Duty Infinity Ward Image - .iwi extension
|
|
#define IL_BLP 0x044C //!< Blizzard Texture Format - .blp extension
|
|
#define IL_FTX 0x044D //!< Heavy Metal: FAKK2 Texture - .ftx extension
|
|
#define IL_ROT 0x044E //!< Homeworld 2 - Relic Texture - .rot extension
|
|
#define IL_TEXTURE 0x044F //!< Medieval II: Total War Texture - .texture extension
|
|
#define IL_DPX 0x0450 //!< Digital Picture Exchange - .dpx extension
|
|
#define IL_UTX 0x0451 //!< Unreal (and Unreal Tournament) Texture - .utx extension
|
|
#define IL_MP3 0x0452 //!< MPEG-1 Audio Layer 3 - .mp3 extension
|
|
#define IL_KTX 0x0453 //!< Khronos Texture - .ktx extension
|
|
|
|
|
|
#define IL_JASC_PAL 0x0475 //!< PaintShop Pro Palette
|
|
|
|
|
|
// Error Types
|
|
#define IL_NO_ERROR 0x0000
|
|
#define IL_INVALID_ENUM 0x0501
|
|
#define IL_OUT_OF_MEMORY 0x0502
|
|
#define IL_FORMAT_NOT_SUPPORTED 0x0503
|
|
#define IL_INTERNAL_ERROR 0x0504
|
|
#define IL_INVALID_VALUE 0x0505
|
|
#define IL_ILLEGAL_OPERATION 0x0506
|
|
#define IL_ILLEGAL_FILE_VALUE 0x0507
|
|
#define IL_INVALID_FILE_HEADER 0x0508
|
|
#define IL_INVALID_PARAM 0x0509
|
|
#define IL_COULD_NOT_OPEN_FILE 0x050A
|
|
#define IL_INVALID_EXTENSION 0x050B
|
|
#define IL_FILE_ALREADY_EXISTS 0x050C
|
|
#define IL_OUT_FORMAT_SAME 0x050D
|
|
#define IL_STACK_OVERFLOW 0x050E
|
|
#define IL_STACK_UNDERFLOW 0x050F
|
|
#define IL_INVALID_CONVERSION 0x0510
|
|
#define IL_BAD_DIMENSIONS 0x0511
|
|
#define IL_FILE_READ_ERROR 0x0512 // 05/12/2002: Addition by Sam.
|
|
#define IL_FILE_WRITE_ERROR 0x0512
|
|
|
|
#define IL_LIB_GIF_ERROR 0x05E1
|
|
#define IL_LIB_JPEG_ERROR 0x05E2
|
|
#define IL_LIB_PNG_ERROR 0x05E3
|
|
#define IL_LIB_TIFF_ERROR 0x05E4
|
|
#define IL_LIB_MNG_ERROR 0x05E5
|
|
#define IL_LIB_JP2_ERROR 0x05E6
|
|
#define IL_LIB_EXR_ERROR 0x05E7
|
|
#define IL_UNKNOWN_ERROR 0x05FF
|
|
|
|
|
|
// Origin Definitions
|
|
#define IL_ORIGIN_SET 0x0600
|
|
#define IL_ORIGIN_LOWER_LEFT 0x0601
|
|
#define IL_ORIGIN_UPPER_LEFT 0x0602
|
|
#define IL_ORIGIN_MODE 0x0603
|
|
|
|
|
|
// Format and Type Mode Definitions
|
|
#define IL_FORMAT_SET 0x0610
|
|
#define IL_FORMAT_MODE 0x0611
|
|
#define IL_TYPE_SET 0x0612
|
|
#define IL_TYPE_MODE 0x0613
|
|
|
|
|
|
// File definitions
|
|
#define IL_FILE_OVERWRITE 0x0620
|
|
#define IL_FILE_MODE 0x0621
|
|
|
|
|
|
// Palette definitions
|
|
#define IL_CONV_PAL 0x0630
|
|
|
|
|
|
// Load fail definitions
|
|
#define IL_DEFAULT_ON_FAIL 0x0632
|
|
|
|
|
|
// Key colour and alpha definitions
|
|
#define IL_USE_KEY_COLOUR 0x0635
|
|
#define IL_USE_KEY_COLOR 0x0635
|
|
#define IL_BLIT_BLEND 0x0636
|
|
|
|
|
|
// Interlace definitions
|
|
#define IL_SAVE_INTERLACED 0x0639
|
|
#define IL_INTERLACE_MODE 0x063A
|
|
|
|
|
|
// Quantization definitions
|
|
#define IL_QUANTIZATION_MODE 0x0640
|
|
#define IL_WU_QUANT 0x0641
|
|
#define IL_NEU_QUANT 0x0642
|
|
#define IL_NEU_QUANT_SAMPLE 0x0643
|
|
#define IL_MAX_QUANT_INDEXS 0x0644 //XIX : ILint : Maximum number of colors to reduce to, default of 256. and has a range of 2-256
|
|
#define IL_MAX_QUANT_INDICES 0x0644 // Redefined, since the above #define is misspelled
|
|
|
|
|
|
// Hints
|
|
#define IL_FASTEST 0x0660
|
|
#define IL_LESS_MEM 0x0661
|
|
#define IL_DONT_CARE 0x0662
|
|
#define IL_MEM_SPEED_HINT 0x0665
|
|
#define IL_USE_COMPRESSION 0x0666
|
|
#define IL_NO_COMPRESSION 0x0667
|
|
#define IL_COMPRESSION_HINT 0x0668
|
|
|
|
|
|
// Compression
|
|
#define IL_NVIDIA_COMPRESS 0x0670
|
|
#define IL_SQUISH_COMPRESS 0x0671
|
|
|
|
|
|
// Subimage types
|
|
#define IL_SUB_NEXT 0x0680
|
|
#define IL_SUB_MIPMAP 0x0681
|
|
#define IL_SUB_LAYER 0x0682
|
|
|
|
|
|
// Compression definitions
|
|
#define IL_COMPRESS_MODE 0x0700
|
|
#define IL_COMPRESS_NONE 0x0701
|
|
#define IL_COMPRESS_RLE 0x0702
|
|
#define IL_COMPRESS_LZO 0x0703
|
|
#define IL_COMPRESS_ZLIB 0x0704
|
|
|
|
|
|
// File format-specific values
|
|
#define IL_TGA_CREATE_STAMP 0x0710
|
|
#define IL_JPG_QUALITY 0x0711
|
|
#define IL_PNG_INTERLACE 0x0712
|
|
#define IL_TGA_RLE 0x0713
|
|
#define IL_BMP_RLE 0x0714
|
|
#define IL_SGI_RLE 0x0715
|
|
#define IL_TGA_ID_STRING 0x0717
|
|
#define IL_TGA_AUTHNAME_STRING 0x0718
|
|
#define IL_TGA_AUTHCOMMENT_STRING 0x0719
|
|
#define IL_PNG_AUTHNAME_STRING 0x071A
|
|
#define IL_PNG_TITLE_STRING 0x071B
|
|
#define IL_PNG_DESCRIPTION_STRING 0x071C
|
|
#define IL_TIF_DESCRIPTION_STRING 0x071D
|
|
#define IL_TIF_HOSTCOMPUTER_STRING 0x071E
|
|
#define IL_TIF_DOCUMENTNAME_STRING 0x071F
|
|
#define IL_TIF_AUTHNAME_STRING 0x0720
|
|
#define IL_JPG_SAVE_FORMAT 0x0721
|
|
#define IL_CHEAD_HEADER_STRING 0x0722
|
|
#define IL_PCD_PICNUM 0x0723
|
|
#define IL_PNG_ALPHA_INDEX 0x0724 // currently has no effect!
|
|
#define IL_JPG_PROGRESSIVE 0x0725
|
|
#define IL_VTF_COMP 0x0726
|
|
|
|
|
|
// DXTC definitions
|
|
#define IL_DXTC_FORMAT 0x0705
|
|
#define IL_DXT1 0x0706
|
|
#define IL_DXT2 0x0707
|
|
#define IL_DXT3 0x0708
|
|
#define IL_DXT4 0x0709
|
|
#define IL_DXT5 0x070A
|
|
#define IL_DXT_NO_COMP 0x070B
|
|
#define IL_KEEP_DXTC_DATA 0x070C
|
|
#define IL_DXTC_DATA_FORMAT 0x070D
|
|
#define IL_3DC 0x070E
|
|
#define IL_RXGB 0x070F
|
|
#define IL_ATI1N 0x0710
|
|
#define IL_DXT1A 0x0711 // Normally the same as IL_DXT1, except for nVidia Texture Tools.
|
|
|
|
// Environment map definitions
|
|
#define IL_CUBEMAP_POSITIVEX 0x00000400
|
|
#define IL_CUBEMAP_NEGATIVEX 0x00000800
|
|
#define IL_CUBEMAP_POSITIVEY 0x00001000
|
|
#define IL_CUBEMAP_NEGATIVEY 0x00002000
|
|
#define IL_CUBEMAP_POSITIVEZ 0x00004000
|
|
#define IL_CUBEMAP_NEGATIVEZ 0x00008000
|
|
#define IL_SPHEREMAP 0x00010000
|
|
|
|
|
|
// Values
|
|
#define IL_VERSION_NUM 0x0DE2
|
|
#define IL_IMAGE_WIDTH 0x0DE4
|
|
#define IL_IMAGE_HEIGHT 0x0DE5
|
|
#define IL_IMAGE_DEPTH 0x0DE6
|
|
#define IL_IMAGE_SIZE_OF_DATA 0x0DE7
|
|
#define IL_IMAGE_BPP 0x0DE8
|
|
#define IL_IMAGE_BYTES_PER_PIXEL 0x0DE8
|
|
#define IL_IMAGE_BPP 0x0DE8
|
|
#define IL_IMAGE_BITS_PER_PIXEL 0x0DE9
|
|
#define IL_IMAGE_FORMAT 0x0DEA
|
|
#define IL_IMAGE_TYPE 0x0DEB
|
|
#define IL_PALETTE_TYPE 0x0DEC
|
|
#define IL_PALETTE_SIZE 0x0DED
|
|
#define IL_PALETTE_BPP 0x0DEE
|
|
#define IL_PALETTE_NUM_COLS 0x0DEF
|
|
#define IL_PALETTE_BASE_TYPE 0x0DF0
|
|
#define IL_NUM_FACES 0x0DE1
|
|
#define IL_NUM_IMAGES 0x0DF1
|
|
#define IL_NUM_MIPMAPS 0x0DF2
|
|
#define IL_NUM_LAYERS 0x0DF3
|
|
#define IL_ACTIVE_IMAGE 0x0DF4
|
|
#define IL_ACTIVE_MIPMAP 0x0DF5
|
|
#define IL_ACTIVE_LAYER 0x0DF6
|
|
#define IL_ACTIVE_FACE 0x0E00
|
|
#define IL_CUR_IMAGE 0x0DF7
|
|
#define IL_IMAGE_DURATION 0x0DF8
|
|
#define IL_IMAGE_PLANESIZE 0x0DF9
|
|
#define IL_IMAGE_BPC 0x0DFA
|
|
#define IL_IMAGE_OFFX 0x0DFB
|
|
#define IL_IMAGE_OFFY 0x0DFC
|
|
#define IL_IMAGE_CUBEFLAGS 0x0DFD
|
|
#define IL_IMAGE_ORIGIN 0x0DFE
|
|
#define IL_IMAGE_CHANNELS 0x0DFF
|
|
|
|
# if defined __GNUC__ && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0))
|
|
// __attribute__((deprecated)) is supported by GCC 3.1 and later.
|
|
# define DEPRECATED(D) D __attribute__((deprecated))
|
|
# elif defined _MSC_VER && _MSC_VER >= 1300
|
|
// __declspec(deprecated) is supported by MSVC 7.0 and later.
|
|
# define DEPRECATED(D) __declspec(deprecated) D
|
|
# else
|
|
# define DEPRECATED (D) D
|
|
# endif
|
|
|
|
//
|
|
// Section shamelessly modified from the glut header.
|
|
//
|
|
|
|
// This is from Win32's <windef.h>
|
|
#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) || defined(__LCC__)
|
|
#define ILAPIENTRY __stdcall
|
|
#define IL_PACKSTRUCT
|
|
//#elif defined(linux) || defined(MACOSX) || defined(__CYGWIN__) //fix bug 840364
|
|
#elif defined( __GNUC__ )
|
|
// this should work for any of the above commented platforms
|
|
// plus any platform using GCC
|
|
#ifdef __MINGW32__
|
|
#define ILAPIENTRY __stdcall
|
|
#else
|
|
#define ILAPIENTRY
|
|
#endif
|
|
#define IL_PACKSTRUCT __attribute__ ((packed))
|
|
#else
|
|
#define ILAPIENTRY
|
|
#define IL_PACKSTRUCT
|
|
#endif
|
|
|
|
// This is from Win32's <wingdi.h> and <winnt.h>
|
|
#if defined(__LCC__)
|
|
#define ILAPI __stdcall
|
|
#elif defined(_WIN32) //changed 20031221 to fix bug 840421
|
|
#ifdef IL_STATIC_LIB
|
|
#define ILAPI
|
|
#else
|
|
#ifdef _IL_BUILD_LIBRARY
|
|
#define ILAPI __declspec(dllexport)
|
|
#else
|
|
#define ILAPI __declspec(dllimport)
|
|
#endif
|
|
#endif
|
|
#elif __APPLE__
|
|
#define ILAPI extern
|
|
#else
|
|
#define ILAPI
|
|
#endif
|
|
|
|
|
|
#define IL_SEEK_SET 0
|
|
#define IL_SEEK_CUR 1
|
|
#define IL_SEEK_END 2
|
|
#define IL_EOF -1
|
|
|
|
|
|
// Callback functions for file reading
|
|
typedef void* ILHANDLE;
|
|
typedef void (ILAPIENTRY *fCloseRProc)(ILHANDLE);
|
|
typedef ILboolean (ILAPIENTRY *fEofProc) (ILHANDLE);
|
|
typedef ILint (ILAPIENTRY *fGetcProc) (ILHANDLE);
|
|
typedef ILHANDLE (ILAPIENTRY *fOpenRProc) (ILconst_string);
|
|
typedef ILint (ILAPIENTRY *fReadProc) (void*, ILuint, ILuint, ILHANDLE);
|
|
typedef ILint (ILAPIENTRY *fSeekRProc) (ILHANDLE, ILint, ILint);
|
|
typedef ILint (ILAPIENTRY *fTellRProc) (ILHANDLE);
|
|
|
|
// Callback functions for file writing
|
|
typedef void (ILAPIENTRY *fCloseWProc)(ILHANDLE);
|
|
typedef ILHANDLE (ILAPIENTRY *fOpenWProc) (ILconst_string);
|
|
typedef ILint (ILAPIENTRY *fPutcProc) (ILubyte, ILHANDLE);
|
|
typedef ILint (ILAPIENTRY *fSeekWProc) (ILHANDLE, ILint, ILint);
|
|
typedef ILint (ILAPIENTRY *fTellWProc) (ILHANDLE);
|
|
typedef ILint (ILAPIENTRY *fWriteProc) (const void*, ILuint, ILuint, ILHANDLE);
|
|
|
|
// Callback functions for allocation and deallocation
|
|
typedef void* (ILAPIENTRY *mAlloc)(const ILsizei);
|
|
typedef void (ILAPIENTRY *mFree) (const void* CONST_RESTRICT);
|
|
|
|
// Registered format procedures
|
|
typedef ILenum (ILAPIENTRY *IL_LOADPROC)(ILconst_string);
|
|
typedef ILenum (ILAPIENTRY *IL_SAVEPROC)(ILconst_string);
|
|
|
|
|
|
// ImageLib Functions
|
|
ILAPI ILboolean ILAPIENTRY ilActiveFace(ILuint Number);
|
|
ILAPI ILboolean ILAPIENTRY ilActiveImage(ILuint Number);
|
|
ILAPI ILboolean ILAPIENTRY ilActiveLayer(ILuint Number);
|
|
ILAPI ILboolean ILAPIENTRY ilActiveMipmap(ILuint Number);
|
|
ILAPI ILboolean ILAPIENTRY ilApplyPal(ILconst_string FileName);
|
|
ILAPI ILboolean ILAPIENTRY ilApplyProfile(ILstring InProfile, ILstring OutProfile);
|
|
ILAPI void ILAPIENTRY ilBindImage(ILuint Image);
|
|
ILAPI ILboolean ILAPIENTRY ilBlit(ILuint Source, ILint DestX, ILint DestY, ILint DestZ, ILuint SrcX, ILuint SrcY, ILuint SrcZ, ILuint Width, ILuint Height, ILuint Depth);
|
|
ILAPI ILboolean ILAPIENTRY ilClampNTSC(void);
|
|
ILAPI void ILAPIENTRY ilClearColour(ILclampf Red, ILclampf Green, ILclampf Blue, ILclampf Alpha);
|
|
ILAPI ILboolean ILAPIENTRY ilClearImage(void);
|
|
ILAPI ILuint ILAPIENTRY ilCloneCurImage(void);
|
|
ILAPI ILubyte* ILAPIENTRY ilCompressDXT(ILubyte *Data, ILuint Width, ILuint Height, ILuint Depth, ILenum DXTCFormat, ILuint *DXTCSize);
|
|
ILAPI ILboolean ILAPIENTRY ilCompressFunc(ILenum Mode);
|
|
ILAPI ILboolean ILAPIENTRY ilConvertImage(ILenum DestFormat, ILenum DestType);
|
|
ILAPI ILboolean ILAPIENTRY ilConvertPal(ILenum DestFormat);
|
|
ILAPI ILboolean ILAPIENTRY ilCopyImage(ILuint Src);
|
|
ILAPI ILuint ILAPIENTRY ilCopyPixels(ILuint XOff, ILuint YOff, ILuint ZOff, ILuint Width, ILuint Height, ILuint Depth, ILenum Format, ILenum Type, void *Data);
|
|
ILAPI ILuint ILAPIENTRY ilCreateSubImage(ILenum Type, ILuint Num);
|
|
ILAPI ILboolean ILAPIENTRY ilDefaultImage(void);
|
|
ILAPI void ILAPIENTRY ilDeleteImage(const ILuint Num);
|
|
ILAPI void ILAPIENTRY ilDeleteImages(ILsizei Num, const ILuint *Images);
|
|
ILAPI ILenum ILAPIENTRY ilDetermineType(ILconst_string FileName);
|
|
ILAPI ILenum ILAPIENTRY ilDetermineTypeF(ILHANDLE File);
|
|
ILAPI ILenum ILAPIENTRY ilDetermineTypeL(const void *Lump, ILuint Size);
|
|
ILAPI ILboolean ILAPIENTRY ilDisable(ILenum Mode);
|
|
ILAPI ILboolean ILAPIENTRY ilDxtcDataToImage(void);
|
|
ILAPI ILboolean ILAPIENTRY ilDxtcDataToSurface(void);
|
|
ILAPI ILboolean ILAPIENTRY ilEnable(ILenum Mode);
|
|
ILAPI void ILAPIENTRY ilFlipSurfaceDxtcData(void);
|
|
ILAPI ILboolean ILAPIENTRY ilFormatFunc(ILenum Mode);
|
|
ILAPI void ILAPIENTRY ilGenImages(ILsizei Num, ILuint *Images);
|
|
ILAPI ILuint ILAPIENTRY ilGenImage(void);
|
|
ILAPI ILubyte* ILAPIENTRY ilGetAlpha(ILenum Type);
|
|
ILAPI ILboolean ILAPIENTRY ilGetBoolean(ILenum Mode);
|
|
ILAPI void ILAPIENTRY ilGetBooleanv(ILenum Mode, ILboolean *Param);
|
|
ILAPI ILubyte* ILAPIENTRY ilGetData(void);
|
|
ILAPI ILuint ILAPIENTRY ilGetDXTCData(void *Buffer, ILuint BufferSize, ILenum DXTCFormat);
|
|
ILAPI ILenum ILAPIENTRY ilGetError(void);
|
|
ILAPI ILint ILAPIENTRY ilGetInteger(ILenum Mode);
|
|
ILAPI void ILAPIENTRY ilGetIntegerv(ILenum Mode, ILint *Param);
|
|
ILAPI ILuint ILAPIENTRY ilGetLumpPos(void);
|
|
ILAPI ILubyte* ILAPIENTRY ilGetPalette(void);
|
|
ILAPI ILconst_string ILAPIENTRY ilGetString(ILenum StringName);
|
|
ILAPI void ILAPIENTRY ilHint(ILenum Target, ILenum Mode);
|
|
ILAPI ILboolean ILAPIENTRY ilInvertSurfaceDxtcDataAlpha(void);
|
|
ILAPI void ILAPIENTRY ilInit(void);
|
|
ILAPI ILboolean ILAPIENTRY ilImageToDxtcData(ILenum Format);
|
|
ILAPI ILboolean ILAPIENTRY ilIsDisabled(ILenum Mode);
|
|
ILAPI ILboolean ILAPIENTRY ilIsEnabled(ILenum Mode);
|
|
ILAPI ILboolean ILAPIENTRY ilIsImage(ILuint Image);
|
|
ILAPI ILboolean ILAPIENTRY ilIsValid(ILenum Type, ILconst_string FileName);
|
|
ILAPI ILboolean ILAPIENTRY ilIsValidF(ILenum Type, ILHANDLE File);
|
|
ILAPI ILboolean ILAPIENTRY ilIsValidL(ILenum Type, void *Lump, ILuint Size);
|
|
ILAPI void ILAPIENTRY ilKeyColour(ILclampf Red, ILclampf Green, ILclampf Blue, ILclampf Alpha);
|
|
ILAPI ILboolean ILAPIENTRY ilLoad(ILenum Type, ILconst_string FileName);
|
|
ILAPI ILboolean ILAPIENTRY ilLoadF(ILenum Type, ILHANDLE File);
|
|
ILAPI ILboolean ILAPIENTRY ilLoadImage(ILconst_string FileName);
|
|
ILAPI ILboolean ILAPIENTRY ilLoadL(ILenum Type, const void *Lump, ILuint Size);
|
|
ILAPI ILboolean ILAPIENTRY ilLoadPal(ILconst_string FileName);
|
|
ILAPI void ILAPIENTRY ilModAlpha(ILdouble AlphaValue);
|
|
ILAPI ILboolean ILAPIENTRY ilOriginFunc(ILenum Mode);
|
|
ILAPI ILboolean ILAPIENTRY ilOverlayImage(ILuint Source, ILint XCoord, ILint YCoord, ILint ZCoord);
|
|
ILAPI void ILAPIENTRY ilPopAttrib(void);
|
|
ILAPI void ILAPIENTRY ilPushAttrib(ILuint Bits);
|
|
ILAPI void ILAPIENTRY ilRegisterFormat(ILenum Format);
|
|
ILAPI ILboolean ILAPIENTRY ilRegisterLoad(ILconst_string Ext, IL_LOADPROC Load);
|
|
ILAPI ILboolean ILAPIENTRY ilRegisterMipNum(ILuint Num);
|
|
ILAPI ILboolean ILAPIENTRY ilRegisterNumFaces(ILuint Num);
|
|
ILAPI ILboolean ILAPIENTRY ilRegisterNumImages(ILuint Num);
|
|
ILAPI void ILAPIENTRY ilRegisterOrigin(ILenum Origin);
|
|
ILAPI void ILAPIENTRY ilRegisterPal(void *Pal, ILuint Size, ILenum Type);
|
|
ILAPI ILboolean ILAPIENTRY ilRegisterSave(ILconst_string Ext, IL_SAVEPROC Save);
|
|
ILAPI void ILAPIENTRY ilRegisterType(ILenum Type);
|
|
ILAPI ILboolean ILAPIENTRY ilRemoveLoad(ILconst_string Ext);
|
|
ILAPI ILboolean ILAPIENTRY ilRemoveSave(ILconst_string Ext);
|
|
ILAPI void ILAPIENTRY ilResetMemory(void); // Deprecated
|
|
ILAPI void ILAPIENTRY ilResetRead(void);
|
|
ILAPI void ILAPIENTRY ilResetWrite(void);
|
|
ILAPI ILboolean ILAPIENTRY ilSave(ILenum Type, ILconst_string FileName);
|
|
ILAPI ILuint ILAPIENTRY ilSaveF(ILenum Type, ILHANDLE File);
|
|
ILAPI ILboolean ILAPIENTRY ilSaveImage(ILconst_string FileName);
|
|
ILAPI ILuint ILAPIENTRY ilSaveL(ILenum Type, void *Lump, ILuint Size);
|
|
ILAPI ILboolean ILAPIENTRY ilSavePal(ILconst_string FileName);
|
|
ILAPI ILboolean ILAPIENTRY ilSetAlpha(ILdouble AlphaValue);
|
|
ILAPI ILboolean ILAPIENTRY ilSetData(void *Data);
|
|
ILAPI ILboolean ILAPIENTRY ilSetDuration(ILuint Duration);
|
|
ILAPI void ILAPIENTRY ilSetInteger(ILenum Mode, ILint Param);
|
|
ILAPI void ILAPIENTRY ilSetMemory(mAlloc, mFree);
|
|
ILAPI void ILAPIENTRY ilSetPixels(ILint XOff, ILint YOff, ILint ZOff, ILuint Width, ILuint Height, ILuint Depth, ILenum Format, ILenum Type, void *Data);
|
|
ILAPI void ILAPIENTRY ilSetRead(fOpenRProc, fCloseRProc, fEofProc, fGetcProc, fReadProc, fSeekRProc, fTellRProc);
|
|
ILAPI void ILAPIENTRY ilSetString(ILenum Mode, const char *String);
|
|
ILAPI void ILAPIENTRY ilSetWrite(fOpenWProc, fCloseWProc, fPutcProc, fSeekWProc, fTellWProc, fWriteProc);
|
|
ILAPI void ILAPIENTRY ilShutDown(void);
|
|
ILAPI ILboolean ILAPIENTRY ilSurfaceToDxtcData(ILenum Format);
|
|
ILAPI ILboolean ILAPIENTRY ilTexImage(ILuint Width, ILuint Height, ILuint Depth, ILubyte NumChannels, ILenum Format, ILenum Type, void *Data);
|
|
ILAPI ILboolean ILAPIENTRY ilTexImageDxtc(ILint w, ILint h, ILint d, ILenum DxtFormat, const ILubyte* data);
|
|
ILAPI ILenum ILAPIENTRY ilTypeFromExt(ILconst_string FileName);
|
|
ILAPI ILboolean ILAPIENTRY ilTypeFunc(ILenum Mode);
|
|
ILAPI ILboolean ILAPIENTRY ilLoadData(ILconst_string FileName, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp);
|
|
ILAPI ILboolean ILAPIENTRY ilLoadDataF(ILHANDLE File, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp);
|
|
ILAPI ILboolean ILAPIENTRY ilLoadDataL(void *Lump, ILuint Size, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp);
|
|
ILAPI ILboolean ILAPIENTRY ilSaveData(ILconst_string FileName);
|
|
|
|
// For all those weirdos that spell "colour" without the 'u'.
|
|
#define ilClearColor ilClearColour
|
|
#define ilKeyColor ilKeyColour
|
|
|
|
#define imemclear(x,y) memset(x,0,y);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // __IL_H__
|
|
#endif // __il_h__
|