00001
00008
00009
00010
00011
00012
00013 #ifndef GFX_FONT_HH
00014 #define GFX_FONT_HH 1
00015
00016 #include "gfx.hh"
00017 #include "gfx_rgba.hh"
00018
00019 namespace gfx {
00020
00030
00032 enum eFontMode
00033 {
00034 eFontMode_NORMAL = (0),
00035
00036 eFontMode_CENTER = (1<<0),
00037 eFontMode_NE = (1<<1),
00038 eFontMode_SE = (1<<2),
00039 eFontMode_SW = (1<<3),
00040 eFontMode_NW = (1<<4),
00041
00042 eFontMode_BG = (1<<5),
00043 eFontMode_HILITE = (1<<6),
00044
00045 eFontMode_MASK_JUSTIFY_CORNER = (eFontMode_NE|eFontMode_SE|eFontMode_SW|eFontMode_NW),
00046 eFontMode_MASK_RIGHT = (eFontMode_NE|eFontMode_SE),
00047 eFontMode_MASK_LEFT = (eFontMode_NW|eFontMode_SW),
00048 };
00049
00050
00054 class FontBase
00055 {
00056
00057 public:
00058 enum eFontError
00059 {
00060 eFontError_NOT_READY = (1<<0),
00061 eFontError_GFXSYS = (1<<1),
00062 eFontError_NEWLINE = (1<<2)
00063 };
00064
00065 FontBase( void ) { }
00066 virtual ~FontBase() { }
00067
00099 virtual void Print( const string& text, fp x, fp y, eFontMode mode ) = 0;
00100 virtual void Print( const string& text, fp x, fp y, eFontMode mode, const RGBA rgba ) = 0;
00101 virtual void Print( const char* text, uint textLen, fp x, fp y, eFontMode mode ) = 0;
00102 virtual void Print( const char* text, uint textLen, fp x, fp y, eFontMode mode, const RGBA rgba ) = 0;
00103 virtual void SetZoom( fp z ) = 0;
00104 };
00105
00109 class FontDesc
00110 {
00111
00112 public:
00113 enum eFontSet { eFontSet_NORMAL, eFontSet_THIN };
00114 FontDesc( const string& name, eFontSet fontSet, int height,
00115 char start, int letters, bool antialias, fp zoom )
00116 : mName(name),
00117 mData(fontSet == eFontSet_NORMAL ? msFont1Data : msFont2Data),
00118 mDataLen(fontSet == eFontSet_NORMAL ? msFont1DataLen : msFont2DataLen),
00119 mHeight(height),
00120 mStart(start),
00121 mLetters(letters),
00122 mAntialias(antialias),
00123 mZoom(zoom)
00124 {
00125 }
00126
00127 ~FontDesc()
00128 {
00129
00130 }
00131
00132 private:
00133 string mName;
00134 SafePtr<const uchar> mData;
00135 int mDataLen;
00136 int mHeight;
00137 char mStart;
00138 int mLetters;
00139 bool mAntialias;
00140 fp mZoom;
00141
00142 CLASS_CONST uchar msFont1Data[];
00143 CLASS_CONST uint msFont1DataLen;
00144 CLASS_CONST uchar msFont2Data[];
00145 CLASS_CONST uint msFont2DataLen;
00146
00147 friend class Font;
00148 };
00149
00150 }
00151
00152 #if GFXSYS_OPENGL
00153 #include "gfx_font_opengl.hh"
00154 #endif
00155
00156 #endif // GFX_FONT_HH