Exemple #1
0
//----------------------------------------------------------------------------//
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;
    }
}
Exemple #2
0
    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;
    }
Exemple #3
0
    //------------------------------------------------------------------------//
    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);
    
    }
Exemple #4
0
//----------------------------------------------------------------------------//
bool FontDim::handleFontRenderSizeChange(Window& window,
                                         const Font* font) const
{
    return font == getFontObject(window);
}