Search in sources :

Example 1 with FormattedTextSymbol

use of com.xenoage.zong.core.text.FormattedTextSymbol in project Zong by Xenoage.

the class TupletStamper method createText.

private FormattedText createText(int digit, float fontSize, SymbolPool symbolPool) {
    if (digit < 0 || digit > 9)
        // TODO
        return null;
    CommonSymbol s = CommonSymbol.getDigit(digit);
    FormattedTextParagraph p = Companion.fPara(new FormattedTextSymbol(symbolPool.getSymbol(s), fontSize, FormattedTextStyle.Companion.getDefaultColor()));
    return Companion.fText(p);
}
Also used : FormattedTextParagraph(com.xenoage.zong.core.text.FormattedTextParagraph) CommonSymbol(com.xenoage.zong.symbols.common.CommonSymbol) FormattedTextSymbol(com.xenoage.zong.core.text.FormattedTextSymbol)

Example 2 with FormattedTextSymbol

use of com.xenoage.zong.core.text.FormattedTextSymbol in project Zong by Xenoage.

the class DefaultTexts method getTempoTextNotNull.

public static FormattedText getTempoTextNotNull(Tempo tempo, SymbolPool symbolPool) {
    FormattedTextStyle style = FormattedTextStyle.Companion.getDefaultStyle();
    if (tempo.getText() != null) {
        // use custom text
        return styleText(tempo.getText(), style);
    } else {
        // show meaning, e.g. "♩ = 120"
        CList<FormattedTextElement> elements = clist();
        Fraction beat = tempo.getBaseBeat();
        if (beat.equals(Companion.fr(1, 4))) {
            elements.add(new FormattedTextSymbol(symbolPool.getSymbol(CommonSymbol.TextNoteQuarter), /* TODO staffStamping.is * FONT_SIZE_IN_IS */
            12, FormattedTextStyle.Companion.getDefaultColor()));
        } else if (beat.equals(Companion.fr(1, 2))) {
            elements.add(new FormattedTextSymbol(symbolPool.getSymbol(CommonSymbol.TextNoteHalf), /* staffStamping.is * FONT_SIZE_IN_IS */
            12, FormattedTextStyle.Companion.getDefaultColor()));
        } else {
            elements.add(new FormattedTextString(beat.toString(), style));
        }
        elements.add(new FormattedTextString(" = " + tempo.getBeatsPerMinute(), style));
        FormattedTextParagraph paragraph = new FormattedTextParagraph(elements, Alignment.Left);
        return Companion.fText(paragraph);
    }
}
Also used : FormattedTextString(com.xenoage.zong.core.text.FormattedTextString) FormattedTextStyle(com.xenoage.zong.core.text.FormattedTextStyle) FormattedTextParagraph(com.xenoage.zong.core.text.FormattedTextParagraph) Fraction(com.xenoage.utils.math.Fraction) FormattedTextElement(com.xenoage.zong.core.text.FormattedTextElement) FormattedTextSymbol(com.xenoage.zong.core.text.FormattedTextSymbol)

Example 3 with FormattedTextSymbol

use of com.xenoage.zong.core.text.FormattedTextSymbol in project Zong by Xenoage.

the class JfxCanvas method drawText.

@Override
public void drawText(FormattedText text, TextSelection selection, Point2f position, boolean yIsBaseline, float frameWidth) {
    context.save();
    context.translate(position.x, position.y);
    // print the text frame paragraph for paragraph
    float offsetX = 0;
    float offsetY = 0;
    for (FormattedTextParagraph p : text.getParagraphs()) {
        TextMetrics pMetrics = p.getMetrics();
        if (!yIsBaseline)
            offsetY += pMetrics.getAscent();
        // adjustment
        if (p.getAlignment() == Alignment.Center)
            offsetX = (frameWidth - pMetrics.getWidth()) / 2;
        else if (p.getAlignment() == Alignment.Right)
            offsetX = frameWidth - pMetrics.getWidth();
        else
            offsetX = 0;
        // draw elements
        for (FormattedTextElement e : p.getElements()) {
            if (e instanceof FormattedTextString) {
                // TODO formatting
                FormattedTextString t = (FormattedTextString) e;
                context.setFill(toJavaFXColor(t.getStyle().getColor()));
                Font font = toJavaFXFont(t.getStyle().getFont());
                context.setFont(font);
                context.save();
                context.scale(Units.pxToMm_1_1, Units.pxToMm_1_1);
                context.fillText(t.getText(), offsetX / Units.pxToMm_1_1, offsetY / Units.pxToMm_1_1);
                context.restore();
            } else {
                // symbol
                FormattedTextSymbol fts = (FormattedTextSymbol) e;
                float scaling = fts.getScaling();
                SymbolsRenderer.draw(fts.getSymbol(), this, Color.Companion.getBlack(), new Point2f(offsetX + fts.getOffsetX(), offsetY + fts.getSymbol().getBaselineOffset() * scaling), new Point2f(scaling, scaling));
            }
            offsetX += e.getMetrics().getWidth();
        }
        // next line
        offsetY += p.getMetrics().getAscent() + p.getMetrics().getDescent() + p.getMetrics().getLeading();
    }
    context.restore();
}
Also used : FormattedTextString(com.xenoage.zong.core.text.FormattedTextString) Point2f(com.xenoage.utils.math.geom.Point2f) TextMetrics(com.xenoage.utils.font.TextMetrics) FormattedTextParagraph(com.xenoage.zong.core.text.FormattedTextParagraph) FormattedTextElement(com.xenoage.zong.core.text.FormattedTextElement) FormattedTextSymbol(com.xenoage.zong.core.text.FormattedTextSymbol) Font(javafx.scene.text.Font) JfxFontUtils.toJavaFXFont(com.xenoage.utils.jse.javafx.font.JfxFontUtils.toJavaFXFont)

Example 4 with FormattedTextSymbol

use of com.xenoage.zong.core.text.FormattedTextSymbol in project Zong by Xenoage.

the class AndroidCanvas method drawText.

/**
 * {@inheritDoc}
 * The text selection is ignored.
 */
@Override
public void drawText(FormattedText text, TextSelection selection, Point2f position, boolean yIsBaseline, float frameWidth) {
    int oldTransform = canvas.save();
    canvas.translate(position.x, position.y);
    // print the text frame paragraph for paragraph
    float offsetX = 0;
    float offsetY = 0;
    for (FormattedTextParagraph p : text.getParagraphs()) {
        TextMetrics pMetrics = p.getMetrics();
        if (!yIsBaseline)
            offsetY += pMetrics.getAscent();
        // adjustment
        if (p.getAlignment() == Alignment.Center)
            offsetX = (frameWidth - pMetrics.getWidth()) / 2;
        else if (p.getAlignment() == Alignment.Right)
            offsetX = frameWidth - pMetrics.getWidth();
        else
            offsetX = 0;
        // draw elements
        for (FormattedTextElement e : p.getElements()) {
            if (e instanceof FormattedTextString) {
                // TODO - formatting
                FormattedTextString t = (FormattedTextString) e;
                Paint paint = new Paint(AndroidColorUtils.black);
                paint.setTypeface(Typeface.SERIF);
                paint.setTextSize(Units.pxToMm(t.getStyle().getFont().getSize(), 1));
                // nice, smooth drawing
                paint.setFlags(Paint.LINEAR_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
                canvas.drawText(t.getText(), offsetX, offsetY, paint);
            } else {
                // symbol
                FormattedTextSymbol fts = (FormattedTextSymbol) e;
                float scaling = fts.getScaling();
                androidSymbolsRenderer.draw((PathSymbol) fts.getSymbol(), canvas, Color.black, new Point2f(offsetX + fts.getOffsetX(), offsetY + fts.getSymbol().baselineOffset * scaling), new Point2f(scaling, scaling));
            }
            offsetX += e.getMetrics().getWidth();
        }
        // next line
        offsetY += p.getMetrics().getAscent() + p.getMetrics().getDescent() + p.getMetrics().getLeading();
    }
    canvas.restoreToCount(oldTransform);
}
Also used : FormattedTextString(com.xenoage.zong.core.text.FormattedTextString) Point2f(com.xenoage.utils.math.geom.Point2f) TextMetrics(com.xenoage.utils.font.TextMetrics) FormattedTextParagraph(com.xenoage.zong.core.text.FormattedTextParagraph) Paint(android.graphics.Paint) FormattedTextElement(com.xenoage.zong.core.text.FormattedTextElement) FormattedTextSymbol(com.xenoage.zong.core.text.FormattedTextSymbol) Paint(android.graphics.Paint)

Aggregations

FormattedTextParagraph (com.xenoage.zong.core.text.FormattedTextParagraph)4 FormattedTextSymbol (com.xenoage.zong.core.text.FormattedTextSymbol)4 FormattedTextElement (com.xenoage.zong.core.text.FormattedTextElement)3 FormattedTextString (com.xenoage.zong.core.text.FormattedTextString)3 TextMetrics (com.xenoage.utils.font.TextMetrics)2 Point2f (com.xenoage.utils.math.geom.Point2f)2 Paint (android.graphics.Paint)1 JfxFontUtils.toJavaFXFont (com.xenoage.utils.jse.javafx.font.JfxFontUtils.toJavaFXFont)1 Fraction (com.xenoage.utils.math.Fraction)1 FormattedTextStyle (com.xenoage.zong.core.text.FormattedTextStyle)1 CommonSymbol (com.xenoage.zong.symbols.common.CommonSymbol)1 Font (javafx.scene.text.Font)1