< prev index next >

modules/javafx.graphics/src/main/java/com/sun/marlin/TransformingPathConsumer2D.java

Print this page

        

*** 23,45 **** --- 23,54 ---- * questions. */ package com.sun.marlin; + import com.sun.javafx.geom.Path2D; import com.sun.javafx.geom.PathConsumer2D; import com.sun.javafx.geom.transform.BaseTransform; public final class TransformingPathConsumer2D { TransformingPathConsumer2D() { // used by RendererContext } + // recycled PathConsumer2D instance from wrapPath2d() + private final Path2DWrapper wp_Path2DWrapper = new Path2DWrapper(); + // recycled PathConsumer2D instances from deltaTransformConsumer() private final DeltaScaleFilter dt_DeltaScaleFilter = new DeltaScaleFilter(); private final DeltaTransformFilter dt_DeltaTransformFilter = new DeltaTransformFilter(); + public PathConsumer2D wrapPath2d(Path2D p2d) + { + return wp_Path2DWrapper.init(p2d); + } + public PathConsumer2D deltaTransformConsumer(PathConsumer2D out, BaseTransform at) { if (at == null) { return out;
*** 89,99 **** -myx / det, mxx / det); } } - static final class DeltaScaleFilter implements PathConsumer2D { private PathConsumer2D out; private float sx, sy; DeltaScaleFilter() {} --- 98,107 ----
*** 207,212 **** --- 215,262 ---- @Override public void pathDone() { out.pathDone(); } } + + static final class Path2DWrapper implements PathConsumer2D { + private Path2D p2d; + + Path2DWrapper() {} + + Path2DWrapper init(Path2D p2d) { + this.p2d = p2d; + return this; + } + + @Override + public void moveTo(float x0, float y0) { + p2d.moveTo(x0, y0); + } + + @Override + public void lineTo(float x1, float y1) { + p2d.lineTo(x1, y1); + } + + @Override + public void closePath() { + p2d.closePath(); + } + + @Override + public void pathDone() {} + + @Override + public void curveTo(float x1, float y1, + float x2, float y2, + float x3, float y3) + { + p2d.curveTo(x1, y1, x2, y2, x3, y3); + } + + @Override + public void quadTo(float x1, float y1, float x2, float y2) { + p2d.quadTo(x1, y1, x2, y2); + } + } }
< prev index next >