00001 00002 00003 #include <blort/TomGine/tgLabel.h> 00004 #include <stdexcept> 00005 00006 using namespace TomGine; 00007 using namespace std; 00008 00009 tgLabel::tgLabel(){ 00010 // m_maxStrLen=0; 00011 // m_texture = 0; 00012 // m_font = 0; 00013 // m_txtSize = 0; 00014 } 00015 00016 tgLabel::tgLabel(const char* ttf_filename){ 00017 // m_fontfilename = string(ttf_filename); 00018 // m_maxStrLen=0; 00019 // m_texture = 0; 00020 // m_font = 0; 00021 // m_txtSize = 0; 00022 } 00023 00024 tgLabel::~tgLabel(){ 00025 // if(m_font){ 00026 // delete(m_font); 00027 // } 00028 // 00029 // if(m_texture){ 00030 // delete(m_texture); 00031 // } 00032 } 00033 00034 void tgLabel::AddText(const char* text, unsigned size){ 00035 // m_txtHeight = size; 00036 // string str(text); 00037 // m_text.push_back(str); 00038 // if(m_maxStrLen<str.size()) 00039 // m_maxStrLen = str.size(); 00040 // 00041 // CreateLabel(); 00042 } 00043 00044 void tgLabel::CreateLabel(){ 00045 // if(m_fontfilename.empty()){ 00046 // printf("[tgLabel::CreateLabel()] Warning no font specified for label\n"); 00047 // return; 00048 // } 00049 // 00050 // unsigned i,s; 00051 // unsigned m_charWidth = (unsigned)floor(m_txtHeight * 0.75f); //15; 00052 // unsigned m_txtX = (unsigned)floor(m_txtHeight * 0.2f); //4; 00053 // unsigned m_txtY = (unsigned)floor(m_txtHeight * 0.4f); //8; 00054 // unsigned m_txtStepY = m_txtHeight + (unsigned)floor(m_txtHeight * 0.2f); //24; 00055 // 00056 // if(!m_texture) 00057 // m_texture = new tgTexture(); 00058 // 00059 // if(!m_font) 00060 // m_font = new tgFont(m_fontfilename.c_str()); 00061 // 00062 // glDisable(GL_DEPTH_TEST); 00063 // glDepthMask(0); 00064 // 00065 // glClear(GL_COLOR_BUFFER_BIT); 00066 // 00067 // s = m_text.size(); 00068 // for(i=0; i<s; i++){ 00069 // m_font->Print(m_text[s-i-1].c_str(), m_txtHeight, m_txtX, m_txtY+m_txtStepY*i); 00070 // } 00071 // 00072 // m_texture->CopyTexImage2D(m_charWidth*m_maxStrLen, m_txtY+m_txtStepY*i); 00073 // 00074 // m_width = m_charWidth*m_maxStrLen * 0.0005f; 00075 // m_height = (m_txtY+m_txtStepY*i) * 0.0005f; 00076 // 00077 // glDepthMask(1); 00078 // glEnable(GL_DEPTH_TEST); 00079 // 00080 // m_txtSize = m_text.size(); 00081 } 00082 00083 void tgLabel::Clear(){ 00084 // m_text.clear(); 00085 // m_maxStrLen = 0; 00086 // m_txtSize = 0; 00087 // 00088 // if(m_texture){ 00089 // delete(m_texture); 00090 // m_texture = 0; 00091 // } 00092 } 00093 00094 void tgLabel::Draw() const{ 00095 00096 // if(m_text.empty()) 00097 // return; 00098 // 00099 // if(m_txtSize < m_text.size()) 00100 // return; 00101 // 00102 // float w=m_width; 00103 // float h=m_height; 00104 // vec3 vX; 00105 // vec3 vY; 00106 // vec3 vPos = m_pose.t; 00107 // mat4 matrix; 00108 // 00109 // glMatrixMode(GL_MODELVIEW); 00110 // glPushMatrix(); 00111 // glGetFloatv( GL_MODELVIEW_MATRIX, matrix ); 00112 // vX = vec3(matrix[0], matrix[4], matrix[8]); 00113 // vY = vec3(matrix[1], matrix[5], matrix[9]); 00114 // vX = vX * w * 0.5; 00115 // vY = vY * h * 0.5; 00116 // 00117 // 00118 // glEnable(GL_BLEND); 00119 // glBlendFunc(GL_SRC_COLOR, GL_ONE); 00120 // // glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_COLOR); 00121 // glDisable(GL_DEPTH_TEST); 00122 // glDisable(GL_LIGHTING); 00123 // m_texture->Bind(); 00124 // 00125 // glColor3f(1.0,1.0,1.0); 00126 // glBegin(GL_QUADS); 00127 // glTexCoord2f(0.0,0.0); glNormal3f(0.0, 0.0, 1.0); glVertex3f( vPos.x - vX.x - vY.x, vPos.y - vX.y - vY.y, vPos.z - vX.z - vY.z ); 00128 // glTexCoord2f(1.0,0.0); glNormal3f(0.0, 0.0, 1.0); glVertex3f( vPos.x + vX.x - vY.x, vPos.y + vX.y - vY.y, vPos.z + vX.z - vY.z ); 00129 // glTexCoord2f(1.0,1.0); glNormal3f(0.0, 0.0, 1.0); glVertex3f( vPos.x + vX.x + vY.x, vPos.y + vX.y + vY.y, vPos.z + vX.z + vY.z ); 00130 // glTexCoord2f(0.0,1.0); glNormal3f(0.0, 0.0, 1.0); glVertex3f( vPos.x - vX.x + vY.x, vPos.y - vX.y + vY.y, vPos.z - vX.z + vY.z ); 00131 // glEnd(); 00132 // 00133 // glDisable(GL_TEXTURE_2D); 00134 // glEnable(GL_LIGHTING); 00135 // glEnable(GL_DEPTH_TEST); 00136 // glDisable(GL_BLEND); 00137 // 00138 // glPopMatrix(); 00139 00140 } 00141