--- a/src/java.desktop/share/classes/sun/java2d/marlin/DTransformingPathConsumer2D.java Tue Aug 06 00:16:38 2019 -0700
+++ b/src/java.desktop/share/classes/sun/java2d/marlin/DTransformingPathConsumer2D.java Wed Aug 07 10:25:50 2019 +0200
@@ -530,6 +530,9 @@
private boolean outside = false;
+ // The starting point of the path
+ private double sx0, sy0;
+
// The current point (TODO stupid repeated info)
private double cx0, cy0;
@@ -630,17 +633,26 @@
finishPath();
out.closePath();
+
+ // back to starting point:
+ this.cOutCode = DHelpers.outcode(sx0, sy0, clipRect);
+ this.cx0 = sx0;
+ this.cy0 = sy0;
}
@Override
public void moveTo(final double x0, final double y0) {
finishPath();
+ out.moveTo(x0, y0);
+
+ // update starting point:
this.cOutCode = DHelpers.outcode(x0, y0, clipRect);
- this.outside = false;
- out.moveTo(x0, y0);
this.cx0 = x0;
this.cy0 = y0;
+
+ this.sx0 = x0;
+ this.sy0 = y0;
}
@Override
@@ -655,7 +667,7 @@
// basic rejection criteria:
if (sideCode == 0) {
- // ovelap clip:
+ // overlap clip:
if (subdivide) {
// avoid reentrance
subdivide = false;
@@ -754,7 +766,7 @@
// basic rejection criteria:
if (sideCode == 0) {
- // ovelap clip:
+ // overlap clip:
if (subdivide) {
// avoid reentrance
subdivide = false;
@@ -816,7 +828,7 @@
// basic rejection criteria:
if (sideCode == 0) {
- // ovelap clip:
+ // overlap clip:
if (subdivide) {
// avoid reentrance
subdivide = false;
@@ -1153,13 +1165,13 @@
@Override
public void moveTo(double x0, double y0) {
- log("moveTo (" + x0 + ", " + y0 + ')');
+ log("p.moveTo(" + x0 + ", " + y0 + ");");
out.moveTo(x0, y0);
}
@Override
public void lineTo(double x1, double y1) {
- log("lineTo (" + x1 + ", " + y1 + ')');
+ log("p.lineTo(" + x1 + ", " + y1 + ");");
out.lineTo(x1, y1);
}
@@ -1168,25 +1180,26 @@
double x2, double y2,
double x3, double y3)
{
- log("curveTo P1(" + x1 + ", " + y1 + ") P2(" + x2 + ", " + y2 + ") P3(" + x3 + ", " + y3 + ')');
+ log("p.curveTo(" + x1 + ", " + y1 + ", " + x2 + ", " + y2 + ", " + x3 + ", " + y3 + ");");
out.curveTo(x1, y1, x2, y2, x3, y3);
}
@Override
- public void quadTo(double x1, double y1, double x2, double y2) {
- log("quadTo P1(" + x1 + ", " + y1 + ") P2(" + x2 + ", " + y2 + ')');
+ public void quadTo(double x1, double y1,
+ double x2, double y2) {
+ log("p.quadTo(" + x1 + ", " + y1 + ", " + x2 + ", " + y2 + ");");
out.quadTo(x1, y1, x2, y2);
}
@Override
public void closePath() {
- log("closePath");
+ log("p.closePath();");
out.closePath();
}
@Override
public void pathDone() {
- log("pathDone");
+ log("p.pathDone();");
out.pathDone();
}