00001 #ifndef _FIXED_WIDTH_FONT_BASE_H_ 00002 #define _FIXED_WIDTH_FONT_BASE_H_ 00003 00004 #include <nds.h> 00005 #include <string.h> 00006 #include "fontbase.h" 00007 00008 namespace WoopsiUI { 00009 00014 class FixedWidthFontBase : public FontBase { 00015 00016 public: 00017 00027 FixedWidthFontBase(const u16 bitmapWidth, const u16 bitmapHeight, const u8 width, const u8 height, const u16 transparentColour = 0); 00028 00032 virtual inline ~FixedWidthFontBase() { }; 00033 00038 inline const u16 getBitmapWidth() const { return _bitmapWidth; }; 00039 00044 inline const u16 getBitmapHeight() const { return _bitmapHeight; }; 00045 00052 virtual const u16 getPixel(const s16 x, const s16 y) const = 0; 00053 00058 inline const u8 getWidth() const { return _width; }; 00059 00065 inline u16 getStringWidth(const char* text) const { return strlen(text) * getWidth(); }; 00066 00075 inline u16 getStringWidth(const char* text, u16 length) const { return length * getWidth(); }; 00076 00082 inline u16 getCharWidth(char letter) const { return getWidth(); }; 00083 00090 virtual inline const bool isCharBlank(const char letter) const { return !(_glyphMap[letter >> 3] & (1 << (letter % 8))); }; 00091 00092 protected: 00099 virtual void createGlyphMap(); 00100 00108 virtual const bool scanGlyph(const u16 x, const u16 y) const = 0; 00109 00110 protected: 00111 00116 void initGlyphMap(); 00117 00118 u8 _glyphMap[GLYPH_MAP_SIZE]; 00120 private: 00121 u8 _width; 00122 u16 _bitmapWidth; 00123 u16 _bitmapHeight; 00124 }; 00125 } 00126 00127 #endif