- Main Page
- Data Structures
- Files

# /home/dwoods/DevIL/src-IL/include/il_wdp.h

    00001 //-----------------------------------------------------------------------------
    00002 //
    00003 // ImageLib Sources
    00004 // Copyright (C) 2000-2008 by Denton Woods
    00005 // Last modified: 09/26/2008
    00006 //
    00007 // Filename: src-IL/include/il_hdr.h
    00008 //
    00009 // Description: Reads a Microsoft HD Photo (.wdp)
    00010 //
    00011 //-----------------------------------------------------------------------------
    00012
    00013
    00014 #ifndef WDP_H
    00015 #define WDP_H
    00016
    00017 #include "il_internal.h"
    00018
    00019
    00020 //
    00021 // Structures
    00022 //
    00023 typedef struct WDPHEAD
    00024 {
    00025         ILubyte         Encoding[2];
    00026         ILubyte         UniqueID;
    00027         ILubyte         Version;
    00028         ILuint          Offset;
    00029 } WDPHEAD;
    00030
    00031 typedef struct WDPIFD
    00032 {
    00033         ILushort        Tag;
    00034         ILushort        Type;
    00035         ILuint          Count;
    00036         ILuint          ValOff;
    00037         ILuint          NextOff;
    00038 } WDPIFD;
    00039
    00040 typedef struct WDPGUID
    00041 {
    00042         ILuint          First;
    00043         ILushort        Second;
    00044         ILushort        Third;
    00045         ILuint          Fourth;
    00046         ILuint          Fifth;
    00047 } WDPGUID;
    00048
    00049 typedef struct WDPIMGHEAD
    00050 {
    00051         ILuint          GDISignature[2];
    00052         ILuint          Codec;
    00053         ILubyte         Flags[2];
    00054         ILubyte         Format;
    00055         ILuint          Width, Height;  // Can either be short or 32-bit int
    00056         ILuint          VertTiles, HorzTiles;  // 12-bits each
    00057         ILushort        *TileWidth, *TileHeight;  // 8 or 16-bits each
    00058         ILubyte         *TileStretch;  // 8-bits each
    00059         ILubyte         ExtraPixels[3];
    00060 } WDPIMGHEAD;
    00061
    00062 typedef struct WDPIMGPLANE
    00063 {
    00064         ILubyte         Flags1;
    00065         ILubyte         Color;
    00066         ILubyte         Bayer;
    00067         ILubyte         ShiftBits;
    00068         ILubyte         Mantissa;
    00069         ILubyte         Expbias;
    00070         ILubyte         Flags2;
    00071
    00072         ILubyte         NumChannels;
    00073 } WDPIMGPLANE;
    00074
    00075 typedef struct WDPDCQUANT
    00076 {
    00077         ILubyte         ChMode;
    00078         ILubyte         DcQuant;
    00079         ILubyte         DcQuantY;
    00080         ILubyte         DcQuantUV;
    00081         ILubyte         DcQuantChan;
    00082 } WDPDCQUANT;
    00083
    00084 typedef struct WDPTILE
    00085 {
    00086         ILuint          StartCode;
    00087         ILubyte         HashAndType;
    00088 } WDPTILE;
    00089
    00090 //
    00091 // Image header defines
    00092 //
    00093
    00094 // Codec and sub-codec
    00095 #define WDP_CODEC                       0xF0
    00096 #define WDP_SUBCODEC            0x0F
    00097
    00098 // First set of flags
    00099 #define WDP_TILING_FLAG         0x80
    00100 #define WDP_BITSTREAM_FMT       0x40
    00101 #define WDP_ORIENTATION         0x38
    00102 #define WDP_INDEXTABLE          0x04
    00103 #define WDP_OVERLAP                     0x03
    00104
    00105 // Second set of flags
    00106 #define WDP_SHORT_HEADER        0x80
    00107 #define WDP_LONG_WORD           0x40
    00108 #define WDP_WINDOWING           0x20
    00109 #define WDP_TRIM_FLEXBITS       0x10
    00110 #define WDP_TILE_STRETCH        0x08
    00111 #define WDP_ALPHACHANNEL        0x01
    00112
    00113 // Format and bit-depth
    00114 #define WDP_FORMAT                      0xF0
    00115 #define WDP_BITDEPTH            0x0F
    00116 #define WDP_Y_ONLY                      0x00
    00117 #define WDP_YUV_420                     0x01
    00118 #define WDP_YUV_422                     0x02
    00119 #define WDP_YUV_444                     0x03
    00120 #define WDP_CMYK                        0x04
    00121 #define WDP_BAYER                       0x05
    00122 #define WDP_N_CHANNEL           0x06
    00123 #define WDP_RGB                         0x07
    00124 #define WDP_RGBE                        0x08
    00125
    00126 // Bitdepth
    00127 #define WDP_BD_1_WHITE          0x00
    00128 #define WDP_BD_8                        0x01
    00129 #define WDP_BD_16                       0x02
    00130 #define WDP_BD_16S                      0x03
    00131 #define WDP_BD_16F                      0x04
    00132 #define WDP_BD_32                       0x05
    00133 #define WDP_BD_32S                      0x06
    00134 #define WDP_BD_32F                      0x07
    00135 #define WDP_BD_5                        0x08
    00136 #define WDP_BD_10                       0x09
    00137 #define WDP_BD_565                      0x0A
    00138 #define WDP_BD_1_BLACK          0x0F
    00139
    00140
    00141 //
    00142 // Image plane header defines
    00143 //
    00144
    00145 // First set of flags
    00146 #define WDP_CLR_FMT                     0xE0
    00147 #define WDP_NO_SCALED           0x10
    00148 #define WDP_BANDS_PRESENT       0x0F
    00149
    00150 // Defines for n-channels
    00151 #define WDP_NUM_CHANS           0xF0
    00152 #define WDP_COLOR_INTERP        0x0F
    00153
    00154 // Second set of flags
    00155 #define WDP_DC_FRAME            0x80
    00156
    00157 // Channel modes
    00158 #define WDP_CH_UNIFORM          0x00
    00159 #define WDP_CH_SEPARATE         0x01
    00160 #define WDP_CH_INDEPENDENT      0x02
    00161
    00162 // Tile types
    00163 #define WDP_TILE_HASH           0xF8
    00164 #define WDP_TILE_TYPE           0x03
    00165 #define WDP_SPATIAL_TILE        0x00
    00166 #define WDP_DC_TILE                     0x01
    00167 #define WDP_LOWPASS_TILE        0x02
    00168 #define WDP_HIGHPASS_TILE       0x03
    00169 #define WDP_FLEXBITS_TILE       0x04
    00170
    00171 // Bands present
    00172 #define WDP_SB_ALL                      0x00
    00173 #define WDP_SB_NO_FLEXBITS      0x01
    00174 #define WDP_SB_NO_HIGHPASS      0x02
    00175 #define WDP_SB_DC_ONLY          0x03
    00176 #define WDP_SB_ISOLATED         0x04
    00177
    00178
    00179 //
    00180 // Internal functions
    00181 //
    00182 ILboolean       iIsValidWdp();
    00183 ILboolean       iCheckWdp(WDPHEAD *Header);
    00184 ILboolean       iLoadWdpInternal();
    00185 ILuint          VLWESC();
    00186
    00187
    00188 #endif//WDP_H