//----------------------------------------------------------------------------- // // ImageLib Sources // Copyright (C) 2000-2009 by Denton Woods // Last modified: 01/06/2009 // // Filename: IL/devil_internal_exports.h // // Description: Internal stuff for DevIL (IL, ILU and ILUT) // //----------------------------------------------------------------------------- #ifndef IL_EXPORTS_H #define IL_EXPORTS_H #include "IL/il.h" #ifdef DEBUG #include #else #define assert(x) #endif //#ifndef NOINLINE #ifndef INLINE #if defined(__GNUC__) #define INLINE extern inline #elif defined(_MSC_VER) //@TODO: Get this working in MSVC++. // http://www.greenend.org.uk/rjk/2003/03/inline.html #define NOINLINE //#define INLINE /*#ifndef _WIN64 // Cannot use inline assembly in x64 target platform. #define USE_WIN32_ASM #endif//_WIN64*/ #define INLINE __inline #else #define INLINE inline #endif #endif //#else //#define INLINE //#endif //NOINLINE #ifdef __cplusplus extern "C" { #endif #define IL_MAX(a,b) (((a) > (b)) ? (a) : (b)) #define IL_MIN(a,b) (((a) < (b)) ? (a) : (b)) //! Basic Palette struct typedef struct ILpal { ILubyte* Palette; //!< the image palette (if any) ILuint PalSize; //!< size of the palette (in bytes) ILenum PalType; //!< the palette types in il.h (0x0500 range) } ILpal; //! The Fundamental Image structure /*! Every bit of information about an image is stored in this internal structure.*/ typedef struct ILimage { ILuint Width; //!< the image's width ILuint Height; //!< the image's height ILuint Depth; //!< the image's depth ILubyte Bpp; //!< bytes per pixel (now number of channels) ILubyte Bpc; //!< bytes per channel ILuint Bps; //!< bytes per scanline (components for IL) ILubyte* Data; //!< the image data ILuint SizeOfData; //!< the total size of the data (in bytes) ILuint SizeOfPlane; //!< SizeOfData in a 2d image, size of each plane slice in a 3d image (in bytes) ILenum Format; //!< image format (in IL enum style) ILenum Type; //!< image type (in IL enum style) ILenum Origin; //!< origin of the image ILpal Pal; //!< palette details ILuint Duration; //!< length of the time to display this "frame" ILenum CubeFlags; //!< cube map flags for sides present in chain struct ILimage* Mipmaps; //!< mipmapped versions of this image terminated by a NULL - usu. NULL struct ILimage* Next; //!< next image in the chain - usu. NULL struct ILimage* Faces; //!< next cubemap face in the chain - usu. NULL struct ILimage* Layers; //!< subsequent layers in the chain - usu. NULL ILuint* AnimList; //!< animation list ILuint AnimSize; //!< animation list size void* Profile; //!< colour profile ILuint ProfileSize; //!< colour profile size ILuint OffX; //!< x-offset of the image ILuint OffY; //!< y-offset of the image ILubyte* DxtcData; //!< compressed data ILenum DxtcFormat; //!< compressed data format ILuint DxtcSize; //!< compressed data size } ILimage; // Memory functions ILAPI void* ILAPIENTRY ialloc(const ILsizei Size); ILAPI void ILAPIENTRY ifree(const void *Ptr); ILAPI void* ILAPIENTRY icalloc(const ILsizei Size, const ILsizei Num); #ifdef ALTIVEC_GCC ILAPI void* ILAPIENTRY ivec_align_buffer(void *buffer, const ILuint size); #endif // Internal library functions in IL ILAPI ILimage* ILAPIENTRY ilGetCurImage(void); ILAPI void ILAPIENTRY ilSetCurImage(ILimage *Image); ILAPI void ILAPIENTRY ilSetError(ILenum Error); ILAPI void ILAPIENTRY ilSetPal(ILpal *Pal); // // Utility functions // ILAPI ILubyte ILAPIENTRY ilGetBppFormat(ILenum Format); ILAPI ILenum ILAPIENTRY ilGetFormatBpp(ILubyte Bpp); ILAPI ILubyte ILAPIENTRY ilGetBpcType(ILenum Type); ILAPI ILenum ILAPIENTRY ilGetTypeBpc(ILubyte Bpc); ILAPI ILubyte ILAPIENTRY ilGetBppPal(ILenum PalType); ILAPI ILenum ILAPIENTRY ilGetPalBaseType(ILenum PalType); ILAPI ILuint ILAPIENTRY ilNextPower2(ILuint Num); ILAPI ILenum ILAPIENTRY ilTypeFromExt(ILconst_string FileName); ILAPI void ILAPIENTRY ilReplaceCurImage(ILimage *Image); ILAPI void ILAPIENTRY iMemSwap(ILubyte *, ILubyte *, const ILuint); // // Image functions // ILAPI void ILAPIENTRY iBindImageTemp (void); ILAPI ILboolean ILAPIENTRY ilClearImage_ (ILimage *Image); ILAPI void ILAPIENTRY ilCloseImage (ILimage *Image); ILAPI void ILAPIENTRY ilClosePal (ILpal *Palette); ILAPI ILpal* ILAPIENTRY iCopyPal (void); ILAPI ILboolean ILAPIENTRY ilCopyImageAttr (ILimage *Dest, ILimage *Src); ILAPI ILimage* ILAPIENTRY ilCopyImage_ (ILimage *Src); ILAPI void ILAPIENTRY ilGetClear (void *Colours, ILenum Format, ILenum Type); ILAPI ILuint ILAPIENTRY ilGetCurName (void); ILAPI ILboolean ILAPIENTRY ilIsValidPal (ILpal *Palette); ILAPI ILimage* ILAPIENTRY ilNewImage (ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILubyte Bpc); ILAPI ILimage* ILAPIENTRY ilNewImageFull (ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data); ILAPI ILboolean ILAPIENTRY ilInitImage (ILimage *Image, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data); ILAPI ILboolean ILAPIENTRY ilResizeImage (ILimage *Image, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILubyte Bpc); ILAPI ILboolean ILAPIENTRY ilTexImage_ (ILimage *Image, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data); ILAPI ILboolean ILAPIENTRY ilTexSubImage_ (ILimage *Image, void *Data); ILAPI void* ILAPIENTRY ilConvertBuffer (ILuint SizeOfData, ILenum SrcFormat, ILenum DestFormat, ILenum SrcType, ILenum DestType, ILpal *SrcPal, void *Buffer); ILAPI ILimage* ILAPIENTRY iConvertImage (ILimage *Image, ILenum DestFormat, ILenum DestType); ILAPI ILpal* ILAPIENTRY iConvertPal (ILpal *Pal, ILenum DestFormat); ILAPI ILubyte* ILAPIENTRY iGetFlipped (ILimage *Image); ILAPI ILboolean ILAPIENTRY iMirror(); ILAPI void ILAPIENTRY iFlipBuffer(ILubyte *buff, ILuint depth, ILuint line_size, ILuint line_num); ILubyte* iFlipNewBuffer(ILubyte *buff, ILuint depth, ILuint line_size, ILuint line_num); ILAPI void ILAPIENTRY iGetIntegervImage(ILimage *Image, ILenum Mode, ILint *Param); // Internal library functions in ILU ILAPI ILimage* ILAPIENTRY iluRotate_(ILimage *Image, ILfloat Angle); ILAPI ILimage* ILAPIENTRY iluRotate3D_(ILimage *Image, ILfloat x, ILfloat y, ILfloat z, ILfloat Angle); ILAPI ILimage* ILAPIENTRY iluScale_(ILimage *Image, ILuint Width, ILuint Height, ILuint Depth); #ifdef __cplusplus } #endif #endif//IL_EXPORTS_H