162 lines
6.8 KiB
C
162 lines
6.8 KiB
C
|
//-----------------------------------------------------------------------------
|
||
|
//
|
||
|
// 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 <assert.h>
|
||
|
#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
|