00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef INCL_PLBMPDEC
00012 #define INCL_PLBMPDEC
00013
00014 #ifndef INCL_PLPICDEC
00015 #include "plpicdec.h"
00016 #endif
00017
00018 #ifndef INCL_PLWINDEFS
00019 #include "plwindefs.h"
00020 #endif
00021
00022
00023
00024
00025 class PLBmpDecoder : public PLPicDecoder
00026 {
00027
00028 public:
00029
00030 PLBmpDecoder
00031 ();
00032
00033
00034 virtual ~PLBmpDecoder
00035 ();
00036
00037
00038 virtual void Open (PLDataSource * pDataSrc);
00039
00040
00041 virtual void GetImage (PLBmp & Bmp);
00042
00043
00044 virtual void Close ();
00045
00046 private:
00047
00048
00049 WINBITMAPINFOHEADER * getInfoHeader
00050 ( PLDataSource * pDataSrc,
00051 PLPixel32* Pal
00052 );
00053
00054
00055
00056 void decode1bpp
00057 ( PLDataSource * pDataSrc,
00058 PLBmp * pBmp
00059 );
00060
00061
00062 void decode4bpp
00063 ( PLDataSource * pDataSrc,
00064 PLBmp * pBmp
00065 );
00066
00067
00068 void decode8bpp
00069 ( PLDataSource * pDataSrc,
00070 PLBmp * pBmp
00071 );
00072
00073
00074 void decodeRLE4
00075 ( PLDataSource * pDataSrc,
00076 PLBmp * pBmp
00077 );
00078
00079
00080 void decodeRLE8
00081 ( PLDataSource * pDataSrc,
00082 PLBmp * pBmp
00083 );
00084
00085 void decodeHiColor
00086 ( PLDataSource * pDataSrc,
00087 PLBmp * pBmp,
00088 WINBITMAPINFOHEADER * pBMI
00089 );
00090
00091
00092 void decodeTrueColor
00093 ( PLDataSource * pDataSrc,
00094 PLBmp * pBmp,
00095 int SrcBPP
00096 );
00097
00098 void decode15bppLine
00099 ( PLDataSource * pDataSrc,
00100 PLBmp * pBmp,
00101 PLBYTE * pDest
00102 );
00103
00104 void decode16bppLine
00105 ( PLDataSource * pDataSrc,
00106 PLBmp * pBmp,
00107 PLBYTE * pDest
00108 );
00109
00110 void decode24bppLine
00111 ( PLDataSource * pDataSrc,
00112 PLBmp * pBmp,
00113 PLBYTE * pDest
00114 );
00115
00116 void decode32bppLine
00117 ( PLDataSource * pDataSrc,
00118 PLBmp * pBmp,
00119 PLBYTE * pDest
00120 );
00121
00122
00123
00124
00125 void decode2Nibbles
00126 ( PLBYTE * pDest,
00127 PLBYTE SrcByte
00128 );
00129
00130
00131
00132 int readPalette
00133 ( WINBITMAPINFOHEADER * pBMI,
00134 PLDataSource * pDataSrc,
00135 PLPixel32 * pPal,
00136 int RGBSize
00137 );
00138
00139 PLPixel32 m_Pal[256];
00140 WINBITMAPINFOHEADER * m_pBMI;
00141 };
00142
00143 #endif
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171