void Label::drawInternal(Graphics* const TheGraphics, Real32 Opacity) const { if(getText() != "" && getFont() != NULL) { Pnt2f TopLeft, BottomRight; Pnt2f TempPos; getInsideBorderBounds(TopLeft, BottomRight); TempPos = calculateAlignment(TopLeft, BottomRight-TopLeft, getFont()->getBounds(getText()), getAlignment().y(), getAlignment().x()); //Text Color Color4f TextColor = getDrawnTextColor(); if(_TextSelectionStart >= _TextSelectionEnd) { TheGraphics->drawText(TempPos, getText(), getFont(), TextColor, getOpacity()*Opacity); } else { //Draw Text Before the Selection TheGraphics->drawText(TempPos, getText().substr(0, _TextSelectionStart), getFont(), TextColor, getOpacity()*Opacity); //Draw Selection Pnt2f TextTopLeft, TextBottomRight; getFont()->getBounds(getText().substr(0, _TextSelectionStart), TextTopLeft, TextBottomRight); TheGraphics->drawQuad(TempPos + Vec2f(TextBottomRight.x(),0), TempPos + Vec2f(getFont()->getBounds(getText().substr(0, _TextSelectionEnd)).x(), 0), TempPos + Vec2f(getFont()->getBounds(getText().substr(0, _TextSelectionEnd))), TempPos + Vec2f(TextBottomRight), getSelectionBoxColor(), getSelectionBoxColor(), getSelectionBoxColor(), getSelectionBoxColor(), getOpacity()*Opacity); //Draw Selected Text TheGraphics->drawText(TempPos + Vec2f(TextBottomRight.x(), 0), getText().substr(_TextSelectionStart, _TextSelectionEnd-_TextSelectionStart), getFont(), getSelectionTextColor(), getOpacity()*Opacity); //Draw Text After selection getFont()->getBounds(getText().substr(0, _TextSelectionEnd), TextTopLeft, TextBottomRight); TheGraphics->drawText(TempPos + Vec2f(TextBottomRight.x(), 0), getText().substr(_TextSelectionEnd, getText().size()-_TextSelectionEnd), getFont(), TextColor, getOpacity()*Opacity); } } }
void TextField::drawInternal(Graphics* const TheGraphics, Real32 Opacity) const { Pnt2f Alignment; Pnt2f TopLeft, BottomRight; getInsideBorderBounds(TopLeft, BottomRight); //Text Color Color4f TextColor = getDrawnTextColor(); if(getDrawnText() != "" && getFont() != NULL) { Alignment = calculateAlignment(TopLeft, BottomRight-TopLeft, getFont()->getBounds(getDrawnText()), getAlignment().y(), getAlignment().x()); if(_TextSelectionStart >= _TextSelectionEnd) { TheGraphics->drawText(Alignment, getDrawnText(), getFont(), TextColor, getOpacity()*Opacity); } else { //Draw Text Befor the Selection TheGraphics->drawText(Alignment, getDrawnText().substr(0, _TextSelectionStart), getFont(), TextColor, getOpacity()*Opacity); //Draw Selection Pnt2f TextTopLeft, TextBottomRight; getFont()->getBounds(getDrawnText().substr(0, _TextSelectionStart), TextTopLeft, TextBottomRight); TheGraphics->drawQuad(Alignment + Vec2f(TextBottomRight.x(),0), Alignment + Vec2f(getFont()->getBounds(getDrawnText().substr(0, _TextSelectionEnd)).x(), 0), Alignment + Vec2f(getFont()->getBounds(getDrawnText().substr(0, _TextSelectionEnd))), Alignment + Vec2f(TextBottomRight), getSelectionBoxColor(), getSelectionBoxColor(), getSelectionBoxColor(), getSelectionBoxColor(), getOpacity()); //Draw Selected Text TheGraphics->drawText(Alignment + Vec2f(TextBottomRight.x(), 0), getDrawnText().substr(_TextSelectionStart, _TextSelectionEnd-_TextSelectionStart), getFont(), getSelectionTextColor(), getOpacity()*Opacity); //Draw Text After selection getFont()->getBounds(getDrawnText().substr(0, _TextSelectionEnd), TextTopLeft, TextBottomRight); TheGraphics->drawText(Alignment + Vec2f(TextBottomRight.x(), 0), getDrawnText().substr(_TextSelectionEnd, getDrawnText().size()-_TextSelectionEnd), getFont(), TextColor, getOpacity()*Opacity); } } else { Alignment = calculateAlignment(TopLeft, BottomRight-TopLeft, getFont()->getBounds("|"), getAlignment().y(), getAlignment().x()); } if(getEnabled() && getEditable() && getFocused() && _CurrentCaretBlinkElps <= 0.5*LookAndFeelManager::the()->getLookAndFeel()->getTextCaretRate()) { //Draw the caret TheGraphics->drawLine(Alignment+Vec2f(getFont()->getBounds(getDrawnText().substr(0, getCaretPosition())).x(), 0), Alignment + Vec2f(getFont()->getBounds(getDrawnText().substr(0, getCaretPosition())).x(), getFont()->getBounds(getDrawnText()).y()), .5, TextColor, getOpacity()*Opacity); } //Draw the Descriptive text if empty if(getDrawnText().empty() && !getEmptyDescText().empty() && getEmptyDescTextFont() != NULL) { Alignment = calculateAlignment(TopLeft, BottomRight-TopLeft, getEmptyDescTextFont()->getBounds(getEmptyDescText()), getAlignment().y(), getAlignment().x()); TheGraphics->drawText(Alignment, getEmptyDescText(), getEmptyDescTextFont(), getEmptyDescTextColor(), getOpacity()*Opacity); } }