nashorn/test/script/jfx/kaleidoscope.js
changeset 21690 ffbb4611d1f4
parent 21443 85671274e5fb
child 24778 2ff5d7041566
equal deleted inserted replaced
21689:420b41bb7ab7 21690:ffbb4611d1f4
    28  * @run
    28  * @run
    29  * @fork
    29  * @fork
    30  */
    30  */
    31 
    31 
    32 TESTNAME = "kaleidoscope";
    32 TESTNAME = "kaleidoscope";
    33 WAIT = 4000;
       
    34 
       
    35 var Paint                = Java.type("javafx.scene.paint.Paint");
       
    36 var Canvas               = Java.type("javafx.scene.canvas.Canvas");
       
    37 var BorderPane           = Java.type("javafx.scene.layout.BorderPane");
       
    38 var StackPane            = Java.type("javafx.scene.layout.StackPane");
       
    39 var StrokeLineCap        = Java.type("javafx.scene.shape.StrokeLineCap");
       
    40         
    33         
    41 var WIDTH = 800;
    34 var WIDTH = 800;
    42 var HEIGHT = 600;
    35 var HEIGHT = 600;
    43 var canvas = new Canvas(WIDTH, HEIGHT);
    36 var canvas = new Canvas(WIDTH, HEIGHT);
    44 var context = canvas.graphicsContext2D;
    37 var context = canvas.graphicsContext2D;
    54 var c=new Array(6);
    47 var c=new Array(6);
    55 var d=new Array(6);
    48 var d=new Array(6);
    56 var r,e;
    49 var r,e;
    57 var fade;
    50 var fade;
    58 var prv_x,prv_y,prv_x2,prv_y2;
    51 var prv_x,prv_y,prv_x2,prv_y2;
       
    52 var isFrameRendered = false;
    59 
    53 
    60 function renderFrame() {
    54 function renderFrame() {
    61 	a=0.2*angle;
    55 	if (!isFrameRendered) {
    62 	b=0.7*angle;
    56         a=0.2*angle;
    63 	r=0;
    57 		b=0.7*angle;
    64 	fade=32;
    58 		r=0;
    65 	for(var i=0;i<6;i++)
    59 		fade=32;
    66 		{
    60 		for(var i=0;i<6;i++)
    67 		c[i]=1.0/(i+1)/2;
    61 			{
    68 		d[i]=1.0/(i+1)/2;
    62 			c[i]=1.0/(i+1)/2;
    69 		}
    63 			d[i]=1.0/(i+1)/2;
    70 	radius=Math.round((WIDTH+HEIGHT)/8);
    64 			}
    71 	e=radius*0.2;
    65 		radius=Math.round((WIDTH+HEIGHT)/8);
    72 	p_x=Math.round(WIDTH/2);
    66 		e=radius*0.2;
    73 	p_y=Math.round(HEIGHT/2);
    67 		p_x=Math.round(WIDTH/2);
    74 	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]);
    68 		p_y=Math.round(HEIGHT/2);
    75 	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]);
    69 		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]);
    76     for (i = 0; i < 800; i++) {
    70 		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]);
    77         anim();
    71         isFrameRendered = true;
    78     }
    72     }
       
    73     anim();
    79 }
    74 }
    80 
    75 
    81 function anim() {
    76 function anim() {
    82 	var a1=Math.cos(a*2);
    77 	var a1=Math.cos(a*2);
    83 	var a2=Math.cos(a*4);
    78 	var a2=Math.cos(a*4);
   152 	context.closePath();
   147 	context.closePath();
   153 }
   148 }
   154 
   149 
   155 var stack = new StackPane();
   150 var stack = new StackPane();
   156 var pane = new BorderPane();
   151 var pane = new BorderPane();
   157 
       
   158 pane.setCenter(canvas);
   152 pane.setCenter(canvas);
   159 stack.getChildren().add(pane);
   153 stack.getChildren().add(pane);
   160 $STAGE.scene = new Scene(stack);
   154 $STAGE.scene = new Scene(stack);
   161 renderFrame();
   155 var frame = 0;
   162 checkImageAndExit();
   156 var timer = new AnimationTimerExtend() {
       
   157     handle: function handle(now) {
       
   158         if (frame < 800) {
       
   159             renderFrame();
       
   160             frame++;
       
   161         } else {
       
   162             checkImageAndExit();
       
   163             timer.stop();
       
   164         }
       
   165     }
       
   166 };
       
   167 timer.start();