/* * Copyright (c) 2006, 2018, 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. * * This code 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 * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
/* * @test * @bug 6409478 * @summary Tests all hit testing methods of GeneralPath and Path2D * for graceful (i.e. non-infinite-loop) returns when any * of the path coordinates or test coordinates are * NaN or Infinite or even very large numbers. * @run main/timeout=15 NonFiniteTests
*/
publicstaticvoid testPath(Path2D p2d, int types[], double coords[]) { int ci = 0; for (int i = 0; i < types.length; i++) { switch (types[i]) { case SEG_MOVETO:
p2d.moveTo(coords[ci++], coords[ci++]); break; case SEG_LINETO:
p2d.lineTo(coords[ci++], coords[ci++]); break; case SEG_QUADTO:
p2d.quadTo(coords[ci++], coords[ci++],
coords[ci++], coords[ci++]); break; case SEG_CUBICTO:
p2d.curveTo(coords[ci++], coords[ci++],
coords[ci++], coords[ci++],
coords[ci++], coords[ci++]); break; case SEG_CLOSE:
p2d.closePath(); break;
}
}
testPath(p2d);
}
publicstaticvoid testPath(Path2D p2d) { // contains point for (int i = 0; i < testpoints.length; i += 2) {
p2d.contains(testpoints[i+0], testpoints[i+1]);
contains(p2d, testpoints[i+0], testpoints[i+1]);
}
for (int i = 0; i < testrects.length; i += 4) {
p2d.contains(testrects[i+0], testrects[i+1],
testrects[i+2], testrects[i+3]);
contains(p2d,
testrects[i+0], testrects[i+1],
testrects[i+2], testrects[i+3]);
p2d.intersects(testrects[i+0], testrects[i+1],
testrects[i+2], testrects[i+3]);
intersects(p2d,
testrects[i+0], testrects[i+1],
testrects[i+2], testrects[i+3]);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.