Esempio n. 1
0
void SE_StyleVisitor::VisitText(Text& text)
{
    delete m_primitive;
    m_primitive = NULL;

    SE_Text* primitive = new SE_Text();
    m_primitive = primitive;

    ParseStringExpression(text.GetContent(), primitive->content, L"");
    ParseStringExpression(text.GetFontName(), primitive->fontName, Text::sFontNameDefault);
    ParseDoubleExpression(text.GetHeight(), primitive->height, 4.0);
    ParseDoubleExpression(text.GetAngle(), primitive->angleDeg, 0.0);
    ParseDoubleExpression(text.GetPositionX(), primitive->position[0], 0.0);
    ParseDoubleExpression(text.GetPositionY(), primitive->position[1], 0.0);
    ParseDoubleExpression(text.GetLineSpacing(), primitive->lineSpacing, 1.05);
    ParseBooleanExpression(text.GetHeightScalable(), primitive->heightScalable, true);
    ParseBooleanExpression(text.GetBold(), primitive->bold, false);
    ParseBooleanExpression(text.GetItalic(), primitive->italic, false);
    ParseBooleanExpression(text.GetUnderlined(), primitive->underlined, false);
    ParseBooleanExpression(text.GetOverlined(), primitive->overlined, false);
    ParseDoubleExpression(text.GetObliqueAngle(), primitive->obliqueAngle, 0.0);
    ParseDoubleExpression(text.GetTrackSpacing(), primitive->trackSpacing, 1.0);
    ParseStringExpression(text.GetHorizontalAlignment(), primitive->hAlignment, Text::sHAlignmentDefault, Text::sHAlignmentValues);
    ParseStringExpression(text.GetVerticalAlignment(), primitive->vAlignment, Text::sVAlignmentDefault, Text::sVAlignmentValues);
    ParseStringExpression(text.GetJustification(), primitive->justification, Text::sJustificationDefault, Text::sJustificationValues);
    ParseColorExpression(text.GetTextColor(), primitive->textColor, 0xff000000);
    ParseColorExpression(text.GetGhostColor(), primitive->ghostColor, 0);
    ParseStringExpression(text.GetMarkup(), primitive->markup, Text::sMarkupDefault);
    ParseStringExpression(text.GetResizeControl(), primitive->resizeControl, GraphicElement::sResizeControlDefault, GraphicElement::sResizeControlValues);

    TextFrame* frame = text.GetFrame();
    if (frame)
    {
        ParseColorExpression(frame->GetLineColor(), primitive->frameLineColor, 0);
        ParseColorExpression(frame->GetFillColor(), primitive->frameFillColor, 0);
        ParseDoubleExpression(frame->GetOffsetX(), primitive->frameOffset[0], 0.0);
        ParseDoubleExpression(frame->GetOffsetY(), primitive->frameOffset[1], 0.0);
    }

    primitive->cacheable = !(primitive->content.expression
                          || primitive->fontName.expression
                          || primitive->height.expression
                          || primitive->angleDeg.expression
                          || primitive->position[0].expression
                          || primitive->position[1].expression
                          || primitive->lineSpacing.expression
                          || primitive->heightScalable.expression
                          || primitive->bold.expression
                          || primitive->italic.expression
                          || primitive->underlined.expression
                          || primitive->overlined.expression
                          || primitive->obliqueAngle.expression
                          || primitive->trackSpacing.expression
                          || primitive->hAlignment.expression
                          || primitive->vAlignment.expression
                          || primitive->justification.expression
                          || primitive->textColor.expression
                          || primitive->ghostColor.expression
                          || primitive->frameLineColor.expression
                          || primitive->frameFillColor.expression
                          || primitive->frameOffset[0].expression
                          || primitive->frameOffset[1].expression
                          || primitive->markup.expression
                          || primitive->resizeControl.expression);
}