Richard Parker / EALCD
Committer:
richardparker
Date:
Thu Mar 04 10:54:06 2010 +0000
Revision:
1:f04bcaea1d60
Parent:
0:839ecbf5cb2a
Child:
6:4fe6f365cbeb

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
richardparker 0:839ecbf5cb2a 1 // Copyright 2010 Richard Parker
richardparker 0:839ecbf5cb2a 2
richardparker 0:839ecbf5cb2a 3 #ifndef MBED_EAIMAGE_H
richardparker 0:839ecbf5cb2a 4 #define MBED_EAIMAGE_H
richardparker 0:839ecbf5cb2a 5
richardparker 0:839ecbf5cb2a 6 #include "mbed.h"
richardparker 0:839ecbf5cb2a 7
richardparker 0:839ecbf5cb2a 8 #include "EAWidget.h"
richardparker 0:839ecbf5cb2a 9
richardparker 0:839ecbf5cb2a 10 class EALCD;
richardparker 1:f04bcaea1d60 11 class EAColor;
richardparker 0:839ecbf5cb2a 12
richardparker 0:839ecbf5cb2a 13 /**
richardparker 0:839ecbf5cb2a 14 * Class to handle loading and displaying an image.
richardparker 0:839ecbf5cb2a 15 * @author Richard Parker
richardparker 0:839ecbf5cb2a 16 */
richardparker 0:839ecbf5cb2a 17 class EAImage: public EAWidget
richardparker 0:839ecbf5cb2a 18 {
richardparker 0:839ecbf5cb2a 19 public:
richardparker 0:839ecbf5cb2a 20 struct EABMPHeader {
richardparker 0:839ecbf5cb2a 21 unsigned int headerSize;
richardparker 0:839ecbf5cb2a 22 unsigned int width;
richardparker 0:839ecbf5cb2a 23 unsigned int height;
richardparker 0:839ecbf5cb2a 24 unsigned short noColorPlanes;
richardparker 0:839ecbf5cb2a 25 unsigned short bitsPerPixel;
richardparker 0:839ecbf5cb2a 26 unsigned int compressionType;
richardparker 0:839ecbf5cb2a 27 unsigned int bmpSize;
richardparker 0:839ecbf5cb2a 28 unsigned int horizontalRes;
richardparker 0:839ecbf5cb2a 29 unsigned int verticalRes;
richardparker 0:839ecbf5cb2a 30 unsigned int noColors;
richardparker 0:839ecbf5cb2a 31 unsigned int noImportantColors;
richardparker 0:839ecbf5cb2a 32 };
richardparker 1:f04bcaea1d60 33
richardparker 1:f04bcaea1d60 34 EAImage();
richardparker 1:f04bcaea1d60 35 ~EAImage();
richardparker 1:f04bcaea1d60 36
richardparker 1:f04bcaea1d60 37 bool load(const char* path);
richardparker 1:f04bcaea1d60 38 void unload();
richardparker 1:f04bcaea1d60 39
richardparker 1:f04bcaea1d60 40 inline const char* path() const { return _path; }
richardparker 1:f04bcaea1d60 41
richardparker 1:f04bcaea1d60 42 inline bool isValid() const { return (_path != NULL); }
richardparker 1:f04bcaea1d60 43
richardparker 1:f04bcaea1d60 44 virtual void paint(EALCD& lcd);
richardparker 1:f04bcaea1d60 45 virtual void paint(EALCD& lcd, unsigned int x, unsigned int y, unsigned int w, unsigned int h);
richardparker 1:f04bcaea1d60 46
richardparker 1:f04bcaea1d60 47 inline const EABMPHeader& info() { return _header; }
richardparker 1:f04bcaea1d60 48
richardparker 1:f04bcaea1d60 49 inline bool isMask() { return _mask; }
richardparker 1:f04bcaea1d60 50 inline void setMask(bool value) { _mask = value; }
richardparker 1:f04bcaea1d60 51
richardparker 1:f04bcaea1d60 52 private:
richardparker 0:839ecbf5cb2a 53 char* _path;
richardparker 1:f04bcaea1d60 54 EAColor* _palette;
richardparker 0:839ecbf5cb2a 55 unsigned int _dataOffset;
richardparker 1:f04bcaea1d60 56 EABMPHeader _header;
richardparker 1:f04bcaea1d60 57 bool _mask;
richardparker 0:839ecbf5cb2a 58
richardparker 0:839ecbf5cb2a 59 bool _loadHeader(const char* path);
richardparker 1:f04bcaea1d60 60 bool _loadPalette(FILE* fp);
richardparker 1:f04bcaea1d60 61
richardparker 1:f04bcaea1d60 62 int _wordsInRow();
richardparker 1:f04bcaea1d60 63 int _wordForX(unsigned int x);
richardparker 1:f04bcaea1d60 64 int _xWordOffset(unsigned int x);
richardparker 1:f04bcaea1d60 65 unsigned short _getColourAtOffset(unsigned int word, int offset);
richardparker 0:839ecbf5cb2a 66
richardparker 0:839ecbf5cb2a 67 };
richardparker 0:839ecbf5cb2a 68
richardparker 0:839ecbf5cb2a 69 #endif