00001 #ifndef _FIXED_WIDTH_FONT_BASE_H_ 00002 #define _FIXED_WIDTH_FONT_BASE_H_ 00003 00004 #include <nds.h> 00005 #include "fontbase.h" 00006 00007 namespace WoopsiUI { 00008 00014 class FixedWidthFontBase : public FontBase { 00015 00016 public: 00017 00029 FixedWidthFontBase(const u16 bitmapWidth, const u16 bitmapHeight, const u8 width, const u8 height, const u16 transparentColour = 0); 00030 00034 virtual inline ~FixedWidthFontBase() { }; 00035 00040 inline const u16 getBitmapWidth() const { return _bitmapWidth; }; 00041 00046 inline const u16 getBitmapHeight() const { return _bitmapHeight; }; 00047 00054 virtual const u16 getPixel(const s16 x, const s16 y) const = 0; 00055 00060 inline const u8 getWidth() const { return _width; }; 00061 00067 u16 getStringWidth(const WoopsiString& text) const; 00068 00080 inline u16 getStringWidth(const WoopsiString& text, s32 startIndex, s32 length) const { return length * getWidth(); }; 00081 00087 inline u16 getCharWidth(u32 letter) const { return getWidth(); }; 00088 00095 virtual inline const bool isCharBlank(const u32 letter) const { return !(_glyphMap[letter >> 3] & (1 << (letter % 8))); }; 00096 00097 protected: 00105 virtual void createGlyphMap(); 00106 00114 virtual const bool scanGlyph(const u16 x, const u16 y) const = 0; 00115 00116 protected: 00117 00122 void initGlyphMap(); 00123 00124 u8 _glyphMap[GLYPH_MAP_SIZE]; 00126 private: 00127 u8 _width; 00128 u16 _bitmapWidth; 00129 u16 _bitmapHeight; 00130 }; 00131 } 00132 00133 #endif