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
00016 class FontBase {
00017
00018 public:
00019
00026 FontBase(const u8 height, const u16 transparentColour = 0) {
00027 _height = height;
00028 _drawColour = 0;
00029 _isMonochrome = false;
00030 }
00031
00035 virtual inline ~FontBase() { };
00036
00043 virtual const bool isCharBlank(const char letter) const = 0;
00044
00050 void setColour(const u16 colour) {
00051 _drawColour = colour;
00052 _isMonochrome = true;
00053 }
00054
00061 inline const u16 getColour() const { return _drawColour; };
00062
00067 inline const bool isMonochrome() const { return _isMonochrome; };
00068
00073 inline const u16 getTransparentColour() const { return _transparentColour; };
00074
00079 inline void setTransparentColour(const u16 colour) { _transparentColour = colour; };
00080
00085 inline void clearColour() {
00086 _isMonochrome = false;
00087 _drawColour = 0;
00088 };
00089
00104 virtual s16 drawChar(u16* bitmap, u16 bitmapWidth, u16 bitmapHeight, 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