//----------------------------------------------------------------------------// float FontDim::getValue(const Window& wnd) const { // get window to use. const Window& sourceWindow = d_childName.empty() ? wnd : *wnd.getChild(d_childName); // get font to use const Font* fontObj = getFontObject(sourceWindow); if (fontObj) { switch (d_metric) { case FMT_LINE_SPACING: return fontObj->getLineSpacing() + d_padding; break; case FMT_BASELINE: return fontObj->getBaseline() + d_padding; break; case FMT_HORZ_EXTENT: return fontObj->getTextExtent(d_text.empty() ? sourceWindow.getText() : d_text) + d_padding; break; default: CEGUI_THROW(InvalidRequestException( "unknown or unsupported FontMetricType encountered.")); break; } } // no font, return padding value only. else { return d_padding; } }
bool TextComponent::handleFontRenderSizeChange(Window& window, const Font* font) const { const bool res = FalagardComponentBase::handleFontRenderSizeChange(window, font); if (font == getFontObject(window)) { window.invalidate(); return true; } return res; }
//------------------------------------------------------------------------// void TextComponent::updateFormatting( const Window& srcWindow, const Sizef& size) const { const Font* font = getFontObject(srcWindow); // exit if we have no font to use. if (!font) throw InvalidRequestException("Window doesn't have a font."); const RenderedString* rs = &d_renderedString; // do we fetch text from a property if (!d_textPropertyName.empty()) { // fetch text & do bi-directional reordering as needed String vis; #ifdef CEGUI_BIDI_SUPPORT BidiVisualMapping::StrIndexList l2v, v2l; d_bidiVisualMapping->reorderFromLogicalToVisual( srcWindow.getProperty(d_textPropertyName), vis, l2v, v2l); #else vis = srcWindow.getProperty(d_textPropertyName); #endif // parse string using parser from Window. d_renderedString = srcWindow.getRenderedStringParser().parse(vis, font, 0); } // do we use a static text string from the looknfeel else if (!getTextVisual().empty()) // parse string using parser from Window. d_renderedString = srcWindow.getRenderedStringParser(). parse(getTextVisual(), font, 0); // do we have to override the font? else if (font != srcWindow.getFont()) d_renderedString = srcWindow.getRenderedStringParser(). parse(srcWindow.getTextVisual(), font, 0); // use ready-made RenderedString from the Window itself else rs = &srcWindow.getRenderedString(); setupStringFormatter(srcWindow, *rs); d_formattedRenderedString->format(&srcWindow, size); }
//----------------------------------------------------------------------------// bool FontDim::handleFontRenderSizeChange(Window& window, const Font* font) const { return font == getFontObject(window); }