< prev index next >
src/java.desktop/share/classes/java/awt/geom/Path2D.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -222,12 +222,12 @@
public Float(Shape s, AffineTransform at) {
if (s instanceof Path2D) {
Path2D p2d = (Path2D) s;
setWindingRule(p2d.windingRule);
this.numTypes = p2d.numTypes;
- this.pointTypes = Arrays.copyOf(p2d.pointTypes,
- p2d.pointTypes.length);
+ // trim arrays:
+ this.pointTypes = Arrays.copyOf(p2d.pointTypes, this.numTypes);
this.numCoords = p2d.numCoords;
this.floatCoords = p2d.cloneCoordsFloat(at);
} else {
PathIterator pi = s.getPathIterator(at);
setWindingRule(pi.getWindingRule());
@@ -235,23 +235,27 @@
this.floatCoords = new float[INIT_SIZE * 2];
append(pi, false);
}
}
+ @Override
float[] cloneCoordsFloat(AffineTransform at) {
+ // trim arrays:
float ret[];
if (at == null) {
- ret = Arrays.copyOf(this.floatCoords, this.floatCoords.length);
+ ret = Arrays.copyOf(floatCoords, numCoords);
} else {
- ret = new float[floatCoords.length];
+ ret = new float[numCoords];
at.transform(floatCoords, 0, ret, 0, numCoords / 2);
}
return ret;
}
+ @Override
double[] cloneCoordsDouble(AffineTransform at) {
- double ret[] = new double[floatCoords.length];
+ // trim arrays:
+ double ret[] = new double[numCoords];
if (at == null) {
for (int i = 0; i < numCoords; i++) {
ret[i] = floatCoords[i];
}
} else {
@@ -1059,12 +1063,12 @@
public Double(Shape s, AffineTransform at) {
if (s instanceof Path2D) {
Path2D p2d = (Path2D) s;
setWindingRule(p2d.windingRule);
this.numTypes = p2d.numTypes;
- this.pointTypes = Arrays.copyOf(p2d.pointTypes,
- p2d.pointTypes.length);
+ // trim arrays:
+ this.pointTypes = Arrays.copyOf(p2d.pointTypes, this.numTypes);
this.numCoords = p2d.numCoords;
this.doubleCoords = p2d.cloneCoordsDouble(at);
} else {
PathIterator pi = s.getPathIterator(at);
setWindingRule(pi.getWindingRule());
@@ -1072,29 +1076,32 @@
this.doubleCoords = new double[INIT_SIZE * 2];
append(pi, false);
}
}
+ @Override
float[] cloneCoordsFloat(AffineTransform at) {
- float ret[] = new float[doubleCoords.length];
+ // trim arrays:
+ float ret[] = new float[numCoords];
if (at == null) {
for (int i = 0; i < numCoords; i++) {
ret[i] = (float) doubleCoords[i];
}
} else {
at.transform(doubleCoords, 0, ret, 0, numCoords / 2);
}
return ret;
}
+ @Override
double[] cloneCoordsDouble(AffineTransform at) {
+ // trim arrays:
double ret[];
if (at == null) {
- ret = Arrays.copyOf(this.doubleCoords,
- this.doubleCoords.length);
+ ret = Arrays.copyOf(doubleCoords, numCoords);
} else {
- ret = new double[doubleCoords.length];
+ ret = new double[numCoords];
at.transform(doubleCoords, 0, ret, 0, numCoords / 2);
}
return ret;
}
< prev index next >