diff options
Diffstat (limited to 'libjava/java/awt/geom/GeneralPath.java')
-rw-r--r-- | libjava/java/awt/geom/GeneralPath.java | 105 |
1 files changed, 56 insertions, 49 deletions
diff --git a/libjava/java/awt/geom/GeneralPath.java b/libjava/java/awt/geom/GeneralPath.java index 40182eabf7e..0dc9ede2942 100644 --- a/libjava/java/awt/geom/GeneralPath.java +++ b/libjava/java/awt/geom/GeneralPath.java @@ -1,39 +1,40 @@ /* GeneralPath.java -- represents a shape built from subpaths Copyright (C) 2002, 2003, 2004 Free Software Foundation - This file is part of GNU Classpath. - - GNU Classpath is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU Classpath is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU Classpath; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from - or based on this library. If you modify this library, you may extend - this exception to your version of the library, but you are not - obligated to do so. If you do not wish to do so, delete this - exception statement from your version. */ +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + package java.awt.geom; @@ -641,7 +642,7 @@ public final class GeneralPath implements Shape, Cloneable if (transform != null) transform.transform( /* src */ coords, /* srcOffset */ - pos, /* dest */ coords, /* destOffset */ + 0, /* dest */ coords, /* destOffset */ 0, /* numPoints */ numCoords); } return seg; @@ -777,7 +778,10 @@ public final class GeneralPath implements Shape, Cloneable /* Get a value which is hopefully small but not insignificant relative the path. */ - epsilon = ypoints[0] * 1E-9; + epsilon = ypoints[0] * 1E-7; + + if(epsilon == 0) + epsilon = 1E-7; pos = 0; while (pos < index) @@ -793,11 +797,11 @@ public final class GeneralPath implements Shape, Cloneable y1 = firsty; if (y0 == 0.0) - y0 += epsilon; + y0 -= epsilon; if (y1 == 0.0) - y1 += epsilon; - if (Line2D.linesIntersect(x0, y0, x1, y1, 0.0, 0.0, distance, - 0.0)) + y1 -= epsilon; + if (Line2D.linesIntersect(x0, y0, x1, y1, + epsilon, 0.0, distance, 0.0)) windingNumber += (y1 < y0) ? 1 : negative; cx = firstx; @@ -814,10 +818,11 @@ public final class GeneralPath implements Shape, Cloneable y1 = firsty; if (y0 == 0.0) - y0 += epsilon; + y0 -= epsilon; if (y1 == 0.0) - y1 += epsilon; - if (Line2D.linesIntersect(x0, y0, x1, y1, 0.0, 0.0, distance, 0.0)) + y1 -= epsilon; + if (Line2D.linesIntersect(x0, y0, x1, y1, + epsilon, 0.0, distance, 0.0)) windingNumber += (y1 < y0) ? 1 : negative; cx = firstx; @@ -832,10 +837,11 @@ public final class GeneralPath implements Shape, Cloneable y1 = ypoints[pos++] - (float) y; if (y0 == 0.0) - y0 += epsilon; + y0 -= epsilon; if (y1 == 0.0) - y1 += epsilon; - if (Line2D.linesIntersect(x0, y0, x1, y1, 0.0, 0.0, distance, 0.0)) + y1 -= epsilon; + if (Line2D.linesIntersect(x0, y0, x1, y1, + epsilon, 0.0, distance, 0.0)) windingNumber += (y1 < y0) ? 1 : negative; cx = xpoints[pos - 1] - (float) x; @@ -854,9 +860,9 @@ public final class GeneralPath implements Shape, Cloneable && (y0 * y1 <= 0 || y1 * y2 <= 0)) { if (y0 == 0.0) - y0 += epsilon; + y0 -= epsilon; if (y2 == 0.0) - y2 += epsilon; + y2 -= epsilon; r[0] = y0; r[1] = 2 * (y1 - y0); @@ -897,9 +903,9 @@ public final class GeneralPath implements Shape, Cloneable && (y0 * y1 <= 0 || y1 * y2 <= 0 || y2 * y3 <= 0)) { if (y0 == 0.0) - y0 += epsilon; + y0 -= epsilon; if (y3 == 0.0) - y3 += epsilon; + y3 -= epsilon; r[0] = y0; r[1] = 3 * (y1 - y0); @@ -942,3 +948,4 @@ public final class GeneralPath implements Shape, Cloneable return (windingNumber); } } // class GeneralPath + |