Search in sources :

Example 1 with GlyphList

use of sun.font.GlyphList in project jdk8u_jdk by JetBrains.

the class GlyphListPipe method drawString.

public void drawString(SunGraphics2D sg2d, String s, double x, double y) {
    FontInfo info = sg2d.getFontInfo();
    if (info.pixelHeight > OutlineTextRenderer.THRESHHOLD) {
        SurfaceData.outlineTextRenderer.drawString(sg2d, s, x, y);
        return;
    }
    float devx, devy;
    if (sg2d.transformState >= SunGraphics2D.TRANSFORM_TRANSLATESCALE) {
        double[] origin = { x + info.originX, y + info.originY };
        sg2d.transform.transform(origin, 0, origin, 0, 1);
        devx = (float) origin[0];
        devy = (float) origin[1];
    } else {
        devx = (float) (x + info.originX + sg2d.transX);
        devy = (float) (y + info.originY + sg2d.transY);
    }
    /* setFromString returns false if shaping is needed, and we then back
         * off to a TextLayout. Such text may benefit slightly from a lower
         * overhead in this approach over the approach in previous releases.
         */
    GlyphList gl = GlyphList.getInstance();
    if (gl.setFromString(info, s, devx, devy)) {
        drawGlyphList(sg2d, gl);
        gl.dispose();
    } else {
        // release this asap.
        gl.dispose();
        TextLayout tl = new TextLayout(s, sg2d.getFont(), sg2d.getFontRenderContext());
        tl.draw(sg2d, (float) x, (float) y);
    }
}
Also used : GlyphList(sun.font.GlyphList) FontInfo(sun.java2d.loops.FontInfo) TextLayout(java.awt.font.TextLayout)

Example 2 with GlyphList

use of sun.font.GlyphList in project jdk8u_jdk by JetBrains.

the class GlyphListPipe method drawChars.

public void drawChars(SunGraphics2D sg2d, char[] data, int offset, int length, int ix, int iy) {
    FontInfo info = sg2d.getFontInfo();
    float x, y;
    if (info.pixelHeight > OutlineTextRenderer.THRESHHOLD) {
        SurfaceData.outlineTextRenderer.drawChars(sg2d, data, offset, length, ix, iy);
        return;
    }
    if (sg2d.transformState >= SunGraphics2D.TRANSFORM_TRANSLATESCALE) {
        double[] origin = { ix + info.originX, iy + info.originY };
        sg2d.transform.transform(origin, 0, origin, 0, 1);
        x = (float) origin[0];
        y = (float) origin[1];
    } else {
        x = ix + info.originX + sg2d.transX;
        y = iy + info.originY + sg2d.transY;
    }
    GlyphList gl = GlyphList.getInstance();
    if (gl.setFromChars(info, data, offset, length, x, y)) {
        drawGlyphList(sg2d, gl);
        gl.dispose();
    } else {
        // release this asap.
        gl.dispose();
        TextLayout tl = new TextLayout(new String(data, offset, length), sg2d.getFont(), sg2d.getFontRenderContext());
        tl.draw(sg2d, ix, iy);
    }
}
Also used : GlyphList(sun.font.GlyphList) FontInfo(sun.java2d.loops.FontInfo) TextLayout(java.awt.font.TextLayout)

Example 3 with GlyphList

use of sun.font.GlyphList in project jdk8u_jdk by JetBrains.

the class GlyphListPipe method drawGlyphVector.

public void drawGlyphVector(SunGraphics2D sg2d, GlyphVector gv, float x, float y) {
    FontRenderContext frc = gv.getFontRenderContext();
    FontInfo info = sg2d.getGVFontInfo(gv.getFont(), frc);
    if (info.pixelHeight > OutlineTextRenderer.THRESHHOLD) {
        SurfaceData.outlineTextRenderer.drawGlyphVector(sg2d, gv, x, y);
        return;
    }
    if (sg2d.transformState >= SunGraphics2D.TRANSFORM_TRANSLATESCALE) {
        double[] origin = { x, y };
        sg2d.transform.transform(origin, 0, origin, 0, 1);
        x = (float) origin[0];
        y = (float) origin[1];
    } else {
        // don't use the glyph info origin, already in gv.
        x += sg2d.transX;
        y += sg2d.transY;
    }
    GlyphList gl = GlyphList.getInstance();
    gl.setFromGlyphVector(info, gv, x, y);
    drawGlyphList(sg2d, gl, info.aaHint);
    gl.dispose();
}
Also used : GlyphList(sun.font.GlyphList) FontRenderContext(java.awt.font.FontRenderContext) FontInfo(sun.java2d.loops.FontInfo)

Aggregations

GlyphList (sun.font.GlyphList)3 FontInfo (sun.java2d.loops.FontInfo)3 TextLayout (java.awt.font.TextLayout)2 FontRenderContext (java.awt.font.FontRenderContext)1