void ProgressDialog::paintEvent() { if(!m_background->isEmpty()) { drawImage(realRect().x(), realRect().y(), m_background); } glDrawString(m_progressName.c_str(), realRect().x()+2, realRect().y()+1, realRect().x2()-2, realRect().y()+20, 15, FT_TEXT_H_CENTER, 0, 128); char info[56]; sprintf(info, "%d/%d", m_fullProgress, m_maxFullProgress); glDrawString(info, realRect().x()+2, realRect().y()+1, realRect().x2()-2, realRect().y()+20, 15, FT_TEXT_H_CENTER | FT_TEXT_W_RIGHT, 0, 128); glSetPen(0xFFFFFFFF); glDrawString(m_whatDoing.c_str(), realRect().x()+2, realRect().y()+23, realRect().x2()-2, realRect().y()+23+22, 15, FT_TEXT_W_CENTER | FT_TEXT_H_DOWN | FT_TEXT_CENTER_BY_XSTART, 0, 128); int y = realRect().y()+60; int percent_full = m_fullProgress*100/m_maxFullProgress; int percent = m_progress? m_progress*100/m_maxProgress : 0; int max_w = realRect().w()-10; int full_x = max_w*percent_full/100; int cur_x = max_w*percent/100; glSetPen(0xFFFF0000); glDrawRectange(realRect().x()+4, y, realRect().x2()-6, y+4); if(full_x < 1) full_x = 0; if(full_x > max_w) full_x = max_w; glSetPen(0xFFFFFFFF); glDrawFilledRectange(realRect().x()+5, y+1, realRect().x()+5+full_x, y+4); y += 10; glSetPen(0xFFFF0000); glDrawRectange(realRect().x()+4, y, realRect().x2()-6, y+4); if(cur_x < 1) cur_x = 0; if(cur_x > max_w) cur_x = max_w; glSetPen(0xFFFFFFFF); glDrawFilledRectange(realRect().x()+5, y+1, realRect().x()+5-1+cur_x, y+4); Widget::paintEvent(); }
void BitmapTextRenderer::renderText(TextPtr & theText) { glColor4fv(theText->_myTextStyle._myTextColor.begin()); glDisable(GL_LIGHTING); unsigned int myXPos = (unsigned int) (theText->_myPos[0] * getWindowWidth() + 0.5); unsigned int myYPos = (unsigned int) (theText->_myPos[1] * getWindowHeight() + 0.5); glRasterPos2i(myXPos, myYPos); BITMAPFONT myFontEnum = BITMAPFONT(asl::getEnumFromString(theText->_myFont, myBitmapFontStr)); switch(myFontEnum) { case BOOKMAN72_FONT: glDrawString(theText->_myString.c_str(), Bookman72); break; case COURIER24_FONT: glDrawString(theText->_myString.c_str(), ::Courier24); break; case HELV24_FONT: glDrawString(theText->_myString.c_str(), Helv24); break; case SCREEN8_FONT: glDrawString(theText->_myString.c_str(), Screen8); break; case SCREEN13_FONT: glDrawString(theText->_myString.c_str(), Screen13); break; case SCREEN15_FONT: glDrawString(theText->_myString.c_str(), Screen15); break; case SYNTAXBOLD18_FONT: glDrawString(theText->_myString.c_str(), SyntaxBold18); break; case SYNTAXMED144_FONT: glDrawString(theText->_myString.c_str(), SyntaxMed144); break; case TIMES12_FONT: glDrawString(theText->_myString.c_str(), Times12); break; case TIMES14_FONT: glDrawString(theText->_myString.c_str(), Times14); break; case TIMES144_FONT: glDrawString(theText->_myString.c_str(), Times144); break; default: throw GLTextRendererException("Sorry, font not found: " + theText->_myFont, PLUS_FILE_LINE); }; }