version 0.0.1
[fms.git] / include / freenet / captcha / easybmp / EasyBMP_BMP.h
1 /*************************************************
2 *                                                *
3 *  EasyBMP Cross-Platform Windows Bitmap Library * 
4 *                                                *
5 *  Author: Paul Macklin                          *
6 *   email: macklin01@users.sourceforge.net       *
7 * support: http://easybmp.sourceforge.net        *
8 *                                                *
9 *          file: EasyBMP_VariousBMPutilities.h   *
10 *    date added: 05-02-2005                      *
11 * date modified: 12-01-2006                      *
12 *       version: 1.06                            *
13 *                                                *
14 *   License: BSD (revised/modified)              *
15 * Copyright: 2005-6 by the EasyBMP Project       * 
16 *                                                *
17 * description: Defines BMP class                 *
18 *                                                *
19 *************************************************/
20
21 #ifndef _EasyBMP_BMP_h_
22 #define _EasyBMP_BMP_h_
23
24 bool SafeFread( char* buffer, int size, int number, FILE* fp );
25 bool EasyBMPcheckDataSize( void );
26
27 class BMP
28 {private:
29
30  int BitDepth;
31  int Width;
32  int Height;
33  RGBApixel** Pixels;
34  RGBApixel* Colors;
35  int XPelsPerMeter;
36  int YPelsPerMeter;
37
38  ebmpBYTE* MetaData1;
39  int SizeOfMetaData1;
40  ebmpBYTE* MetaData2;
41  int SizeOfMetaData2;
42    
43  bool Read32bitRow( ebmpBYTE* Buffer, int BufferSize, int Row );   
44  bool Read24bitRow( ebmpBYTE* Buffer, int BufferSize, int Row );   
45  bool Read8bitRow(  ebmpBYTE* Buffer, int BufferSize, int Row );  
46  bool Read4bitRow(  ebmpBYTE* Buffer, int BufferSize, int Row );  
47  bool Read1bitRow(  ebmpBYTE* Buffer, int BufferSize, int Row );
48    
49  bool Write32bitRow( ebmpBYTE* Buffer, int BufferSize, int Row );   
50  bool Write24bitRow( ebmpBYTE* Buffer, int BufferSize, int Row );   
51  bool Write8bitRow(  ebmpBYTE* Buffer, int BufferSize, int Row );  
52  bool Write4bitRow(  ebmpBYTE* Buffer, int BufferSize, int Row );  
53  bool Write1bitRow(  ebmpBYTE* Buffer, int BufferSize, int Row );
54  
55  ebmpBYTE FindClosestColor( RGBApixel& input );
56
57  public: 
58
59  int TellBitDepth( void );
60  int TellWidth( void );
61  int TellHeight( void );
62  int TellNumberOfColors( void );
63  void SetDPI( int HorizontalDPI, int VerticalDPI );
64  int TellVerticalDPI( void );
65  int TellHorizontalDPI( void );
66   
67  BMP();
68  BMP( BMP& Input );
69  ~BMP();
70  RGBApixel* operator()(int i,int j);
71  
72  RGBApixel GetPixel( int i, int j ) const;
73  bool SetPixel( int i, int j, RGBApixel NewPixel );
74  
75  bool CreateStandardColorTable( void );
76  
77  bool SetSize( int NewWidth, int NewHeight );
78  bool SetBitDepth( int NewDepth );
79  bool WriteToFile( const char* FileName );
80  bool ReadFromFile( const char* FileName );
81  
82  RGBApixel GetColor( int ColorNumber );
83  bool SetColor( int ColorNumber, RGBApixel NewColor ); 
84 };
85
86 #endif