00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef MICROSOFTBMP_H
00042 #define MICROSOFTBMP_H
00043
00044
00045 #include <stdio.h>
00046 #include <string.h>
00047
00048 #define IMAGE_DATA_OFFSET 54
00049 #define HEADER_SIZE 40
00050 #define NO_OF_IMAGE_PLANES 1
00051 #define BITS_PER_PIXEL 24
00052 #define COMPRESSION_METHOD 0
00053 #define SIZE_OF_BITMAP 0
00054 #define NO_COLOURS_USED 0
00055 #define NO_SIGNIFICANT_COLS 0
00056
00057 #define MAX_FILENAME_LEN 99
00058
00059 class MicrosoftBMP_RT
00060 {
00061 public:
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 unsigned int FileSize;
00082
00083
00084
00085 unsigned int ImageWidth;
00086 unsigned int ImageHeight;
00087 unsigned int HorizResolution;
00088 unsigned int VertResolution;
00089
00090
00091
00092 unsigned char type1;
00093 unsigned char type2;
00094 unsigned int reserved;
00095 unsigned int data_off;
00096 unsigned int head_size;
00097 unsigned int no_planes;
00098 unsigned int bits_per_pixel;
00099 unsigned int comp_method;
00100 unsigned int bitmap_size;
00101 unsigned int no_cols;
00102 unsigned int no_sig_cols;
00103
00104 private:
00105
00106
00107 char file_name[MAX_FILENAME_LEN+1];
00108 FILE *file_pnt;
00109 unsigned char *raw_data;
00110
00111 public:
00112
00113 MicrosoftBMP_RT(const char *filename);
00114 ~MicrosoftBMP_RT();
00115
00116 bool read();
00117 bool write();
00118 void extract_data(int *);
00119 void extract_data_grey(int *);
00120 void put_data(int *);
00121 void put_data_grey(int *);
00122 bool set_size(unsigned int, unsigned int);
00123 void set_filename(const char *);
00124
00125 private:
00126
00127 bool read_byte(unsigned char *);
00128 bool read_word(unsigned int *);
00129 bool read_dword(unsigned int *);
00130 bool write_byte(char);
00131 bool write_word(unsigned int);
00132 bool write_dword(unsigned int);
00133 bool allocate_storage();
00134 void calculate_filesize();
00135 bool check_header_valid();
00136 };
00137
00138 #endif