Main Page | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members

plbmpdec.h

00001 /*
00002 /--------------------------------------------------------------------
00003 |
00004 |      $Id: plbmpdec.h,v 1.7 2002/08/04 20:08:01 uzadow Exp $
00005 |
00006 |      Copyright (c) 1996-2002 Ulrich von Zadow
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 //! Windows bitmap file decoder. Decodes bitmap files (compressed and
00023 //! uncompressed) of all bit depths. Returns an 8
00024 //! or 32 bpp bitmap.
00025 class PLBmpDecoder : public PLPicDecoder
00026 {
00027 
00028 public:
00029   //! Creates a decoder
00030   PLBmpDecoder
00031     ();
00032 
00033   //! Destroys a decoder
00034   virtual ~PLBmpDecoder
00035     ();
00036 
00037   //! Opens the data source. 
00038   virtual void Open (PLDataSource * pDataSrc);
00039 
00040   //! Fills the bitmap with the main image. 
00041   virtual void GetImage (PLBmp & Bmp);
00042 
00043   //!
00044   virtual void Close ();
00045 
00046 private:
00047 
00048   // Decodes the bitmap file & info headers
00049   WINBITMAPINFOHEADER * getInfoHeader
00050     ( PLDataSource * pDataSrc,
00051       PLPixel32* Pal
00052     );
00053 
00054   // Decodes a 2-color bitmap. Ignores the palette & just uses
00055   // black & white as 'colors'
00056   void decode1bpp
00057     ( PLDataSource * pDataSrc,
00058       PLBmp * pBmp
00059     );
00060 
00061   // Decodes an uncompressed 16-color-bitmap.
00062   void decode4bpp
00063     ( PLDataSource * pDataSrc,
00064       PLBmp * pBmp
00065     );
00066 
00067   // Decodes an uncompressed 256-color-bitmap.
00068   void decode8bpp
00069     ( PLDataSource * pDataSrc,
00070       PLBmp * pBmp
00071     );
00072 
00073   // Decodes a compressed 16-color-bitmap.
00074   void decodeRLE4
00075     ( PLDataSource * pDataSrc,
00076       PLBmp * pBmp
00077     );
00078 
00079   // Decodes a compressed 256-color-bitmap.
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   // Decodes true-color bitmap
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   // Decodes two 4-bit pixels using a palette & puts them in pDest
00124   // and pDest+4.
00125   void decode2Nibbles
00126     ( PLBYTE * pDest,
00127       PLBYTE SrcByte
00128     );
00129 
00130   // Makes a private copy of the palette in the file and sets the
00131   // alpha channel. Returns the number of colors read.
00132   int readPalette
00133     ( WINBITMAPINFOHEADER * pBMI,     // Pointer to bitmapinfoheader in file.
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 |      $Log: plbmpdec.h,v $
00148 |      Revision 1.7  2002/08/04 20:08:01  uzadow
00149 |      Added PLBmpInfo class, ability to extract metainformation from images without loading the whole image and proper greyscale support.
00150 |
00151 |      Revision 1.6  2002/03/31 13:36:41  uzadow
00152 |      Updated copyright.
00153 |
00154 |      Revision 1.5  2001/10/21 17:12:39  uzadow
00155 |      Added PSD decoder beta, removed BPPWanted from all decoders, added PLFilterPixel.
00156 |
00157 |      Revision 1.4  2001/10/06 22:37:08  uzadow
00158 |      Linux compatibility.
00159 |
00160 |      Revision 1.3  2001/10/06 20:44:45  uzadow
00161 |      Linux compatibility
00162 |
00163 |      Revision 1.2  2001/10/05 21:15:09  uzadow
00164 |      Improved support for OS/2 bitmap decoding.
00165 |
00166 |      Revision 1.1  2001/09/16 19:03:22  uzadow
00167 |      Added global name prefix PL, changed most filenames.
00168 |
00169 |
00170 \--------------------------------------------------------------------
00171 */

Generated on Sun Jun 6 13:42:21 2004 for paintlib by doxygen 1.3.2