| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- //-----------------------------------------------------------------------------
- //
- // 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
|