Jogamp
Bump scripts to jre1.8.0_66
[jogl.git] / src / test / com / jogamp / opengl / test / junit / jogl / demos / gl2 / newt / TestGearsNEWT.java
1 /**
2  * Copyright 2010 JogAmp Community. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification, are
5  * permitted provided that the following conditions are met:
6  * 
7  *    1. Redistributions of source code must retain the above copyright notice, this list of
8  *       conditions and the following disclaimer.
9  * 
10  *    2. Redistributions in binary form must reproduce the above copyright notice, this list
11  *       of conditions and the following disclaimer in the documentation and/or other materials
12  *       provided with the distribution.
13  * 
14  * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23  * 
24  * The views and conclusions contained in the software and documentation are those of the
25  * authors and should not be interpreted as representing official policies, either expressed
26  * or implied, of JogAmp Community.
27  */
28  
29 package com.jogamp.opengl.test.junit.jogl.demos.gl2.newt;
30
31 import com.jogamp.newt.event.KeyAdapter;
32 import com.jogamp.newt.event.KeyEvent;
33 import com.jogamp.newt.opengl.GLWindow;
34 import com.jogamp.opengl.test.junit.util.UITestCase;
35 import com.jogamp.opengl.test.junit.util.QuitAdapter;
36
37 import com.jogamp.opengl.util.Animator;
38
39 import com.jogamp.opengl.test.junit.jogl.demos.gl2.Gears;
40
41 import javax.media.opengl.FPSCounter;
42 import javax.media.opengl.GLAutoDrawable;
43 import javax.media.opengl.GLCapabilities;
44 import javax.media.opengl.GLProfile;
45 import javax.media.opengl.GLRunnable;
46
47 import org.junit.Assert;
48 import org.junit.BeforeClass;
49 import org.junit.AfterClass;
50 import org.junit.Test;
51
52 public class TestGearsNEWT extends UITestCase {
53     static GLProfile glp;
54     static int width, height;
55
56     @BeforeClass
57     public static void initClass() {
58         GLProfile.initSingleton(true);
59         glp = GLProfile.getDefault();
60         Assert.assertNotNull(glp);
61         width  = 512;
62         height = 512;
63     }
64
65     @AfterClass
66     public static void releaseClass() {
67     }
68
69     protected void runTestGL(GLCapabilities caps) throws InterruptedException {
70         GLWindow glWindow = GLWindow.create(caps);
71         Assert.assertNotNull(glWindow);
72         glWindow.setTitle("Gears NEWT Test");
73
74         glWindow.addGLEventListener(new Gears());
75
76         Animator animator = new Animator(glWindow);
77         QuitAdapter quitAdapter = new QuitAdapter();
78
79         //glWindow.addKeyListener(new TraceKeyAdapter(quitAdapter));
80         //glWindow.addWindowListener(new TraceWindowAdapter(quitAdapter));
81         glWindow.addKeyListener(quitAdapter);
82         glWindow.addWindowListener(quitAdapter);
83
84         final GLWindow f_glWindow = glWindow;
85         glWindow.addKeyListener(new KeyAdapter() {
86             public void keyTyped(KeyEvent e) {
87                 if(e.getKeyChar()=='f') {
88                     new Thread() {
89                         public void run() {
90                             f_glWindow.setFullscreen(!f_glWindow.isFullscreen());
91                     } }.start();
92                 } else if(e.getKeyChar()=='d') {
93                     new Thread() {
94                         public void run() {
95                             f_glWindow.setUndecorated(!f_glWindow.isUndecorated());
96                     } }.start();
97                 }
98             }
99         });
100
101         glWindow.setSize(width, height);
102         glWindow.setVisible(true);
103         animator.setUpdateFPSFrames(1, null);
104         animator.start();
105
106         while(!quitAdapter.shouldQuit() && animator.isAnimating() && animator.getTotalFPSDuration()<duration) {
107             Thread.sleep(100);
108         }
109
110         animator.stop();
111         glWindow.destroy();
112     }
113
114     @Test
115     public void test01() throws InterruptedException {
116         GLCapabilities caps = new GLCapabilities(GLProfile.getDefault());
117         runTestGL(caps);
118     }
119
120     static long duration = 500; // ms
121
122     public static void main(String args[]) {
123         for(int i=0; i<args.length; i++) {
124             if(args[i].equals("-time")) {
125                 i++;
126                 try {
127                     duration = Integer.parseInt(args[i]);
128                 } catch (Exception ex) { ex.printStackTrace(); }
129             }
130         }
131         org.junit.runner.JUnitCore.main(TestGearsNEWT.class.getName());
132     }
133 }
http://JogAmp.org git info: FAQ, tutorial and man pages.