00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(SJFONT_H_INCLUDED)
00012 #define SJFONT_H_INCLUDED
00013
00014 #include "globals.h"
00015
00016 namespace sjgui{
00017
00028 class CFont
00029 {
00030 static int def_font_size;
00031
00032 static GLuint m_uiTexture;
00033
00034 static GLuint m_uiBase;
00035
00036
00037
00038
00039 static bool CreateFont(unsigned char* font_texture,int font_width,int font_height);
00040
00041 void SetListBase(){glListBase(m_uiBase-32+(128*m_iSet));}
00042
00043 void BindTexture(){glBindTexture(GL_TEXTURE_2D, m_uiTexture);}
00044
00045
00046
00047
00048
00049
00050 GLboolean m_yTxt;
00051
00052
00053
00054
00055
00056 GLboolean m_yBlend;
00057
00058
00059
00060
00061
00062 int m_iSet;
00063 float m_fScale;
00064 int m_iFontSize;
00065 public:
00067 enum eFontStyles{NORMAL=0,ITALIC=1};
00068 CFont()
00069 {
00070 m_fScale=1.0f;
00071 m_yTxt=false;
00072 m_yBlend=false;
00073 m_iSet=0;
00074 m_iFontSize=def_font_size;
00075 }
00080 void SetFontStyle(eFontStyles style){if(style==NORMAL)m_iSet=0;else m_iSet=1;};
00082 float GetFontScale(){return m_fScale;}
00084 void SetFontSize(int i){m_iFontSize=i;m_fScale=(float)i/def_font_size;}
00086 int GetFontSize(){return m_iFontSize;};
00100 static bool LoadFont(unsigned char* font_texture=NULL,int font_width=256,int font_height=256);
00102 static void DestroyFont();
00104 void FontDrawBegin()
00105 {
00106 m_yTxt=glIsEnabled(GL_TEXTURE_2D);
00107
00108 glEnable(GL_TEXTURE_2D);
00109
00110 m_yBlend=glIsEnabled(GL_BLEND);
00111 glEnable(GL_BLEND);
00112 };
00114 void FontDrawEnd()
00115 {
00116
00117 if(m_yTxt)
00118 glEnable(GL_TEXTURE_2D);
00119 else
00120 glDisable(GL_TEXTURE_2D);
00121 if(m_yBlend)
00122 glEnable(GL_BLEND);
00123 else
00124 glDisable(GL_BLEND);
00125 };
00126
00127
00133 void FontDraw(int iX, int iY, const char* msg, unsigned int uiLen,float* fC4fv);
00134 };
00135
00136 }
00137
00138 #endif // !defined(SJFONT_H_INCLUDED)