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 u32 position) const = 0; 00053 00060 inline const u16 getPixel(const u16 x, const u16 y) const { return getPixel(x + (y * _width)); }; 00061 00066 inline const u8 getWidth() const { return _width; }; 00067 00073 inline u16 getStringWidth(const char* text) const { return strlen(text) * getWidth(); }; 00074 00083 inline u16 getStringWidth(const char* text, u16 length) const { return length * getWidth(); }; 00084 00090 inline u16 getCharWidth(char letter) const { return getWidth(); }; 00091 00098 virtual inline const bool isCharBlank(const char letter) const { return !(_glyphMap[letter >> 3] & (1 << (letter % 8))); }; 00099 00100 protected: 00107 virtual void createGlyphMap(); 00108 00116 virtual const bool scanGlyph(const u16 x, const u16 y) const = 0; 00117 00118 protected: 00119 00124 void initGlyphMap(); 00125 00126 u8 _glyphMap[GLYPH_MAP_SIZE]; 00128 private: 00129 u8 _width; 00130 u16 _bitmapWidth; 00131 u16 _bitmapHeight; 00132 }; 00133 } 00134 00135 #endif