00001 #ifndef _FONT_BASE_H_ 00002 #define _FONT_BASE_H_ 00003 00004 #include <nds.h> 00005 00006 #define GLYPH_MAP_SIZE 32 00007 00008 namespace WoopsiUI { 00009 00010 class MutableBitmapBase; 00011 class WoopsiString; 00012 00018 class FontBase { 00019 00020 public: 00021 00028 FontBase(const u8 height, const u16 transparentColour = 0) { 00029 _height = height; 00030 _drawColour = 0; 00031 _isMonochrome = false; 00032 } 00033 00037 virtual inline ~FontBase() { }; 00038 00045 virtual const bool isCharBlank(const u32 letter) const = 0; 00046 00052 void setColour(const u16 colour) { 00053 _drawColour = colour; 00054 _isMonochrome = true; 00055 } 00056 00064 inline const u16 getColour() const { return _drawColour; }; 00065 00071 inline const bool isMonochrome() const { return _isMonochrome; }; 00072 00078 inline const u16 getTransparentColour() const { return _transparentColour; }; 00079 00084 inline void setTransparentColour(const u16 colour) { _transparentColour = colour; }; 00085 00090 inline void clearColour() { 00091 _isMonochrome = false; 00092 _drawColour = 0; 00093 }; 00094 00107 virtual s16 drawChar(MutableBitmapBase* bitmap, u32 letter, s16 x, s16 y, u16 clipX1, u16 clipY1, u16 clipX2, u16 clipY2) = 0; 00108 00114 virtual u16 getStringWidth(const WoopsiString& text) const = 0; 00115 00124 virtual u16 getStringWidth(const WoopsiString& text, s32 startIndex, s32 length) const = 0; 00125 00131 virtual u16 getCharWidth(u32 letter) const = 0; 00132 00138 virtual u16 getCharHeight(u32 letter) const { return _height; }; 00139 00144 inline const u8 getHeight() const { return _height; }; 00145 00146 private: 00147 u8 _height; 00148 u16 _drawColour; 00149 bool _isMonochrome; 00150 u16 _transparentColour; 00151 }; 00152 } 00153 00154 #endif