00001 #ifndef _FONT_BASE_H_ 00002 #define _FONT_BASE_H_ 00003 00004 #include <nds.h> 00005 #include <string.h> 00006 00007 #define GLYPH_MAP_SIZE 32 00008 00009 namespace WoopsiUI { 00010 00011 class MutableBitmapBase; 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 char letter) const = 0; 00046 00052 void setColour(const u16 colour) { 00053 _drawColour = colour; 00054 _isMonochrome = true; 00055 } 00056 00063 inline const u16 getColour() const { return _drawColour; }; 00064 00069 inline const bool isMonochrome() const { return _isMonochrome; }; 00070 00075 inline const u16 getTransparentColour() const { return _transparentColour; }; 00076 00081 inline void setTransparentColour(const u16 colour) { _transparentColour = colour; }; 00082 00087 inline void clearColour() { 00088 _isMonochrome = false; 00089 _drawColour = 0; 00090 }; 00091 00104 virtual s16 drawChar(MutableBitmapBase* bitmap, char letter, s16 x, s16 y, u16 clipX1, u16 clipY1, u16 clipX2, u16 clipY2) = 0; 00105 00111 virtual u16 getStringWidth(const char* text) const = 0; 00112 00121 virtual u16 getStringWidth(const char* text, u16 length) const = 0; 00122 00128 virtual u16 getCharWidth(char letter) const = 0; 00129 00134 inline const u8 getHeight() const { return _height; }; 00135 00136 private: 00137 u8 _height; 00138 u16 _drawColour; 00139 bool _isMonochrome; 00140 u16 _transparentColour; 00141 }; 00142 } 00143 00144 #endif