/* * Copyright (c) 2013, 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. */ /** * Testing JavaFX canvas run by Nashorn. * * @test/nocompare * @run * @fork */ TESTNAME = "kaleidoscope"; var WIDTH = 800; var HEIGHT = 600; var canvas = new Canvas(WIDTH, HEIGHT); var context = canvas.graphicsContext2D; var x,y; var p_x,p_y; var a=0; var b=0; var angle=Math.PI/180*8; var color=0; var limit1=Math.PI*1.5; var limit2=Math.PI*1.79; var c=new Array(6); var d=new Array(6); var r,e; var fade; var prv_x,prv_y,prv_x2,prv_y2; var isFrameRendered = false; function renderFrame() { if (!isFrameRendered) { a=0.2*angle; b=0.7*angle; r=0; fade=32; for(var i=0;i<6;i++) { c[i]=1.0/(i+1)/2; d[i]=1.0/(i+1)/2; } radius=Math.round((WIDTH+HEIGHT)/8); e=radius*0.2; p_x=Math.round(WIDTH/2); p_y=Math.round(HEIGHT/2); x=(radius*c[0])*Math.cos(a*d[1])+(radius*c[2])*Math.sin(a*d[3])+(radius*c[4])*Math.sin(a*d[5]); y=(radius*c[5])*Math.sin(a*d[4])+(radius*c[3])*Math.cos(a*d[2])+(radius*c[1])*Math.cos(a*d[0]); isFrameRendered = true; } anim(); } function anim() { var a1=Math.cos(a*2); var a2=Math.cos(a*4); var a3=Math.cos(a); var a4=Math.sin(a); if(b>limit1&&b