diff options
Diffstat (limited to 'src/test/com')
28 files changed, 812 insertions, 508 deletions
diff --git a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity1.java b/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity1.java index 5cbcb7380..54b994d1f 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity1.java +++ b/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity1.java @@ -172,7 +172,7 @@ public class MovieSimpleActivity1 extends NewtBaseActivity { public boolean run(GLAutoDrawable drawable) { final GLMediaPlayer mPlayerSub; final MovieSimple demoHUD; - final Rectangle windowBounds = scrn.getViewportInWindowUnits(glWindowHUD); + final Rectangle windowBounds = (Rectangle) scrn.getViewportInWindowUnits().cloneMutable(); if(null != mPlayerShared) { if(0 < mPlayerShared.getWidth() && mPlayerShared.getWidth()<scrn.getWidth()/2 && 0 < mPlayerShared.getHeight() && mPlayerShared.getHeight()<scrn.getHeight()/2) { diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionNewtDemo.java b/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionNewtDemo.java index 5c217a7dc..14ff53f10 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionNewtDemo.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionNewtDemo.java @@ -59,6 +59,8 @@ public class GPURegionNewtDemo { static boolean GraphUseWeight = true; public static void main(String[] args) { + int width = 800, height = 400; + int x = 10, y = 10; if( 0 != args.length ) { SceneMSAASamples = 0; GraphMSAASamples = 0; @@ -79,9 +81,23 @@ public class GPURegionNewtDemo { GraphVBAASamples = MiscUtils.atoi(args[i], GraphVBAASamples); } else if(args[i].equals("-gweight")) { GraphUseWeight = true; + } else if(args[i].equals("-width")) { + i++; + width = MiscUtils.atoi(args[i], width); + } else if(args[i].equals("-height")) { + i++; + height = MiscUtils.atoi(args[i], height); + } else if(args[i].equals("-x")) { + i++; + x = MiscUtils.atoi(args[i], x); + } else if(args[i].equals("-y")) { + i++; + y = MiscUtils.atoi(args[i], y); } } } + System.err.println("Desired win size "+width+"x"+height); + System.err.println("Desired win pos "+x+"/"+y); System.err.println("Scene MSAA Samples "+SceneMSAASamples); System.err.println("Graph MSAA Samples"+GraphMSAASamples); System.err.println("Graph VBAA Samples "+GraphVBAASamples); @@ -107,8 +123,8 @@ public class GPURegionNewtDemo { } final GLWindow window = GLWindow.create(caps); - window.setPosition(10, 10); - window.setSurfaceSize(800, 400); + window.setPosition(x, y); + window.setSize(width, height); window.setTitle("GPU Curve Region Newt Demo - graph[vbaa"+GraphVBAASamples+" msaa"+GraphMSAASamples+"], msaa "+SceneMSAASamples); RenderState rs = RenderState.createRenderState(SVertex.factory()); diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextNewtDemo.java b/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextNewtDemo.java index 09cf706ce..6a91d005e 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextNewtDemo.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextNewtDemo.java @@ -60,6 +60,8 @@ public class GPUTextNewtDemo { static int GraphMSAASamples = 0; public static void main(String[] args) { + int width = 800, height = 400; + int x = 10, y = 10; if( 0 != args.length ) { SceneMSAASamples = 0; GraphMSAASamples = 0; @@ -77,9 +79,23 @@ public class GPUTextNewtDemo { i++; GraphMSAASamples = 0; GraphVBAASamples = MiscUtils.atoi(args[i], GraphVBAASamples); + } else if(args[i].equals("-width")) { + i++; + width = MiscUtils.atoi(args[i], width); + } else if(args[i].equals("-height")) { + i++; + height = MiscUtils.atoi(args[i], height); + } else if(args[i].equals("-x")) { + i++; + x = MiscUtils.atoi(args[i], x); + } else if(args[i].equals("-y")) { + i++; + y = MiscUtils.atoi(args[i], y); } } } + System.err.println("Desired win size "+width+"x"+height); + System.err.println("Desired win pos "+x+"/"+y); System.err.println("Scene MSAA Samples "+SceneMSAASamples); System.err.println("Graph MSAA Samples "+GraphMSAASamples); System.err.println("Graph VBAA Samples "+GraphVBAASamples); @@ -105,8 +121,8 @@ public class GPUTextNewtDemo { } final GLWindow window = GLWindow.create(caps); - window.setPosition(10, 10); - window.setSurfaceSize(800, 400); + window.setPosition(x, y); + window.setSize(width, height); window.setTitle("GPU Text Newt Demo - graph[vbaa"+GraphVBAASamples+" msaa"+GraphMSAASamples+"], msaa "+SceneMSAASamples); RenderState rs = RenderState.createRenderState(SVertex.factory()); diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUUISceneNewtDemo.java b/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUUISceneNewtDemo.java index c26cb467a..9e5ecb648 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUUISceneNewtDemo.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUUISceneNewtDemo.java @@ -21,7 +21,8 @@ public class GPUUISceneNewtDemo { static boolean GraphMSAAMode = false; public static void main(String[] args) { - int swidth = 800, sheight = 400; + int width = 800, height = 400; + int x = 10, y = 10; if( 0 != args.length ) { for(int i=0; i<args.length; i++) { if(args[i].equals("-smsaa")) { @@ -37,13 +38,21 @@ public class GPUUISceneNewtDemo { GraphVBAAMode = true; } else if(args[i].equals("-width")) { i++; - swidth = MiscUtils.atoi(args[i], swidth); + width = MiscUtils.atoi(args[i], width); } else if(args[i].equals("-height")) { i++; - sheight = MiscUtils.atoi(args[i], sheight); + height = MiscUtils.atoi(args[i], height); + } else if(args[i].equals("-x")) { + i++; + x = MiscUtils.atoi(args[i], x); + } else if(args[i].equals("-y")) { + i++; + y = MiscUtils.atoi(args[i], y); } } } + System.err.println("Desired win size "+width+"x"+height); + System.err.println("Desired win pos "+x+"/"+y); System.err.println("Scene MSAA Samples "+SceneMSAASamples); System.err.println("Graph MSAA Mode "+GraphMSAAMode); System.err.println("Graph VBAA Mode "+GraphVBAAMode); @@ -67,8 +76,8 @@ public class GPUUISceneNewtDemo { } final GLWindow window = GLWindow.create(caps); - window.setPosition(10, 10); - window.setSurfaceSize(swidth, sheight); + window.setPosition(x, y); + window.setSize(width, height); window.setTitle("GraphUI Newt Demo: graph["+Region.getRenderModeString(rmode)+"], msaa "+SceneMSAASamples); final RenderState rs = RenderState.createRenderState(SVertex.factory()); diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/ui/UINewtDemo01.java b/src/test/com/jogamp/opengl/test/junit/graph/demos/ui/UINewtDemo01.java index 5fe863527..27a91befc 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/ui/UINewtDemo01.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/demos/ui/UINewtDemo01.java @@ -61,7 +61,7 @@ public class UINewtDemo01 { final GLWindow window = GLWindow.create(caps); window.setPosition(10, 10); - window.setSurfaceSize(800, 400); + window.setSize(800, 400); window.setTitle("GPU UI Newt Demo 01"); RenderState rs = RenderState.createRenderState(SVertex.factory()); UIGLListener01 uiGLListener = new UIGLListener01 (0, rs, DEBUG, TRACE); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableDelegateOnOffscrnCapsNEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableDelegateOnOffscrnCapsNEWT.java index 82fa6422d..8113f34ee 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableDelegateOnOffscrnCapsNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableDelegateOnOffscrnCapsNEWT.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,12 +20,12 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.jogl.acore; import java.io.IOException; @@ -61,14 +61,14 @@ import com.jogamp.opengl.test.junit.util.UITestCase; /** * Tests using a NEWT {@link Window} for on- and offscreen cases. * <p> - * Each test creates a {@link GLDrawable} using the + * Each test creates a {@link GLDrawable} using the * {@link GLDrawableFactory#createGLDrawable(javax.media.nativewindow.NativeSurface) factory model}. * The {@link GLContext} is derived {@link GLDrawable#createContext(GLContext) from the drawable}. * </p> * <p> * Finally a {@link GLAutoDrawableDelegate} is created with the just created {@link GLDrawable} and {@link GLContext}. - * It is being used to run the {@link GLEventListener}. - * </p> + * It is being used to run the {@link GLEventListener}. + * </p> */ @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { @@ -83,7 +83,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { } return new GLCapabilities(GLProfile.get(profile)); } - + void doTest(GLCapabilitiesImmutable reqGLCaps, GLEventListener demo) throws InterruptedException { System.out.println("Requested GL Caps: "+reqGLCaps); final GLDrawableFactory factory = GLDrawableFactory.getFactory(reqGLCaps.getGLProfile()); @@ -91,7 +91,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { System.out.println("Expected GL Caps: "+expGLCaps); // // Create native windowing resources .. X11/Win/OSX - // + // final Window window = NewtFactory.createWindow(reqGLCaps); Assert.assertNotNull(window); window.setSize(widthStep*szStep, heightStep*szStep); @@ -99,7 +99,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForVisible(window, true)); Assert.assertTrue(AWTRobotUtil.waitForRealized(window, true)); System.out.println("Window: "+window.getClass().getName()); - + // Check caps of NativeWindow config w/o GL final CapabilitiesImmutable chosenCaps = window.getGraphicsConfiguration().getChosenCapabilities(); System.out.println("Window Caps Pre_GL: "+chosenCaps); @@ -109,13 +109,13 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { Assert.assertTrue(chosenCaps.getRedBits()>5); // - // Create native OpenGL resources .. XGL/WGL/CGL .. + // Create native OpenGL resources .. XGL/WGL/CGL .. // equivalent to GLAutoDrawable methods: setVisible(true) - // + // final GLDrawable drawable = factory.createGLDrawable(window); Assert.assertNotNull(drawable); System.out.println("Drawable Pre-GL(0): "+drawable.getClass().getName()+", "+drawable.getNativeSurface().getClass().getName()); - + // drawable.setRealized(true); Assert.assertTrue(drawable.isRealized()); @@ -123,13 +123,13 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { System.out.println("Window Caps PostGL : "+window.getGraphicsConfiguration().getChosenCapabilities()); System.out.println("Drawable Post-GL(1): "+drawable.getClass().getName()+", "+drawable.getNativeSurface().getClass().getName()); - // Note: FBO Drawable realization happens at 1st context.makeCurrent(), + // Note: FBO Drawable realization happens at 1st context.makeCurrent(), // and hence only then it's caps can _fully_ reflect expectations, // i.e. depth, stencil and MSAA will be valid only after makeCurrent(), // where on-/offscreen state after setRealized(true) // See GLFBODrawable API doc in this regard! - - + + final GLCapabilitiesImmutable chosenGLCaps01 = drawable.getChosenGLCapabilities(); System.out.println("Chosen GL Caps(1): "+chosenGLCaps01); Assert.assertNotNull(chosenGLCaps01); @@ -137,13 +137,13 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { Assert.assertEquals(expGLCaps.isFBO(), chosenGLCaps01.isFBO()); Assert.assertEquals(expGLCaps.isPBuffer(), chosenGLCaps01.isPBuffer()); Assert.assertEquals(expGLCaps.isBitmap(), chosenGLCaps01.isBitmap()); - + final GLContext context = drawable.createContext(null); Assert.assertNotNull(context); int res = context.makeCurrent(); Assert.assertTrue(GLContext.CONTEXT_CURRENT_NEW==res || GLContext.CONTEXT_CURRENT==res); context.release(); - + // Check caps of GLDrawable after realization final GLCapabilitiesImmutable chosenGLCaps02 = drawable.getChosenGLCapabilities(); System.out.println("Chosen GL Caps(2): "+chosenGLCaps02); @@ -158,12 +158,12 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { Assert.assertEquals(expGLCaps.isFBO(), chosenGLCaps02.isFBO()); Assert.assertEquals(expGLCaps.isPBuffer(), chosenGLCaps02.isPBuffer()); Assert.assertEquals(expGLCaps.isBitmap(), chosenGLCaps02.isBitmap()); - /** Single/Double buffer cannot be checked since result may vary .. + /** Single/Double buffer cannot be checked since result may vary .. if(chosenGLCaps.isOnscreen() || chosenGLCaps.isFBO()) { // dbl buffer may be disabled w/ offscreen pbuffer and bitmap Assert.assertEquals(expGLCaps.getDoubleBuffered(), chosenGLCaps.getDoubleBuffered()); } */ - + final GLAutoDrawableDelegate glad = new GLAutoDrawableDelegate(drawable, context, window, false, null) { @Override protected void destroyImplInLock() { @@ -171,12 +171,12 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { window.destroy(); // destroys the actual window, incl. the device } }; - + window.setWindowDestroyNotifyAction( new Runnable() { public void run() { glad.windowDestroyNotifyOp(); } } ); - + window.addWindowListener(new WindowAdapter() { @Override public void windowRepaint(WindowUpdateEvent e) { @@ -190,38 +190,45 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { }); glad.addGLEventListener(demo); - + final SnapshotGLEventListener snapshotGLEventListener = new SnapshotGLEventListener(); glad.addGLEventListener(snapshotGLEventListener); - + glad.display(); // initial resize/display - + // 1 - szStep = 2 - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + final int[] expSurfaceSize = glad.getNativeSurface().convertToPixelUnits(new int[] { widthStep*szStep, heightStep*szStep }); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + // 2, 3 (resize + display) szStep = 1; window.setSize(widthStep*szStep, heightStep*szStep); - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + expSurfaceSize[0] = widthStep*szStep; + expSurfaceSize[1] = heightStep*szStep; + glad.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + // 4, 5 (resize + display) szStep = 4; window.setSize(widthStep*szStep, heightStep*szStep); - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + expSurfaceSize[0] = widthStep*szStep; + expSurfaceSize[1] = heightStep*szStep; + glad.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + Thread.sleep(50); - + glad.destroy(); - System.out.println("Fin Drawable: "+drawable); + System.out.println("Fin Drawable: "+drawable); System.out.println("Fin Window: "+window); } @@ -236,7 +243,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { System.err.println(JoglVersion.getDefaultOpenGLInfo(f.getDefaultDevice(), null, true).toString()); } } - + @Test public void testGL2OnScreenSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -244,14 +251,14 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); if(null == reqGLCaps) return; doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenAutoDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -269,7 +276,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenFBODblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -278,7 +285,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setFBO(true); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenPbufferDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -287,7 +294,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setPBuffer(true); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenPbufferSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -297,7 +304,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenBitmapSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -307,7 +314,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new Gears(1)); } - + @Test public void testES2OnScreenSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -315,14 +322,14 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OnScreenDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); if(null == reqGLCaps) return; doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenAutoDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -340,7 +347,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenFBODblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -349,7 +356,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setFBO(true); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenPbufferDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -358,7 +365,7 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setPBuffer(true); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenPbufferSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -368,19 +375,19 @@ public class TestGLAutoDrawableDelegateOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + /** Not implemented ! @Test public void testES2OffScreenBitmapDblBuf() throws InterruptedException { if(!checkProfile(GLProfile.GLES2)) { return; } - final GLCapabilities reqGLCaps = new GLCapabilities(GLProfile.get(GLProfile.GLES2)); + final GLCapabilities reqGLCaps = new GLCapabilities(GLProfile.get(GLProfile.GLES2)); reqGLCaps.setOnscreen(false); reqGLCaps.setBitmap(true); doTest(reqGLCaps, new GearsES2(1)); } */ - + public static void main(String args[]) throws IOException { org.junit.runner.JUnitCore.main(TestGLAutoDrawableDelegateOnOffscrnCapsNEWT.class.getName()); } diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT.java index 888572444..2d231fb6d 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,12 +20,12 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.jogl.acore; import java.awt.Dimension; @@ -74,7 +74,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { } return new GLCapabilities(GLProfile.get(profile)); } - + static void setGLCanvasSize(final Frame frame, final GLCanvas glc, final int width, final int height) { try { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { @@ -89,13 +89,13 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { } catch( Throwable throwable ) { throwable.printStackTrace(); Assume.assumeNoException( throwable ); - } + } } - + static interface MyGLEventListener extends GLEventListener { void setMakeSnapshot(); } - + void doTest(GLCapabilitiesImmutable reqGLCaps, GLEventListener demo) throws InterruptedException { if(reqGLCaps.isOnscreen() && JAWTUtil.isOffscreenLayerRequired()) { System.err.println("onscreen layer n/a"); @@ -120,8 +120,8 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { glad.setSize(glc_sz); final Frame frame = new Frame(getSimpleTestName(".")); Assert.assertNotNull(frame); - frame.add(glad); - + frame.add(glad); + try { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { public void run() { @@ -132,11 +132,11 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { throwable.printStackTrace(); Assume.assumeNoException( throwable ); } - + Assert.assertTrue(AWTRobotUtil.waitForVisible(glad, true)); Assert.assertTrue(AWTRobotUtil.waitForRealized(glad, true)); System.out.println("Window: "+glad.getClass().getName()); - + // Check caps of NativeWindow config w/o GL final CapabilitiesImmutable chosenCaps = glad.getChosenGLCapabilities(); System.out.println("Window Caps Pre_GL: "+chosenCaps); @@ -146,20 +146,20 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { Assert.assertTrue(chosenCaps.getRedBits()>5); glad.display(); // force native context creation - + // - // Create native OpenGL resources .. XGL/WGL/CGL .. + // Create native OpenGL resources .. XGL/WGL/CGL .. // equivalent to GLAutoDrawable methods: setVisible(true) - // + // { final GLDrawable actualDrawable = glad.getDelegatedDrawable(); Assert.assertNotNull(actualDrawable); System.out.println("Drawable Pre-GL(0): "+actualDrawable.getClass().getName()+", "+actualDrawable.getNativeSurface().getClass().getName()); } - + System.out.println("Window Caps PostGL : "+glad.getChosenGLCapabilities()); System.out.println("Drawable Post-GL(1): "+glad.getClass().getName()+", "+glad.getNativeSurface().getClass().getName()); - + // Check caps of GLDrawable after realization final GLCapabilitiesImmutable chosenGLCaps = glad.getChosenGLCapabilities(); System.out.println("Chosen GL Caps(1): "+chosenGLCaps); @@ -172,7 +172,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { Assert.assertEquals(expGLCaps.isFBO(), chosenGLCaps.isFBO()); Assert.assertEquals(expGLCaps.isPBuffer(), chosenGLCaps.isPBuffer()); Assert.assertEquals(expGLCaps.isBitmap(), chosenGLCaps.isBitmap()); - /** Single/Double buffer cannot be checked since result may vary .. + /** Single/Double buffer cannot be checked since result may vary .. if(chosenGLCaps.isOnscreen() || chosenGLCaps.isFBO()) { // dbl buffer may be disabled w/ offscreen pbuffer and bitmap Assert.assertEquals(expGLCaps.getDoubleBuffered(), chosenGLCaps.getDoubleBuffered()); @@ -184,43 +184,50 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { Assert.assertNotNull(context); Assert.assertTrue(context.isCreated()); } - + System.out.println("Chosen GL Caps(2): "+glad.getChosenGLCapabilities()); System.out.println("Drawable Post-GL(2): "+glad.getClass().getName()+", "+glad.getNativeSurface().getClass().getName()); - + glad.addGLEventListener(demo); - + final SnapshotGLEventListener snapshotGLEventListener = new SnapshotGLEventListener(); glad.addGLEventListener(snapshotGLEventListener); - + glad.display(); // initial resize/display - + // 1 - szStep = 2 - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + final int[] expSurfaceSize = glad.getNativeSurface().convertToPixelUnits(new int[] { widthStep*szStep, heightStep*szStep }); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + // 2, 3 (resize + display) szStep = 1; setGLCanvasSize(frame, glad, widthStep*szStep, heightStep*szStep); - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + expSurfaceSize[0] = widthStep*szStep; + expSurfaceSize[1] = heightStep*szStep; + glad.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); glad.display(); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + // 4, 5 (resize + display) szStep = 4; setGLCanvasSize(frame, glad, widthStep*szStep, heightStep*szStep); - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + expSurfaceSize[0] = widthStep*szStep; + expSurfaceSize[1] = heightStep*szStep; + glad.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); glad.display(); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + Thread.sleep(50); - + try { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { public void run() { @@ -231,7 +238,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { } catch( Throwable throwable ) { throwable.printStackTrace(); Assume.assumeNoException( throwable ); - } + } System.out.println("Fin: "+glad); } @@ -246,14 +253,14 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { System.err.println(JoglVersion.getDefaultOpenGLInfo(f.getDefaultDevice(), null, true).toString()); } } - + @Test public void testGL2OnScreenDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); if(null == reqGLCaps) return; doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBufStencil() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -261,7 +268,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { reqGLCaps.setStencilBits(1); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBufMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -270,7 +277,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBufStencilMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -280,7 +287,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenAutoDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -298,7 +305,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { reqGLCaps.setStencilBits(1); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenFBODblBufMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -309,7 +316,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenFBODblBufStencilMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -321,7 +328,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenPbuffer() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -330,7 +337,7 @@ public class TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT extends UITestCase { reqGLCaps.setPBuffer(true); doTest(reqGLCaps, new GearsES2(1)); } - + public static void main(String args[]) throws IOException { for(int i=0; i<args.length; i++) { if(args[i].equals("-wait")) { diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT.java index 4cdbb6fb0..8acec337b 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,12 +20,12 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.jogl.acore; import java.io.IOException; @@ -57,8 +57,8 @@ import com.jogamp.opengl.test.junit.util.UITestCase; /** * Tests using a NEWT {@link GLWindow} {@link GLAutoDrawable auto drawable} for on- and offscreen cases. * <p> - * The NEWT {@link GLAutoDrawable} is being used to run the {@link GLEventListener}. - * </p> + * The NEWT {@link GLAutoDrawable} is being used to run the {@link GLEventListener}. + * </p> */ @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { @@ -69,7 +69,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { static interface MyGLEventListener extends GLEventListener { void setMakeSnapshot(); } - + static GLCapabilities getCaps(String profile) { if( !GLProfile.isAvailable(profile) ) { System.err.println("Profile "+profile+" n/a"); @@ -77,7 +77,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { } return new GLCapabilities(GLProfile.get(profile)); } - + void doTest(GLCapabilitiesImmutable reqGLCaps, GLEventListener demo) throws InterruptedException { System.out.println("Requested GL Caps: "+reqGLCaps); final GLDrawableFactory factory = GLDrawableFactory.getFactory(reqGLCaps.getGLProfile()); @@ -85,7 +85,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { System.out.println("Expected GL Caps: "+expGLCaps); // // Create native windowing resources .. X11/Win/OSX - // + // final GLWindow glad = GLWindow.create(reqGLCaps); Assert.assertNotNull(glad); glad.setSize(widthStep*szStep, heightStep*szStep); @@ -93,7 +93,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForVisible(glad, true)); Assert.assertTrue(AWTRobotUtil.waitForRealized(glad, true)); System.out.println("Window: "+glad.getClass().getName()); - + // Check caps of NativeWindow config w/o GL final CapabilitiesImmutable chosenCaps = glad.getGraphicsConfiguration().getChosenCapabilities(); System.out.println("Window Caps Pre_GL: "+chosenCaps); @@ -103,18 +103,18 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { Assert.assertTrue(chosenCaps.getRedBits()>5); // - // Create native OpenGL resources .. XGL/WGL/CGL .. + // Create native OpenGL resources .. XGL/WGL/CGL .. // equivalent to GLAutoDrawable methods: setVisible(true) - // + // { final GLDrawable actualDrawable = glad.getDelegatedDrawable(); Assert.assertNotNull(actualDrawable); System.out.println("Drawable Pre-GL(0): "+actualDrawable.getClass().getName()+", "+actualDrawable.getNativeSurface().getClass().getName()); } - + System.out.println("Window Caps PostGL : "+glad.getGraphicsConfiguration().getChosenCapabilities()); System.out.println("Drawable Post-GL(1): "+glad.getClass().getName()+", "+glad.getNativeSurface().getClass().getName()); - + // Check caps of GLDrawable after realization final GLCapabilitiesImmutable chosenGLCaps = glad.getChosenGLCapabilities(); System.out.println("Chosen GL Caps(1): "+chosenGLCaps); @@ -127,7 +127,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { Assert.assertEquals(expGLCaps.isFBO(), chosenGLCaps.isFBO()); Assert.assertEquals(expGLCaps.isPBuffer(), chosenGLCaps.isPBuffer()); Assert.assertEquals(expGLCaps.isBitmap(), chosenGLCaps.isBitmap()); - /** Single/Double buffer cannot be checked since result may vary .. + /** Single/Double buffer cannot be checked since result may vary .. if(chosenGLCaps.isOnscreen() || chosenGLCaps.isFBO()) { // dbl buffer may be disabled w/ offscreen pbuffer and bitmap Assert.assertEquals(expGLCaps.getDoubleBuffered(), chosenGLCaps.getDoubleBuffered()); @@ -140,41 +140,48 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { Assert.assertNotNull(context); Assert.assertTrue(context.isCreated()); } - + System.out.println("Chosen GL Caps(2): "+glad.getChosenGLCapabilities()); System.out.println("Drawable Post-GL(2): "+glad.getClass().getName()+", "+glad.getNativeSurface().getClass().getName()); - + glad.addGLEventListener(demo); - + final SnapshotGLEventListener snapshotGLEventListener = new SnapshotGLEventListener(); glad.addGLEventListener(snapshotGLEventListener); - + glad.display(); // initial resize/display - + // 1 - szStep = 2 - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + final int[] expSurfaceSize = glad.getNativeSurface().convertToPixelUnits(new int[] { widthStep*szStep, heightStep*szStep }); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + // 2, 3 (resize + display) szStep = 1; glad.setSize(widthStep*szStep, heightStep*szStep); - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + expSurfaceSize[0] = widthStep*szStep; + expSurfaceSize[1] = heightStep*szStep; + glad.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + // 4, 5 (resize + display) szStep = 4; glad.setSize(widthStep*szStep, heightStep*szStep); - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + expSurfaceSize[0] = widthStep*szStep; + expSurfaceSize[1] = heightStep*szStep; + glad.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + Thread.sleep(50); - + glad.destroy(); System.out.println("Fin: "+glad); } @@ -190,7 +197,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { System.err.println(JoglVersion.getDefaultOpenGLInfo(f.getDefaultDevice(), null, true).toString()); } } - + @Test public void testGL2OnScreenSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -198,14 +205,14 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); if(null == reqGLCaps) return; doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBufStencil() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -213,7 +220,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setStencilBits(1); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBufMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -222,7 +229,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBufStencilMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -232,7 +239,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenAutoDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -250,7 +257,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenFBODblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -259,7 +266,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setFBO(true); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenFBODblBufStencil() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -269,7 +276,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setStencilBits(1); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenFBODblBufMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -280,7 +287,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenFBODblBufStencilMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -292,7 +299,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenPbufferDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -301,7 +308,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setPBuffer(true); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenPbufferSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -311,7 +318,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenBitmapSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -321,7 +328,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new Gears(1)); } - + @Test public void testES2OnScreenSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -329,14 +336,14 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OnScreenDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); if(null == reqGLCaps) return; doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OnScreenDblBufStencil() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -344,7 +351,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setStencilBits(1); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OnScreenDblBufMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -353,7 +360,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OnScreenDblBufStencilMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -363,7 +370,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenAutoDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -381,7 +388,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenFBODblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -390,7 +397,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setFBO(true); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenFBODblBufStencil() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -400,7 +407,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setStencilBits(1); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenFBODblBufMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -411,7 +418,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenFBODblBufStencilMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -423,7 +430,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setNumSamples(4); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenPbufferDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -432,7 +439,7 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setPBuffer(true); doTest(reqGLCaps, new GearsES2(1)); } - + @Test public void testES2OffScreenPbufferSglBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); @@ -442,19 +449,19 @@ public class TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT extends UITestCase { reqGLCaps.setDoubleBuffered(false); doTest(reqGLCaps, new GearsES2(1)); } - + /** Not implemented ! @Test public void testES2OffScreenBitmapDblBuf() throws InterruptedException { if(!checkProfile(GLProfile.GLES2)) { return; } - final GLCapabilities reqGLCaps = new GLCapabilities(GLProfile.get(GLProfile.GLES2)); + final GLCapabilities reqGLCaps = new GLCapabilities(GLProfile.get(GLProfile.GLES2)); reqGLCaps.setOnscreen(false); reqGLCaps.setBitmap(true); doTest(reqGLCaps, new GearsES2(1)); } */ - + public static void main(String args[]) throws IOException { org.junit.runner.JUnitCore.main(TestGLAutoDrawableGLWindowOnOffscrnCapsNEWT.class.getName()); } diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT.java index 22a515f42..bfdad4427 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,12 +20,12 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.jogl.acore; import java.awt.Component; @@ -63,8 +63,8 @@ import com.jogamp.opengl.test.junit.util.UITestCase; /** * Tests using a NEWT {@link GLWindow} {@link GLAutoDrawable auto drawable} for on- and offscreen cases. * <p> - * The NEWT {@link GLAutoDrawable} is being used to run the {@link GLEventListener}. - * </p> + * The NEWT {@link GLAutoDrawable} is being used to run the {@link GLEventListener}. + * </p> */ @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase { @@ -79,7 +79,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase } return new GLCapabilities(GLProfile.get(profile)); } - + static void setComponentSize(final Frame frame, final Component comp, final int width, final int height) { try { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { @@ -94,13 +94,13 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase } catch( Throwable throwable ) { throwable.printStackTrace(); Assume.assumeNoException( throwable ); - } + } } - + static interface MyGLEventListener extends GLEventListener { void setMakeSnapshot(); } - + void doTest(boolean offscreenLayer, GLCapabilitiesImmutable reqGLCaps, GLEventListener demo) throws InterruptedException { if(!offscreenLayer && JAWTUtil.isOffscreenLayerRequired()) { System.err.println("onscreen layer n/a"); @@ -112,16 +112,16 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase } System.out.println("Requested GL Caps: "+reqGLCaps); final GLDrawableFactory factory = GLDrawableFactory.getFactory(reqGLCaps.getGLProfile()); - final AbstractGraphicsDevice device = factory.getDefaultDevice(); + final AbstractGraphicsDevice device = factory.getDefaultDevice(); final GLCapabilitiesImmutable expGLCaps = offscreenLayer ? GLGraphicsConfigurationUtil.fixOffscreenGLCapabilities(reqGLCaps, factory, device) : GLGraphicsConfigurationUtil.fixGLCapabilities(reqGLCaps, factory, device); System.out.println("Expected GL Caps: "+expGLCaps); - + final GLWindow glad = GLWindow.create(reqGLCaps); Assert.assertNotNull(glad); - + final NewtCanvasAWT nca = new NewtCanvasAWT(glad); Assert.assertNotNull(nca); Dimension size0 = new Dimension(widthStep*szStep, heightStep*szStep); @@ -129,11 +129,11 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase nca.setPreferredSize(size0); nca.setMinimumSize(size0); nca.setSize(size0); - + final Frame frame = new Frame(getSimpleTestName(".")); Assert.assertNotNull(frame); - frame.add(nca); - + frame.add(nca); + try { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { public void run() { @@ -144,11 +144,11 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase throwable.printStackTrace(); Assume.assumeNoException( throwable ); } - + Assert.assertTrue(AWTRobotUtil.waitForVisible(glad, true)); Assert.assertTrue(AWTRobotUtil.waitForRealized(glad, true)); System.out.println("Window: "+glad.getClass().getName()); - + // Check caps of NativeWindow config w/o GL final CapabilitiesImmutable chosenCaps = glad.getChosenGLCapabilities(); System.out.println("Window Caps Pre_GL: "+chosenCaps); @@ -158,20 +158,20 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase Assert.assertTrue(chosenCaps.getRedBits()>5); glad.display(); // force native context creation - + // - // Create native OpenGL resources .. XGL/WGL/CGL .. + // Create native OpenGL resources .. XGL/WGL/CGL .. // equivalent to GLAutoDrawable methods: setVisible(true) - // + // { final GLDrawable actualDrawable = glad.getDelegatedDrawable(); Assert.assertNotNull(actualDrawable); System.out.println("Drawable Pre-GL(0): "+actualDrawable.getClass().getName()+", "+actualDrawable.getNativeSurface().getClass().getName()); } - + System.out.println("Window Caps PostGL : "+glad.getChosenGLCapabilities()); System.out.println("Drawable Post-GL(1): "+glad.getClass().getName()+", "+glad.getNativeSurface().getClass().getName()); - + // Check caps of GLDrawable after realization final GLCapabilitiesImmutable chosenGLCaps = glad.getChosenGLCapabilities(); System.out.println("Chosen GL Caps(1): "+chosenGLCaps); @@ -184,7 +184,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase Assert.assertEquals(expGLCaps.isFBO(), chosenGLCaps.isFBO()); Assert.assertEquals(expGLCaps.isPBuffer(), chosenGLCaps.isPBuffer()); Assert.assertEquals(expGLCaps.isBitmap(), chosenGLCaps.isBitmap()); - /** Single/Double buffer cannot be checked since result may vary .. + /** Single/Double buffer cannot be checked since result may vary .. if(chosenGLCaps.isOnscreen() || chosenGLCaps.isFBO()) { // dbl buffer may be disabled w/ offscreen pbuffer and bitmap Assert.assertEquals(expGLCaps.getDoubleBuffered(), chosenGLCaps.getDoubleBuffered()); @@ -196,43 +196,50 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase Assert.assertNotNull(context); Assert.assertTrue(context.isCreated()); } - + System.out.println("Chosen GL Caps(2): "+glad.getChosenGLCapabilities()); System.out.println("Drawable Post-GL(2): "+glad.getClass().getName()+", "+glad.getNativeSurface().getClass().getName()); - + glad.addGLEventListener(demo); - + final SnapshotGLEventListener snapshotGLEventListener = new SnapshotGLEventListener(); glad.addGLEventListener(snapshotGLEventListener); - + glad.display(); // initial resize/display - + // 1 - szStep = 2 - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + final int[] expSurfaceSize = glad.getNativeSurface().convertToPixelUnits(new int[] { widthStep*szStep, heightStep*szStep }); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + // 2, 3 (resize + display) szStep = 1; setComponentSize(frame, nca, widthStep*szStep, heightStep*szStep); - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + expSurfaceSize[0] = widthStep*szStep; + expSurfaceSize[1] = heightStep*szStep; + glad.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); glad.display(); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + // 4, 5 (resize + display) szStep = 4; setComponentSize(frame, nca, widthStep*szStep, heightStep*szStep); - Assert.assertTrue("Size not reached: Expected "+(widthStep*szStep)+"x"+(heightStep*szStep)+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glad, widthStep*szStep, heightStep*szStep)); + expSurfaceSize[0] = widthStep*szStep; + expSurfaceSize[1] = heightStep*szStep; + glad.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glad.getSurfaceWidth()+"x"+glad.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glad, expSurfaceSize[0], expSurfaceSize[1])); glad.display(); snapshotGLEventListener.setMakeSnapshot(); glad.display(); - + Thread.sleep(50); - + try { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { public void run() { @@ -243,7 +250,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase } catch( Throwable throwable ) { throwable.printStackTrace(); Assume.assumeNoException( throwable ); - } + } glad.destroy(); System.out.println("Fin: "+nca); System.out.println("Fin: "+glad); @@ -260,14 +267,14 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase System.err.println(JoglVersion.getDefaultOpenGLInfo(f.getDefaultDevice(), null, true).toString()); } } - + @Test public void testGL2OnScreenDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); if(null == reqGLCaps) return; doTest(false, reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBufStencil() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -275,7 +282,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase reqGLCaps.setStencilBits(1); doTest(false, reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBufMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -284,7 +291,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase reqGLCaps.setNumSamples(4); doTest(false, reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OnScreenDblBufStencilMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -294,7 +301,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase reqGLCaps.setNumSamples(4); doTest(false, reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenLayerAutoDblBuf() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -311,7 +318,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase reqGLCaps.setStencilBits(1); doTest(true, reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenFBODblBufMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -322,7 +329,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase reqGLCaps.setNumSamples(4); doTest(true, reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenFBODblBufStencilMSAA() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -334,7 +341,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase reqGLCaps.setNumSamples(4); doTest(true, reqGLCaps, new GearsES2(1)); } - + @Test public void testGL2OffScreenPbuffer() throws InterruptedException { final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2); @@ -343,7 +350,7 @@ public class TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT extends UITestCase reqGLCaps.setOnscreen(true); // get native NEWT Window, not OffscreenWindow doTest(true, reqGLCaps, new GearsES2(1)); } - + public static void main(String args[]) throws IOException { org.junit.runner.JUnitCore.main(TestGLAutoDrawableNewtCanvasAWTOnOffscrnCapsAWT.class.getName()); } diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGPUMemSec01NEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGPUMemSec01NEWT.java index 93713c783..173df57f6 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGPUMemSec01NEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGPUMemSec01NEWT.java @@ -54,12 +54,12 @@ public class TestGPUMemSec01NEWT extends UITestCase { return "0x"+Integer.toHexString(i); } static String exceptionMsg(String pre, int format, int type, int components, int width, int height, int rl1, int rl4, int rl8) { - return pre + + return pre + ": fmt "+hexString(format)+", type "+hexString(type)+", comps "+components+ ", "+width+"x"+height+ - ", rowlenA1 "+rl1+", rowlenA4 "+rl4+", rowlenA8 "+rl8; + ", rowlenA1 "+rl1+", rowlenA4 "+rl4+", rowlenA8 "+rl8; } - + static NEWTGLContext.WindowContext createCurrentGLOffscreenWindow(GLProfile glp, int width, int height) throws GLException, InterruptedException { final NEWTGLContext.WindowContext winctx = NEWTGLContext.createOffscreenWindow( new GLCapabilities(glp), width, height, true); @@ -68,34 +68,34 @@ public class TestGPUMemSec01NEWT extends UITestCase { // System.err.println("Pre GL Error: 0x"+Integer.toHexString(gl.glGetError())); // System.err.println(winctx.drawable); Assert.assertEquals(GL.GL_NO_ERROR, gl.glGetError()); - + // misc GL setup gl.glClearColor(1, 1, 1, 1); gl.glEnable(GL.GL_DEPTH_TEST); Assert.assertEquals(GL.GL_NO_ERROR, gl.glGetError()); - gl.glViewport(0, 0, width, height); + gl.glViewport(0, 0, width, height); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); Assert.assertEquals(GL.GL_NO_ERROR, gl.glGetError()); - + return winctx; } - + static int readPixelsCheck(GL gl, int format, int type, int components, int width, int height) throws InterruptedException { int expectedExceptions = 0; - - final int rowlenA1 = width * components; - - final int rowlenA4 = ( ( width * components + 3 ) / 4 ) * 4 ; + + final int rowlenA1 = width * components; + + final int rowlenA4 = ( ( width * components + 3 ) / 4 ) * 4 ; Assert.assertTrue(rowlenA4 % 4 == 0); final int rowlenA8 = ( ( width * components + 7 ) / 8 ) * 8 ; Assert.assertTrue(rowlenA8 % 8 == 0); - + GLPixelStorageModes psm = new GLPixelStorageModes(); psm.setPackAlignment(gl, 1); - + Exception ee = null; - + // ok size ! try { ByteBuffer bb = Buffers.newDirectByteBuffer(height*rowlenA1); @@ -105,11 +105,11 @@ public class TestGPUMemSec01NEWT extends UITestCase { ee = e; } Assert.assertNull( - exceptionMsg("Unexpected IndexOutOfBoundsException (size ok, alignment 1)", + exceptionMsg("Unexpected IndexOutOfBoundsException (size ok, alignment 1)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); ee = null; - - + + // too small -10 ! try { ByteBuffer bb = Buffers.newDirectByteBuffer(height*rowlenA1-10); @@ -118,16 +118,16 @@ public class TestGPUMemSec01NEWT extends UITestCase { } catch(IndexOutOfBoundsException e) { ee = e; System.err.println( - exceptionMsg("OK Expected IndexOutOfBoundsException (size-10 bytes)", + exceptionMsg("OK Expected IndexOutOfBoundsException (size-10 bytes)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8)+ ": "+ee.getMessage()); - expectedExceptions++; + expectedExceptions++; } Assert.assertNotNull( - exceptionMsg("Expected IndexOutOfBoundsException (size-10 bytes)", + exceptionMsg("Expected IndexOutOfBoundsException (size-10 bytes)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); ee = null; - + // too small size/4 ! try { ByteBuffer bb = Buffers.newDirectByteBuffer(height*rowlenA1/4); @@ -136,21 +136,21 @@ public class TestGPUMemSec01NEWT extends UITestCase { } catch(IndexOutOfBoundsException e) { ee = e; System.err.println( - exceptionMsg("OK Expected IndexOutOfBoundsException (size/4 bytes)", + exceptionMsg("OK Expected IndexOutOfBoundsException (size/4 bytes)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8)+ ": "+ee.getMessage()); - expectedExceptions++; + expectedExceptions++; } Assert.assertNotNull( - exceptionMsg("Expected IndexOutOfBoundsException (size/4 bytes)", + exceptionMsg("Expected IndexOutOfBoundsException (size/4 bytes)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); ee = null; // // Alignment test - // + // psm.setPackAlignment(gl, 4); - + // ok size ! try { ByteBuffer bb = Buffers.newDirectByteBuffer(height*rowlenA4); @@ -160,10 +160,10 @@ public class TestGPUMemSec01NEWT extends UITestCase { ee = e; } Assert.assertNull( - exceptionMsg("Unexpected IndexOutOfBoundsException (size ok, alignment 4)", + exceptionMsg("Unexpected IndexOutOfBoundsException (size ok, alignment 4)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); ee = null; - + // too small if rowlenA1%4 > 0 try { ByteBuffer bb = Buffers.newDirectByteBuffer(height*rowlenA1); @@ -173,7 +173,7 @@ public class TestGPUMemSec01NEWT extends UITestCase { ee = e; if(rowlenA1%4>0) { System.err.println( - exceptionMsg("OK Expected IndexOutOfBoundsException (alignment 4)", + exceptionMsg("OK Expected IndexOutOfBoundsException (alignment 4)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8)+ ": "+ee.getMessage()); expectedExceptions++; @@ -181,17 +181,17 @@ public class TestGPUMemSec01NEWT extends UITestCase { } if(rowlenA1%4>0) { Assert.assertNotNull( - exceptionMsg("Expected IndexOutOfBoundsException (alignment 4)", + exceptionMsg("Expected IndexOutOfBoundsException (alignment 4)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); } else { Assert.assertNull( - exceptionMsg("Unexpected IndexOutOfBoundsException (alignment 4)", - format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); + exceptionMsg("Unexpected IndexOutOfBoundsException (alignment 4)", + format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); } ee = null; - + psm.setPackAlignment(gl, 8); - + // ok size ! try { ByteBuffer bb = Buffers.newDirectByteBuffer(height*rowlenA8); @@ -201,10 +201,10 @@ public class TestGPUMemSec01NEWT extends UITestCase { ee = e; } Assert.assertNull( - exceptionMsg("Unexpected IndexOutOfBoundsException (size ok, alignment 8)", + exceptionMsg("Unexpected IndexOutOfBoundsException (size ok, alignment 8)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); ee = null; - + // too small if rowlenA1%8 > 0 try { ByteBuffer bb = Buffers.newDirectByteBuffer(height*rowlenA1); @@ -214,7 +214,7 @@ public class TestGPUMemSec01NEWT extends UITestCase { ee = e; if(rowlenA1%8>0) { System.err.println( - exceptionMsg("OK Expected IndexOutOfBoundsException (alignment 8)", + exceptionMsg("OK Expected IndexOutOfBoundsException (alignment 8)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8)+ ": "+ee.getMessage()); expectedExceptions++; @@ -222,37 +222,37 @@ public class TestGPUMemSec01NEWT extends UITestCase { } if(rowlenA1%8>0) { Assert.assertNotNull( - exceptionMsg("Expected IndexOutOfBoundsException (alignment 8)", + exceptionMsg("Expected IndexOutOfBoundsException (alignment 8)", format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); } else { Assert.assertNull( - exceptionMsg("Unexpected IndexOutOfBoundsException (alignment 8)", - format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); + exceptionMsg("Unexpected IndexOutOfBoundsException (alignment 8)", + format, type, components, width, height, rowlenA1, rowlenA4, rowlenA8), ee); } ee = null; - - psm.restore(gl); - - return expectedExceptions; + + psm.restore(gl); + + return expectedExceptions; } - + @Test public void testReadPixelsGL_640x480xRGBAxUB() throws InterruptedException { GLProfile glp = GLProfile.getDefault(); final int width = 640; final int height= 480; - + // preset .. final NEWTGLContext.WindowContext winctx = createCurrentGLOffscreenWindow(glp, width, height); final GLDrawable drawable = winctx.context.getGLDrawable(); final GL gl = winctx.context.getGL(); - + // 2 x too small - 0 x alignment Assert.assertEquals(2, readPixelsCheck(gl, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, 4, width, height)); - + drawable.swapBuffers(); Thread.sleep(50); - + NEWTGLContext.destroyWindow(winctx); } @@ -263,21 +263,21 @@ public class TestGPUMemSec01NEWT extends UITestCase { final int wheight= 480; final int rwidth = 99; final int rheight= 100; - + // preset .. final NEWTGLContext.WindowContext winctx = createCurrentGLOffscreenWindow(glp, wwidth, wheight); final GLDrawable drawable = winctx.context.getGLDrawable(); final GL gl = winctx.context.getGL(); - + // 2 x too small - 1 x alignment Assert.assertEquals(3, readPixelsCheck(gl, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, 4, rwidth, rheight)); - + drawable.swapBuffers(); Thread.sleep(50); - + NEWTGLContext.destroyWindow(winctx); } - + @Test public void testReadPixelsGL2GL3_640x480xRGBxUB() throws InterruptedException { GLProfile glp = GLProfile.getGL2ES2(); @@ -287,21 +287,21 @@ public class TestGPUMemSec01NEWT extends UITestCase { } final int width = 640; final int height= 480; - + // preset .. final NEWTGLContext.WindowContext winctx = createCurrentGLOffscreenWindow(glp, width, height); final GLDrawable drawable = winctx.context.getGLDrawable(); final GL gl = winctx.context.getGL(); - + // 2 x too small - 0 x alignment Assert.assertEquals(2, readPixelsCheck(gl, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, 3, width, height)); - + drawable.swapBuffers(); Thread.sleep(50); - + NEWTGLContext.destroyWindow(winctx); } - + @Test public void testReadPixelsGL2GL3_99x100xRGBxUB() throws InterruptedException { GLProfile glp = GLProfile.getGL2ES2(); @@ -313,21 +313,21 @@ public class TestGPUMemSec01NEWT extends UITestCase { final int wheight= 480; final int rwidth = 99; final int rheight= 100; - + // preset .. final NEWTGLContext.WindowContext winctx = createCurrentGLOffscreenWindow(glp, wwidth, wheight); final GLDrawable drawable = winctx.context.getGLDrawable(); final GL gl = winctx.context.getGL(); - + // 2 x too small - 2 x alignment Assert.assertEquals(4, readPixelsCheck(gl, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, 3, rwidth, rheight)); - + drawable.swapBuffers(); Thread.sleep(50); - + NEWTGLContext.destroyWindow(winctx); } - + @Test public void testReadPixelsGL2GL3_640x480xREDxUB() throws InterruptedException { GLProfile glp = GLProfile.getGL2ES2(); @@ -342,13 +342,13 @@ public class TestGPUMemSec01NEWT extends UITestCase { final NEWTGLContext.WindowContext winctx = createCurrentGLOffscreenWindow(glp, width, height); final GLDrawable drawable = winctx.context.getGLDrawable(); final GL2GL3 gl = winctx.context.getGL().getGL2GL3(); - + // 2 x too small - 0 x alignment Assert.assertEquals(2, readPixelsCheck(gl, GL2ES2.GL_RED, GL.GL_UNSIGNED_BYTE, 1, width, height)); - + drawable.swapBuffers(); Thread.sleep(50); - + NEWTGLContext.destroyWindow(winctx); } @@ -368,19 +368,19 @@ public class TestGPUMemSec01NEWT extends UITestCase { final NEWTGLContext.WindowContext winctx = createCurrentGLOffscreenWindow(glp, wwidth, wheight); final GLDrawable drawable = winctx.context.getGLDrawable(); final GL2GL3 gl = winctx.context.getGL().getGL2GL3(); - + // 2 x too small - 2 x alignment Assert.assertEquals(4, readPixelsCheck(gl, GL2ES2.GL_RED, GL.GL_UNSIGNED_BYTE, 1, rwidth, rheight)); - + drawable.swapBuffers(); Thread.sleep(50); - + NEWTGLContext.destroyWindow(winctx); } - + public static void main(String args[]) throws IOException { String tstname = TestGPUMemSec01NEWT.class.getName(); org.junit.runner.JUnitCore.main(tstname); - } + } } diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/awt/ManualHiDPIBufferedImage01AWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/awt/ManualHiDPIBufferedImage01AWT.java new file mode 100644 index 000000000..0b67cfe46 --- /dev/null +++ b/src/test/com/jogamp/opengl/test/junit/jogl/awt/ManualHiDPIBufferedImage01AWT.java @@ -0,0 +1,71 @@ +package com.jogamp.opengl.test.junit.jogl.awt; + +import java.awt.BorderLayout; +import java.awt.Canvas; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.image.BufferedImage; +import java.lang.reflect.InvocationTargetException; + +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.SwingUtilities; + +/** + * Manual test for BufferedImage behavior w/ OSX HiDPI pixel scale usage. + */ +public class ManualHiDPIBufferedImage01AWT { + + static final int width = 200; + static final int height = 100; + + public static void main(String[] args) throws InterruptedException, InvocationTargetException { + final JFrame frame = new JFrame(); + + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + final Image image1 = getImage(getCheckBox("High-DPI (no)", false), width, height, 1); + final Image image2 = getImage(getCheckBox("High-DPI (yes)", true), width, height, 2); + System.err.println("Image1: "+image1); + System.err.println("Image2: "+image2); + + @SuppressWarnings("serial") + final Canvas canvas = new Canvas() { + @Override + public void paint(Graphics g) { + super.paint(g); + g.drawImage(image1, 0, 0, width, height, this); + g.drawImage(image2, 0, height + 5, width, height, this); + } + }; + frame.getContentPane().add(getCheckBox("High-DPI (ref)", false), BorderLayout.NORTH); + frame.getContentPane().add(canvas, BorderLayout.CENTER); + + frame.setBounds((1440-400)/2, 100, 400, 400); + frame.validate(); + frame.setVisible(true); + } + }); + } + + static JCheckBox getCheckBox(String text, boolean selected) { + JCheckBox checkBox = new JCheckBox(text); + checkBox.setSelected(selected); + checkBox.setSize(new Dimension(width, height)); + return checkBox; + } + + static Image getImage(JComponent component, int width, int height, int scale) { + final BufferedImage image = new BufferedImage(width*scale, height*scale, BufferedImage.TYPE_INT_ARGB); + final Graphics g = image.getGraphics(); + ((Graphics2D) g).scale(scale, scale); + component.paint(g); + g.dispose(); + + return image; + } +} diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieCube.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieCube.java index 116d5d245..42c1234da 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieCube.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieCube.java @@ -561,7 +561,7 @@ public class MovieCube implements GLEventListener { anim.stop(); } }); - window.setSurfaceSize(width, height); + window.setSize(width, height); window.setVisible(true); System.err.println("Chosen: "+window.getChosenGLCapabilities()); anim.start(); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSimple.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSimple.java index 1997739e3..7b6dd162a 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSimple.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSimple.java @@ -1050,7 +1050,7 @@ public class MovieSimple implements GLEventListener { mss[i].mPlayer.addEventListener(myGLMediaEventListener); windows[i].setTitle("Player "+i); - windows[i].setSurfaceSize(width, height); + windows[i].setSize(width, height); windows[i].setVisible(true); anim.add(windows[i]); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java index 96a120c62..d9839c057 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,17 +20,18 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.jogl.demos.es2.awt; import javax.media.opengl.*; import com.jogamp.opengl.util.Animator; + import javax.media.opengl.awt.GLCanvas; import com.jogamp.common.os.Platform; @@ -38,7 +39,6 @@ import com.jogamp.newt.event.awt.AWTKeyAdapter; import com.jogamp.newt.event.awt.AWTWindowAdapter; import com.jogamp.newt.event.TraceKeyAdapter; import com.jogamp.newt.event.TraceWindowAdapter; - import com.jogamp.opengl.test.junit.jogl.demos.es2.GearsES2; import com.jogamp.opengl.test.junit.util.AWTRobotUtil; import com.jogamp.opengl.test.junit.util.MiscUtils; @@ -53,6 +53,8 @@ import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Frame; import java.awt.TextArea; +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -70,12 +72,13 @@ import org.junit.runners.MethodSorters; public class TestGearsES2AWT extends UITestCase { public enum FrameLayout { None, TextOnBottom, BorderCenterSurrounded, DoubleBorderCenterSurrounded }; public enum ResizeBy { Component, Frame }; - - static long duration = 500; // ms - static int width, height; + + static long duration = 500; // ms + static int width = 640, height = 480; + static int xpos = 10, ypos = 10; static FrameLayout frameLayout = FrameLayout.None; static ResizeBy resizeBy = ResizeBy.Component; - + static boolean forceES2 = false; static boolean forceGL3 = false; static boolean mainRun = false; @@ -94,8 +97,6 @@ public class TestGearsES2AWT extends UITestCase { @BeforeClass public static void initClass() { - width = 640; - height = 480; try { EventQueue.invokeAndWait(new Runnable() { public void run() { @@ -125,7 +126,7 @@ public class TestGearsES2AWT extends UITestCase { } catch( Throwable throwable ) { throwable.printStackTrace(); Assume.assumeNoException( throwable ); - } + } } static void setFrameSize(final Frame frame, final boolean frameLayout, final java.awt.Dimension new_sz) { try { @@ -139,9 +140,9 @@ public class TestGearsES2AWT extends UITestCase { } catch( Throwable throwable ) { throwable.printStackTrace(); Assume.assumeNoException( throwable ); - } + } } - + static void setSize(final ResizeBy resizeBy, final Frame frame, final boolean frameLayout, final Component comp, final java.awt.Dimension new_sz) { switch( resizeBy ) { case Component: @@ -150,17 +151,24 @@ public class TestGearsES2AWT extends UITestCase { case Frame: setFrameSize(frame, frameLayout, new_sz); break; - } + } + } + + private void setTitle(final Frame frame, final GLCanvas glc, final GLCapabilitiesImmutable caps) { + final String capsA = caps.isBackgroundOpaque() ? "opaque" : "transl"; + final java.awt.Rectangle b = glc.getBounds(); + frame.setTitle("GLCanvas["+capsA+"], swapI "+swapInterval+", win: ["+b.x+"/"+b.y+" "+b.width+"x"+b.height+"], pix: "+glc.getSurfaceWidth()+"x"+glc.getSurfaceHeight()); } - - protected void runTestGL(GLCapabilities caps, final ResizeBy resizeBy, FrameLayout frameLayout) throws InterruptedException, InvocationTargetException { + + protected void runTestGL(final GLCapabilities caps, final ResizeBy resizeBy, FrameLayout frameLayout) throws InterruptedException, InvocationTargetException { final Frame frame = new Frame("GearsES2 AWT Test"); Assert.assertNotNull(frame); final GLCanvas glCanvas = new GLCanvas(caps); Assert.assertNotNull(glCanvas); setSize(resizeBy, frame, false, glCanvas, new Dimension(width, height)); - + frame.setLocation(xpos, ypos); + switch( frameLayout) { case None: frame.add(glCanvas); @@ -174,7 +182,7 @@ public class TestGearsES2AWT extends UITestCase { frame.setLayout(new BorderLayout()); frame.add(ta, BorderLayout.SOUTH); frame.add(glCanvas, BorderLayout.CENTER); - break; + break; case BorderCenterSurrounded: frame.setLayout(new BorderLayout()); frame.add(new Button("NORTH"), BorderLayout.NORTH); @@ -191,7 +199,7 @@ public class TestGearsES2AWT extends UITestCase { c.add(new Button("east"), BorderLayout.EAST); c.add(new Button("west"), BorderLayout.WEST); c.add(glCanvas, BorderLayout.CENTER); - + frame.setLayout(new BorderLayout()); frame.add(new Button("NORTH"), BorderLayout.NORTH); frame.add(new Button("SOUTH"), BorderLayout.SOUTH); @@ -200,11 +208,29 @@ public class TestGearsES2AWT extends UITestCase { frame.add(c, BorderLayout.CENTER); break; } - frame.setTitle("Gears AWT Test (translucent "+!caps.isBackgroundOpaque()+"), swapInterval "+swapInterval); + setTitle(frame, glCanvas, caps); + + frame.addComponentListener(new ComponentListener() { + @Override + public void componentResized(ComponentEvent e) { + setTitle(frame, glCanvas, caps); + } + + @Override + public void componentMoved(ComponentEvent e) { + setTitle(frame, glCanvas, caps); + } + + @Override + public void componentShown(ComponentEvent e) { } + + @Override + public void componentHidden(ComponentEvent e) { } + }); final GearsES2 demo = new GearsES2(swapInterval); glCanvas.addGLEventListener(demo); - + final SnapshotGLEventListener snap = new SnapshotGLEventListener(); glCanvas.addGLEventListener(snap); @@ -222,13 +248,13 @@ public class TestGearsES2AWT extends UITestCase { if( ResizeBy.Frame == resizeBy ) { frame.validate(); } else { - frame.pack(); - } + frame.pack(); + } frame.setVisible(true); - }}); + }}); Assert.assertEquals(true, AWTRobotUtil.waitForVisible(frame, true)); - Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glCanvas, true)); - + Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glCanvas, true)); + if( useAnimator ) { animator.start(); Assert.assertTrue(animator.isStarted()); @@ -236,19 +262,19 @@ public class TestGearsES2AWT extends UITestCase { Assert.assertEquals(exclusiveContext ? awtEDT : null, glCanvas.getExclusiveContextThread()); animator.setUpdateFPSFrames(60, System.err); } - + System.err.println("canvas pos/siz: "+glCanvas.getX()+"/"+glCanvas.getY()+" "+glCanvas.getSurfaceWidth()+"x"+glCanvas.getSurfaceHeight()); snap.setMakeSnapshot(); - + if( null != rwsize ) { - Thread.sleep(500); // 500ms delay + Thread.sleep(500); // 500ms delay setSize(resizeBy, frame, true, glCanvas, rwsize); System.err.println("window resize pos/siz: "+glCanvas.getX()+"/"+glCanvas.getY()+" "+glCanvas.getSurfaceWidth()+"x"+glCanvas.getSurfaceHeight()); } - + snap.setMakeSnapshot(); - + final long t0 = System.currentTimeMillis(); long t1 = t0; while(!quitAdapter.shouldQuit() && t1 - t0 < duration) { @@ -258,7 +284,7 @@ public class TestGearsES2AWT extends UITestCase { Assert.assertNotNull(frame); Assert.assertNotNull(glCanvas); - + if( useAnimator ) { Assert.assertNotNull(animator); Assert.assertEquals(exclusiveContext ? awtEDT : null, glCanvas.getExclusiveContextThread()); @@ -317,7 +343,7 @@ public class TestGearsES2AWT extends UITestCase { @Test public void test02_GLES2() throws InterruptedException, InvocationTargetException { if(mainRun) return; - + if( !GLProfile.isAvailable(GLProfile.GLES2) ) { System.err.println("GLES2 n/a"); return; @@ -326,11 +352,11 @@ public class TestGearsES2AWT extends UITestCase { final GLCapabilities caps = new GLCapabilities( glp ); runTestGL(caps, resizeBy, frameLayout); } - + @Test public void test03_GL3() throws InterruptedException, InvocationTargetException { if(mainRun) return; - + if( !GLProfile.isAvailable(GLProfile.GL3) ) { System.err.println("GL3 n/a"); return; @@ -339,16 +365,28 @@ public class TestGearsES2AWT extends UITestCase { final GLCapabilities caps = new GLCapabilities( glp ); runTestGL(caps, resizeBy, frameLayout); } - + public static void main(String args[]) { boolean waitForKey = false; int rw=-1, rh=-1; - + mainRun = true; for(int i=0; i<args.length; i++) { if(args[i].equals("-time")) { i++; duration = MiscUtils.atol(args[i], duration); + } else if(args[i].equals("-width")) { + i++; + width = MiscUtils.atoi(args[i], width); + } else if(args[i].equals("-height")) { + i++; + height = MiscUtils.atoi(args[i], height); + } else if(args[i].equals("-x")) { + i++; + xpos = MiscUtils.atoi(args[i], xpos); + } else if(args[i].equals("-y")) { + i++; + ypos = MiscUtils.atoi(args[i], ypos); } else if(args[i].equals("-rwidth")) { i++; rw = MiscUtils.atoi(args[i], rw); @@ -396,7 +434,7 @@ public class TestGearsES2AWT extends UITestCase { if( 0 < rw && 0 < rh ) { rwsize = new Dimension(rw, rh); } - + System.err.println("resize "+rwsize); System.err.println("frameLayout "+frameLayout); System.err.println("resizeBy "+resizeBy); @@ -406,10 +444,10 @@ public class TestGearsES2AWT extends UITestCase { System.err.println("exclusiveContext "+exclusiveContext); System.err.println("useMSAA "+useMSAA); System.err.println("useAnimator "+useAnimator); - + System.err.println("shallUseOffscreenFBOLayer "+shallUseOffscreenFBOLayer); System.err.println("shallUseOffscreenPBufferLayer "+shallUseOffscreenPBufferLayer); - + if(waitForKey) { BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); System.err.println("Press enter to continue"); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2GLJPanelAWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2GLJPanelAWT.java index 55616c15f..29750973a 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2GLJPanelAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2GLJPanelAWT.java @@ -31,9 +31,12 @@ package com.jogamp.opengl.test.junit.jogl.demos.es2.awt; import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.Dimension; +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; import java.lang.reflect.InvocationTargetException; import javax.media.opengl.GLCapabilities; +import javax.media.opengl.GLCapabilitiesImmutable; import javax.media.opengl.GLProfile; import javax.media.opengl.awt.GLJPanel; import javax.swing.JFrame; @@ -71,6 +74,7 @@ public class TestGearsES2GLJPanelAWT extends UITestCase { static boolean useAnimator = true; static boolean manualTest = false; static boolean skipGLOrientationVerticalFlip = false; + static int xpos = 10, ypos = 10; @BeforeClass public static void initClass() { @@ -98,7 +102,13 @@ public class TestGearsES2GLJPanelAWT extends UITestCase { } } - protected void runTestGL(GLCapabilities caps) + private void setTitle(final JFrame frame, final GLJPanel glc, final GLCapabilitiesImmutable caps) { + final String capsA = caps.isBackgroundOpaque() ? "opaque" : "transl"; + final java.awt.Rectangle b = glc.getBounds(); + frame.setTitle("GLJPanel["+capsA+"], swapI "+swapInterval+", win: ["+b.x+"/"+b.y+" "+b.width+"x"+b.height+"], pix: "+glc.getSurfaceWidth()+"x"+glc.getSurfaceHeight()); + } + + protected void runTestGL(final GLCapabilities caps) throws AWTException, InterruptedException, InvocationTargetException { final JFrame frame = new JFrame("Swing GLJPanel"); @@ -121,6 +131,26 @@ public class TestGearsES2GLJPanelAWT extends UITestCase { } final SnapshotGLEventListener snap = new SnapshotGLEventListener(); glJPanel.addGLEventListener(snap); + setTitle(frame, glJPanel, caps); + frame.setLocation(xpos, ypos); + + frame.addComponentListener(new ComponentListener() { + @Override + public void componentResized(ComponentEvent e) { + setTitle(frame, glJPanel, caps); + } + + @Override + public void componentMoved(ComponentEvent e) { + setTitle(frame, glJPanel, caps); + } + + @Override + public void componentShown(ComponentEvent e) { } + + @Override + public void componentHidden(ComponentEvent e) { } + }); final FPSAnimator animator = useAnimator ? new FPSAnimator(glJPanel, 60) : null; @@ -333,6 +363,12 @@ public class TestGearsES2GLJPanelAWT extends UITestCase { } else if(args[i].equals("-height")) { i++; h = MiscUtils.atoi(args[i], h); + } else if(args[i].equals("-x")) { + i++; + xpos = MiscUtils.atoi(args[i], xpos); + } else if(args[i].equals("-y")) { + i++; + ypos = MiscUtils.atoi(args[i], ypos); } else if(args[i].equals("-rwidth")) { i++; rw = MiscUtils.atoi(args[i], rw); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NEWT.java index a96bb1973..bc6b5e26f 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NEWT.java @@ -117,13 +117,16 @@ public class TestGearsES2NEWT extends UITestCase { public static void releaseClass() { } - protected void runTestGL(GLCapabilitiesImmutable caps, boolean undecorated) throws InterruptedException { + private void setTitle(final Window win, final GLCapabilitiesImmutable caps) { + final String capsA = caps.isBackgroundOpaque() ? "opaque" : "transl"; + win.setTitle("GLWindow["+capsA+"], swapI "+swapInterval+", win: "+win.getBounds()+", pix: "+win.getSurfaceBounds()); + } + protected void runTestGL(final GLCapabilitiesImmutable caps, boolean undecorated) throws InterruptedException { System.err.println("requested: vsync "+swapInterval+", "+caps); Display dpy = NewtFactory.createDisplay(null); Screen screen = NewtFactory.createScreen(dpy, screenIdx); final GLWindow glWindow = GLWindow.create(screen, caps); Assert.assertNotNull(glWindow); - glWindow.setTitle("Gears NEWT Test (translucent "+!caps.isBackgroundOpaque()+"), swapInterval "+swapInterval+", size "+wsize+", pos "+wpos); glWindow.setSize(wsize.getWidth(), wsize.getHeight()); if(null != wpos) { glWindow.setPosition(wpos.getX(), wpos.getY()); @@ -133,6 +136,7 @@ public class TestGearsES2NEWT extends UITestCase { glWindow.setFullscreen(fullscreen); glWindow.setPointerVisible(mouseVisible); glWindow.confinePointer(mouseConfined); + setTitle(glWindow, caps); final GearsES2 demo = new GearsES2(swapInterval); demo.setPMVUseBackingArray(pmvUseBackingArray); @@ -174,9 +178,11 @@ public class TestGearsES2NEWT extends UITestCase { glWindow.addWindowListener(new WindowAdapter() { public void windowResized(WindowEvent e) { System.err.println("window resized: "+glWindow.getX()+"/"+glWindow.getY()+" "+glWindow.getSurfaceWidth()+"x"+glWindow.getSurfaceHeight()); + setTitle(glWindow, caps); } public void windowMoved(WindowEvent e) { System.err.println("window moved: "+glWindow.getX()+"/"+glWindow.getY()+" "+glWindow.getSurfaceWidth()+"x"+glWindow.getSurfaceHeight()); + setTitle(glWindow, caps); } }); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/newt/TestGearsNewtAWTWrapper.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/newt/TestGearsNewtAWTWrapper.java index 4b5cd0376..50e128b21 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/newt/TestGearsNewtAWTWrapper.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/newt/TestGearsNewtAWTWrapper.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,12 +20,12 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.jogl.demos.gl2.newt; import javax.media.nativewindow.*; @@ -89,28 +89,35 @@ public class TestGearsNewtAWTWrapper extends UITestCase { if( useAnimator ) { animator.start(); } - + int div = 3; glWindow.setSize(width/div, height/div); glWindow.setVisible(true); if( doResizeTest ) { glWindow.display(); - Assert.assertTrue("Size not reached: Expected "+(width/div)+"x"+(height/div)+", Is "+glWindow.getSurfaceWidth()+"x"+glWindow.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glWindow, width/div, height/div)); + final int[] expSurfaceSize = glWindow.getNativeSurface().convertToPixelUnits(new int[] { width/div, height/div }); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glWindow.getSurfaceWidth()+"x"+glWindow.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glWindow, expSurfaceSize[0], expSurfaceSize[1])); Thread.sleep(600); - + div = 2; glWindow.setSize(width/div, height/div); glWindow.display(); - Assert.assertTrue("Size not reached: Expected "+(width/div)+"x"+(height/div)+", Is "+glWindow.getSurfaceWidth()+"x"+glWindow.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glWindow, width/div, height/div)); + expSurfaceSize[0] = width/div; + expSurfaceSize[1] = height/div; + glWindow.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glWindow.getSurfaceWidth()+"x"+glWindow.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glWindow, expSurfaceSize[0], expSurfaceSize[1])); Thread.sleep(600); - + div = 1; glWindow.setSize(width/div, height/div); glWindow.display(); - Assert.assertTrue("Size not reached: Expected "+(width/div)+"x"+(height/div)+", Is "+glWindow.getSurfaceWidth()+"x"+glWindow.getSurfaceHeight(), - AWTRobotUtil.waitForSize(glWindow, width/div, height/div)); + expSurfaceSize[0] = width/div; + expSurfaceSize[1] = height/div; + glWindow.getNativeSurface().convertToPixelUnits(expSurfaceSize); + Assert.assertTrue("Surface Size not reached: Expected "+expSurfaceSize[0]+"x"+expSurfaceSize[1]+", Is "+glWindow.getSurfaceWidth()+"x"+glWindow.getSurfaceHeight(), + AWTRobotUtil.waitForSize(glWindow, expSurfaceSize[0], expSurfaceSize[1])); Thread.sleep(600); } diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/newt/TestSwingAWTRobotUsageBeforeJOGLInitBug411.java b/src/test/com/jogamp/opengl/test/junit/jogl/newt/TestSwingAWTRobotUsageBeforeJOGLInitBug411.java index 22154ab58..3bc5159a6 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/newt/TestSwingAWTRobotUsageBeforeJOGLInitBug411.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/newt/TestSwingAWTRobotUsageBeforeJOGLInitBug411.java @@ -34,7 +34,7 @@ import com.jogamp.opengl.test.junit.util.*; import java.lang.reflect.InvocationTargetException; import javax.media.nativewindow.NativeWindowFactory; -import javax.media.nativewindow.util.Rectangle; +import javax.media.nativewindow.util.RectangleImmutable; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLProfile; import javax.media.opengl.GLCapabilities; @@ -271,7 +271,7 @@ public class TestSwingAWTRobotUsageBeforeJOGLInitBug411 extends UITestCase { Assert.assertEquals(true, AWTRobotUtil.waitForRealized(win0, true)); Screen screen = win0.getScreen(); - final Rectangle screenBoundsInWinU = screen.getViewportInWindowUnits(win0); + final RectangleImmutable screenBoundsInWinU = screen.getViewportInWindowUnits(); win0.setPosition(screenBoundsInWinU.getX()-150, 0); win0.addGLEventListener(new GearsES2()); Animator anim = new Animator(win0); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/TestDisplayLifecycle02NEWT.java b/src/test/com/jogamp/opengl/test/junit/newt/TestDisplayLifecycle02NEWT.java index 8c679d209..0679563b8 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/TestDisplayLifecycle02NEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/TestDisplayLifecycle02NEWT.java @@ -34,7 +34,7 @@ import org.junit.Test; import org.junit.FixMethodOrder; import org.junit.runners.MethodSorters; -import javax.media.nativewindow.util.Rectangle; +import javax.media.nativewindow.util.RectangleImmutable; import javax.media.opengl.*; import com.jogamp.newt.*; @@ -241,7 +241,7 @@ public class TestDisplayLifecycle02NEWT extends UITestCase { GLWindow window2 = createWindow(caps, width, height); Assert.assertSame(screen, window2.getScreen()); Assert.assertSame(display, window2.getScreen().getDisplay()); - final Rectangle screenBoundsInWinU = screen.getViewportInWindowUnits(window2); + final RectangleImmutable screenBoundsInWinU = screen.getViewportInWindowUnits(); window2.setPosition(screenBoundsInWinU.getWidth()-width, 0); Assert.assertEquals(0,Display.getActiveDisplayNumber()); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/TestGLWindows02NEWTAnimated.java b/src/test/com/jogamp/opengl/test/junit/newt/TestGLWindows02NEWTAnimated.java index 6bad27384..2987fd389 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/TestGLWindows02NEWTAnimated.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/TestGLWindows02NEWTAnimated.java @@ -36,6 +36,7 @@ import org.junit.FixMethodOrder; import org.junit.runners.MethodSorters; import javax.media.nativewindow.util.Rectangle; +import javax.media.nativewindow.util.RectangleImmutable; import javax.media.opengl.*; import com.jogamp.opengl.util.Animator; @@ -187,7 +188,7 @@ public class TestGLWindows02NEWTAnimated extends UITestCase { GLWindow window2 = createWindow(screen, caps, width-10, height-10, true /* onscreen */, false /* undecorated */, true /* vsync */); Assert.assertNotNull(window2); - final Rectangle screenBoundsInWinU = screen.getViewportInWindowUnits(window2); + final RectangleImmutable screenBoundsInWinU = screen.getViewportInWindowUnits(); window2.setPosition(screenBoundsInWinU.getWidth()-width, 0); Animator animator = new Animator(); @@ -254,7 +255,7 @@ public class TestGLWindows02NEWTAnimated extends UITestCase { Assert.assertNotNull(screen2); GLWindow window2 = createWindow(screen2, caps, width-10, height-10, true /* onscreen */, false /* undecorated */, true /* vsync */); Assert.assertNotNull(window2); - final Rectangle screen2BoundsInWinU = screen2.getViewportInWindowUnits(window2); + final RectangleImmutable screen2BoundsInWinU = screen2.getViewportInWindowUnits(); window2.setPosition(screen2BoundsInWinU.getWidth()-width, 0); Animator animator = new Animator(); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/mm/ManualScreenMode03aNEWT.java b/src/test/com/jogamp/opengl/test/junit/newt/mm/ManualScreenMode03aNEWT.java index 464efa5bb..ee71ba93d 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/mm/ManualScreenMode03aNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/mm/ManualScreenMode03aNEWT.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,12 +20,12 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.newt.mm; import java.io.IOException; @@ -47,13 +47,13 @@ import java.util.List; import javax.media.nativewindow.util.Dimension; /** - * Manual testing the ScreenImpl shutdown hook, + * Manual testing the ScreenImpl shutdown hook, * which shall reset the ScreenMode to it's original state * when the application exists (normal or ctrl-c). */ public class ManualScreenMode03aNEWT extends UITestCase { static int waitTime = 7000; // 1 sec - + static GLWindow createWindow(Screen screen, GLCapabilities caps, int width, int height, boolean onscreen, boolean undecorated) { caps.setOnscreen(onscreen); @@ -73,28 +73,27 @@ public class ManualScreenMode03aNEWT extends UITestCase { Screen screen = NewtFactory.createScreen(display, 0); // screen 0 GLWindow window = createWindow(screen, caps, width, height, true /* onscreen */, false /* undecorated */); - List<MonitorMode> monitorModes = screen.getMonitorModes(); - if(null==monitorModes) { - // no support .. - System.err.println("Your platform has no ScreenMode change support, sorry"); - return; - } Animator animator = new Animator(window); animator.start(); MonitorDevice monitor = window.getMainMonitor(); + MonitorMode mmCurrent = monitor.queryCurrentMode(); MonitorMode mmOrig = monitor.getOriginalMode(); System.err.println("[0] orig : "+mmOrig); System.err.println("[0] current: "+mmCurrent); - + List<MonitorMode> monitorModes = monitor.getSupportedModes(); + if(null==monitorModes) { + // no support .. + System.err.println("Your platform has no ScreenMode change support, sorry"); + return; + } monitorModes = MonitorModeUtil.filterByFlags(monitorModes, 0); // no interlace, double-scan etc monitorModes = MonitorModeUtil.filterByRotation(monitorModes, 0); monitorModes = MonitorModeUtil.filterByResolution(monitorModes, new Dimension(801, 601)); monitorModes = MonitorModeUtil.filterByRate(monitorModes, mmOrig.getRefreshRate()); monitorModes = MonitorModeUtil.getHighestAvailableBpp(monitorModes); - - MonitorMode mm = (MonitorMode) monitorModes.get(0); + MonitorMode mm = monitorModes.get(0); System.err.println("[0] set current: "+mm); monitor.setCurrentMode(mm); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode00aNEWT.java b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode00aNEWT.java index 93e005b53..c00f02e7e 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode00aNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode00aNEWT.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,12 +20,12 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.newt.mm; import java.io.IOException; @@ -68,11 +68,11 @@ import jogamp.newt.MonitorModeProps; public class TestScreenMode00aNEWT extends UITestCase { static int screenIdx = 0; static int width, height; - + static int waitTimeShort = 4; //1 sec static int waitTimeLong = 6; //6 sec - - + + @BeforeClass public static void initClass() { @@ -88,38 +88,39 @@ public class TestScreenMode00aNEWT extends UITestCase { final DimensionImmutable res = new Dimension(640, 480); final SurfaceSize surfsz = new SurfaceSize(res, 32); final MonitorMode modeOut = new MonitorMode(surfsz, 60.0f, 0, 0); - System.err.println("00 out: "+modeOut); - final MonitorModeProps.Cache cache = new MonitorModeProps.Cache(); + System.err.println("00 out: "+modeOut); + final MonitorModeProps.Cache cache = new MonitorModeProps.Cache(); cache.monitorModes.add(modeOut); { final int[] props = MonitorModeProps.streamOutMonitorMode(modeOut); final MonitorMode modeIn = MonitorModeProps.streamInMonitorMode(null, cache, props, 0); System.err.println("00 in : "+modeIn); - + Assert.assertEquals(modeOut.getSurfaceSize().getResolution(), modeIn.getSurfaceSize().getResolution()); - + Assert.assertEquals(modeOut.getSurfaceSize(), modeIn.getSurfaceSize()); - + Assert.assertEquals(modeOut.hashCode(), modeIn.hashCode()); - - Assert.assertEquals(modeOut, modeIn); + + Assert.assertEquals(modeOut, modeIn); } - + final DimensionImmutable sizeMM = new Dimension(50, 50); final Rectangle viewport = new Rectangle(0, 0, 1920, 1080); final ArrayHashSet<MonitorMode> supportedModes = new ArrayHashSet<MonitorMode>(); supportedModes.add(modeOut); - final MonitorDevice monOut = new MonitorDeviceImpl(null, -1, sizeMM, viewport, modeOut, supportedModes); + final MonitorDevice monOut = new MonitorDeviceImpl(null, -1, sizeMM, viewport, viewport, modeOut, supportedModes); System.err.println("01 out : "+monOut); cache.monitorDevices.add(monOut); { final int[] props = MonitorModeProps.streamOutMonitorDevice(monOut); final MonitorDevice monIn = MonitorModeProps.streamInMonitorDevice(null, cache, null, props, 0); System.err.println("01 in : "+monIn); - - Assert.assertEquals(monOut.getCurrentMode(), monOut.getOriginalMode()); + + Assert.assertEquals(monOut.getCurrentMode(), monOut.getOriginalMode()); Assert.assertEquals(monOut.getSupportedModes(), monIn.getSupportedModes()); Assert.assertEquals(monOut.getViewport(), monIn.getViewport()); + Assert.assertEquals(monOut.getViewportInWindowUnits(), monIn.getViewportInWindowUnits()); Assert.assertEquals(monOut.getOriginalMode(), monIn.getOriginalMode()); Assert.assertEquals(monOut.getCurrentMode(), monIn.getCurrentMode()); Assert.assertEquals(monOut.hashCode(), monIn.hashCode()); @@ -162,7 +163,7 @@ public class TestScreenMode00aNEWT extends UITestCase { mmPre = mm; } } - + List<MonitorDevice> monitors = screen.getMonitorDevices(); Assert.assertTrue(monitors.size()>0); int j=0; @@ -184,7 +185,7 @@ public class TestScreenMode00aNEWT extends UITestCase { Assert.assertTrue(allMonitorModes.containsAll(modes)); MonitorMode sm_o = monitor.getOriginalMode(); - Assert.assertNotNull(sm_o); + Assert.assertNotNull(sm_o); MonitorMode sm_c = monitor.queryCurrentMode(); System.err.println("[0] orig : "+sm_o); System.err.println("[0] current: "+sm_c); @@ -203,7 +204,7 @@ public class TestScreenMode00aNEWT extends UITestCase { return Integer.parseInt(a); } catch (Exception ex) { throw new RuntimeException(ex); } } - + public static void main(String args[]) throws IOException { for(int i=0; i<args.length; i++) { if(args[i].equals("-screen")) { diff --git a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode00cNEWT.java b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode00cNEWT.java index de856e569..3a5e96880 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode00cNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode00cNEWT.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,15 +20,16 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.newt.mm; import java.io.IOException; + import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLProfile; @@ -56,6 +57,7 @@ import java.util.List; import javax.media.nativewindow.NativeWindowFactory; import javax.media.nativewindow.util.Dimension; +import javax.media.nativewindow.util.Rectangle; /** * Tests X11 XRandR MonitorMode reset via {@link UITestCase#resetXRandRIfX11()}. @@ -65,10 +67,13 @@ public class TestScreenMode00cNEWT extends UITestCase { static boolean manualTest = false; static GLProfile glp; static int width, height; - + static final int waitTimeShort = 2000; static long duration = waitTimeShort; + static int mm_width = 800; + static int mm_height = 600; + @BeforeClass public static void initClass() { setResetXRandRIfX11AfterClass(); @@ -86,7 +91,7 @@ public class TestScreenMode00cNEWT extends UITestCase { public static void releaseClass() throws InterruptedException { Thread.sleep(waitTimeShort); } - + static Window createWindow(Screen screen, GLCapabilities caps, String name, int x, int y, int width, int height) { Assert.assertNotNull(caps); @@ -107,7 +112,7 @@ public class TestScreenMode00cNEWT extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForRealized(window, false)); } } - + @Test public void testScreenModeChange01() throws InterruptedException { Thread.sleep(waitTimeShort); @@ -119,7 +124,13 @@ public class TestScreenMode00cNEWT extends UITestCase { final Screen screen = NewtFactory.createScreen(display, 0); // screen 0 Assert.assertNotNull(screen); final Window window0 = createWindow(screen, caps, "win0", 0, 0, width, height); - Assert.assertNotNull(window0); + Assert.assertNotNull(window0); + + Rectangle window0WindowBounds = window0.getBounds(); + Rectangle window0SurfaceBounds = window0.getSurfaceBounds(); + System.err.println("Test.0: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.0: Window bounds : "+window0SurfaceBounds+" [pixels]"); + System.err.println("Test.0: Screen viewport : "+screen.getViewport()+" [pixels]"); final List<MonitorMode> allMonitorModes = screen.getMonitorModes(); Assert.assertTrue(allMonitorModes.size()>0); @@ -131,7 +142,6 @@ public class TestScreenMode00cNEWT extends UITestCase { } final MonitorDevice monitor = screen.getMonitorDevices().get(0); - List<MonitorMode> monitorModes = monitor.getSupportedModes(); Assert.assertTrue(monitorModes.size()>0); if(monitorModes.size()==1) { @@ -141,7 +151,7 @@ public class TestScreenMode00cNEWT extends UITestCase { return; } Assert.assertTrue(allMonitorModes.containsAll(monitorModes)); - + final MonitorMode mmSet0 = monitor.queryCurrentMode(); Assert.assertNotNull(mmSet0); final MonitorMode mmOrig = monitor.getOriginalMode(); @@ -149,7 +159,7 @@ public class TestScreenMode00cNEWT extends UITestCase { System.err.println("[0] orig : "+mmOrig); System.err.println("[0] current: "+mmSet0); Assert.assertEquals(mmSet0, mmOrig); - + monitorModes = MonitorModeUtil.filterByFlags(monitorModes, 0); // no interlace, double-scan etc Assert.assertNotNull(monitorModes); @@ -157,13 +167,13 @@ public class TestScreenMode00cNEWT extends UITestCase { monitorModes = MonitorModeUtil.filterByRotation(monitorModes, 0); Assert.assertNotNull(monitorModes); Assert.assertTrue(monitorModes.size()>0); - monitorModes = MonitorModeUtil.filterByResolution(monitorModes, new Dimension(801, 601)); + monitorModes = MonitorModeUtil.filterByResolution(monitorModes, new Dimension(mm_width+1, mm_height+1)); Assert.assertNotNull(monitorModes); Assert.assertTrue(monitorModes.size()>0); monitorModes = MonitorModeUtil.filterByRate(monitorModes, mmOrig.getRefreshRate()); - Assert.assertNotNull(monitorModes); + Assert.assertNotNull(monitorModes); Assert.assertTrue(monitorModes.size()>0); - + monitorModes = MonitorModeUtil.getHighestAvailableBpp(monitorModes); Assert.assertNotNull(monitorModes); Assert.assertTrue(monitorModes.size()>0); @@ -171,14 +181,24 @@ public class TestScreenMode00cNEWT extends UITestCase { // set mode { MonitorMode mm = monitorModes.get(0); - System.err.println("[0] set current: "+mm); + System.err.println("[1] set current: "+mm); final boolean smOk = monitor.setCurrentMode(mm); - MonitorMode mmCurrent = monitor.getCurrentMode(); - System.err.println("[0] has current: "+mmCurrent+", changeOK "+smOk); + MonitorMode mmCachedCurrent = monitor.getCurrentMode(); + MonitorMode mmQueriedCurrent = monitor.queryCurrentMode(); + boolean mmCurrentEquals = mmQueriedCurrent.equals(mmCachedCurrent); + System.err.println("[1] changeOK : "+smOk); + System.err.println("[1] has current cached : "+mmCachedCurrent); + System.err.println("[1] has current queried : "+mmQueriedCurrent+", equal "+mmCurrentEquals); + window0WindowBounds = window0.getBounds(); + window0SurfaceBounds = window0.getSurfaceBounds(); + System.err.println("Test.1: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.1: Window bounds : "+window0SurfaceBounds+" [pixels]"); + System.err.println("Test.1: Screen viewport : "+screen.getViewport()+" [pixels]"); + Assert.assertTrue(monitor.isModeChangedByUs()); - Assert.assertEquals(mm, mmCurrent); - Assert.assertNotSame(mmOrig, mmCurrent); - Assert.assertEquals(mmCurrent, monitor.queryCurrentMode()); + Assert.assertEquals(mm, mmCachedCurrent); + Assert.assertNotSame(mmOrig, mmCachedCurrent); + Assert.assertEquals(mmCachedCurrent, mmQueriedCurrent); Assert.assertTrue(smOk); } @@ -193,13 +213,13 @@ public class TestScreenMode00cNEWT extends UITestCase { UITestCase.resetXRandRIfX11(); System.err.println("XRandR Reset :"+monitor.queryCurrentMode()); validateScreenModeReset0(mmOrig); - + destroyWindow(window0); Thread.sleep(waitTimeShort); validateScreenModeReset(mmOrig); } - + void validateScreenModeReset0(final MonitorMode mmOrig) { final Display display = NewtFactory.createDisplay(null); // local display Assert.assertNotNull(display); @@ -208,10 +228,10 @@ public class TestScreenMode00cNEWT extends UITestCase { screen.addReference(); Assert.assertEquals(true,display.isNativeValid()); Assert.assertEquals(true,screen.isNativeValid()); - + final MonitorDevice monitor = screen.getMonitorDevices().get(0); Assert.assertEquals(mmOrig, monitor.queryCurrentMode()); - + screen.removeReference(); } void validateScreenModeReset(final MonitorMode mmOrig) { @@ -224,10 +244,10 @@ public class TestScreenMode00cNEWT extends UITestCase { screen.addReference(); Assert.assertEquals(true,display.isNativeValid()); Assert.assertEquals(true,screen.isNativeValid()); - + final MonitorDevice monitor = screen.getMonitorDevices().get(0); Assert.assertEquals(mmOrig, monitor.getCurrentMode()); - + screen.removeReference(); Assert.assertEquals(false,display.isNativeValid()); Assert.assertEquals(false,screen.isNativeValid()); @@ -239,8 +259,15 @@ public class TestScreenMode00cNEWT extends UITestCase { if(args[i].equals("-time")) { i++; duration = MiscUtils.atol(args[i], duration); + } else if(args[i].equals("-mwidth")) { + i++; + mm_width = MiscUtils.atoi(args[i], mm_width); + } else if(args[i].equals("-mheight")) { + i++; + mm_height = MiscUtils.atoi(args[i], mm_height); } } + System.err.println("Desired mode w/ resolution "+mm_width+"x"+mm_height); String tstname = TestScreenMode00cNEWT.class.getName(); org.junit.runner.JUnitCore.main(tstname); } diff --git a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01aNEWT.java b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01aNEWT.java index 0f3dbeefc..808571d05 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01aNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01aNEWT.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,15 +20,16 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.opengl.test.junit.newt.mm; import java.io.IOException; + import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLProfile; @@ -49,10 +50,13 @@ import com.jogamp.newt.opengl.GLWindow; import com.jogamp.newt.util.MonitorModeUtil; import com.jogamp.opengl.test.junit.jogl.demos.es2.GearsES2; import com.jogamp.opengl.test.junit.util.AWTRobotUtil; +import com.jogamp.opengl.test.junit.util.MiscUtils; import com.jogamp.opengl.test.junit.util.UITestCase; import java.util.List; + import javax.media.nativewindow.util.Dimension; +import javax.media.nativewindow.util.Rectangle; /** * <p> @@ -62,16 +66,19 @@ import javax.media.nativewindow.util.Dimension; * <p> * Documents remedy B) for NV RANDR/GL bug * </p> - * + * * @see TestScreenMode01dNEWT#cleanupGL() */ @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestScreenMode01aNEWT extends UITestCase { static GLProfile glp; static int width, height; - - static int waitTimeShort = 2000; - static int waitTimeLong = 2000; + + static long waitTimeShort = 2000; + static long duration = 2000; + + static int mm_width = 800; + static int mm_height = 600; @BeforeClass public static void initClass() { @@ -85,7 +92,7 @@ public class TestScreenMode01aNEWT extends UITestCase { public static void releaseClass() throws InterruptedException { Thread.sleep(waitTimeShort); } - + static Window createWindow(Screen screen, GLCapabilities caps, String name, int x, int y, int width, int height) { Assert.assertNotNull(caps); @@ -106,7 +113,7 @@ public class TestScreenMode01aNEWT extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForRealized(window, false)); } } - + @Test public void testScreenModeChange01() throws InterruptedException { Thread.sleep(waitTimeShort); @@ -118,7 +125,16 @@ public class TestScreenMode01aNEWT extends UITestCase { final Screen screen = NewtFactory.createScreen(display, 0); // screen 0 Assert.assertNotNull(screen); final Window window0 = createWindow(screen, caps, "win0", 0, 0, width, height); - Assert.assertNotNull(window0); + Assert.assertNotNull(window0); + + final MonitorDevice monitor = screen.getMonitorDevices().get(0); + + Rectangle window0WindowBounds = window0.getBounds(); + Rectangle window0SurfaceBounds = window0.getSurfaceBounds(); + System.err.println("Test.0: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.0: Window bounds : "+window0SurfaceBounds+" [pixels]"); + System.err.println("Test.0: Screen viewport : "+screen.getViewport()+" [pixels], "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.0: Monitor viewport : "+monitor.getViewport()+" [pixels], "+monitor.getViewportInWindowUnits()+" [wu]"); final List<MonitorMode> allMonitorModes = screen.getMonitorModes(); Assert.assertTrue(allMonitorModes.size()>0); @@ -129,8 +145,6 @@ public class TestScreenMode01aNEWT extends UITestCase { return; } - final MonitorDevice monitor = screen.getMonitorDevices().get(0); - List<MonitorMode> monitorModes = monitor.getSupportedModes(); Assert.assertTrue(monitorModes.size()>0); if(monitorModes.size()==1) { @@ -140,7 +154,7 @@ public class TestScreenMode01aNEWT extends UITestCase { return; } Assert.assertTrue(allMonitorModes.containsAll(monitorModes)); - + final MonitorMode mmSet0 = monitor.queryCurrentMode(); Assert.assertNotNull(mmSet0); final MonitorMode mmOrig = monitor.getOriginalMode(); @@ -148,7 +162,7 @@ public class TestScreenMode01aNEWT extends UITestCase { System.err.println("[0] orig : "+mmOrig); System.err.println("[0] current: "+mmSet0); Assert.assertEquals(mmSet0, mmOrig); - + monitorModes = MonitorModeUtil.filterByFlags(monitorModes, 0); // no interlace, double-scan etc Assert.assertNotNull(monitorModes); @@ -156,13 +170,13 @@ public class TestScreenMode01aNEWT extends UITestCase { monitorModes = MonitorModeUtil.filterByRotation(monitorModes, 0); Assert.assertNotNull(monitorModes); Assert.assertTrue(monitorModes.size()>0); - monitorModes = MonitorModeUtil.filterByResolution(monitorModes, new Dimension(801, 601)); + monitorModes = MonitorModeUtil.filterByResolution(monitorModes, new Dimension(mm_width+1, mm_height+1)); Assert.assertNotNull(monitorModes); Assert.assertTrue(monitorModes.size()>0); monitorModes = MonitorModeUtil.filterByRate(monitorModes, mmOrig.getRefreshRate()); - Assert.assertNotNull(monitorModes); + Assert.assertNotNull(monitorModes); Assert.assertTrue(monitorModes.size()>0); - + monitorModes = MonitorModeUtil.getHighestAvailableBpp(monitorModes); Assert.assertNotNull(monitorModes); Assert.assertTrue(monitorModes.size()>0); @@ -170,18 +184,29 @@ public class TestScreenMode01aNEWT extends UITestCase { // set mode { MonitorMode mm = monitorModes.get(0); - System.err.println("[0] set current: "+mm); + System.err.println("[1] set current: "+mm); final boolean smOk = monitor.setCurrentMode(mm); - MonitorMode mmCurrent = monitor.getCurrentMode(); - System.err.println("[0] has current: "+mmCurrent+", changeOK "+smOk); + MonitorMode mmCachedCurrent = monitor.getCurrentMode(); + MonitorMode mmQueriedCurrent = monitor.queryCurrentMode(); + boolean mmCurrentEquals = mmQueriedCurrent.equals(mmCachedCurrent); + System.err.println("[1] changeOK : "+smOk); + System.err.println("[1] has current cached : "+mmCachedCurrent); + System.err.println("[1] has current queried : "+mmQueriedCurrent+", equal "+mmCurrentEquals); + window0WindowBounds = window0.getBounds(); + window0SurfaceBounds = window0.getSurfaceBounds(); + System.err.println("Test.1: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.1: Window bounds : "+window0SurfaceBounds+" [pixels]"); + System.err.println("Test.1: Screen viewport : "+screen.getViewport()+" [pixels], "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.1: Monitor viewport : "+monitor.getViewport()+" [pixels], "+monitor.getViewportInWindowUnits()+" [wu]"); + Assert.assertTrue(monitor.isModeChangedByUs()); - Assert.assertEquals(mm, mmCurrent); - Assert.assertNotSame(mmOrig, mmCurrent); - Assert.assertEquals(mmCurrent, monitor.queryCurrentMode()); + Assert.assertEquals(mm, mmCachedCurrent); + Assert.assertNotSame(mmOrig, mmCachedCurrent); + Assert.assertEquals(mmCachedCurrent, monitor.queryCurrentMode()); Assert.assertTrue(smOk); } - Thread.sleep(waitTimeShort); + Thread.sleep(duration); Assert.assertEquals(true,display.isNativeValid()); Assert.assertEquals(true,screen.isNativeValid()); @@ -196,12 +221,12 @@ public class TestScreenMode01aNEWT extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForRealized(screen, false)); Assert.assertEquals(false,screen.isNativeValid()); Assert.assertEquals(false,display.isNativeValid()); - + Thread.sleep(waitTimeShort); - + validateScreenModeReset(mmOrig, 0); } - + void validateScreenModeReset(final MonitorMode mmOrig, int mmIdx) { final Display display = NewtFactory.createDisplay(null); // local display Assert.assertNotNull(display); @@ -212,16 +237,29 @@ public class TestScreenMode01aNEWT extends UITestCase { screen.addReference(); Assert.assertEquals(true,display.isNativeValid()); Assert.assertEquals(true,screen.isNativeValid()); - + final MonitorDevice monitor = screen.getMonitorDevices().get(0); Assert.assertEquals(mmOrig, monitor.getCurrentMode()); - + screen.removeReference(); Assert.assertEquals(false,display.isNativeValid()); Assert.assertEquals(false,screen.isNativeValid()); } public static void main(String args[]) throws IOException { + for(int i=0; i<args.length; i++) { + if(args[i].equals("-time")) { + i++; + duration = MiscUtils.atol(args[i], duration); + } else if(args[i].equals("-mwidth")) { + i++; + mm_width = MiscUtils.atoi(args[i], mm_width); + } else if(args[i].equals("-mheight")) { + i++; + mm_height = MiscUtils.atoi(args[i], mm_height); + } + } + System.err.println("Desired mode w/ resolution "+mm_width+"x"+mm_height); String tstname = TestScreenMode01aNEWT.class.getName(); org.junit.runner.JUnitCore.main(tstname); } diff --git a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01bNEWT.java b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01bNEWT.java index ac5e7e53c..6bf9831dc 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01bNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01bNEWT.java @@ -156,9 +156,10 @@ public class TestScreenMode01bNEWT extends UITestCase { GLWindow window0 = createWindow(screen, caps, "win0", screenXPos, screenYPos, width, height); Assert.assertNotNull(window0); - Rectangle window0ScreenRect = window0.getSurfaceBounds(); - System.err.println("Test.0: Window bounds: "+window0.getX()+"/"+window0.getY()+" "+window0.getWindowWidth()+"x"+window0.getWindowHeight()+" [wu] within "+screen.getViewportInWindowUnits(window0)+" [wu]"); - System.err.println("Test.0: Window screenRect: "+window0ScreenRect+" [pixels]"); + Rectangle window0WindowBounds = window0.getBounds(); + Rectangle window0SurfaceBounds = window0.getSurfaceBounds(); + System.err.println("Test.0: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.0: Window bounds : "+window0SurfaceBounds+" [pixels]"); final Animator anim = new Animator(window0); anim.start(); @@ -224,12 +225,13 @@ public class TestScreenMode01bNEWT extends UITestCase { Assert.assertTrue(smOk); } - window0ScreenRect = window0.getSurfaceBounds(); + window0WindowBounds = window0.getBounds(); + window0SurfaceBounds = window0.getSurfaceBounds(); System.err.println("Test.1: Screen : "+screen); - System.err.println("Test.1: Window bounds : "+window0.getX()+"/"+window0.getY()+" "+window0.getWindowWidth()+"x"+window0.getWindowHeight()+" [wu] within "+screen.getViewportInWindowUnits(window0)+" [wu]"); - System.err.println("Test.1: Window screenRect: "+window0ScreenRect+" [pixels]"); + System.err.println("Test.1: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.1: Window bounds : "+window0SurfaceBounds+" [pixels]"); System.err.println("Test.1: Screen viewport : "+screen.getViewport()+" [pixels]"); - System.err.println("Test.1: Window monitor : "+monitor.getViewport()+" [pixels]"); + System.err.println("Test.1: Monitor viewport : "+monitor.getViewport()+" [pixels], "+monitor.getViewportInWindowUnits()+" [wu]"); System.err.println("Test.1: Window main-mon : "+window0.getMainMonitor()); Thread.sleep(duration); @@ -250,11 +252,13 @@ public class TestScreenMode01bNEWT extends UITestCase { Assert.assertTrue(smOk); } + window0WindowBounds = window0.getBounds(); + window0SurfaceBounds = window0.getSurfaceBounds(); System.err.println("Test.2: Screen : "+screen); - System.err.println("Test.2: Window bounds : "+window0.getX()+"/"+window0.getY()+" "+window0.getWindowWidth()+"x"+window0.getWindowHeight()+" [wu] within "+screen.getViewportInWindowUnits(window0)+" [wu]"); - System.err.println("Test.2: Window screenRect: "+window0ScreenRect+" [pixels]"); + System.err.println("Test.2: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.2: Window bounds : "+window0SurfaceBounds+" [pixels]"); System.err.println("Test.2: Screen viewport : "+screen.getViewport()+" [pixels]"); - System.err.println("Test.2: Window monitor : "+monitor.getViewport()+" [pixels]"); + System.err.println("Test.2: Monitor viewport : "+monitor.getViewport()+" [pixels], "+monitor.getViewportInWindowUnits()+" [wu]"); System.err.println("Test.2: Window main-mon : "+window0.getMainMonitor()); Thread.sleep(duration); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01cNEWT.java b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01cNEWT.java index b48d582ed..986f92273 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01cNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01cNEWT.java @@ -103,7 +103,7 @@ public class TestScreenMode01cNEWT extends UITestCase { static void destroyWindow(Window window) throws InterruptedException { if(null!=window) { window.destroy(); - Assert.assertTrue(AWTRobotUtil.waitForRealized(window, false)); + AWTRobotUtil.waitForRealized(window, false); // don't override a previous assertion failure } } @@ -119,7 +119,7 @@ public class TestScreenMode01cNEWT extends UITestCase { testScreenFullscreenImpl(screen, monitorVp.getX(), monitorVp.getY(), false, null); } finally { screen.removeReference(); - Assert.assertTrue(AWTRobotUtil.waitForRealized(screen, false)); + AWTRobotUtil.waitForRealized(screen, false); // don't override a previous assertion failure } } @@ -139,7 +139,7 @@ public class TestScreenMode01cNEWT extends UITestCase { testScreenFullscreenImpl(screen, monitorVp.getX(), monitorVp.getY(), false, null); } finally { screen.removeReference(); - Assert.assertTrue(AWTRobotUtil.waitForRealized(screen, false)); + AWTRobotUtil.waitForRealized(screen, false); // don't override a previous assertion failure } } @@ -151,9 +151,8 @@ public class TestScreenMode01cNEWT extends UITestCase { Assert.assertNotNull(screen); screen.addReference(); // trigger creation try { - final int crtCount = screen.getMonitorDevices().size(); - if( 2 >= crtCount ) { - System.err.println("Test Disabled (2): Spanning monitor count "+2+" >= screen monitor count: "+screen); + if( 2 > screen.getMonitorDevices().size() ) { + System.err.println("Test Disabled (2): Spanning monitor count < 2: "+screen); return; } final ArrayList<MonitorDevice> monitors = new ArrayList<MonitorDevice>(); @@ -163,7 +162,7 @@ public class TestScreenMode01cNEWT extends UITestCase { testScreenFullscreenImpl(screen, monitorVp.getX()+50, monitorVp.getY()+50, true, monitors); } finally { screen.removeReference(); - Assert.assertTrue(AWTRobotUtil.waitForRealized(screen, false)); + AWTRobotUtil.waitForRealized(screen, false); // don't override a previous assertion failure } } @@ -183,7 +182,7 @@ public class TestScreenMode01cNEWT extends UITestCase { testScreenFullscreenImpl(screen, monitorVp.getX()-50, monitorVp.getY()+50, true, null); } finally { screen.removeReference(); - Assert.assertTrue(AWTRobotUtil.waitForRealized(screen, false)); + AWTRobotUtil.waitForRealized(screen, false); // don't override a previous assertion failure } } @@ -201,9 +200,10 @@ public class TestScreenMode01cNEWT extends UITestCase { GLWindow window0 = createWindow(screen, caps, "win0", screenXPos, screenYPos, width, height); Assert.assertNotNull(window0); - Rectangle window0ScreenRect = window0.getSurfaceBounds(); - System.err.println("Test.0: Window bounds : "+window0.getX()+"/"+window0.getY()+" "+window0.getWindowWidth()+"x"+window0.getWindowHeight()+" [wu] within "+screen.getViewportInWindowUnits(window0)+" [wu]"); - System.err.println("Test.0: Window screenRect: "+window0ScreenRect+" [pixels]"); + Rectangle window0WindowBounds = window0.getBounds(); + Rectangle window0SurfaceBounds = window0.getSurfaceBounds(); + System.err.println("Test.0: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.0: Window bounds : "+window0SurfaceBounds+" [pixels]"); System.err.println("Test.0: Screen viewport : "+screen.getViewport()+" [pixels]"); final Animator anim = new Animator(window0); @@ -221,32 +221,35 @@ public class TestScreenMode01cNEWT extends UITestCase { } monitor = window0.getMainMonitor(); - window0ScreenRect = window0.getSurfaceBounds(); - System.err.println("Test.1: Window bounds : "+window0.getX()+"/"+window0.getY()+" "+window0.getWindowWidth()+"x"+window0.getWindowHeight()+" [wu] within "+screen.getViewportInWindowUnits(window0)+" [wu]"); - System.err.println("Test.1: Window screenRect: "+window0ScreenRect+" [pixels]"); + window0WindowBounds = window0.getBounds(); + window0SurfaceBounds = window0.getSurfaceBounds(); + System.err.println("Test.1: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.1: Window bounds : "+window0SurfaceBounds+" [pixels]"); System.err.println("Test.1: Screen viewport : "+screen.getViewport()+" [pixels]"); - System.err.println("Test.1: Window monitor : "+monitor.getViewport()+" [pixels]"); + System.err.println("Test.1: Monitor viewport : "+monitor.getViewport()+" [pixels], "+monitor.getViewportInWindowUnits()+" [wu]"); if( !spanAcrossMonitors ) { - Assert.assertEquals(monitor.getViewport(), window0ScreenRect); + Assert.assertEquals(monitor.getViewportInWindowUnits(), window0WindowBounds); } else { List<MonitorDevice> monitorsUsed = monitors; if( null == monitorsUsed ) { monitorsUsed = window0.getScreen().getMonitorDevices(); } - Rectangle monitorsUsedViewport = MonitorDevice.unionOfViewports(new Rectangle(), monitorsUsed); - Assert.assertEquals(monitorsUsedViewport, window0ScreenRect); + Rectangle monitorsUsedViewport = new Rectangle(); + MonitorDevice.unionOfViewports(null, monitorsUsedViewport, monitorsUsed); + Assert.assertEquals(monitorsUsedViewport, window0WindowBounds); } Thread.sleep(duration); window0.setFullscreen(false); - window0ScreenRect = window0.getSurfaceBounds(); + window0WindowBounds = window0.getBounds(); + window0SurfaceBounds = window0.getSurfaceBounds(); monitor = window0.getMainMonitor(); - System.err.println("Test.2: Window bounds : "+window0.getX()+"/"+window0.getY()+" "+window0.getWindowWidth()+"x"+window0.getWindowHeight()+" [wu] within "+screen.getViewportInWindowUnits(window0)+" [wu]"); - System.err.println("Test.2: Window screenRect: "+window0ScreenRect+" [pixels]"); + System.err.println("Test.2: Window bounds : "+window0WindowBounds+" [wu] within "+screen.getViewportInWindowUnits()+" [wu]"); + System.err.println("Test.2: Window bounds : "+window0SurfaceBounds+" [pixels]"); System.err.println("Test.2: Screen viewport : "+screen.getViewport()+" [pixels]"); - System.err.println("Test.2: Window monitor : "+monitor.getViewport()+" [pixels]"); + System.err.println("Test.2: Monitor viewport : "+monitor.getViewport()+" [pixels], "+monitor.getViewportInWindowUnits()+" [wu]"); Thread.sleep(duration); anim.stop(); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01dNEWT.java b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01dNEWT.java index d9ea39365..d03306c4f 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01dNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/mm/TestScreenMode01dNEWT.java @@ -55,7 +55,6 @@ import com.jogamp.opengl.test.junit.util.UITestCase; import java.util.List; import javax.media.nativewindow.util.Dimension; -import javax.media.nativewindow.util.Rectangle; import javax.media.nativewindow.util.RectangleImmutable; /** @@ -164,8 +163,8 @@ public class TestScreenMode01dNEWT extends UITestCase { final MonitorDevice monitor = window.getMainMonitor(); Assert.assertEquals(false, window.isFullscreen()); - Assert.assertEquals(width, window.getSurfaceWidth()); - Assert.assertEquals(height, window.getSurfaceHeight()); + Assert.assertEquals(width, window.getWindowWidth()); + Assert.assertEquals(height, window.getWindowHeight()); window.setFullscreen(true); Assert.assertEquals(true, window.isFullscreen()); @@ -176,8 +175,8 @@ public class TestScreenMode01dNEWT extends UITestCase { window.setFullscreen(false); Assert.assertEquals(false, window.isFullscreen()); - Assert.assertEquals(width, window.getSurfaceWidth()); - Assert.assertEquals(height, window.getSurfaceHeight()); + Assert.assertEquals(width, window.getWindowWidth()); + Assert.assertEquals(height, window.getWindowHeight()); Thread.sleep(waitTimeShort); @@ -210,8 +209,8 @@ public class TestScreenMode01dNEWT extends UITestCase { GLWindow window = createWindow(screen, caps, width, height, true /* onscreen */, false /* undecorated */); Assert.assertNotNull(window); - final RectangleImmutable screenRect = window.getSurfaceBounds(); - final MonitorDevice monitor = screen.getMainMonitor( screenRect ); + final RectangleImmutable winRect = window.getBounds(); + final MonitorDevice monitor = screen.getMainMonitor( winRect ); List<MonitorMode> monitorModes = monitor.getSupportedModes(); Assert.assertTrue(monitorModes.size()>0); @@ -284,7 +283,7 @@ public class TestScreenMode01dNEWT extends UITestCase { Assert.assertEquals(false,screen.isNativeValid()); Assert.assertEquals(false,display.isNativeValid()); - validateScreenModeReset(mmOrig, screenRect); + validateScreenModeReset(mmOrig, winRect); cleanupGL(); } @@ -308,8 +307,8 @@ public class TestScreenMode01dNEWT extends UITestCase { Animator animator = new Animator(window); animator.start(); - final RectangleImmutable screenRect = window.getSurfaceBounds(); - final MonitorDevice monitor = screen.getMainMonitor(screenRect); + final RectangleImmutable winRect = window.getBounds(); + final MonitorDevice monitor = screen.getMainMonitor(winRect); MonitorMode mmCurrent = monitor.queryCurrentMode(); Assert.assertNotNull(mmCurrent); MonitorMode mmOrig = monitor.getOriginalMode(); @@ -335,20 +334,20 @@ public class TestScreenMode01dNEWT extends UITestCase { Assert.assertNotNull(monitorMode); if(preFS) { - System.err.println("[0] set FS pre 0: "+window.isFullscreen()); + System.err.println("[1] set FS pre 0: "+window.isFullscreen()); window.setFullscreen(true); - System.err.println("[0] set FS pre 1: "+window.isFullscreen()); + System.err.println("[1] set FS pre 1: "+window.isFullscreen()); Assert.assertEquals(true, window.isFullscreen()); - System.err.println("[0] set FS pre X: "+window.isFullscreen()); + System.err.println("[1] set FS pre X: "+window.isFullscreen()); } Thread.sleep(waitTimeShort); // set mode { - System.err.println("[0] set current: "+monitorMode); + System.err.println("[2] set current: "+monitorMode); final boolean smOk = monitor.setCurrentMode(monitorMode); mmCurrent = monitor.getCurrentMode(); - System.err.println("[0] has current: "+mmCurrent+", changeOK "+smOk); + System.err.println("[2] has current: "+mmCurrent+", changeOK "+smOk); Assert.assertTrue(monitor.isModeChangedByUs()); Assert.assertEquals(monitorMode, mmCurrent); Assert.assertNotSame(mmOrig, mmCurrent); @@ -357,19 +356,19 @@ public class TestScreenMode01dNEWT extends UITestCase { } if(!preFS) { - System.err.println("[0] set FS post 0: "+window.isFullscreen()); + System.err.println("[3] set FS post 0: "+window.isFullscreen()); window.setFullscreen(true); Assert.assertEquals(true, window.isFullscreen()); - System.err.println("[0] set FS post X: "+window.isFullscreen()); + System.err.println("[3] set FS post X: "+window.isFullscreen()); } Thread.sleep(waitTimeLong); if(!preFS) { - System.err.println("[0] set !FS post 0: "+window.isFullscreen()); + System.err.println("[4] set !FS post 0: "+window.isFullscreen()); window.setFullscreen(false); Assert.assertEquals(false, window.isFullscreen()); - System.err.println("[0] set !FS post X: "+window.isFullscreen()); + System.err.println("[4] set !FS post X: "+window.isFullscreen()); Thread.sleep(waitTimeShort); } @@ -391,10 +390,15 @@ public class TestScreenMode01dNEWT extends UITestCase { Assert.assertEquals(false,screen.isNativeValid()); Assert.assertEquals(false,display.isNativeValid()); - validateScreenModeReset(mmOrig, screenRect); + validateScreenModeReset(mmOrig, winRect); cleanupGL(); } + /** + * + * @param mmOrig + * @param rect in window units + */ void validateScreenModeReset(final MonitorMode mmOrig, final RectangleImmutable rect) { final Display display = NewtFactory.createDisplay(null); // local display Assert.assertNotNull(display); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting02NEWT.java b/src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting02NEWT.java index 417a1c506..a02a0bac7 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting02NEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting02NEWT.java @@ -110,8 +110,8 @@ public class TestParenting02NEWT extends UITestCase { GLWindow glWindow1 = GLWindow.create(window1); Assert.assertNotNull(glWindow1); glWindow1.setSize(width, height); - Assert.assertEquals(width,glWindow1.getSurfaceWidth()); - Assert.assertEquals(height,glWindow1.getSurfaceHeight()); + Assert.assertEquals(width,glWindow1.getWindowWidth()); + Assert.assertEquals(height,glWindow1.getWindowHeight()); glWindow1.setTitle("test01NewtOnNewtParentChildDraw - PARENT"); glWindow1.setPosition(x,y); //glWindow1.addKeyListener(new TraceKeyAdapter(new KeyAction(eventFifo))); @@ -134,7 +134,7 @@ public class TestParenting02NEWT extends UITestCase { //Assert.assertEquals(width/2,glWindow2.getWidth()); //Assert.assertEquals(height/2,glWindow2.getHeight()); glWindow2.setTitle("test01NewtOnNewtParentChildDraw - CHILD"); - glWindow2.setPosition(glWindow1.getSurfaceWidth()/2, glWindow1.getSurfaceHeight()/2); + glWindow2.setPosition(glWindow1.getWindowWidth()/2, glWindow1.getWindowHeight()/2); //glWindow2.addKeyListener(new TraceKeyAdapter(new KeyAction(eventFifo))); //glWindow2.addWindowListener(new TraceWindowAdapter(new WindowAction(eventFifo))); // glWindow2.addMouseListener(new TraceMouseAdapter()); @@ -163,7 +163,7 @@ public class TestParenting02NEWT extends UITestCase { x += 1; y += 1; // glWindow1.setPosition(x,y); - glWindow2.setPosition(glWindow1.getSurfaceWidth()/2,glWindow1.getSurfaceHeight()/2-y); + glWindow2.setPosition(glWindow1.getWindowWidth()/2,glWindow1.getWindowHeight()/2-y); Thread.sleep(step); while( null != ( event = eventFifo.get() ) ) { |