mirror of
https://github.com/love2d/megasource.git
synced 2026-08-17 11:11:35 +02:00
Add DevIL 1.7.8.
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// ImageLib Sources
|
||||
// Copyright (C) 2000-2008 by Denton Woods
|
||||
// Last modified: 09/26/2008
|
||||
//
|
||||
// Filename: src-IL/include/il_hdr.h
|
||||
//
|
||||
// Description: Reads a Microsoft HD Photo (.wdp)
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef WDP_H
|
||||
#define WDP_H
|
||||
|
||||
#include "il_internal.h"
|
||||
|
||||
|
||||
//
|
||||
// Structures
|
||||
//
|
||||
typedef struct WDPHEAD
|
||||
{
|
||||
ILubyte Encoding[2];
|
||||
ILubyte UniqueID;
|
||||
ILubyte Version;
|
||||
ILuint Offset;
|
||||
} WDPHEAD;
|
||||
|
||||
typedef struct WDPIFD
|
||||
{
|
||||
ILushort Tag;
|
||||
ILushort Type;
|
||||
ILuint Count;
|
||||
ILuint ValOff;
|
||||
ILuint NextOff;
|
||||
} WDPIFD;
|
||||
|
||||
typedef struct WDPGUID
|
||||
{
|
||||
ILuint First;
|
||||
ILushort Second;
|
||||
ILushort Third;
|
||||
ILuint Fourth;
|
||||
ILuint Fifth;
|
||||
} WDPGUID;
|
||||
|
||||
typedef struct WDPIMGHEAD
|
||||
{
|
||||
ILuint GDISignature[2];
|
||||
ILuint Codec;
|
||||
ILubyte Flags[2];
|
||||
ILubyte Format;
|
||||
ILuint Width, Height; // Can either be short or 32-bit int
|
||||
ILuint VertTiles, HorzTiles; // 12-bits each
|
||||
ILushort *TileWidth, *TileHeight; // 8 or 16-bits each
|
||||
ILubyte *TileStretch; // 8-bits each
|
||||
ILubyte ExtraPixels[3];
|
||||
} WDPIMGHEAD;
|
||||
|
||||
typedef struct WDPIMGPLANE
|
||||
{
|
||||
ILubyte Flags1;
|
||||
ILubyte Color;
|
||||
ILubyte Bayer;
|
||||
ILubyte ShiftBits;
|
||||
ILubyte Mantissa;
|
||||
ILubyte Expbias;
|
||||
ILubyte Flags2;
|
||||
|
||||
ILubyte NumChannels;
|
||||
} WDPIMGPLANE;
|
||||
|
||||
typedef struct WDPDCQUANT
|
||||
{
|
||||
ILubyte ChMode;
|
||||
ILubyte DcQuant;
|
||||
ILubyte DcQuantY;
|
||||
ILubyte DcQuantUV;
|
||||
ILubyte DcQuantChan;
|
||||
} WDPDCQUANT;
|
||||
|
||||
typedef struct WDPTILE
|
||||
{
|
||||
ILuint StartCode;
|
||||
ILubyte HashAndType;
|
||||
} WDPTILE;
|
||||
|
||||
//
|
||||
// Image header defines
|
||||
//
|
||||
|
||||
// Codec and sub-codec
|
||||
#define WDP_CODEC 0xF0
|
||||
#define WDP_SUBCODEC 0x0F
|
||||
|
||||
// First set of flags
|
||||
#define WDP_TILING_FLAG 0x80
|
||||
#define WDP_BITSTREAM_FMT 0x40
|
||||
#define WDP_ORIENTATION 0x38
|
||||
#define WDP_INDEXTABLE 0x04
|
||||
#define WDP_OVERLAP 0x03
|
||||
|
||||
// Second set of flags
|
||||
#define WDP_SHORT_HEADER 0x80
|
||||
#define WDP_LONG_WORD 0x40
|
||||
#define WDP_WINDOWING 0x20
|
||||
#define WDP_TRIM_FLEXBITS 0x10
|
||||
#define WDP_TILE_STRETCH 0x08
|
||||
#define WDP_ALPHACHANNEL 0x01
|
||||
|
||||
// Format and bit-depth
|
||||
#define WDP_FORMAT 0xF0
|
||||
#define WDP_BITDEPTH 0x0F
|
||||
#define WDP_Y_ONLY 0x00
|
||||
#define WDP_YUV_420 0x01
|
||||
#define WDP_YUV_422 0x02
|
||||
#define WDP_YUV_444 0x03
|
||||
#define WDP_CMYK 0x04
|
||||
#define WDP_BAYER 0x05
|
||||
#define WDP_N_CHANNEL 0x06
|
||||
#define WDP_RGB 0x07
|
||||
#define WDP_RGBE 0x08
|
||||
|
||||
// Bitdepth
|
||||
#define WDP_BD_1_WHITE 0x00
|
||||
#define WDP_BD_8 0x01
|
||||
#define WDP_BD_16 0x02
|
||||
#define WDP_BD_16S 0x03
|
||||
#define WDP_BD_16F 0x04
|
||||
#define WDP_BD_32 0x05
|
||||
#define WDP_BD_32S 0x06
|
||||
#define WDP_BD_32F 0x07
|
||||
#define WDP_BD_5 0x08
|
||||
#define WDP_BD_10 0x09
|
||||
#define WDP_BD_565 0x0A
|
||||
#define WDP_BD_1_BLACK 0x0F
|
||||
|
||||
|
||||
//
|
||||
// Image plane header defines
|
||||
//
|
||||
|
||||
// First set of flags
|
||||
#define WDP_CLR_FMT 0xE0
|
||||
#define WDP_NO_SCALED 0x10
|
||||
#define WDP_BANDS_PRESENT 0x0F
|
||||
|
||||
// Defines for n-channels
|
||||
#define WDP_NUM_CHANS 0xF0
|
||||
#define WDP_COLOR_INTERP 0x0F
|
||||
|
||||
// Second set of flags
|
||||
#define WDP_DC_FRAME 0x80
|
||||
|
||||
// Channel modes
|
||||
#define WDP_CH_UNIFORM 0x00
|
||||
#define WDP_CH_SEPARATE 0x01
|
||||
#define WDP_CH_INDEPENDENT 0x02
|
||||
|
||||
// Tile types
|
||||
#define WDP_TILE_HASH 0xF8
|
||||
#define WDP_TILE_TYPE 0x03
|
||||
#define WDP_SPATIAL_TILE 0x00
|
||||
#define WDP_DC_TILE 0x01
|
||||
#define WDP_LOWPASS_TILE 0x02
|
||||
#define WDP_HIGHPASS_TILE 0x03
|
||||
#define WDP_FLEXBITS_TILE 0x04
|
||||
|
||||
// Bands present
|
||||
#define WDP_SB_ALL 0x00
|
||||
#define WDP_SB_NO_FLEXBITS 0x01
|
||||
#define WDP_SB_NO_HIGHPASS 0x02
|
||||
#define WDP_SB_DC_ONLY 0x03
|
||||
#define WDP_SB_ISOLATED 0x04
|
||||
|
||||
|
||||
//
|
||||
// Internal functions
|
||||
//
|
||||
ILboolean iIsValidWdp();
|
||||
ILboolean iCheckWdp(WDPHEAD *Header);
|
||||
ILboolean iLoadWdpInternal();
|
||||
ILuint VLWESC();
|
||||
|
||||
|
||||
#endif//WDP_H
|
||||
Reference in New Issue
Block a user