diff options
-rwxr-xr-x | etc/profile.jogl | 11 | ||||
-rw-r--r-- | make/build-common.xml | 6 | ||||
-rw-r--r-- | make/build-test.xml | 152 | ||||
-rw-r--r-- | make/joglversion-demo-android (renamed from make/joglversion-test-android) | 0 | ||||
-rw-r--r-- | make/resources/android/AndroidManifest-demo.xml (renamed from make/resources/android/AndroidManifest-test.xml) | 64 | ||||
-rw-r--r-- | make/resources/android/res-demo/drawable-hdpi/icon.png (renamed from make/resources/android/res-test/drawable-hdpi/icon.png) | bin | 2516 -> 2516 bytes | |||
-rw-r--r-- | make/resources/android/res-demo/drawable-ldpi/icon.png (renamed from make/resources/android/res-test/drawable-ldpi/icon.png) | bin | 1172 -> 1172 bytes | |||
-rw-r--r-- | make/resources/android/res-demo/drawable-mdpi/icon.png (renamed from make/resources/android/res-test/drawable-mdpi/icon.png) | bin | 1570 -> 1570 bytes | |||
-rw-r--r-- | make/resources/android/res-demo/drawable-xhdpi/icon.png (renamed from make/resources/android/res-test/drawable-xhdpi/icon.png) | bin | 5742 -> 5742 bytes | |||
-rw-r--r-- | make/resources/android/res-demo/layout/main.xml (renamed from make/resources/android/res-test/layout/main.xml) | 0 | ||||
-rw-r--r-- | make/resources/android/res-demo/values/strings.xml (renamed from make/resources/android/res-test/values/strings.xml) | 0 | ||||
-rw-r--r-- | make/scripts/tests.sh | 53 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/Launcher0.java | 1 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/LauncherUtil.java (renamed from src/test/com/jogamp/opengl/test/android/LauncherUtil.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieCubeActivity0a.java (renamed from src/test/com/jogamp/opengl/test/android/MovieCubeActivity0a.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieCubeActivity0b.java (renamed from src/test/com/jogamp/opengl/test/android/MovieCubeActivity0b.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher0a.java (renamed from src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher0a.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher0b.java (renamed from src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher0b.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher1a.java (renamed from src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher1a.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher1b.java (renamed from src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher1b.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivity0.java (renamed from src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivity1.java (renamed from src/test/com/jogamp/opengl/test/android/MovieSimpleActivity1.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher00b.java (renamed from src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher00b.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher00c.java (renamed from src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher00c.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher01a.java (renamed from src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher01a.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher01b.java (renamed from src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher01b.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher02.java (renamed from src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher02.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2Activity.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGearsES2Activity.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2ActivityLauncher.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGearsES2ActivityLauncher.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2ECTActivityLauncher.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGearsES2ECTActivityLauncher.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2RGB565ActivityLauncher.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGearsES2RGB565ActivityLauncher.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2TransActivity.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGearsES2TransActivity.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2TransActivityLauncher.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGearsES2TransActivityLauncher.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI1pActivity.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGraphUI1pActivity.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI1pActivityLauncher.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGraphUI1pActivityLauncher.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI2pActivity.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGraphUI2pActivity.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI2pActivityLauncher.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTGraphUI2pActivityLauncher.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTRedSquareES2Activity.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTRedSquareES2Activity.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/android/NEWTRedSquareES2ActivityLauncher.java (renamed from src/test/com/jogamp/opengl/test/android/NEWTRedSquareES2ActivityLauncher.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/av/CrossFadePlayer.java (renamed from src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/CrossFadePlayer.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/av/MovieCube.java (renamed from src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieCube.java) | 8 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/av/MovieSBSStereo.java (renamed from src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSBSStereo.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/av/MovieSimple.java (renamed from src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSimple.java) | 32 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/av/StereoDemo01.java (renamed from src/test/com/jogamp/opengl/test/junit/jogl/stereo/StereoDemo01.java) | 11 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/es2/GearsES2.java | 3 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/es2/GearsObjectES2.java | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/es2/TextureSequenceCubeES2.java | 491 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/FontSetDemos.java | 35 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/GPURegionGLListener00.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionGLListener00.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/GPURegionGLListener01.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionGLListener01.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/GPURegionGLListener10.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionGLListener10.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/GPURegionNewtDemo.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionNewtDemo.java) | 5 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/GPURendererListenerBase01.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/demos/GPURendererListenerBase01.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/GPUTextGLListener0A.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextGLListener0A.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/GPUTextNewtDemo.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextNewtDemo.java) | 4 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/GPUTextRendererListenerBase01.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextRendererListenerBase01.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/MSAATool.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/demos/MSAATool.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/TextRendererGLELBase.java | 291 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMono.ttf | bin | 0 -> 592632 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoBold.ttf | bin | 0 -> 299136 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoBoldOblique.ttf | bin | 0 -> 298940 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoOblique.ttf | bin | 0 -> 395188 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSans.ttf | bin | 0 -> 1563256 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansBold.ttf | bin | 0 -> 416128 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansBoldOblique.ttf | bin | 0 -> 342492 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansOblique.ttf | bin | 0 -> 763676 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerif.ttf | bin | 0 -> 3303588 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifBold.ttf | bin | 0 -> 1310828 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifBoldItalic.ttf | bin | 0 -> 608676 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifItalic.ttf | bin | 0 -> 922104 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/GPUUISceneGLListener0A.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneGLListener0A.java) | 124 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/GPUUISceneNewtDemo.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneNewtDemo.java) | 12 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/GPUUISceneTextAnim01.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneTextAnim01.java) | 28 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/UIShapeDemo01.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/demos/UIShapeDemo01.java) | 18 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/UITypeDemo01.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/demos/UITypeDemo01.java) | 28 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/button-pressed-145x53.png (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/demos/button-pressed-145x53.png) | bin | 8603 -> 8603 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/button-released-145x53.png (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/demos/button-released-145x53.png) | bin | 9429 -> 9429 bytes | |||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph01UbuntuLight_o.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph01UbuntuLight_o.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph02UbuntuLight_ae.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph02UbuntuLight_ae.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph03FreeMonoRegular_M.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph03FreeMonoRegular_M.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph04FreeSans_0.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph04FreeSans_0.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph05FreeSerifBoldItalic_ae.java (renamed from src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph05FreeSerifBoldItalic_ae.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/util/MiscUtils.java (renamed from src/demos/com/jogamp/opengl/demos/MiscUtils.java) | 2 | ||||
-rw-r--r-- | src/demos/com/jogamp/opengl/demos/util/QuitAdapter.java | 64 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/android/NEWTElektronActivity.java | 78 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/android/NEWTElektronActivityLauncher.java | 51 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/android/NEWTGearsES1Activity.java | 83 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/android/NEWTGearsES1ActivityLauncher.java | 50 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/android/NEWTRedSquareES1Activity.java | 77 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/android/NEWTRedSquareES1ActivityLauncher.java | 51 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener01.java | 299 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener10.java | 138 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/GPURendererListenerBase01.java | 361 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/GPUTextRendererListenerBase01.java | 588 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/MSAATool.java | 96 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/TestRegionRendererNEWT01.java | 3 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT20.java | 2 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneNewtCanvasAWTDemo.java | 220 |
98 files changed, 2713 insertions, 974 deletions
diff --git a/etc/profile.jogl b/etc/profile.jogl index 31cff13ac..7673e204a 100755 --- a/etc/profile.jogl +++ b/etc/profile.jogl @@ -38,6 +38,7 @@ uname -a | grep -i Darwin && OSS=osx uname -a | grep -i CYGWIN && OSS=win JOGL_TEST="jogl-test.jar" +JOGL_DEMOS="jogl-demos.jar" JOGL_JAR_ALL="jogl-all.jar" JOGL_JAR_ALL_NOAWT="jogl-all-noawt.jar" @@ -89,11 +90,11 @@ export JOGL_BUILD_DIR JOGL_LIB_DIR="$JOGL_BUILD_DIR"/lib export JOGL_LIB_DIR -JOGL_ALL_AWT_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_ALL $JOGL_JAR_OCULUSVR $JOGL_TEST) -JOGL_ALL_NOAWT_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_ALL_NOAWT $JOGL_JAR_OCULUSVR $JOGL_TEST) -JOGL_MOBILE_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_ALL_MOBILE $JOGL_JAR_OCULUSVR $JOGL_TEST) -JOGL_ATOMICS_NOAWT_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_ATOMICS_NOAWT $JOGL_JAR_OCULUSVR $JOGL_TEST) -JOGL_SWT_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_SWT $JOGL_JAR_OCULUSVR $JOGL_TEST) +JOGL_ALL_AWT_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_ALL $JOGL_JAR_OCULUSVR $JOGL_TEST $JOGL_DEMOS) +JOGL_ALL_NOAWT_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_ALL_NOAWT $JOGL_JAR_OCULUSVR $JOGL_TEST $JOGL_DEMOS) +JOGL_MOBILE_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_ALL_MOBILE $JOGL_JAR_OCULUSVR $JOGL_TEST $JOGL_DEMOS) +JOGL_ATOMICS_NOAWT_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_ATOMICS_NOAWT $JOGL_JAR_OCULUSVR $JOGL_TEST $JOGL_DEMOS) +JOGL_SWT_CLASSPATH=$(concat_jogl_list "$JOGL_BUILD_DIR" $JOGL_JAR_SWT $JOGL_JAR_OCULUSVR $JOGL_TEST $JOGL_DEMOS) export JOGL_ALL_AWT_CLASSPATH JOGL_ALL_NOAWT_CLASSPATH JOGL_MOBILE_CLASSPATH JOGL_ATOMICS_NOAWT_CLASSPATH JOGL_SWT_CLASSPATH if [ ! -z "$JOGL_PROFILE" ] ; then diff --git a/make/build-common.xml b/make/build-common.xml index 7f7d0ea1d..03372ccf5 100644 --- a/make/build-common.xml +++ b/make/build-common.xml @@ -501,9 +501,9 @@ <property name="gluegen-rt-android.jar" value="${build.gluegen}/gluegen-rt-android.jar" /> <property name="gluegen-test-util.jar" value="${build.gluegen}/gluegen-test-util.jar" /> <property name="jogl-test.jar" value="${jar}/jogl-test.jar"/> - <property name="jogl-test-android.jar" value="${jar}/jogl-test-android.jar"/> - <property name="jogl-test-android.apk" value="${jar}/jogl-test-android.apk"/> - <property name="jogl-demos-mobile.jar" value="${jar}/jogl-demos-mobile.jar"/> + <property name="jogl-demos.jar" value="${jar}/jogl-demos.jar"/> + <property name="jogl-demo-android.jar" value="${jar}/jogl-demo-android.jar"/> + <property name="jogl-demo-android.apk" value="${jar}/jogl-demo-android.apk"/> <!-- JavaSE combinations . AWT --> <property name="jogl-all.jar" value="${jar}/jogl-all.jar" /> diff --git a/make/build-test.xml b/make/build-test.xml index a5b74a752..e93c100e1 100644 --- a/make/build-test.xml +++ b/make/build-test.xml @@ -28,9 +28,9 @@ <property name="classes.path" location="${classes}"/> <!-- absolute path --> <property name="classes.demos" value="${build.demos}/classes" /> - <property name="java.part.demo.mobile" value="com/jogamp/opengl/demos/**"/> - <property name="java.part.test.all" value="com/jogamp/opengl/test/** jogamp/**"/> - <property name="java.part.test.android" value="com/jogamp/opengl/test/android/**"/> + <property name="java.part.demo" value="com/jogamp/opengl/demos/**"/> + <property name="java.part.demo.android" value="com/jogamp/opengl/demos/android/**"/> + <property name="java.part.test.all" value="com/jogamp/opengl/test/** jogamp/**"/> <property name="java.part.test.oculusvr" value="com/jogamp/opengl/test/junit/jogl/stereo/ovr/**"/> <property name="java.dir.test" value="com/jogamp/opengl/test"/> <property name="java.dir.junit" value="${java.dir.test}/junit"/> @@ -83,7 +83,7 @@ <fileset dir="." includes="*.tga" /> <fileset dir="." includes="hs_err_pid*.log" /> <fileset file="${jogl-test.jar}" /> - <fileset file="${jogl-demos-mobile.jar}" /> + <fileset file="${jogl-demos.jar}" /> </delete> </target> @@ -92,8 +92,9 @@ - Build/run tests/junit. --> - <target name="make.demos.mobile"> + <target name="make.demos"> <javac destdir="${classes.demos}" + excludes="${java.part.demo.android} ${java.part.demo.oculusvr}" fork="yes" includeAntRuntime="false" memoryMaximumSize="${javac.memorymax}" @@ -106,7 +107,7 @@ <src path="${src.demos}" /> </javac> <copy file="joglversion-test" - tofile="${build.test}/manifest-demo-mobile.mf" + tofile="${build.test}/manifest-demo.mf" overwrite="true"> <filterset> <filter token="VERSION" value="${jogamp.version}"/> @@ -123,46 +124,31 @@ <exclude name="**/*.java"/> </fileset> </copy> - <jar manifest="${build.test}/manifest-demo-mobile.mf" destfile="${jogl-demos-mobile.jar}" filesonly="true"> + <jar manifest="${build.test}/manifest-demo.mf" destfile="${jogl-demos.jar}" filesonly="true"> <fileset dir="${classes.demos}" + excludes="${java.part.demo.android}" includes="**"/> <fileset dir="resources/assets-test" includes="**" /> </jar> </target> - <target name="test.compile.javase.generic" unless="setup.noAWT"> - <javac destdir="${classes}" - excludes="${java.part.test.android} ${java.part.test.oculusvr}" - fork="yes" - includeAntRuntime="false" - memoryMaximumSize="${javac.memorymax}" - encoding="UTF-8" - source="${target.sourcelevel}" - target="${target.targetlevel}" - bootclasspath="${target.rt.jar}" - debug="${javacdebug}" debuglevel="${javacdebuglevel}"> - <classpath refid="junit_jogl_newt.compile.classpath"/> - <src path="${src.test}" /> - </javac> - </target> - <target name="test.compile.javase.oculusvr" if="oculusvr.sdk.available"> - <javac destdir="${classes}" - includes="${java.part.test.oculusvr}" - excludes="${java.part.test.android}" + + <target name="demo.compile.android" if="android-jars.available"> + <!-- Perform the junit pass Java Android compile --> + <javac destdir="${classes.demos}" + excludes="${java.part.demo.oculusvr}" fork="yes" includeAntRuntime="false" memoryMaximumSize="${javac.memorymax}" encoding="UTF-8" source="${target.sourcelevel}" - target="${target.targetlevel}" + target="${target.targetlevel}" bootclasspath="${target.rt.jar}" debug="${javacdebug}" debuglevel="${javacdebuglevel}"> - <classpath refid="junit_jogl_newt_oculusvr.compile.classpath"/> - <src path="${src.test}" /> + <classpath refid="junit_jogl_newt_android.compile.classpath"/> + <src path="${src.demos}" /> </javac> - </target> - <target name="test.compile.javase" depends="test.compile.javase.generic, test.compile.javase.oculusvr" unless="setup.noAWT"> - <copy file="joglversion-test" - tofile="${build.test}/manifest-test.mf" + <copy file="joglversion-demo-android" + tofile="${build.test}/manifest-demo-android.mf" overwrite="true"> <filterset> <filter token="VERSION" value="${jogamp.version}"/> @@ -170,23 +156,48 @@ <filter token="SCM_BRANCH" value="${jogl.build.branch}"/> <filter token="SCM_COMMIT" value="${jogl.build.commit}"/> <filter token="BASEVERSION" value="${jogamp.version.base}"/> - <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/> </filterset> </copy> - <jar manifest="${build.test}/manifest-test.mf" destfile="${jogl-test.jar}" filesonly="true"> + <jar manifest="${build.test}/manifest-demo-android.mf" destfile="${jogl-demo-android.jar}" filesonly="true"> <!-- get all class files, but skip any resource files that external tools might have copied into the class directory (otherwise, it's possible to get the same resource file twice in the jar) --> - <fileset dir="${classes}" - includes="${java.part.test.all}" - excludes="${java.part.test.android}"/> + <fileset dir="${classes.demos}"/> <fileset dir="resources/assets-test" includes="**" /> </jar> </target> - <target name="test.compile.android" if="android-jars.available" unless="setup.noAWT"> - <!-- Perform the junit pass Java Android compile --> + <target name="demo.package.android" depends="demo.compile.android" if="isAndroid"> + <aapt.signed + assetsdir="resources/assets-test" + jarsrcdir="${src}/demos" + jarbuilddir="${jar}" + jarbasename="jogl-demo-android" + nativebuilddir="${lib}" + nativebasename="non-existing" + androidmanifest.path="resources/android/AndroidManifest-demo.xml" + androidresources.path="resources/android/res-demo" + jarmanifest.path="${build.test}/manifest-demo-android.mf" + version.code="${jogamp.version.int}" + version.name="${jogamp.version}"> + <d8-classpaths> + <arg line="--classpath ${gluegen-rt-android.jar}"/> + <arg line="--classpath ${joal.jar}"/> + <arg line="--classpath ${jogl-all-android.jar}"/> + <arg line="--classpath ${gluegen-test-util.jar}"/> + <arg line="--classpath ${junit.jar}"/> + <arg line="--classpath ${ant.jar}"/> + <arg line="--classpath ${ant-junit.jar}"/> + <arg line="--classpath ${ant-junit4.jar}"/> + <arg line="--classpath ${semver.jar}"/> + <arg line="--classpath ${project.root}/make/lib/openjfx/11/javafx-base-11.jar"/> + <arg line="--classpath ${project.root}/make/lib/openjfx/11/javafx-graphics-11.jar"/> + </d8-classpaths> + </aapt.signed> + </target> + + <target name="test.compile.javase.generic" unless="setup.noAWT"> <javac destdir="${classes}" excludes="${java.part.test.oculusvr}" fork="yes" @@ -194,14 +205,31 @@ memoryMaximumSize="${javac.memorymax}" encoding="UTF-8" source="${target.sourcelevel}" - target="${target.targetlevel}" + target="${target.targetlevel}" bootclasspath="${target.rt.jar}" debug="${javacdebug}" debuglevel="${javacdebuglevel}"> - <classpath refid="junit_jogl_newt_android.compile.classpath"/> + <classpath refid="junit_jogl_newt.compile.classpath"/> <src path="${src.test}" /> </javac> - <copy file="joglversion-test-android" - tofile="${build.test}/manifest-test-android.mf" + </target> + <target name="test.compile.javase.oculusvr" if="oculusvr.sdk.available"> + <javac destdir="${classes}" + includes="${java.part.test.oculusvr}" + fork="yes" + includeAntRuntime="false" + memoryMaximumSize="${javac.memorymax}" + encoding="UTF-8" + source="${target.sourcelevel}" + target="${target.targetlevel}" + bootclasspath="${target.rt.jar}" + debug="${javacdebug}" debuglevel="${javacdebuglevel}"> + <classpath refid="junit_jogl_newt_oculusvr.compile.classpath"/> + <src path="${src.test}" /> + </javac> + </target> + <target name="test.compile.javase" depends="test.compile.javase.generic, test.compile.javase.oculusvr" unless="setup.noAWT"> + <copy file="joglversion-test" + tofile="${build.test}/manifest-test.mf" overwrite="true"> <filterset> <filter token="VERSION" value="${jogamp.version}"/> @@ -209,10 +237,11 @@ <filter token="SCM_BRANCH" value="${jogl.build.branch}"/> <filter token="SCM_COMMIT" value="${jogl.build.commit}"/> <filter token="BASEVERSION" value="${jogamp.version.base}"/> + <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/> </filterset> </copy> - <jar manifest="${build.test}/manifest-test-android.mf" destfile="${jogl-test-android.jar}" filesonly="true"> + <jar manifest="${build.test}/manifest-test.mf" destfile="${jogl-test.jar}" filesonly="true"> <!-- get all class files, but skip any resource files that external tools might have copied into the class directory (otherwise, it's possible to get the same resource file twice in the jar) --> @@ -222,35 +251,6 @@ </jar> </target> - <target name="test.package.android" depends="test.compile.android" if="isAndroid" unless="setup.noAWT"> - <aapt.signed - assetsdir="resources/assets-test" - jarsrcdir="${src}/test" - jarbuilddir="${jar}" - jarbasename="jogl-test-android" - nativebuilddir="${lib}" - nativebasename="non-existing" - androidmanifest.path="resources/android/AndroidManifest-test.xml" - androidresources.path="resources/android/res-test" - jarmanifest.path="${build.test}/manifest-test-android.mf" - version.code="${jogamp.version.int}" - version.name="${jogamp.version}"> - <d8-classpaths> - <arg line="--classpath ${gluegen-rt-android.jar}"/> - <arg line="--classpath ${joal.jar}"/> - <arg line="--classpath ${jogl-all-android.jar}"/> - <arg line="--classpath ${gluegen-test-util.jar}"/> - <arg line="--classpath ${junit.jar}"/> - <arg line="--classpath ${ant.jar}"/> - <arg line="--classpath ${ant-junit.jar}"/> - <arg line="--classpath ${ant-junit4.jar}"/> - <arg line="--classpath ${semver.jar}"/> - <arg line="--classpath ${project.root}/make/lib/openjfx/11/javafx-base-11.jar"/> - <arg line="--classpath ${project.root}/make/lib/openjfx/11/javafx-graphics-11.jar"/> - </d8-classpaths> - </aapt.signed> - </target> - <target name="test.compile.check" depends="declare.common"> <!-- Create the required output directories. --> <mkdir dir="${obj.test}" /> @@ -278,9 +278,9 @@ <exclude name="**/*.java"/> </fileset> </copy> - <antcall target="make.demos.mobile" inheritRefs="true" inheritAll="true"/> + <antcall target="make.demos" inheritRefs="true" inheritAll="true"/> + <antcall target="demo.package.android" inheritRefs="true" inheritAll="true"/> <antcall target="test.compile.javase" inheritRefs="true" inheritAll="true"/> - <antcall target="test.package.android" inheritRefs="true" inheritAll="true"/> </target> <target name="test.manual.run" depends="test.compile, junit.run.settings"> diff --git a/make/joglversion-test-android b/make/joglversion-demo-android index 18568fb45..18568fb45 100644 --- a/make/joglversion-test-android +++ b/make/joglversion-demo-android diff --git a/make/resources/android/AndroidManifest-test.xml b/make/resources/android/AndroidManifest-demo.xml index dc500e794..8757b7cc3 100644 --- a/make/resources/android/AndroidManifest-test.xml +++ b/make/resources/android/AndroidManifest-demo.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" sharedUserId="com.jogamp.Community" - package="com.jogamp.opengl.test"> + package="com.jogamp.opengl.demos"> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> @@ -19,7 +19,7 @@ android:persistent="false" > - <activity android:name="com.jogamp.opengl.test.android.NEWTGearsES2ActivityLauncher" + <activity android:name="com.jogamp.opengl.demos.android.NEWTGearsES2ActivityLauncher" android:label="@string/activity_gearses2_name" android:description="@string/activity_gearses2_descr" android:theme="@android:style/Theme.NoDisplay" @@ -29,7 +29,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.NEWTGearsES2RGB565ActivityLauncher" + <activity android:name="com.jogamp.opengl.demos.android.NEWTGearsES2RGB565ActivityLauncher" android:label="@string/activity_gearses2rgb565_name" android:description="@string/activity_gearses2rgb565_descr" android:theme="@android:style/Theme.NoDisplay" @@ -39,7 +39,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.NEWTGearsES2ECTActivityLauncher" + <activity android:name="com.jogamp.opengl.demos.android.NEWTGearsES2ECTActivityLauncher" android:label="@string/activity_gearses2ect_name" android:description="@string/activity_gearses2ect_descr" android:theme="@android:style/Theme.NoDisplay" @@ -49,18 +49,8 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.NEWTGearsES1ActivityLauncher" - android:label="@string/activity_gearses1_name" - android:description="@string/activity_gearses1_descr" - android:theme="@android:style/Theme.NoDisplay" - > - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name="com.jogamp.opengl.test.android.NEWTRedSquareES2ActivityLauncher" + <activity android:name="com.jogamp.opengl.demos.android.NEWTRedSquareES2ActivityLauncher" android:label="@string/activity_redsquarees2_name" android:description="@string/activity_redsquarees2_descr" android:theme="@android:style/Theme.NoDisplay" @@ -70,18 +60,8 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.NEWTRedSquareES1ActivityLauncher" - android:label="@string/activity_redsquarees1_name" - android:description="@string/activity_redsquarees1_descr" - android:theme="@android:style/Theme.NoDisplay" - > - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name="com.jogamp.opengl.test.android.NEWTGearsES2TransActivityLauncher" + <activity android:name="com.jogamp.opengl.demos.android.NEWTGearsES2TransActivityLauncher" android:label="@string/activity_gearses2t_name" android:description="@string/activity_gearses2t_descr" android:theme="@android:style/Theme.NoDisplay" @@ -91,7 +71,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.NEWTGraphUI1pActivityLauncher" + <activity android:name="com.jogamp.opengl.demos.android.NEWTGraphUI1pActivityLauncher" android:label="@string/activity_graphui1p_name" android:description="@string/activity_graphui1p_descr" android:theme="@android:style/Theme.NoDisplay" @@ -101,7 +81,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.NEWTGraphUI2pActivityLauncher" + <activity android:name="com.jogamp.opengl.demos.android.NEWTGraphUI2pActivityLauncher" android:label="@string/activity_graphui2p_name" android:description="@string/activity_graphui2p_descr" android:theme="@android:style/Theme.NoDisplay" @@ -111,17 +91,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.NEWTElektronActivityLauncher" - android:label="@string/activity_elektro_name" - android:description="@string/activity_elektro_descr" - android:theme="@android:style/Theme.NoDisplay" - > - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name="com.jogamp.opengl.test.android.MovieSimpleActivityLauncher00b" + <activity android:name="com.jogamp.opengl.demos.android.MovieSimpleActivityLauncher00b" android:label="@string/activity_moviesimple0b_name" android:description="@string/activity_moviesimple_descr" android:theme="@android:style/Theme.NoDisplay" @@ -131,7 +101,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.MovieSimpleActivityLauncher00c" + <activity android:name="com.jogamp.opengl.demos.android.MovieSimpleActivityLauncher00c" android:label="@string/activity_moviesimple0c_name" android:description="@string/activity_moviesimple_descr" android:theme="@android:style/Theme.NoDisplay" @@ -141,7 +111,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.MovieSimpleActivityLauncher01a" + <activity android:name="com.jogamp.opengl.demos.android.MovieSimpleActivityLauncher01a" android:label="@string/activity_moviesimple1a_name" android:description="@string/activity_moviesimple_descr" android:theme="@android:style/Theme.NoDisplay" @@ -151,7 +121,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.MovieSimpleActivityLauncher01b" + <activity android:name="com.jogamp.opengl.demos.android.MovieSimpleActivityLauncher01b" android:label="@string/activity_moviesimple1b_name" android:description="@string/activity_moviesimple_descr" android:theme="@android:style/Theme.NoDisplay" @@ -161,7 +131,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.MovieSimpleActivityLauncher02" + <activity android:name="com.jogamp.opengl.demos.android.MovieSimpleActivityLauncher02" android:label="@string/activity_moviesimple2_name" android:description="@string/activity_moviesimple_descr" android:theme="@android:style/Theme.NoDisplay" @@ -171,7 +141,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.MovieCubeActivityLauncher0a" + <activity android:name="com.jogamp.opengl.demos.android.MovieCubeActivityLauncher0a" android:label="@string/activity_moviecube0a_name" android:description="@string/activity_moviecube_descr" android:theme="@android:style/Theme.NoDisplay" @@ -181,7 +151,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.MovieCubeActivityLauncher0b" + <activity android:name="com.jogamp.opengl.demos.android.MovieCubeActivityLauncher0b" android:label="@string/activity_moviecube0b_name" android:description="@string/activity_moviecube_descr" android:theme="@android:style/Theme.NoDisplay" @@ -191,7 +161,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.MovieCubeActivityLauncher1a" + <activity android:name="com.jogamp.opengl.demos.android.MovieCubeActivityLauncher1a" android:label="@string/activity_moviecube1a_name" android:description="@string/activity_moviecube_descr" android:theme="@android:style/Theme.NoDisplay" @@ -201,7 +171,7 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <activity android:name="com.jogamp.opengl.test.android.MovieCubeActivityLauncher1b" + <activity android:name="com.jogamp.opengl.demos.android.MovieCubeActivityLauncher1b" android:label="@string/activity_moviecube1b_name" android:description="@string/activity_moviecube_descr" android:theme="@android:style/Theme.NoDisplay" diff --git a/make/resources/android/res-test/drawable-hdpi/icon.png b/make/resources/android/res-demo/drawable-hdpi/icon.png Binary files differindex 2148232c9..2148232c9 100644 --- a/make/resources/android/res-test/drawable-hdpi/icon.png +++ b/make/resources/android/res-demo/drawable-hdpi/icon.png diff --git a/make/resources/android/res-test/drawable-ldpi/icon.png b/make/resources/android/res-demo/drawable-ldpi/icon.png Binary files differindex c16211f36..c16211f36 100644 --- a/make/resources/android/res-test/drawable-ldpi/icon.png +++ b/make/resources/android/res-demo/drawable-ldpi/icon.png diff --git a/make/resources/android/res-test/drawable-mdpi/icon.png b/make/resources/android/res-demo/drawable-mdpi/icon.png Binary files differindex 1c26e3f83..1c26e3f83 100644 --- a/make/resources/android/res-test/drawable-mdpi/icon.png +++ b/make/resources/android/res-demo/drawable-mdpi/icon.png diff --git a/make/resources/android/res-test/drawable-xhdpi/icon.png b/make/resources/android/res-demo/drawable-xhdpi/icon.png Binary files differindex 7e9d5ba83..7e9d5ba83 100644 --- a/make/resources/android/res-test/drawable-xhdpi/icon.png +++ b/make/resources/android/res-demo/drawable-xhdpi/icon.png diff --git a/make/resources/android/res-test/layout/main.xml b/make/resources/android/res-demo/layout/main.xml index 3a5f117d3..3a5f117d3 100644 --- a/make/resources/android/res-test/layout/main.xml +++ b/make/resources/android/res-demo/layout/main.xml diff --git a/make/resources/android/res-test/values/strings.xml b/make/resources/android/res-demo/values/strings.xml index 0d9acaadb..0d9acaadb 100644 --- a/make/resources/android/res-test/values/strings.xml +++ b/make/resources/android/res-demo/values/strings.xml diff --git a/make/scripts/tests.sh b/make/scripts/tests.sh index a20a0f9fd..61738d6e5 100644 --- a/make/scripts/tests.sh +++ b/make/scripts/tests.sh @@ -45,8 +45,8 @@ if [ $MOSX -eq 1 ] ; then fi # We use TempJarCache and JAR files per default now! -export USE_BUILDDIR=0 -#export USE_BUILDDIR=1 +#export USE_BUILDDIR=0 +export USE_BUILDDIR=1 if [ $USE_BUILDDIR -eq 1 ] ; then export LD_LIBRARY_PATH=$JOGAMP_LD_LIBRARY_PATH @@ -401,7 +401,7 @@ function jrun() { else #export USE_CLASSPATH=$JOGAMP_ALL_AWT_CLASSPATH export USE_CLASSPATH=$JOGAMP_ALL_NOAWT_CLASSPATH - #export USE_CLASSPATH=.:$GLUEGEN_JAR:$JOGL_BUILDDIR/jar/atomic/jogl.jar:$JOGL_BUILDDIR/jar/atomic/jogl-gldesktop.jar:$JOGL_BUILDDIR/jar/atomic/jogl-os-x11.jar:$JOGL_BUILDDIR/jar/atomic/jogl-util.jar:$JOGL_BUILDDIR/jar/atomic/nativewindow.jar:$JOGL_BUILDDIR/jar/atomic/nativewindow-os-x11.jar:$JOGL_BUILDDIR/jar/atomic/newt.jar:$JOGL_BUILDDIR/jar/atomic/newt-driver-x11.jar:$JOGL_BUILDDIR/jar/atomic/newt-ogl.jar:$JOGL_BUILDDIR/jar/jogl-test.jar:$JUNIT_JAR:$ANT_JARS + #export USE_CLASSPATH=.:$GLUEGEN_JAR:$JOGL_BUILDDIR/jar/atomic/jogl.jar:$JOGL_BUILDDIR/jar/atomic/jogl-gldesktop.jar:$JOGL_BUILDDIR/jar/atomic/jogl-os-x11.jar:$JOGL_BUILDDIR/jar/atomic/jogl-util.jar:$JOGL_BUILDDIR/jar/atomic/nativewindow.jar:$JOGL_BUILDDIR/jar/atomic/nativewindow-os-x11.jar:$JOGL_BUILDDIR/jar/atomic/newt.jar:$JOGL_BUILDDIR/jar/atomic/newt-driver-x11.jar:$JOGL_BUILDDIR/jar/atomic/newt-ogl.jar:$JOGL_BUILDDIR/jar/jogl-test.jar:$JOGL_BUILDDIR/jar/jogl-demos.jar:$JUNIT_JAR:$ANT_JARS X_ARGS="-Djava.awt.headless=true $X_ARGS" fi # StartFlightRecording: delay=10s, @@ -412,7 +412,7 @@ function jrun() { # X_ARGS="-XX:StartFlightRecording=delay=10s,dumponexit=true,filename=java-run.jfr $X_ARGS" if [ $USE_BUILDDIR -eq 1 ] ; then - export USE_CLASSPATH=.:$GLUEGEN_BUILDDIR/classes:$GLUEGEN_BUILDDIR/test/build/classes:$JOAL_BUILDDIR/classes:$JOGL_BUILDDIR/nativewindow/classes:$JOGL_BUILDDIR/jogl/classes:$JOGL_BUILDDIR/newt/classes:$JOGL_BUILDDIR/oculusvr/classes:$JOGL_BUILDDIR/test/build/classes:$JUNIT_JAR:$ANT_JARS + export USE_CLASSPATH=.:$GLUEGEN_BUILDDIR/classes:$GLUEGEN_BUILDDIR/test/build/classes:$JOAL_BUILDDIR/classes:$JOGL_BUILDDIR/nativewindow/classes:$JOGL_BUILDDIR/jogl/classes:$JOGL_BUILDDIR/newt/classes:$JOGL_BUILDDIR/graphui/classes:$JOGL_BUILDDIR/oculusvr/classes:$JOGL_BUILDDIR/test/build/classes:$JOGL_BUILDDIR/demos/build/classes:$JUNIT_JAR:$ANT_JARS fi if [ $swton -eq 1 ] ; then @@ -508,8 +508,8 @@ function testawtswt() { #testswt com.jogamp.opengl.test.junit.jogl.swt.TestGLCanvasSWTNewtCanvasSWTPosInTabs $* #testawt com.jogamp.opengl.test.junit.jogl.demos.gl2.awt.TestGearsAWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.glsl.TestRulerNEWT01 $* -#testnoawt com.jogamp.opengl.test.junit.graph.ui.demos.GPUUISceneNewtDemo $* -#testawt com.jogamp.opengl.test.junit.graph.ui.demos.GPUUISceneNewtCanvasAWTDemo $* +#testnoawt com.jogamp.opengl.demos.graph.ui.GPUUISceneNewtDemo $* +#testawt com.jogamp.opengl.demos.graph.ui.GPUUISceneNewtCanvasAWTDemo $* #testawt com.jogamp.opengl.test.junit.jogl.awt.ManualHiDPIBufferedImage01AWT $* # @@ -544,9 +544,9 @@ function testawtswt() { # av demos # #testnoawt jogamp.opengl.openal.av.ALDummyUsage $* -#testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieCube $* -#testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieSimple $* -#testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.av.CrossFadePlayer $* +#testnoawt com.jogamp.opengl.demos.av.MovieCube $* +#testnoawt com.jogamp.opengl.demos.av.MovieSimple $* +#testnoawt com.jogamp.opengl.demos.av.CrossFadePlayer $* # # performance tests @@ -961,15 +961,16 @@ function testawtswt() { #testnoawt com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT01 $* #testnoawt com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT10 $* #testnoawt com.jogamp.opengl.test.junit.graph.TestTextRendererNEWT20 $* -#testnoawt com.jogamp.opengl.test.junit.graph.demos.GPUTextNewtDemo $* -#testnoawt com.jogamp.opengl.test.junit.graph.demos.GPURegionNewtDemo $* -#testnoawt com.jogamp.opengl.test.junit.graph.ui.demos.UIShapeDemo01 $* -#testnoawt com.jogamp.opengl.test.junit.graph.ui.demos.UITypeDemo01 $* -#testnoawt com.jogamp.opengl.test.junit.graph.ui.demos.GPUUISceneNewtDemo $* -#testawt com.jogamp.opengl.test.junit.graph.ui.demos.GPUUISceneNewtCanvasAWTDemo $* - -#testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieCube $* -#testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieSimple $* + +#testnoawt com.jogamp.opengl.demos.graph.GPUTextNewtDemo $* +#testnoawt com.jogamp.opengl.demos.graph.GPURegionNewtDemo $* +#testnoawt com.jogamp.opengl.demos.graph.ui.UIShapeDemo01 $* +#testnoawt com.jogamp.opengl.demos.graph.ui.UITypeDemo01 $* +#testnoawt com.jogamp.opengl.demos.graph.ui.GPUUISceneNewtDemo $* + +#testnoawt com.jogamp.opengl.demos.av.MovieCube $* +#testnoawt com.jogamp.opengl.demos.av.MovieSimple $* + #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestGLReadBuffer01GLWindowNEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestSharedContextVBOES2NEWT1 $* @@ -980,7 +981,6 @@ function testawtswt() { # GLDrawableFactory.createDummyAutoDrawable(..) # #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestSharedContextVBOES2NEWT1 $* -#testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieSimple $* # GLDrawableFactory.createOffscreenDrawable(..) # @@ -997,11 +997,16 @@ function testawtswt() { # #testmobile com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 $* #testnoawt com.jogamp.opengl.test.junit.graph.PerfTextRendererNEWT00 $* -#testmobile com.jogamp.opengl.test.junit.graph.ui.demos.GPUTextNewtDemo $* -#testmobile com.jogamp.opengl.test.junit.graph.ui.demos.GPUUISceneNewtDemo $* -testnoawt com.jogamp.opengl.test.junit.graph.ui.demos.GPUUISceneNewtDemo $* -#testmobile com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieCube $* -#testmobile com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieSimple $* + +#testnoawt com.jogamp.opengl.demos.graph.GPUTextNewtDemo $* +#testnoawt com.jogamp.opengl.demos.graph.GPURegionNewtDemo $* +#testnoawt com.jogamp.opengl.demos.graph.ui.UIShapeDemo01 $* +#testnoawt com.jogamp.opengl.demos.graph.ui.UITypeDemo01 $* +testnoawt com.jogamp.opengl.demos.graph.ui.GPUUISceneNewtDemo $* + +#testnoawt com.jogamp.opengl.demos.av.MovieCube $* +#testnoawt com.jogamp.opengl.demos.av.MovieSimple $* + #testmobile com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT $* #testmobile com.jogamp.opengl.test.junit.jogl.acore.TestGLProfileXXNEWTPost $* #testmobile com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile00NEWT $* diff --git a/src/demos/com/jogamp/opengl/demos/Launcher0.java b/src/demos/com/jogamp/opengl/demos/Launcher0.java index 9f2e0d64e..d9d66d434 100644 --- a/src/demos/com/jogamp/opengl/demos/Launcher0.java +++ b/src/demos/com/jogamp/opengl/demos/Launcher0.java @@ -56,6 +56,7 @@ import com.jogamp.opengl.GLEventListener; import com.jogamp.opengl.GLPipelineFactory; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.demos.es2.RedSquareES2; +import com.jogamp.opengl.demos.util.MiscUtils; /** * <p> diff --git a/src/test/com/jogamp/opengl/test/android/LauncherUtil.java b/src/demos/com/jogamp/opengl/demos/android/LauncherUtil.java index 11dbe12cf..f512e467e 100644 --- a/src/test/com/jogamp/opengl/test/android/LauncherUtil.java +++ b/src/demos/com/jogamp/opengl/demos/android/LauncherUtil.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/test/com/jogamp/opengl/test/android/MovieCubeActivity0a.java b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivity0a.java index 8555d4155..cdbaa7872 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieCubeActivity0a.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivity0a.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.io.IOException; import java.net.HttpURLConnection; @@ -35,6 +35,7 @@ import java.util.Arrays; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.demos.av.MovieCube; import jogamp.newt.driver.android.NewtBaseActivity; @@ -44,7 +45,6 @@ import com.jogamp.newt.NewtFactory; import com.jogamp.newt.event.MouseAdapter; import com.jogamp.newt.event.MouseEvent; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieCube; import com.jogamp.opengl.util.Animator; import com.jogamp.opengl.util.av.GLMediaPlayer; import com.jogamp.opengl.util.av.GLMediaPlayer.GLMediaEventListener; diff --git a/src/test/com/jogamp/opengl/test/android/MovieCubeActivity0b.java b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivity0b.java index 841404516..b04487b5f 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieCubeActivity0b.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivity0b.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.io.IOException; import java.net.HttpURLConnection; @@ -35,6 +35,7 @@ import java.util.Arrays; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.demos.av.MovieCube; import jogamp.newt.driver.android.NewtBaseActivity; @@ -44,7 +45,6 @@ import com.jogamp.newt.NewtFactory; import com.jogamp.newt.event.MouseAdapter; import com.jogamp.newt.event.MouseEvent; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieCube; import com.jogamp.opengl.util.Animator; import com.jogamp.opengl.util.av.GLMediaPlayer; import com.jogamp.opengl.util.av.GLMediaPlayer.GLMediaEventListener; diff --git a/src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher0a.java b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher0a.java index a8223a76f..4c9409b02 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher0a.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher0a.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class MovieCubeActivityLauncher0a extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher0b.java b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher0b.java index 3286f673a..548c0bc51 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher0b.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher0b.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class MovieCubeActivityLauncher0b extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher1a.java b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher1a.java index 1b1743f5b..d4133df18 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher1a.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher1a.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class MovieCubeActivityLauncher1a extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher1b.java b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher1b.java index 5135122a1..21749ef74 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieCubeActivityLauncher1b.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieCubeActivityLauncher1b.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class MovieCubeActivityLauncher1b extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivity0.java index e6aba9455..07d0b9914 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivity0.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.net.HttpURLConnection; import java.net.URISyntaxException; @@ -34,6 +34,7 @@ import java.util.Arrays; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.demos.av.MovieSimple; import jogamp.newt.driver.android.NewtBaseActivity; @@ -44,7 +45,6 @@ import com.jogamp.newt.Window; import com.jogamp.newt.event.MouseAdapter; import com.jogamp.newt.event.MouseEvent; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieSimple; import com.jogamp.opengl.util.Animator; import com.jogamp.opengl.util.av.GLMediaPlayer; import com.jogamp.opengl.util.av.GLMediaPlayer.GLMediaEventListener; diff --git a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity1.java b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivity1.java index 086532015..d7a2aeae1 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity1.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivity1.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.net.HttpURLConnection; import java.net.URISyntaxException; @@ -37,6 +37,7 @@ import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.GLRunnable; +import com.jogamp.opengl.demos.av.MovieSimple; import jogamp.newt.driver.android.NewtBaseActivity; @@ -47,7 +48,6 @@ import com.jogamp.newt.Window; import com.jogamp.newt.event.MouseAdapter; import com.jogamp.newt.event.MouseEvent; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieSimple; import com.jogamp.opengl.util.Animator; import com.jogamp.opengl.util.av.GLMediaPlayer; import com.jogamp.opengl.util.av.GLMediaPlayer.GLMediaEventListener; diff --git a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher00b.java b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher00b.java index 38b7a71db..bfcf3dd06 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher00b.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher00b.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class MovieSimpleActivityLauncher00b extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher00c.java b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher00c.java index a65896339..947e848c5 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher00c.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher00c.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class MovieSimpleActivityLauncher00c extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher01a.java b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher01a.java index 739838347..bf9114f4f 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher01a.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher01a.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class MovieSimpleActivityLauncher01a extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher01b.java b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher01b.java index d5918f84e..35330b86b 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher01b.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher01b.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class MovieSimpleActivityLauncher01b extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher02.java b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher02.java index 9bc85b6b0..d7c064a28 100644 --- a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivityLauncher02.java +++ b/src/demos/com/jogamp/opengl/demos/android/MovieSimpleActivityLauncher02.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class MovieSimpleActivityLauncher02 extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2Activity.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2Activity.java index eff2aae49..8ab927487 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2Activity.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2Activity.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.nio.Buffer; import java.nio.ByteBuffer; @@ -33,6 +33,7 @@ import java.util.ArrayList; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.demos.es2.GearsES2; import jogamp.newt.driver.android.NewtBaseActivity; @@ -43,7 +44,6 @@ import com.jogamp.newt.event.MouseEvent; import com.jogamp.newt.event.MonitorModeListener; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.jogl.demos.es2.GearsES2; import com.jogamp.opengl.util.Animator; import android.os.Bundle; @@ -92,6 +92,7 @@ public class NEWTGearsES2Activity extends NewtBaseActivity { if( e.getPointerCount() == 3 ) { Log.d(TAG, "MemoryHog"); new InterruptSource.Thread(null, new Runnable() { + @Override public void run() { final ArrayList<Buffer> buffers = new ArrayList<Buffer>(); while(true) { diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2ActivityLauncher.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2ActivityLauncher.java index aea2f24cd..a945baeab 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2ActivityLauncher.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2ActivityLauncher.java @@ -25,12 +25,12 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class NEWTGearsES2ActivityLauncher extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2ECTActivityLauncher.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2ECTActivityLauncher.java index 7454058fa..b627c6638 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2ECTActivityLauncher.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2ECTActivityLauncher.java @@ -25,12 +25,12 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class NEWTGearsES2ECTActivityLauncher extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2RGB565ActivityLauncher.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2RGB565ActivityLauncher.java index 7e20596cb..5ab877b35 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2RGB565ActivityLauncher.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2RGB565ActivityLauncher.java @@ -25,12 +25,12 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class NEWTGearsES2RGB565ActivityLauncher extends LauncherUtil.BaseActivityLauncher { diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2TransActivity.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2TransActivity.java index ebf8f35d6..8d945aad0 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2TransActivity.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2TransActivity.java @@ -25,10 +25,11 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.demos.es2.GearsES2; import jogamp.newt.driver.android.NewtBaseActivity; @@ -38,7 +39,6 @@ import com.jogamp.newt.event.MonitorEvent; import com.jogamp.newt.event.MonitorModeListener; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.jogl.demos.es2.GearsES2; import com.jogamp.opengl.util.Animator; import android.os.Bundle; diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2TransActivityLauncher.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2TransActivityLauncher.java index 590199ff9..7a44a495b 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2TransActivityLauncher.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGearsES2TransActivityLauncher.java @@ -1,9 +1,9 @@ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class NEWTGearsES2TransActivityLauncher extends LauncherUtil.BaseActivityLauncher { static String demo = "com.jogamp.opengl.test.android.NEWTGearsES2TransActivity"; diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGraphUI1pActivity.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI1pActivity.java index a272490bf..ea512375f 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGraphUI1pActivity.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI1pActivity.java @@ -25,11 +25,11 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; -import com.jogamp.opengl.test.junit.graph.ui.demos.GPUUISceneGLListener0A; +import com.jogamp.opengl.demos.graph.ui.GPUUISceneGLListener0A; import jogamp.newt.driver.android.NewtBaseActivity; diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGraphUI1pActivityLauncher.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI1pActivityLauncher.java index 27b367772..796cff268 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGraphUI1pActivityLauncher.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI1pActivityLauncher.java @@ -1,9 +1,10 @@ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class NEWTGraphUI1pActivityLauncher extends LauncherUtil.BaseActivityLauncher { static String demo = "com.jogamp.opengl.test.android.NEWTGraphUI1pActivity"; diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGraphUI2pActivity.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI2pActivity.java index 0acc87690..ede8a5d31 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGraphUI2pActivity.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI2pActivity.java @@ -25,11 +25,11 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; -import com.jogamp.opengl.test.junit.graph.ui.demos.GPUUISceneGLListener0A; +import com.jogamp.opengl.demos.graph.ui.GPUUISceneGLListener0A; import jogamp.newt.driver.android.NewtBaseActivity; diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGraphUI2pActivityLauncher.java b/src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI2pActivityLauncher.java index 349d2a17e..3d6b7991d 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGraphUI2pActivityLauncher.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTGraphUI2pActivityLauncher.java @@ -1,9 +1,10 @@ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import java.util.Arrays; import java.util.List; -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; +import com.jogamp.opengl.demos.android.LauncherUtil.BaseActivityLauncher; +import com.jogamp.opengl.demos.android.LauncherUtil.OrderedProperties; public class NEWTGraphUI2pActivityLauncher extends LauncherUtil.BaseActivityLauncher { static String demo = "com.jogamp.opengl.test.android.NEWTGraphUI2pActivity"; diff --git a/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES2Activity.java b/src/demos/com/jogamp/opengl/demos/android/NEWTRedSquareES2Activity.java index db246c91c..1485fd3dd 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES2Activity.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTRedSquareES2Activity.java @@ -25,10 +25,11 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.demos.es2.RedSquareES2; import jogamp.newt.driver.android.NewtBaseActivity; @@ -36,7 +37,6 @@ import com.jogamp.newt.event.MonitorEvent; import com.jogamp.newt.event.MonitorModeListener; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.jogl.demos.es2.RedSquareES2; import com.jogamp.opengl.util.Animator; import android.os.Bundle; diff --git a/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES2ActivityLauncher.java b/src/demos/com/jogamp/opengl/demos/android/NEWTRedSquareES2ActivityLauncher.java index 22058dd34..061953d5e 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES2ActivityLauncher.java +++ b/src/demos/com/jogamp/opengl/demos/android/NEWTRedSquareES2ActivityLauncher.java @@ -1,4 +1,4 @@ -package com.jogamp.opengl.test.android; +package com.jogamp.opengl.demos.android; import android.app.Activity; import android.content.Intent; diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/CrossFadePlayer.java b/src/demos/com/jogamp/opengl/demos/av/CrossFadePlayer.java index cc4096672..a4d5e73de 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/CrossFadePlayer.java +++ b/src/demos/com/jogamp/opengl/demos/av/CrossFadePlayer.java @@ -26,7 +26,7 @@ * or implied, of JogAmp Community.
*/
-package com.jogamp.opengl.test.junit.jogl.demos.es2.av;
+package com.jogamp.opengl.demos.av;
import com.jogamp.common.net.Uri;
import com.jogamp.common.util.InterruptSource;
diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieCube.java b/src/demos/com/jogamp/opengl/demos/av/MovieCube.java index c43d216dc..caf2f9381 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieCube.java +++ b/src/demos/com/jogamp/opengl/demos/av/MovieCube.java @@ -26,7 +26,7 @@ * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.jogl.demos.es2.av; +package com.jogamp.opengl.demos.av; import java.io.File; import java.io.IOException; @@ -57,9 +57,9 @@ import com.jogamp.newt.event.WindowAdapter; import com.jogamp.newt.event.WindowEvent; import com.jogamp.newt.opengl.GLWindow; import com.jogamp.opengl.JoglVersion; -import com.jogamp.opengl.test.junit.graph.TextRendererGLELBase; -import com.jogamp.opengl.test.junit.jogl.demos.es2.TextureSequenceCubeES2; -import com.jogamp.opengl.test.junit.util.MiscUtils; +import com.jogamp.opengl.demos.es2.TextureSequenceCubeES2; +import com.jogamp.opengl.demos.graph.TextRendererGLELBase; +import com.jogamp.opengl.demos.util.MiscUtils; import com.jogamp.opengl.util.Animator; import com.jogamp.opengl.util.GLReadBufferUtil; import com.jogamp.opengl.util.av.GLMediaPlayer; diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSBSStereo.java b/src/demos/com/jogamp/opengl/demos/av/MovieSBSStereo.java index d9028822e..62e3975dd 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSBSStereo.java +++ b/src/demos/com/jogamp/opengl/demos/av/MovieSBSStereo.java @@ -26,7 +26,7 @@ * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.jogl.demos.es2.av; +package com.jogamp.opengl.demos.av; import java.net.URISyntaxException; import java.nio.FloatBuffer; @@ -60,11 +60,10 @@ import com.jogamp.newt.opengl.GLWindow; import com.jogamp.opengl.GLExtensions; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.JoglVersion; +import com.jogamp.opengl.demos.graph.TextRendererGLELBase; import com.jogamp.opengl.math.FloatUtil; import com.jogamp.opengl.math.Quaternion; import com.jogamp.opengl.math.VectorUtil; -import com.jogamp.opengl.test.junit.graph.TextRendererGLELBase; -import com.jogamp.opengl.test.junit.util.UITestCase; import com.jogamp.opengl.util.CustomGLEventListener; import com.jogamp.opengl.util.GLArrayDataServer; import com.jogamp.opengl.util.PMVMatrix; diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSimple.java b/src/demos/com/jogamp/opengl/demos/av/MovieSimple.java index 2b2bcbcc4..42c7b94a5 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/av/MovieSimple.java +++ b/src/demos/com/jogamp/opengl/demos/av/MovieSimple.java @@ -26,26 +26,14 @@ * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.jogl.demos.es2.av; +package com.jogamp.opengl.demos.av; import java.io.File; import java.io.IOException; +import java.net.URI; import java.net.URISyntaxException; import java.nio.FloatBuffer; -import com.jogamp.opengl.GL; -import com.jogamp.opengl.GL2ES2; -import com.jogamp.opengl.GLAnimatorControl; -import com.jogamp.opengl.GLAutoDrawable; -import com.jogamp.opengl.GLCapabilities; -import com.jogamp.opengl.GLES2; -import com.jogamp.opengl.GLEventListener; -import com.jogamp.opengl.GLException; -import com.jogamp.opengl.GLProfile; -import com.jogamp.opengl.GLRunnable; -import com.jogamp.opengl.GLUniformData; -import com.jogamp.opengl.fixedfunc.GLMatrixFunc; - import com.jogamp.common.net.Uri; import com.jogamp.common.os.Platform; import com.jogamp.common.util.InterruptSource; @@ -65,10 +53,22 @@ import com.jogamp.newt.event.MouseListener; import com.jogamp.newt.event.WindowAdapter; import com.jogamp.newt.event.WindowEvent; import com.jogamp.newt.opengl.GLWindow; +import com.jogamp.opengl.GL; +import com.jogamp.opengl.GL2ES2; +import com.jogamp.opengl.GLAnimatorControl; +import com.jogamp.opengl.GLAutoDrawable; +import com.jogamp.opengl.GLCapabilities; +import com.jogamp.opengl.GLES2; +import com.jogamp.opengl.GLEventListener; +import com.jogamp.opengl.GLException; import com.jogamp.opengl.GLExtensions; +import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.GLRunnable; +import com.jogamp.opengl.GLUniformData; import com.jogamp.opengl.JoglVersion; -import com.jogamp.opengl.test.junit.graph.TextRendererGLELBase; -import com.jogamp.opengl.test.junit.util.MiscUtils; +import com.jogamp.opengl.demos.graph.TextRendererGLELBase; +import com.jogamp.opengl.demos.util.MiscUtils; +import com.jogamp.opengl.fixedfunc.GLMatrixFunc; import com.jogamp.opengl.util.Animator; import com.jogamp.opengl.util.GLArrayDataServer; import com.jogamp.opengl.util.GLReadBufferUtil; diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/stereo/StereoDemo01.java b/src/demos/com/jogamp/opengl/demos/av/StereoDemo01.java index 0d1f1700d..88a49a09a 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/stereo/StereoDemo01.java +++ b/src/demos/com/jogamp/opengl/demos/av/StereoDemo01.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.jogl.stereo; +package com.jogamp.opengl.demos.av; import java.io.File; import java.net.URISyntaxException; @@ -38,6 +38,9 @@ import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.GLRunnable; +import com.jogamp.opengl.demos.es2.GearsES2; +import com.jogamp.opengl.demos.util.MiscUtils; +import com.jogamp.opengl.demos.util.QuitAdapter; import jogamp.opengl.util.stereo.GenericStereoDevice; @@ -49,11 +52,6 @@ import com.jogamp.newt.event.KeyEvent; import com.jogamp.newt.opengl.GLWindow; import com.jogamp.newt.opengl.util.stereo.StereoDeviceUtil; import com.jogamp.opengl.math.FovHVHalves; -import com.jogamp.opengl.test.junit.jogl.demos.es2.GearsES2; -import com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieSBSStereo; -import com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieSimple; -import com.jogamp.opengl.test.junit.util.MiscUtils; -import com.jogamp.opengl.test.junit.util.QuitAdapter; import com.jogamp.opengl.util.Animator; import com.jogamp.opengl.util.AnimatorBase; import com.jogamp.opengl.util.av.GLMediaPlayer; @@ -331,6 +329,7 @@ public class StereoDemo01 { window.addWindowListener(quitAdapter); window.addKeyListener(new KeyAdapter() { + @Override public void keyReleased(final KeyEvent e) { if( e.isAutoRepeat() ) { return; diff --git a/src/demos/com/jogamp/opengl/demos/es2/GearsES2.java b/src/demos/com/jogamp/opengl/demos/es2/GearsES2.java index ffb4f95d0..23cd8978d 100644 --- a/src/demos/com/jogamp/opengl/demos/es2/GearsES2.java +++ b/src/demos/com/jogamp/opengl/demos/es2/GearsES2.java @@ -32,6 +32,7 @@ import com.jogamp.newt.event.PinchToZoomGesture; import com.jogamp.newt.event.GestureHandler.GestureEvent; import com.jogamp.opengl.GLRendererQuirks; import com.jogamp.opengl.JoglVersion; +import com.jogamp.opengl.demos.GearsObject; import com.jogamp.opengl.math.FloatUtil; import com.jogamp.opengl.math.Quaternion; import com.jogamp.opengl.math.VectorUtil; @@ -55,8 +56,6 @@ import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLUniformData; import com.jogamp.opengl.fixedfunc.GLMatrixFunc; -import com.jogamp.opengl.demos.GearsObject; - /** * GearsES2.java <BR> * @author Brian Paul (converted to Java by Ron Cemer and Sven Gothel) <P> diff --git a/src/demos/com/jogamp/opengl/demos/es2/GearsObjectES2.java b/src/demos/com/jogamp/opengl/demos/es2/GearsObjectES2.java index 5c48a5df1..3aa6696df 100644 --- a/src/demos/com/jogamp/opengl/demos/es2/GearsObjectES2.java +++ b/src/demos/com/jogamp/opengl/demos/es2/GearsObjectES2.java @@ -27,13 +27,11 @@ import com.jogamp.opengl.GL2ES2; import com.jogamp.opengl.GLBufferStorage; import com.jogamp.opengl.GLException; import com.jogamp.opengl.GLUniformData; - +import com.jogamp.opengl.demos.GearsObject; import com.jogamp.opengl.util.GLArrayDataServer; import com.jogamp.opengl.util.PMVMatrix; import com.jogamp.opengl.util.glsl.ShaderState; -import com.jogamp.opengl.demos.GearsObject; - /** * GearsObjectES2.java <BR> * @author Brian Paul (converted to Java by Ron Cemer and Sven Gothel) <P> diff --git a/src/demos/com/jogamp/opengl/demos/es2/TextureSequenceCubeES2.java b/src/demos/com/jogamp/opengl/demos/es2/TextureSequenceCubeES2.java new file mode 100644 index 000000000..6a7115143 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/es2/TextureSequenceCubeES2.java @@ -0,0 +1,491 @@ +/** + * Copyright 2012 JogAmp Community. All rights reserved. + * + * 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 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * 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.demos.es2; + +import java.nio.FloatBuffer; + +import com.jogamp.opengl.GL; +import com.jogamp.opengl.GL2ES2; +import com.jogamp.opengl.GLAutoDrawable; +import com.jogamp.opengl.GLES2; +import com.jogamp.opengl.GLEventListener; +import com.jogamp.opengl.GLException; +import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.GLUniformData; +import com.jogamp.opengl.fixedfunc.GLMatrixFunc; + +import com.jogamp.common.os.Platform; +import com.jogamp.newt.Window; +import com.jogamp.newt.event.MouseAdapter; +import com.jogamp.newt.event.MouseEvent; +import com.jogamp.newt.event.MouseListener; +import com.jogamp.opengl.GLExtensions; +import com.jogamp.opengl.JoglVersion; +import com.jogamp.opengl.util.GLArrayDataServer; +import com.jogamp.opengl.util.PMVMatrix; +import com.jogamp.opengl.util.glsl.ShaderCode; +import com.jogamp.opengl.util.glsl.ShaderProgram; +import com.jogamp.opengl.util.glsl.ShaderState; +import com.jogamp.opengl.util.texture.Texture; +import com.jogamp.opengl.util.texture.TextureCoords; +import com.jogamp.opengl.util.texture.TextureSequence; +import com.jogamp.opengl.util.texture.TextureSequence.TextureFrame; + +public class TextureSequenceCubeES2 implements GLEventListener { + public TextureSequenceCubeES2 (final TextureSequence texSource, final boolean innerCube, final float zoom0, final float rotx, final float roty) { + this.texSeq = texSource; + this.innerCube = innerCube; + this.zoom = zoom0; + this.view_rotx = rotx; + this.view_roty = roty; + } + + private TextureSequence texSeq; + public ShaderState st; + public PMVMatrix pmvMatrix; + private GLUniformData pmvMatrixUniform; + // private TextureCoords[] textureCoords = null; + private float nearPlaneNormalized; + // private float zoom0=-5.0f, zoom=zoom0; + // private float view_rotx = 20.0f, view_roty = 30.0f, view_rotz = 0.0f; + public float zoom=-2.3f; + private float view_rotx = 0.0f, view_roty = 0.0f; + private final float view_rotz = 0.0f; + int[] vboNames = new int[4]; + boolean innerCube; + + private final MouseListener mouseAction = new MouseAdapter() { + int lx = 0; + int ly = 0; + boolean first = false; + + public void mousePressed(final MouseEvent e) { + first = true; + } + public void mouseMoved(final MouseEvent e) { + first = false; + } + public void mouseDragged(final MouseEvent e) { + int width, height; + final Object source = e.getSource(); + Window window = null; + if(source instanceof Window) { + window = (Window) source; + width=window.getSurfaceWidth(); + height=window.getSurfaceHeight(); + } else if (source instanceof GLAutoDrawable) { + final GLAutoDrawable glad = (GLAutoDrawable) source; + width = glad.getSurfaceWidth(); + height = glad.getSurfaceHeight(); + } else if (GLProfile.isAWTAvailable() && source instanceof java.awt.Component) { + final java.awt.Component comp = (java.awt.Component) source; + width=comp.getWidth(); // FIXME HiDPI: May need to convert window units -> pixel units! + height=comp.getHeight(); + } else { + throw new RuntimeException("Event source neither Window nor Component: "+source); + } + if(e.getPointerCount()==2) { + // 2 pointers zoom .. + if(first) { + lx = Math.abs(e.getY(0)-e.getY(1)); + first=false; + return; + } + final int nv = Math.abs(e.getY(0)-e.getY(1)); + final int dy = nv - lx; + + { + final float o = zoom; + final float d = 40f*Math.signum(dy)/height; + zoom += d; + System.err.println("zoom.d: "+o+" + "+d+" -> "+zoom); + } + + lx = nv; + } else { + // 1 pointer rotate + if(first) { + lx = e.getX(); + ly = e.getY(); + first=false; + return; + } + final int nx = e.getX(); + final int ny = e.getY(); + view_roty += 360f * ( (float)( nx - lx ) / (float)width ); + view_rotx += 360f * ( (float)( ny - ly ) / (float)height ); + lx = nx; + ly = ny; + } + } + public void mouseWheelMoved(final MouseEvent e) { + // System.err.println("XXX "+e); + if( !e.isShiftDown() ) { + final float o = zoom; + final float d = e.getRotation()[1]/10f; // vertical: wheel + zoom += d; + System.err.println("zoom.w: "+o+" + "+d+" -> "+zoom); + } + } + }; + + static final String shaderBasename = "texsequence_xxx"; + static final String myTextureLookupName = "myTexture2D"; + + private void initShader(final GL2ES2 gl) { + // Create & Compile the shader objects + final ShaderCode rsVp = ShaderCode.create(gl, GL2ES2.GL_VERTEX_SHADER, this.getClass(), + "shader", "shader/bin", shaderBasename, true); + final ShaderCode rsFp = ShaderCode.create(gl, GL2ES2.GL_FRAGMENT_SHADER, this.getClass(), + "shader", "shader/bin", shaderBasename, true); + + boolean preludeGLSLVersion = true; + if( GLES2.GL_TEXTURE_EXTERNAL_OES == texSeq.getTextureTarget() ) { + if( !gl.isExtensionAvailable(GLExtensions.OES_EGL_image_external) ) { + throw new GLException(GLExtensions.OES_EGL_image_external+" requested but not available"); + } + if( Platform.OSType.ANDROID == Platform.getOSType() && gl.isGLES3() ) { + // Bug on Nexus 10, ES3 - Android 4.3, where + // GL_OES_EGL_image_external extension directive leads to a failure _with_ '#version 300 es' ! + // P0003: Extension 'GL_OES_EGL_image_external' not supported + preludeGLSLVersion = false; + } + } + rsVp.defaultShaderCustomization(gl, preludeGLSLVersion, true); + + int rsFpPos = preludeGLSLVersion ? rsFp.addGLSLVersion(gl) : 0; + rsFpPos = rsFp.insertShaderSource(0, rsFpPos, texSeq.getRequiredExtensionsShaderStub()); + rsFp.addDefaultShaderPrecision(gl, rsFpPos); + + final String texLookupFuncName = texSeq.getTextureLookupFunctionName(myTextureLookupName); + rsFp.replaceInShaderSource(myTextureLookupName, texLookupFuncName); + + // Inject TextureSequence shader details + final StringBuilder sFpIns = new StringBuilder(); + sFpIns.append("uniform ").append(texSeq.getTextureSampler2DType()).append(" mgl_ActiveTexture;\n"); + sFpIns.append(texSeq.getTextureLookupFragmentShaderImpl()); + rsFp.insertShaderSource(0, "TEXTURE-SEQUENCE-CODE-BEGIN", 0, sFpIns); + + // Create & Link the shader program + final ShaderProgram sp = new ShaderProgram(); + sp.add(rsVp); + sp.add(rsFp); + if(!sp.link(gl, System.err)) { + throw new GLException("Couldn't link program: "+sp); + } + + // Let's manage all our states using ShaderState. + st = new ShaderState(); + st.attachShaderProgram(gl, sp, false); + } + + GLArrayDataServer interleavedVBO, cubeIndicesVBO; + + public void init(final GLAutoDrawable drawable) { + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + System.err.println(JoglVersion.getGLInfo(gl, null)); + final TextureFrame frame = texSeq.getLastTexture(); + if( null == frame ) { + return; + } + final Texture tex= frame.getTexture(); + + initShader(gl); + + // Push the 1st uniform down the path + st.useProgram(gl, true); + + pmvMatrix = new PMVMatrix(); + reshapePMV(drawable.getSurfaceWidth(), drawable.getSurfaceHeight()); + pmvMatrixUniform = new GLUniformData("mgl_PMVMatrix", 4, 4, pmvMatrix.glGetPMvMatrixf()); // P, Mv + if(!st.uniform(gl, pmvMatrixUniform)) { + throw new GLException("Error setting PMVMatrix in shader: "+st); + } + if(!st.uniform(gl, new GLUniformData("mgl_ActiveTexture", texSeq.getTextureUnit()))) { + throw new GLException("Error setting mgl_ActiveTexture in shader: "+st); + } + + + // calculate centered tex coords w/ aspect ratio + final float[] fixedCubeTexCoords = new float[s_cubeTexCoords.length]; + { + final float aspect = tex.getAspectRatio(); + final TextureCoords tc = tex.getImageTexCoords(); + System.err.println("XXX0: aspect: "+aspect); + System.err.println("XXX0: y-flip: "+tex.getMustFlipVertically()); + System.err.println("XXX0: "+tc); + final float tc_x1 = Math.max(tc.left(), tc.right()); + final float tc_y1 = Math.max(tc.bottom(), tc.top()); + final float ss=1f, ts=aspect; // scale tex-coord + final float dy = ( 1f - aspect ) / 2f ; + for(int i=0; i<s_cubeTexCoords.length; i+=2) { + final float tx = s_cubeTexCoords[i+0]; + final float ty = s_cubeTexCoords[i+1]; + if(tx!=0) { + fixedCubeTexCoords[i+0] = tc_x1 * ss; + } + if(ty==0 && !tex.getMustFlipVertically() || ty!=0 && tex.getMustFlipVertically()) { + fixedCubeTexCoords[i+1] = 0f + dy; + } else { + fixedCubeTexCoords[i+1] = tc_y1 * ts + dy; + } + } + } + + interleavedVBO = GLArrayDataServer.createGLSLInterleaved(3+4+2, GL.GL_FLOAT, false, 3*6*4, GL.GL_STATIC_DRAW); + { + interleavedVBO.addGLSLSubArray("mgl_Vertex", 3, GL.GL_ARRAY_BUFFER); + interleavedVBO.addGLSLSubArray("mgl_Color", 4, GL.GL_ARRAY_BUFFER); + //interleavedVBO.addGLSLSubArray("mgl_Normal", 3, GL.GL_ARRAY_BUFFER); + interleavedVBO.addGLSLSubArray("mgl_MultiTexCoord", 2, GL.GL_ARRAY_BUFFER); + + final FloatBuffer ib = (FloatBuffer)interleavedVBO.getBuffer(); + + for(int i=0; i<6*4; i++) { + ib.put(s_cubeVertices, i*3, 3); + ib.put(s_cubeColors, i*4, 4); + //ib.put(s_cubeNormals, i*3, 3); + ib.put(fixedCubeTexCoords, i*2, 2); + } + } + interleavedVBO.seal(gl, true); + interleavedVBO.enableBuffer(gl, false); + st.ownAttribute(interleavedVBO, true); + + cubeIndicesVBO = GLArrayDataServer.createData(6, GL.GL_UNSIGNED_SHORT, 6, GL.GL_STATIC_DRAW, GL.GL_ELEMENT_ARRAY_BUFFER); + for(int i=0; i<6*6; i++) { + cubeIndicesVBO.puts(s_cubeIndices[i]); + } + cubeIndicesVBO.seal(gl, true); + cubeIndicesVBO.enableBuffer(gl, false); + st.ownAttribute(cubeIndicesVBO, true); + + + gl.glEnable(GL.GL_DEPTH_TEST); + + st.useProgram(gl, false); + + final Object upstreamWidget = drawable.getUpstreamWidget(); + if (upstreamWidget instanceof Window) { + final Window window = (Window) upstreamWidget; + window.addMouseListener(mouseAction); + } else if (GLProfile.isAWTAvailable() && upstreamWidget instanceof java.awt.Component) { + final java.awt.Component comp = (java.awt.Component) upstreamWidget; + new com.jogamp.newt.event.awt.AWTMouseAdapter(mouseAction, drawable).addTo(comp); + } + + // Let's show the completed shader state .. + System.out.println("iVBO: "+interleavedVBO); + System.out.println(st); + } + + public void reshape(final GLAutoDrawable drawable, final int x, final int y, final int width, final int height) { + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + + gl.glViewport(0, 0, width, height); + + if(!innerCube) { + // lights on + } else { + // lights off + } + // gl.glEnable(GL.GL_CULL_FACE); + // gl.glDisable(GL.GL_DITHER); + + if(null != st) { + reshapePMV(width, height); + st.useProgram(gl, true); + st.uniform(gl, pmvMatrixUniform); + st.useProgram(gl, false); + } + } + + + private void reshapePMV(final int width, final int height) { + if(null != pmvMatrix) { + pmvMatrix.glMatrixMode(GLMatrixFunc.GL_PROJECTION); + pmvMatrix.glLoadIdentity(); + if(!innerCube) { + pmvMatrix.gluPerspective(45.0f, (float)width / (float)height, 1f, 10.0f); + nearPlaneNormalized = 1f/(100f-1f); + } else { + pmvMatrix.glOrthof(-1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 10.0f); + nearPlaneNormalized = 0f; + } + System.err.println("XXX0: Perspective nearPlaneNormalized: "+nearPlaneNormalized); + + pmvMatrix.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); + pmvMatrix.glLoadIdentity(); + pmvMatrix.glTranslatef(0, 0, zoom); + } + } + + + @Override + public void dispose(final GLAutoDrawable drawable) { + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + + texSeq = null; + pmvMatrixUniform = null; + pmvMatrix=null; + if( null != st ) { + st.destroy(gl); + st=null; + } + } + + @Override + public void display(final GLAutoDrawable drawable) { + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + + if(innerCube) { + // Clear background to white + gl.glClearColor(1.0f, 1.0f, 1.0f, 0.4f); + } else { + // Clear background to blue + gl.glClearColor(0.0f, 0.0f, 1.0f, 1.0f); + } + gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); + + if( null == st ) { + return; + } + + st.useProgram(gl, true); + + pmvMatrix.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); + pmvMatrix.glLoadIdentity(); + pmvMatrix.glTranslatef(0, 0, zoom); + pmvMatrix.glRotatef(view_rotx, 1.0f, 0.0f, 0.0f); + pmvMatrix.glRotatef(view_roty, 0.0f, 1.0f, 0.0f); + pmvMatrix.glRotatef(view_rotz, 0.0f, 0.0f, 1.0f); + st.uniform(gl, pmvMatrixUniform); + interleavedVBO.enableBuffer(gl, true); + Texture tex = null; + if(null!=texSeq) { + final TextureSequence.TextureFrame texFrame = texSeq.getNextTexture(gl); + if(null != texFrame) { + tex = texFrame.getTexture(); + gl.glActiveTexture(GL.GL_TEXTURE0+texSeq.getTextureUnit()); + tex.enable(gl); + tex.bind(gl); + } + } + cubeIndicesVBO.bindBuffer(gl, true); // keeps VBO binding + gl.glDrawElements(GL.GL_TRIANGLES, cubeIndicesVBO.getElemCount() * cubeIndicesVBO.getCompsPerElem(), GL.GL_UNSIGNED_SHORT, 0); + cubeIndicesVBO.bindBuffer(gl, false); + + if(null != tex) { + tex.disable(gl); + } + interleavedVBO.enableBuffer(gl, false); + st.useProgram(gl, false); + } + + static final float[] light_position = { -50.f, 50.f, 50.f, 0.f }; + static final float[] light_ambient = { 0.125f, 0.125f, 0.125f, 1.f }; + static final float[] light_diffuse = { 1.0f, 1.0f, 1.0f, 1.f }; + static final float[] material_spec = { 1.0f, 1.0f, 1.0f, 0.f }; + static final float[] zero_vec4 = { 0.0f, 0.0f, 0.0f, 0.f }; + + private static final float[] s_cubeVertices = /* f b t b r l */ + { + -1f, 1f, 1f, 1f, -1f, 1f, 1f, 1f, 1f, -1f, -1f, 1f, + + -1f, 1f, -1f, 1f, -1f, -1f, 1f, 1f, -1f, -1f, -1f, -1f, + + -1f, -1f, 1f, 1f, -1f, -1f, 1f, -1f, 1f, -1f, -1f, -1f, + + -1f, 1f, 1f, 1f, 1f, -1f, 1f, 1f, 1f, -1f, 1f, -1f, + + 1f, -1f, 1f, 1f, 1f, -1f, 1f, 1f, 1f, 1f, -1f, -1f, + + -1f, -1f, 1f, -1f, 1f, -1f, -1f, 1f, 1f, -1f, -1f, -1f + }; + + private static final float[] s_cubeTexCoords = + { // LT RB RT LB + 0f, 1f, 1f, 0f, 1f, 1f, 0f, 0f, + + 0f, 1f, 1f, 0f, 1f, 1f, 0f, 0f, + + 0f, 1f, 1f, 0f, 1f, 1f, 0f, 0f, + + 0f, 1f, 1f, 0f, 1f, 1f, 0f, 0f, + + 0f, 0f, 1f, 1f, 0f, 1f, 1f, 0f, + + 0f, 0f, 1f, 1f, 0f, 1f, 1f, 0f, + }; + + private static final float[] s_cubeColors = + { + 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, + + 40f/255f, 80f/255f, 160f/255f, 255f/255f, 40f/255f, 80f/255f, 160f/255f, 255f/255f, + 40f/255f, 80f/255f, 160f/255f, 255f/255f, 40f/255f, 80f/255f, 160f/255f, 255f/255f, + + 40f/255f, 80f/255f, 160f/255f, 255f/255f, 40f/255f, 80f/255f, 160f/255f, 255f/255f, + 40f/255f, 80f/255f, 160f/255f, 255f/255f, 40f/255f, 80f/255f, 160f/255f, 255f/255f, + + 128f/255f, 128f/255f, 128f/255f, 255f/255f, 128f/255f, 128f/255f, 128f/255f, 255f/255f, + 128f/255f, 128f/255f, 128f/255f, 255f/255f, 128f/255f, 128f/255f, 128f/255f, 255f/255f, + + 255f/255f, 110f/255f, 10f/255f, 255f/255f, 255f/255f, 110f/255f, 10f/255f, 255f/255f, + 255f/255f, 110f/255f, 10f/255f, 255f/255f, 255f/255f, 110f/255f, 10f/255f, 255f/255f, + + 255f/255f, 70f/255f, 60f/255f, 255f/255f, 255f/255f, 70f/255f, 60f/255f, 255f/255f, + 255f/255f, 70f/255f, 60f/255f, 255f/255f, 255f/255f, 70f/255f, 60f/255f, 255f/255f + }; + + /* + private static final float[] s_cubeNormals = + { + 0f, 0f, 1f, 0f, 0f, 1f, 0f, 0f, 1f, 0f, 0f, 1f, + + 0f, 0f, -1f, 0f, 0f, -1f, 0f, 0f, -1f, 0f, 0f, -1f, + + 0f, -1f, 0f, 0f, -1f, 0f, 0f, -1f, 0f, 0f, -1f, 0f, + + 0f, 1f, 0f, 0f, 1f, 0f, 0f, 1f, 0f, 0f, 1f, 0f, + + 1f, 0f, 0f, 1f, 0f, 0f, 1f, 0f, 0f, 1f, 0f, 0f, + + -1f, 0f, 0f, -1f, 0f, 0f, -1f, 0f, 0f, -1f, 0f, 0f + };*/ + private static final short[] s_cubeIndices = + { + 0, 3, 1, 2, 0, 1, /* front */ + 6, 5, 4, 5, 7, 4, /* back */ + 8, 11, 9, 10, 8, 9, /* top */ + 15, 12, 13, 12, 14, 13, /* bottom */ + 16, 19, 17, 18, 16, 17, /* right */ + 23, 20, 21, 20, 22, 21 /* left */ + }; +} + diff --git a/src/demos/com/jogamp/opengl/demos/graph/FontSetDemos.java b/src/demos/com/jogamp/opengl/demos/graph/FontSetDemos.java new file mode 100644 index 000000000..12c996945 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/FontSetDemos.java @@ -0,0 +1,35 @@ +package com.jogamp.opengl.demos.graph; + +import java.io.IOException; + +import com.jogamp.common.util.IOUtil; +import com.jogamp.graph.font.Font; +import com.jogamp.graph.font.FontFactory; +import com.jogamp.graph.font.FontSet; + +public class FontSetDemos { + public static Font[] getSet01() throws IOException { + final Font[] fonts = new Font[11]; + int i = 0; + fonts[i++] = FontFactory.get(FontFactory.UBUNTU).getDefault(); // FontSet.FAMILY_REGULAR, FontSet.STYLE_NONE + fonts[i++] = FontFactory.get(FontFactory.UBUNTU).get(FontSet.FAMILY_LIGHT, FontSet.STYLE_NONE); + fonts[i++] = FontFactory.get(FontFactory.UBUNTU).get(FontSet.FAMILY_LIGHT, FontSet.STYLE_ITALIC); + fonts[i++] = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeMono.ttf", + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); + fonts[i++] = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeMonoBold.ttf", + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); + fonts[i++] = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeSans.ttf", + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); + fonts[i++] = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeSansBold.ttf", + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); + fonts[i++] = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeSerif.ttf", + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); + fonts[i++] = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeSerifBold.ttf", + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); + fonts[i++] = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeSerifBoldItalic.ttf", + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); + fonts[i++] = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeSerifItalic.ttf", + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); + return fonts; + } +} diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionGLListener00.java b/src/demos/com/jogamp/opengl/demos/graph/GPURegionGLListener00.java index bc53bee2b..2515b8217 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionGLListener00.java +++ b/src/demos/com/jogamp/opengl/demos/graph/GPURegionGLListener00.java @@ -26,7 +26,7 @@ * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.demos; +package com.jogamp.opengl.demos.graph; import com.jogamp.opengl.GL; import com.jogamp.opengl.GL2ES2; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionGLListener01.java b/src/demos/com/jogamp/opengl/demos/graph/GPURegionGLListener01.java index 506c47f7d..c7fbe54c8 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionGLListener01.java +++ b/src/demos/com/jogamp/opengl/demos/graph/GPURegionGLListener01.java @@ -26,7 +26,7 @@ * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.demos; +package com.jogamp.opengl.demos.graph; import com.jogamp.opengl.GL; import com.jogamp.opengl.GL2ES2; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionGLListener10.java b/src/demos/com/jogamp/opengl/demos/graph/GPURegionGLListener10.java index 188c27495..6af1aac96 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionGLListener10.java +++ b/src/demos/com/jogamp/opengl/demos/graph/GPURegionGLListener10.java @@ -26,7 +26,7 @@ * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.demos; +package com.jogamp.opengl.demos.graph; import java.util.ArrayList; import java.util.List; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionNewtDemo.java b/src/demos/com/jogamp/opengl/demos/graph/GPURegionNewtDemo.java index a5990af89..59292c7be 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURegionNewtDemo.java +++ b/src/demos/com/jogamp/opengl/demos/graph/GPURegionNewtDemo.java @@ -26,11 +26,11 @@ * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.demos; +package com.jogamp.opengl.demos.graph; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; - +import com.jogamp.opengl.demos.util.MiscUtils; import com.jogamp.graph.curve.Region; import com.jogamp.graph.curve.opengl.RenderState; import com.jogamp.graph.geom.SVertex; @@ -39,7 +39,6 @@ import com.jogamp.newt.event.KeyEvent; import com.jogamp.newt.event.WindowAdapter; import com.jogamp.newt.event.WindowEvent; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.util.MiscUtils; import com.jogamp.opengl.util.Animator; /** Demonstrate the rendering of multiple outlines into one region/OutlineShape diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURendererListenerBase01.java b/src/demos/com/jogamp/opengl/demos/graph/GPURendererListenerBase01.java index 1bce5e72c..185699d55 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPURendererListenerBase01.java +++ b/src/demos/com/jogamp/opengl/demos/graph/GPURendererListenerBase01.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.demos; +package com.jogamp.opengl.demos.graph; import java.io.File; import java.io.IOException; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextGLListener0A.java b/src/demos/com/jogamp/opengl/demos/graph/GPUTextGLListener0A.java index 9c6402a68..8a8a49869 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextGLListener0A.java +++ b/src/demos/com/jogamp/opengl/demos/graph/GPUTextGLListener0A.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.demos; +package com.jogamp.opengl.demos.graph; import com.jogamp.opengl.GL; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextNewtDemo.java b/src/demos/com/jogamp/opengl/demos/graph/GPUTextNewtDemo.java index 889f92a69..b4e91e01f 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextNewtDemo.java +++ b/src/demos/com/jogamp/opengl/demos/graph/GPUTextNewtDemo.java @@ -25,10 +25,11 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.demos; +package com.jogamp.opengl.demos.graph; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.demos.util.MiscUtils; import com.jogamp.opengl.math.geom.AABBox; import java.io.File; @@ -47,7 +48,6 @@ import com.jogamp.newt.event.KeyEvent; import com.jogamp.newt.event.WindowAdapter; import com.jogamp.newt.event.WindowEvent; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.util.MiscUtils; import com.jogamp.opengl.util.Animator; public class GPUTextNewtDemo { diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextRendererListenerBase01.java b/src/demos/com/jogamp/opengl/demos/graph/GPUTextRendererListenerBase01.java index d18766ee1..f23548b8a 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/GPUTextRendererListenerBase01.java +++ b/src/demos/com/jogamp/opengl/demos/graph/GPUTextRendererListenerBase01.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.demos; +package com.jogamp.opengl.demos.graph; import java.io.IOException; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/MSAATool.java b/src/demos/com/jogamp/opengl/demos/graph/MSAATool.java index bd50da534..e0815b70a 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/MSAATool.java +++ b/src/demos/com/jogamp/opengl/demos/graph/MSAATool.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.demos; +package com.jogamp.opengl.demos.graph; import com.jogamp.opengl.GL; import com.jogamp.opengl.GL2ES2; diff --git a/src/demos/com/jogamp/opengl/demos/graph/TextRendererGLELBase.java b/src/demos/com/jogamp/opengl/demos/graph/TextRendererGLELBase.java new file mode 100644 index 000000000..61240e4a2 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/TextRendererGLELBase.java @@ -0,0 +1,291 @@ +/** + * Copyright 2014 JogAmp Community. All rights reserved. + * + * 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 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * 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.demos.graph; + +import java.io.IOException; + +import com.jogamp.opengl.GL2ES2; +import com.jogamp.opengl.GLAutoDrawable; +import com.jogamp.opengl.GLEventListener; +import com.jogamp.opengl.fixedfunc.GLMatrixFunc; + +import com.jogamp.graph.curve.opengl.GLRegion; +import com.jogamp.graph.curve.opengl.RenderState; +import com.jogamp.graph.curve.opengl.RegionRenderer; +import com.jogamp.graph.curve.opengl.TextRegionUtil; +import com.jogamp.graph.font.Font; +import com.jogamp.graph.font.FontFactory; +import com.jogamp.graph.font.FontScale; +import com.jogamp.graph.font.FontSet; +import com.jogamp.graph.geom.SVertex; +import com.jogamp.graph.geom.plane.AffineTransform; +import com.jogamp.newt.Window; +import com.jogamp.opengl.util.PMVMatrix; + +public abstract class TextRendererGLELBase implements GLEventListener { + public final int renderModes; + + protected final int[] vbaaSampleCount; + protected final float[] staticRGBAColor = new float[] { 1f, 1f, 1f, 1f }; + + private boolean exclusivePMVMatrix = true; + private PMVMatrix sharedPMVMatrix = null; + private RenderState rs = null; + private RegionRenderer.GLCallback enableCallback=null, disableCallback=null; + protected RegionRenderer renderer = null; + protected TextRegionUtil textRenderUtil = null; + + protected final AffineTransform tempT1 = new AffineTransform(); + protected final AffineTransform tempT2 = new AffineTransform(); + + /** scale pixel, default is 1f */ + protected float pixelScale = 1.0f; + + /** dpi display resolution, queried at {@link #init(GLAutoDrawable)} if NEWT, otherwise 96. */ + protected float dpiH = 96; + + boolean flipVerticalInGLOrientation = false; + + /** + * @param fontSet e.g. default is {@link FontFactory#UBUNTU} + * @param fontFamily e.g. default is {@link FontSet#FAMILY_REGULAR} + * @param fontStylebits e.g. default is {@link FontSet#STYLE_NONE} + * @return the resulting font. + */ + public static Font getFont(final int fontSet, final int fontFamily, final int fontStylebits) { + try { + return FontFactory.get(fontSet).get(fontFamily, fontStylebits); + } catch (final IOException e) { + e.printStackTrace(); + } + return null; + } + + /** + * @param renderModes + * @param sampleCount desired multisampling sample count for msaa-rendering. + * @see #setRendererCallbacks(com.jogamp.graph.curve.opengl.RegionRenderer.GLCallback, com.jogamp.graph.curve.opengl.RegionRenderer.GLCallback) + */ + public TextRendererGLELBase(final int renderModes, final int[] sampleCount) { + this.renderModes = renderModes; + this.vbaaSampleCount = sampleCount; + } + + /** + * <p> + * Must be called before {@link #init(GLAutoDrawable)}. + * </p> + * @param rs + */ + public void setRenderState(final RenderState rs) { this.rs = rs; } + + /** + * In exclusive mode, impl. uses a pixelScale of 1f and orthogonal PMV on window dimensions + * and renderString uses 'height' for '1'. + * <p> + * In non-exclusive mode, i.e. shared w/ custom PMV (within another 3d scene), + * it uses the custom pixelScale and renderString uses normalized 'height', i.e. '1'. + * </p> + * <p> + * Must be called before {@link #init(GLAutoDrawable)}. + * </p> + */ + public void setSharedPMVMatrix(final PMVMatrix pmv) { + this.sharedPMVMatrix = pmv; + } + + /** + * See {@link RegionRenderer#create(RenderState, com.jogamp.graph.curve.opengl.RegionRenderer.GLCallback, com.jogamp.graph.curve.opengl.RegionRenderer.GLCallback)}. + * <p> + * Must be called before {@link #init(GLAutoDrawable)}. + * </p> + */ + public void setRendererCallbacks(final RegionRenderer.GLCallback enable, final RegionRenderer.GLCallback disable) { + this.enableCallback = enable; + this.disableCallback = disable; + } + + public void setFlipVerticalInGLOrientation(final boolean v) { flipVerticalInGLOrientation=v; } + public final RegionRenderer getRenderer() { return renderer; } + public final TextRegionUtil getTextRenderUtil() { return textRenderUtil; } + + @Override + public void init(final GLAutoDrawable drawable) { + if( null == this.rs ) { + exclusivePMVMatrix = null == sharedPMVMatrix; + this.rs = RenderState.createRenderState(SVertex.factory(), sharedPMVMatrix); + } + this.renderer = RegionRenderer.create(rs, enableCallback, disableCallback); + rs.setHintMask(RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED); + this.textRenderUtil = new TextRegionUtil(renderModes); + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + renderer.init(gl); + rs.setColorStatic(staticRGBAColor[0], staticRGBAColor[1], staticRGBAColor[2], staticRGBAColor[3]); + renderer.enable(gl, false); + + final Object upObj = drawable.getUpstreamWidget(); + if( upObj instanceof Window ) { + final float[] dpi = FontScale.perMMToPerInch( ((Window)upObj).getPixelsPerMM(new float[2]) ); + dpiH = dpi[1]; + } + } + + @Override + public void reshape(final GLAutoDrawable drawable, final int x, final int y, final int width, final int height) { + if( null != renderer ) { + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + renderer.enable(gl, true); + if( exclusivePMVMatrix ) { + // renderer.reshapePerspective(gl, 45.0f, width, height, 0.1f, 1000.0f); + renderer.reshapeOrtho(width, height, 0.1f, 1000.0f); + pixelScale = 1.0f; + } else { + renderer.reshapeNotify(width, height); + } + renderer.enable(gl, false); + } + } + + @Override + public abstract void display(GLAutoDrawable drawable); + + @Override + public void dispose(final GLAutoDrawable drawable) { + if( null != renderer ) { + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + renderer.destroy(gl); + } + } + + int lastRow = -1; + + /** + * + * @param drawable + * @param font + * @param pixelSize Use {@link Font#toPixels(float, float)} for resolution correct pixel-size. + * @param text + * @param column + * @param tx + * @param ty + * @param tz + * @param cacheRegion + */ + public void renderString(final GLAutoDrawable drawable, + final Font font, final float pixelSize, final String text, + final int column, final float tx, final float ty, final float tz, final boolean cacheRegion) { + final int row = lastRow + 1; + renderStringImpl(drawable, font, pixelSize, text, column, row, tx, ty, tz, cacheRegion, null); + } + + public void renderString(final GLAutoDrawable drawable, + final Font font, final float pixelSize, final String text, + final int column, final float tx, final float ty, final float tz, final GLRegion region) { + final int row = lastRow + 1; + renderStringImpl(drawable, font, pixelSize, text, column, row, tx, ty, tz, false, region); + } + + /** + * + * @param drawable + * @param font + * @param pixelSize Use {@link Font#toPixels(float, float)} for resolution correct pixel-size. + * @param text + * @param column + * @param row + * @param tx + * @param ty + * @param tz + * @param cacheRegion + */ + public void renderString(final GLAutoDrawable drawable, + final Font font, final float pixelSize, final String text, + final int column, final int row, + final float tx, final float ty, final float tz, final boolean cacheRegion) { + renderStringImpl(drawable, font, pixelSize, text, column, row, tx, ty, tz, cacheRegion, null); + } + + public void renderString(final GLAutoDrawable drawable, + final Font font, final float pixelSize, final String text, + final int column, final int row, + final float tx, final float ty, final float tz, final GLRegion region) { + renderStringImpl(drawable, font, pixelSize, text, column, row, tx, ty, tz, false, region); + } + + private void renderStringImpl(final GLAutoDrawable drawable, + final Font font, final float pixelSize, final String text, + final int column, final int row, + final float tx, final float ty, final float tz, final boolean cacheRegion, final GLRegion region) { + if( null != renderer ) { + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + + float dx = tx; + float dy; + + if( !exclusivePMVMatrix ) { + dy = 1f-ty; + } else { + final int height = drawable.getSurfaceHeight(); + dy = height-ty; + } + final float sxy = pixelScale * pixelSize; + final int newLineCount = TextRegionUtil.getCharCount(text, '\n'); + final float lineHeight = font.getLineHeight(); + dx += sxy * font.getAdvanceWidth('X') * column; + dy -= sxy * lineHeight * ( row + 1 ); + + final PMVMatrix pmvMatrix = rs.getMatrix(); + pmvMatrix.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); + if( !exclusivePMVMatrix ) { + pmvMatrix.glPushMatrix(); + } else { + pmvMatrix.glLoadIdentity(); + } + pmvMatrix.glTranslatef(dx, dy, tz); + if( flipVerticalInGLOrientation && drawable.isGLOriented() ) { + pmvMatrix.glScalef(sxy, -1f*sxy, 1.0f); + } else { + pmvMatrix.glScalef(sxy, sxy, 1.0f); + } + renderer.enable(gl, true); + if( cacheRegion ) { + textRenderUtil.drawString3D(gl, renderer, font, text, null, vbaaSampleCount); + } else if( null != region ) { + TextRegionUtil.drawString3D(gl, region, renderer, font, text, null, vbaaSampleCount, tempT1, tempT1); + } else { + TextRegionUtil.drawString3D(gl, renderModes, renderer, font, text, null, vbaaSampleCount, tempT1, tempT1); + } + renderer.enable(gl, false); + + if( !exclusivePMVMatrix ) { + pmvMatrix.glPopMatrix(); + } + lastRow = row + newLineCount; + } + } +} diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMono.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMono.ttf Binary files differnew file mode 100644 index 000000000..c4200565a --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMono.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoBold.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoBold.ttf Binary files differnew file mode 100644 index 000000000..0bee057ec --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoBold.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoBoldOblique.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoBoldOblique.ttf Binary files differnew file mode 100644 index 000000000..91bbc0e8a --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoBoldOblique.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoOblique.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoOblique.ttf Binary files differnew file mode 100644 index 000000000..3252bdda6 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeMonoOblique.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSans.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSans.ttf Binary files differnew file mode 100644 index 000000000..e56dc6e90 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSans.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansBold.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansBold.ttf Binary files differnew file mode 100644 index 000000000..66e19ecb0 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansBold.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansBoldOblique.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansBoldOblique.ttf Binary files differnew file mode 100644 index 000000000..de8a9e153 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansBoldOblique.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansOblique.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansOblique.ttf Binary files differnew file mode 100644 index 000000000..b0357eabb --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSansOblique.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerif.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerif.ttf Binary files differnew file mode 100644 index 000000000..dffa1aedb --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerif.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifBold.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifBold.ttf Binary files differnew file mode 100644 index 000000000..e2393ad22 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifBold.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifBoldItalic.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifBoldItalic.ttf Binary files differnew file mode 100644 index 000000000..46bc4695f --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifBoldItalic.ttf diff --git a/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifItalic.ttf b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifItalic.ttf Binary files differnew file mode 100644 index 000000000..d173e3566 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/graph/fonts/freefont/FreeSerifItalic.ttf diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneGLListener0A.java b/src/demos/com/jogamp/opengl/demos/graph/ui/GPUUISceneGLListener0A.java index f49258832..990143de8 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneGLListener0A.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/GPUUISceneGLListener0A.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.demos; +package com.jogamp.opengl.demos.graph.ui; import java.io.File; import java.io.IOException; @@ -43,6 +43,9 @@ import com.jogamp.opengl.GLEventListener; import com.jogamp.opengl.GLPipelineFactory; import com.jogamp.opengl.GLRunnable; import com.jogamp.opengl.JoglVersion; +import com.jogamp.opengl.demos.es2.GearsES2; +import com.jogamp.opengl.demos.graph.FontSetDemos; +import com.jogamp.opengl.demos.graph.MSAATool; import com.jogamp.common.net.Uri; import com.jogamp.common.util.IOUtil; import com.jogamp.common.util.InterruptSource; @@ -71,9 +74,6 @@ import com.jogamp.newt.event.MouseEvent.PointerClass; import com.jogamp.newt.opengl.GLWindow; import com.jogamp.opengl.math.FloatUtil; import com.jogamp.opengl.math.VectorUtil; -import com.jogamp.opengl.test.junit.graph.FontSet01; -import com.jogamp.opengl.test.junit.graph.demos.MSAATool; -import com.jogamp.opengl.test.junit.jogl.demos.es2.GearsES2; import com.jogamp.opengl.util.GLReadBufferUtil; import com.jogamp.opengl.util.av.GLMediaPlayer; import com.jogamp.opengl.util.av.GLMediaPlayerFactory; @@ -81,6 +81,7 @@ import com.jogamp.opengl.util.texture.ImageSequence; import com.jogamp.opengl.util.texture.TextureIO; public class GPUUISceneGLListener0A implements GLEventListener { + static private final String defaultMediaURL = "http://archive.org/download/BigBuckBunny_328/BigBuckBunny_512kb.mp4"; private boolean debug = false; private boolean trace = false; @@ -93,6 +94,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { private final Font font; private final Font fontFPS; + private final Uri filmURL; private final float sceneDist = 3000f; private final float zNear = 0.1f, zFar = 7000f; @@ -155,28 +157,30 @@ public class GPUUISceneGLListener0A implements GLEventListener { * @param renderModes */ public GPUUISceneGLListener0A(final int renderModes) { - this(null, renderModes, false, false); + this(null, null, renderModes, false, false); } /** + * @param filmURL TODO * @param renderModes * @param debug * @param trace */ - public GPUUISceneGLListener0A(final String fontfilename, final int renderModes, final boolean debug, final boolean trace) { - this(fontfilename, 0f, renderModes, debug, trace); + public GPUUISceneGLListener0A(final String fontfilename, final String filmURL, final int renderModes, final boolean debug, final boolean trace) { + this(fontfilename, filmURL, 0f, renderModes, debug, trace); } /** + * @param filmURL TODO * @param noAADPIThreshold see {@link #DefaultNoAADPIThreshold} * @param debug * @param trace */ - public GPUUISceneGLListener0A(final String fontfilename, final float noAADPIThreshold, final boolean debug, final boolean trace) { - this(fontfilename, noAADPIThreshold, 0, debug, trace); + public GPUUISceneGLListener0A(final String fontfilename, final String filmURL, final float noAADPIThreshold, final boolean debug, final boolean trace) { + this(fontfilename, filmURL, noAADPIThreshold, 0, debug, trace); } - private GPUUISceneGLListener0A(final String fontfilename, final float noAADPIThreshold, final int renderModes, final boolean debug, final boolean trace) { + private GPUUISceneGLListener0A(final String fontfilename, final String filmURL, final float noAADPIThreshold, final int renderModes, final boolean debug, final boolean trace) { this.noAADPIThreshold = noAADPIThreshold; this.debug = debug; this.trace = trace; @@ -186,19 +190,24 @@ public class GPUUISceneGLListener0A implements GLEventListener { try { if( null == fontfilename ) { font = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeSerif.ttf", - FontSet01.class.getClassLoader(), FontSet01.class).getInputStream(), true); + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); } else { font = FontFactory.get( new File( fontfilename ) ); } System.err.println("Font "+font.getFullFamilyName()); fontFPS = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeMonoBold.ttf", - FontSet01.class.getClassLoader(), FontSet01.class).getInputStream(), true); + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); System.err.println("Font FPS "+fontFPS.getFullFamilyName()); } catch (final IOException ioe) { throw new RuntimeException(ioe); } + try { + this.filmURL = Uri.cast( null != filmURL ? filmURL : defaultMediaURL ); + } catch (final URISyntaxException e1) { + throw new RuntimeException(e1); + } { final RenderState rs = RenderState.createRenderState(SVertex.factory()); final RegionRenderer renderer = RegionRenderer.create(rs, RegionRenderer.defaultBlendEnable, RegionRenderer.defaultBlendDisable); @@ -219,7 +228,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { } private void translateButtons(final float tx, final float ty, final float tz) { for(int i=0; i<buttons.size(); i++) { - buttons.get(i).translate(tx, ty, tz); + buttons.get(i).move(tx, ty, tz); } } @@ -280,7 +289,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { Button button = new Button(SVertex.factory(), renderModes, font, "Next Text", buttonXSize, buttonYSize); button.setName(BUTTON_NEXTTEXT); - button.translate(xStartLeft,yStartTop-diffY*buttons.size(), 0f); + button.move(xStartLeft,yStartTop-diffY*buttons.size(), 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { @@ -297,7 +306,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { button = new Button(SVertex.factory(), renderModes, font, "Show FPS", buttonXSize, buttonYSize); button.setName(BUTTON_FPS); - button.translate(xStartLeft,yStartTop - diffY*buttons.size(), 0f); + button.move(xStartLeft,yStartTop - diffY*buttons.size(), 0f); button.setToggleable(true); button.setToggle(fpsLabel.isEnabled()); button.addMouseListener(new Shape.MouseGestureAdapter() { @@ -314,7 +323,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { button = new Button(SVertex.factory(), renderModes, font, "V-Sync", buttonXSize, buttonYSize); button.setName(BUTTON_VSYNC); - button.translate(xStartLeft,yStartTop - diffY*buttons.size(), 0f); + button.move(xStartLeft,yStartTop - diffY*buttons.size(), 0f); button.setToggleable(true); button.setToggle(gl.getSwapInterval()>0); button.addMouseListener(new Shape.MouseGestureAdapter() { @@ -337,11 +346,11 @@ public class GPUUISceneGLListener0A implements GLEventListener { buttons.add(button); button = new Button(SVertex.factory(), renderModes, font, "< Tilt >", buttonXSize, buttonYSize); - button.translate(xStartLeft,yStartTop - diffY*buttons.size(), 0f); + button.move(xStartLeft,yStartTop - diffY*buttons.size(), 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); if( shapeEvent.objPos[0] < shapeEvent.shape.getBounds().getCenter()[0] ) { rotateButtons(new float[] { 0f, -5f, 0f}); // left-half pressed } else { @@ -356,11 +365,11 @@ public class GPUUISceneGLListener0A implements GLEventListener { if( pass2Mode ) { // second column to the left button = new Button(SVertex.factory(), renderModes, font, "< Samples >", buttonXSize, buttonYSize); - button.translate(xStartLeft,yStartTop - diffY*buttons.size(), 0f); + button.move(xStartLeft,yStartTop - diffY*buttons.size(), 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); int sampleCount = sceneUICntrl.getSampleCount(); if( shapeEvent.objPos[0] < shapeEvent.shape.getBounds().getCenter()[0] ) { // left-half pressed @@ -375,11 +384,11 @@ public class GPUUISceneGLListener0A implements GLEventListener { buttons.add(button); button = new Button(SVertex.factory(), renderModes, font, "< Quality >", buttonXSize, buttonYSize); - button.translate(xStartLeft,yStartTop - diffY*buttons.size(), 0f); + button.move(xStartLeft,yStartTop - diffY*buttons.size(), 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); int quality = shapeEvent.shape.getQuality(); if( shapeEvent.objPos[0] < shapeEvent.shape.getBounds().getCenter()[0] ) { @@ -401,7 +410,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { button = new Button(SVertex.factory(), renderModes, font, "Quit", buttonXSize, buttonYSize); button.setName(BUTTON_QUIT); - button.translate(xStartLeft,yStartTop - diffY*buttons.size(), 0f); + button.move(xStartLeft,yStartTop - diffY*buttons.size(), 0f); button.setColor(0.7f, 0.0f, 0.0f, 1.0f); button.setLabelColor(1.2f, 1.2f, 1.2f); button.setPressedColorMod(1.1f, 0.0f, 0.0f, 1.0f); @@ -428,7 +437,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { final int j = 1; // column int k = 0; // row button = new Button(SVertex.factory(), renderModes, font, "Y Flip", buttonXSize, buttonYSize); - button.translate(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); + button.move(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { @@ -439,7 +448,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { k++; button = new Button(SVertex.factory(), renderModes, font, "X Flip", buttonXSize, buttonYSize); - button.translate(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); + button.move(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { @@ -450,11 +459,11 @@ public class GPUUISceneGLListener0A implements GLEventListener { k++; button = new Button(SVertex.factory(), renderModes, font, "+", buttonXSize, buttonYSize); - button.translate(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); + button.move(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); // rel position to center final float dx = shapeEvent.objPos[0] - shapeEvent.shape.getBounds().getCenter()[0] ; final float dy = shapeEvent.objPos[1] - shapeEvent.shape.getBounds().getCenter()[1] ; @@ -474,11 +483,11 @@ public class GPUUISceneGLListener0A implements GLEventListener { k++; button = new Button(SVertex.factory(), renderModes, font, "< Space >", buttonXSize, buttonYSize); - button.translate(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); + button.move(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); final float dx, dy; if( shapeEvent.objPos[0] < shapeEvent.shape.getBounds().getCenter()[0] ) { dx=-0.01f; dy=-0.005f; @@ -495,11 +504,11 @@ public class GPUUISceneGLListener0A implements GLEventListener { k++; button = new Button(SVertex.factory(), renderModes, font, "< Corner >", buttonXSize, buttonYSize); - button.translate(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); + button.move(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); final float dc; if( shapeEvent.objPos[0] < shapeEvent.shape.getBounds().getCenter()[0] ) { dc=-0.1f; @@ -516,7 +525,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { k++; button = new Button(SVertex.factory(), renderModes, font, "Reset", buttonXSize, buttonYSize); - button.translate(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); + button.move(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { @@ -527,7 +536,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { k++; button = new Button(SVertex.factory(), renderModes, font, "Snapshot", buttonXSize, buttonYSize); - button.translate(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); + button.move(xStartLeft - diffX*j,yStartTop - diffY*k, 0f); button.addMouseListener(new Shape.MouseGestureAdapter() { @Override public void mouseClicked(final MouseEvent e) { @@ -565,7 +574,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { mPlayerButton.setName(BUTTON_MOVIE); mPlayerButton.setVerbose(true); mPlayerButton.addDefaultEventListener(); - mPlayerButton.translate(xStartRight, yStartTop - diffY*1, 0f); + mPlayerButton.move(xStartRight, yStartTop - diffY*1, 0f); mPlayerButton.setToggleable(true); mPlayerButton.setToggle(false); // toggle == false -> mute audio mPlayerButton.setToggleOffColorMod(0f, 1f, 0f, 1.0f); @@ -576,12 +585,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { mPlayer.setAudioVolume( mPlayerButton.isToggleOn() ? 1f : 0f ); } } ); buttons.add(mPlayerButton); - try { - final Uri streamLoc = Uri.cast("http://archive.org/download/BigBuckBunny_328/BigBuckBunny_512kb.mp4"); - mPlayer.initStream(streamLoc, GLMediaPlayer.STREAM_ID_AUTO, GLMediaPlayer.STREAM_ID_AUTO, GLMediaPlayer.TEXTURE_COUNT_DEFAULT); - } catch (final URISyntaxException e1) { - e1.printStackTrace(); - } + mPlayer.initStream(filmURL, GLMediaPlayer.STREAM_ID_AUTO, GLMediaPlayer.STREAM_ID_AUTO, GLMediaPlayer.TEXTURE_COUNT_DEFAULT); } if( true ) { final ImageSequence imgSeq = new ImageSequence(texUnitImageButton, true); @@ -594,7 +598,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { e2.printStackTrace(); } imgSeq.setManualStepping(true); - imgButton.translate(xStartRight, yStartTop - diffY*2.5f, 0f); + imgButton.move(xStartRight, yStartTop - diffY*2.5f, 0f); imgButton.addMouseListener(dragZoomRotateListener); imgButton.addMouseListener(new Shape.MouseGestureAdapter() { @Override @@ -626,7 +630,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { glelButton.setToggleable(true); glelButton.setToggle(false); // toggle == true -> animation glelButton.setAnimate(false); - glelButton.translate(xStartRight, yStartTop - diffY*4f, 0f); + glelButton.move(xStartRight, yStartTop - diffY*4f, 0f); glelButton.addMouseListener(dragZoomRotateListener); glelButton.addMouseListener(new Shape.MouseGestureAdapter() { @Override @@ -686,7 +690,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { truePtSizeLabel = new Label(sceneUICntrl.getVertexFactory(), renderModes, font, pixelSize10Pt, truePtSize); sceneUICntrl.addShape(truePtSizeLabel); truePtSizeLabel.setEnabled(enableOthers); - truePtSizeLabel.translate(0, - 1.5f * jogampLabel.getLineHeight(), 0f); + truePtSizeLabel.move(0, - 1.5f * jogampLabel.getLineHeight(), 0f); truePtSizeLabel.setColor(0.1f, 0.1f, 0.1f, 1.0f); /** @@ -700,7 +704,7 @@ public class GPUUISceneGLListener0A implements GLEventListener { sceneUICntrl.addShape(fpsLabel); fpsLabel.setEnabled(enableOthers); fpsLabel.setColor(0.1f, 0.1f, 0.1f, 1.0f); - fpsLabel.translate(0f, pixelSizeFPS * (fontFPS.getMetrics().getLineGap() - fontFPS.getMetrics().getDescent()), 0f); + fpsLabel.move(0f, pixelSizeFPS * (fontFPS.getMetrics().getLineGap() - fontFPS.getMetrics().getDescent()), 0f); initButtons(drawable.getGL().getGL2ES2(), drawable.getSurfaceWidth(), drawable.getSurfaceHeight()); for(int i=0; i<buttons.size(); i++) { @@ -822,24 +826,24 @@ public class GPUUISceneGLListener0A implements GLEventListener { reshapeUI(drawable); } for(int i=0; i<buttons.size() && i<buttonsLeftCount; i++) { - buttons.get(i).translate(dxLeft, dyTop, dz); + buttons.get(i).move(dxLeft, dyTop, dz); } for(int i=buttonsLeftCount; i<buttons.size(); i++) { - buttons.get(i).translate(dxRight, dyTop, dz); + buttons.get(i).move(dxRight, dyTop, dz); } final float dxMiddleAbs = width * relMiddle; final float dyTopLabelAbs = drawable.getSurfaceHeight() - 2f*jogampLabel.getLineHeight(); - jogampLabel.setTranslate(dxMiddleAbs, dyTopLabelAbs, dz); - truePtSizeLabel.setTranslate(dxMiddleAbs, dyTopLabelAbs, dz); - truePtSizeLabel.setTranslate(dxMiddleAbs, dyTopLabelAbs - 1.5f * jogampLabel.getLineHeight(), 0f); - fpsLabel.translate(0f, 0f, 0f); + jogampLabel.setPosition(dxMiddleAbs, dyTopLabelAbs, dz); + truePtSizeLabel.setPosition(dxMiddleAbs, dyTopLabelAbs, dz); + truePtSizeLabel.setPosition(dxMiddleAbs, dyTopLabelAbs - 1.5f * jogampLabel.getLineHeight(), 0f); + fpsLabel.move(0f, 0f, 0f); if( null != labels[currentText] ) { - labels[currentText].setTranslate(dxMiddleAbs, + labels[currentText].setPosition(dxMiddleAbs, dyTopLabelAbs - 1.5f * jogampLabel.getLineHeight() - 1.5f * truePtSizeLabel.getLineHeight(), 0f); System.err.println("Label["+currentText+"] MOVE: "+labels[currentText]); - System.err.println("Label["+currentText+"] MOVE: "+Arrays.toString(labels[currentText].getTranslate())); + System.err.println("Label["+currentText+"] MOVE: "+Arrays.toString(labels[currentText].getPosition())); } sceneUICntrl.reshape(drawable, x, y, width, height); @@ -885,13 +889,13 @@ public class GPUUISceneGLListener0A implements GLEventListener { labels[currentText] = new Label(sceneUICntrl.getVertexFactory(), renderModes, font, pixelSizeFixed, strings[currentText]); labels[currentText].setColor(0.1f, 0.1f, 0.1f, 1.0f); labels[currentText].setEnabled(enableOthers); - labels[currentText].translate(dxMiddle, + labels[currentText].move(dxMiddle, dyTop - 1.5f * jogampLabel.getLineHeight() - 1.5f * truePtSizeLabel.getLineHeight(), 0f); labels[currentText].addMouseListener(dragZoomRotateListener); sceneUICntrl.addShape(labels[currentText]); System.err.println("Label["+currentText+"] CTOR: "+labels[currentText]); - System.err.println("Label["+currentText+"] CTOR: "+Arrays.toString(labels[currentText].getTranslate())); + System.err.println("Label["+currentText+"] CTOR: "+Arrays.toString(labels[currentText].getPosition())); } if( fpsLabel.isEnabled() ) { final String text; @@ -929,22 +933,22 @@ public class GPUUISceneGLListener0A implements GLEventListener { @Override public void mouseDragged(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); if( e.getPointerCount() == 1 ) { - final float[] tx = shapeEvent.shape.getTranslate(); + final float[] tx = shapeEvent.shape.getPosition(); actionText = String.format((Locale)null, "Pos %6.2f / %6.2f / %6.2f", tx[0], tx[1], tx[2]); } } @Override public void mouseWheelMoved(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); final boolean isOnscreen = PointerClass.Onscreen == e.getPointerType(0).getPointerClass(); if( 0 == ( ~InputEvent.BUTTONALL_MASK & e.getModifiers() ) && !isOnscreen ) { // offscreen vertical mouse wheel zoom final float tz = 100f*e.getRotation()[1]; // vertical: wheel System.err.println("Rotate.Zoom.W: "+tz); - shapeEvent.shape.translate(0f, 0f, tz); + shapeEvent.shape.move(0f, 0f, tz); } else if( isOnscreen || e.isControlDown() ) { final float[] rot = VectorUtil.scaleVec3(e.getRotation(), e.getRotation(), FloatUtil.PI / 180.0f); if( isOnscreen ) { @@ -958,12 +962,12 @@ public class GPUUISceneGLListener0A implements GLEventListener { } @Override public void gestureDetected(final GestureEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); if( e instanceof PinchToZoomGesture.ZoomEvent ) { final PinchToZoomGesture.ZoomEvent ze = (PinchToZoomGesture.ZoomEvent) e; final float tz = ze.getDelta() * ze.getScale(); System.err.println("Rotate.Zoom.G: "+tz); - shapeEvent.shape.translate(0f, 0f, tz); + shapeEvent.shape.move(0f, 0f, tz); } } }; } diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneNewtDemo.java b/src/demos/com/jogamp/opengl/demos/graph/ui/GPUUISceneNewtDemo.java index 36e8ee713..4ab5326d5 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneNewtDemo.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/GPUUISceneNewtDemo.java @@ -25,12 +25,13 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.demos; +package com.jogamp.opengl.demos.graph.ui; import com.jogamp.nativewindow.ScalableSurface; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.JoglVersion; +import com.jogamp.opengl.demos.util.MiscUtils; import com.jogamp.common.util.VersionUtil; import com.jogamp.graph.curve.Region; import com.jogamp.newt.Display; @@ -39,7 +40,6 @@ import com.jogamp.newt.Screen; import com.jogamp.newt.event.WindowAdapter; import com.jogamp.newt.event.WindowEvent; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.util.MiscUtils; import com.jogamp.opengl.util.Animator; import com.jogamp.opengl.util.caps.NonFSAAGLCapsChooser; @@ -62,6 +62,7 @@ public class GPUUISceneNewtDemo { final float[] reqSurfacePixelScale = new float[] { ScalableSurface.AUTOMAX_PIXELSCALE, ScalableSurface.AUTOMAX_PIXELSCALE }; String fontfilename = null; + String filmURL = null; int width = 1280, height = 720; @@ -113,6 +114,9 @@ public class GPUUISceneNewtDemo { forceGL3 = true; } else if(args[i].equals("-gldef")) { forceGLDef = true; + } else if(args[i].equals("-film")) { + i++; + filmURL = args[i]; } } } @@ -170,8 +174,8 @@ public class GPUUISceneNewtDemo { window.setSurfaceScale(reqSurfacePixelScale); // final float[] valReqSurfacePixelScale = window.getRequestedSurfaceScale(new float[2]); - final GPUUISceneGLListener0A scene = 0 < GraphAutoMode ? new GPUUISceneGLListener0A(fontfilename, GraphAutoMode, DEBUG, TRACE) : - new GPUUISceneGLListener0A(fontfilename, rmode, DEBUG, TRACE); + final GPUUISceneGLListener0A scene = 0 < GraphAutoMode ? new GPUUISceneGLListener0A(fontfilename, filmURL, GraphAutoMode, DEBUG, TRACE) : + new GPUUISceneGLListener0A(fontfilename, filmURL, rmode, DEBUG, TRACE); window.addGLEventListener(scene); scene.attachInputListenerTo(window); diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneTextAnim01.java b/src/demos/com/jogamp/opengl/demos/graph/ui/GPUUISceneTextAnim01.java index 49757e7a0..45bfd53f1 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneTextAnim01.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/GPUUISceneTextAnim01.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.demos; +package com.jogamp.opengl.demos.graph.ui; import java.io.File; import java.io.IOException; @@ -58,10 +58,10 @@ import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLEventListener; import com.jogamp.opengl.GLPipelineFactory; import com.jogamp.opengl.JoglVersion; +import com.jogamp.opengl.demos.graph.FontSetDemos; +import com.jogamp.opengl.demos.graph.MSAATool; import com.jogamp.opengl.math.FloatUtil; import com.jogamp.opengl.math.VectorUtil; -import com.jogamp.opengl.test.junit.graph.FontSet01; -import com.jogamp.opengl.test.junit.graph.demos.MSAATool; import com.jogamp.opengl.util.GLReadBufferUtil; public class GPUUISceneTextAnim01 implements GLEventListener { @@ -121,14 +121,14 @@ public class GPUUISceneTextAnim01 implements GLEventListener { try { if( null == fontfilename ) { font = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeSerif.ttf", - FontSet01.class.getClassLoader(), FontSet01.class).getInputStream(), true); + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); } else { font = FontFactory.get( new File( fontfilename ) ); } System.err.println("Font "+font.getFullFamilyName()); fontFPS = FontFactory.get(IOUtil.getResource("fonts/freefont/FreeMonoBold.ttf", - FontSet01.class.getClassLoader(), FontSet01.class).getInputStream(), true); + FontSetDemos.class.getClassLoader(), FontSetDemos.class).getInputStream(), true); System.err.println("Font FPS "+fontFPS.getFullFamilyName()); } catch (final IOException ioe) { @@ -168,7 +168,7 @@ public class GPUUISceneTextAnim01 implements GLEventListener { sceneUICntrl.addShape(fpsLabel); fpsLabel.setEnabled(true); fpsLabel.setColor(0.1f, 0.1f, 0.1f, 1.0f); - fpsLabel.translate(0f, pixelSizeFPS * (fontFPS.getMetrics().getLineGap() - fontFPS.getMetrics().getDescent()), 0f); + fpsLabel.move(0f, pixelSizeFPS * (fontFPS.getMetrics().getLineGap() - fontFPS.getMetrics().getDescent()), 0f); } @Override @@ -238,8 +238,8 @@ public class GPUUISceneTextAnim01 implements GLEventListener { final float dxMiddleAbs = width * relMiddle; final float dyTopLabelAbs = drawable.getSurfaceHeight() - 2f*jogampLabel.getLineHeight(); - jogampLabel.setTranslate(dxMiddleAbs, dyTopLabelAbs, dz); - fpsLabel.translate(0f, 0f, 0f); + jogampLabel.setPosition(dxMiddleAbs, dyTopLabelAbs, dz); + fpsLabel.move(0f, 0f, 0f); sceneUICntrl.reshape(drawable, x, y, width, height); @@ -311,22 +311,22 @@ public class GPUUISceneTextAnim01 implements GLEventListener { @Override public void mouseDragged(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); if( e.getPointerCount() == 1 ) { - final float[] tx = shapeEvent.shape.getTranslate(); + final float[] tx = shapeEvent.shape.getPosition(); actionText = String.format((Locale)null, "Pos %6.2f / %6.2f / %6.2f", tx[0], tx[1], tx[2]); } } @Override public void mouseWheelMoved(final MouseEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); final boolean isOnscreen = PointerClass.Onscreen == e.getPointerType(0).getPointerClass(); if( 0 == ( ~InputEvent.BUTTONALL_MASK & e.getModifiers() ) && !isOnscreen ) { // offscreen vertical mouse wheel zoom final float tz = 100f*e.getRotation()[1]; // vertical: wheel System.err.println("Rotate.Zoom.W: "+tz); - shapeEvent.shape.translate(0f, 0f, tz); + shapeEvent.shape.move(0f, 0f, tz); } else if( isOnscreen || e.isControlDown() ) { final float[] rot = VectorUtil.scaleVec3(e.getRotation(), e.getRotation(), FloatUtil.PI / 180.0f); if( isOnscreen ) { @@ -340,12 +340,12 @@ public class GPUUISceneTextAnim01 implements GLEventListener { } @Override public void gestureDetected(final GestureEvent e) { - final Shape.UIShapeEvent shapeEvent = (Shape.UIShapeEvent) e.getAttachment(); + final Shape.EventInfo shapeEvent = (Shape.EventInfo) e.getAttachment(); if( e instanceof PinchToZoomGesture.ZoomEvent ) { final PinchToZoomGesture.ZoomEvent ze = (PinchToZoomGesture.ZoomEvent) e; final float tz = ze.getDelta() * ze.getScale(); System.err.println("Rotate.Zoom.G: "+tz); - shapeEvent.shape.translate(0f, 0f, tz); + shapeEvent.shape.move(0f, 0f, tz); } } }; } diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/UIShapeDemo01.java b/src/demos/com/jogamp/opengl/demos/graph/ui/UIShapeDemo01.java index 7ccd80f46..b89b3e2b9 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/UIShapeDemo01.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/UIShapeDemo01.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.demos; +package com.jogamp.opengl.demos.graph.ui; import java.io.File; import java.io.IOException; @@ -41,10 +41,10 @@ import com.jogamp.opengl.GLException; import com.jogamp.opengl.GLPipelineFactory; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.GLRunnable; +import com.jogamp.opengl.demos.graph.MSAATool; import com.jogamp.opengl.fixedfunc.GLMatrixFunc; import com.jogamp.opengl.math.FloatUtil; import com.jogamp.opengl.math.geom.AABBox; -import com.jogamp.opengl.test.junit.graph.demos.MSAATool; import com.jogamp.common.util.InterruptSource; import com.jogamp.graph.curve.Region; import com.jogamp.graph.curve.opengl.RegionRenderer; @@ -426,7 +426,7 @@ public class UIShapeDemo01 implements GLEventListener { // final float dz = winObjPos[2] - objPosT[2]; if( !FloatUtil.isZero(dx, FloatUtil.EPSILON) || !FloatUtil.isZero(dy, FloatUtil.EPSILON) ) { System.err.println("CrossHair: Move.1: Win "+glWinX+"/"+glWinY+" -> Obj "+winObjPos[0]+"/"+winObjPos[1]+"/"+winObjPos[1]+" -> diff "+dx+" / "+dy); - crossHair.translate(dx, dy, 0f); + crossHair.move(dx, dy, 0f); } else { System.err.println("CrossHair: Move.0: Win "+glWinX+"/"+glWinY+" -> Obj "+winObjPos[0]+"/"+winObjPos[1]+"/"+winObjPos[1]+" -> diff "+dx+" / "+dy); } @@ -475,22 +475,22 @@ public class UIShapeDemo01 implements GLEventListener { } if(arg0.getKeyCode() == KeyEvent.VK_1){ - button.translate(0f, 0f, -zTran/10f); + button.move(0f, 0f, -zTran/10f); } else if(arg0.getKeyCode() == KeyEvent.VK_2){ - button.translate(0f, 0f, zTran/10f); + button.move(0f, 0f, zTran/10f); } else if(arg0.getKeyCode() == KeyEvent.VK_UP){ - button.translate(0f, button.getHeight()/10f, 0f); + button.move(0f, button.getHeight()/10f, 0f); } else if(arg0.getKeyCode() == KeyEvent.VK_DOWN){ - button.translate(0f, -button.getHeight()/10f, 0f); + button.move(0f, -button.getHeight()/10f, 0f); } else if(arg0.getKeyCode() == KeyEvent.VK_LEFT){ - button.translate(-button.getWidth()/10f, 0f, 0f); + button.move(-button.getWidth()/10f, 0f, 0f); } else if(arg0.getKeyCode() == KeyEvent.VK_RIGHT){ - button.translate(button.getWidth()/10f, 0f, 0f); + button.move(button.getWidth()/10f, 0f, 0f); } else if(arg0.getKeyCode() == KeyEvent.VK_4){ button.setSpacing(button.getSpacingX()-0.01f, button.getSpacingY()-0.005f); diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/UITypeDemo01.java b/src/demos/com/jogamp/opengl/demos/graph/ui/UITypeDemo01.java index b2a1bc772..56962e110 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/UITypeDemo01.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/UITypeDemo01.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.demos; +package com.jogamp.opengl.demos.graph.ui; import java.io.File; import java.io.IOException; @@ -41,14 +41,14 @@ import com.jogamp.opengl.GLException; import com.jogamp.opengl.GLPipelineFactory; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.GLRunnable; +import com.jogamp.opengl.demos.graph.MSAATool; +import com.jogamp.opengl.demos.graph.ui.testshapes.Glyph03FreeMonoRegular_M; +import com.jogamp.opengl.demos.graph.ui.testshapes.Glyph04FreeSans_0; +import com.jogamp.opengl.demos.graph.ui.testshapes.Glyph05FreeSerifBoldItalic_ae; +import com.jogamp.opengl.demos.util.MiscUtils; import com.jogamp.opengl.fixedfunc.GLMatrixFunc; import com.jogamp.opengl.math.FloatUtil; import com.jogamp.opengl.math.geom.AABBox; -import com.jogamp.opengl.test.junit.graph.demos.MSAATool; -import com.jogamp.opengl.test.junit.graph.ui.testshapes.Glyph03FreeMonoRegular_M; -import com.jogamp.opengl.test.junit.graph.ui.testshapes.Glyph04FreeSans_0; -import com.jogamp.opengl.test.junit.graph.ui.testshapes.Glyph05FreeSerifBoldItalic_ae; -import com.jogamp.opengl.test.junit.util.MiscUtils; import com.jogamp.common.util.InterruptSource; import com.jogamp.graph.curve.Region; import com.jogamp.graph.curve.opengl.GLRegion; @@ -207,7 +207,7 @@ public class UITypeDemo01 implements GLEventListener { if (false ) { final Rectangle o = new Rectangle(SVertex.factory(), renderModes, 1/10f, 1/20f, 1/1000f); - o.translate(o.getWidth(), -o.getHeight(), 0f); + o.move(o.getWidth(), -o.getHeight(), 0f); testObj = o; } else { final float scale = 0.15312886f; @@ -492,7 +492,7 @@ public class UITypeDemo01 implements GLEventListener { // final float dz = winObjPos[2] - objPosT[2]; if( !FloatUtil.isZero(dx, FloatUtil.EPSILON) || !FloatUtil.isZero(dy, FloatUtil.EPSILON) ) { System.err.println("CrossHair: Move.1: Win "+glWinX+"/"+glWinY+" -> Obj "+winObjPos[0]+"/"+winObjPos[1]+"/"+winObjPos[1]+" -> diff "+dx+" / "+dy); - crossHair.translate(dx, dy, 0f); + crossHair.move(dx, dy, 0f); } else { System.err.println("CrossHair: Move.0: Win "+glWinX+"/"+glWinY+" -> Obj "+winObjPos[0]+"/"+winObjPos[1]+"/"+winObjPos[1]+" -> diff "+dx+" / "+dy); } @@ -541,22 +541,22 @@ public class UITypeDemo01 implements GLEventListener { } if(arg0.getKeyCode() == KeyEvent.VK_1){ - crossHair.translate(0f, 0f, -zTran/10f); + crossHair.move(0f, 0f, -zTran/10f); } else if(arg0.getKeyCode() == KeyEvent.VK_2){ - crossHair.translate(0f, 0f, zTran/10f); + crossHair.move(0f, 0f, zTran/10f); } else if(arg0.getKeyCode() == KeyEvent.VK_UP){ - crossHair.translate(0f, crossHair.getHeight()/10f, 0f); + crossHair.move(0f, crossHair.getHeight()/10f, 0f); } else if(arg0.getKeyCode() == KeyEvent.VK_DOWN){ - crossHair.translate(0f, -crossHair.getHeight()/10f, 0f); + crossHair.move(0f, -crossHair.getHeight()/10f, 0f); } else if(arg0.getKeyCode() == KeyEvent.VK_LEFT){ - crossHair.translate(-crossHair.getWidth()/10f, 0f, 0f); + crossHair.move(-crossHair.getWidth()/10f, 0f, 0f); } else if(arg0.getKeyCode() == KeyEvent.VK_RIGHT){ - crossHair.translate(crossHair.getWidth()/10f, 0f, 0f); + crossHair.move(crossHair.getWidth()/10f, 0f, 0f); } else if(arg0.getKeyCode() == KeyEvent.VK_0){ // rotate(1); diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/button-pressed-145x53.png b/src/demos/com/jogamp/opengl/demos/graph/ui/button-pressed-145x53.png Binary files differindex 1eba3a09e..1eba3a09e 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/button-pressed-145x53.png +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/button-pressed-145x53.png diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/button-released-145x53.png b/src/demos/com/jogamp/opengl/demos/graph/ui/button-released-145x53.png Binary files differindex fe223c6d3..fe223c6d3 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/button-released-145x53.png +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/button-released-145x53.png diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph01UbuntuLight_o.java b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph01UbuntuLight_o.java index a79a68d4e..4171eeda8 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph01UbuntuLight_o.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph01UbuntuLight_o.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.testshapes; +package com.jogamp.opengl.demos.graph.ui.testshapes; import com.jogamp.opengl.GL2ES2; import com.jogamp.graph.curve.OutlineShape; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph02UbuntuLight_ae.java b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph02UbuntuLight_ae.java index b81eb546f..28d6f6390 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph02UbuntuLight_ae.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph02UbuntuLight_ae.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.testshapes; +package com.jogamp.opengl.demos.graph.ui.testshapes; import com.jogamp.opengl.GL2ES2; import com.jogamp.graph.curve.OutlineShape; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph03FreeMonoRegular_M.java b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph03FreeMonoRegular_M.java index 053134866..45868762c 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph03FreeMonoRegular_M.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph03FreeMonoRegular_M.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.testshapes; +package com.jogamp.opengl.demos.graph.ui.testshapes; import com.jogamp.opengl.GL2ES2; import com.jogamp.graph.curve.OutlineShape; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph04FreeSans_0.java b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph04FreeSans_0.java index 1f8d87888..63bc0b5b5 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph04FreeSans_0.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph04FreeSans_0.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.testshapes; +package com.jogamp.opengl.demos.graph.ui.testshapes; import com.jogamp.opengl.GL2ES2; import com.jogamp.graph.curve.OutlineShape; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph05FreeSerifBoldItalic_ae.java b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph05FreeSerifBoldItalic_ae.java index c02ca56bc..dd92228ff 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/testshapes/Glyph05FreeSerifBoldItalic_ae.java +++ b/src/demos/com/jogamp/opengl/demos/graph/ui/testshapes/Glyph05FreeSerifBoldItalic_ae.java @@ -25,7 +25,7 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ -package com.jogamp.opengl.test.junit.graph.ui.testshapes; +package com.jogamp.opengl.demos.graph.ui.testshapes; import com.jogamp.opengl.GL2ES2; import com.jogamp.graph.curve.OutlineShape; diff --git a/src/demos/com/jogamp/opengl/demos/MiscUtils.java b/src/demos/com/jogamp/opengl/demos/util/MiscUtils.java index 304e4f18a..f1c367e95 100644 --- a/src/demos/com/jogamp/opengl/demos/MiscUtils.java +++ b/src/demos/com/jogamp/opengl/demos/util/MiscUtils.java @@ -27,7 +27,7 @@ */ -package com.jogamp.opengl.demos; +package com.jogamp.opengl.demos.util; import java.io.BufferedReader; import java.io.IOException; diff --git a/src/demos/com/jogamp/opengl/demos/util/QuitAdapter.java b/src/demos/com/jogamp/opengl/demos/util/QuitAdapter.java new file mode 100644 index 000000000..b7c3a6c22 --- /dev/null +++ b/src/demos/com/jogamp/opengl/demos/util/QuitAdapter.java @@ -0,0 +1,64 @@ +/** + * Copyright 2010 JogAmp Community. All rights reserved. + * + * 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 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * 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.demos.util; + +import com.jogamp.newt.event.*; + +public class QuitAdapter extends WindowAdapter implements WindowListener, KeyListener { + boolean shouldQuit = false; + boolean enabled = true; + + public void enable(final boolean v) { enabled = v; } + + public void clear() { shouldQuit = false; } + + public boolean shouldQuit() { return shouldQuit; } + public void doQuit() { shouldQuit=true; } + + public void windowDestroyNotify(final WindowEvent e) { + if( enabled ) { + System.err.println("QUIT Window "+Thread.currentThread()); + shouldQuit = true; + } + } + + public void keyReleased(final KeyEvent e) { + if( !e.isPrintableKey() || e.isAutoRepeat() ) { + return; + } + if( enabled ) { + if(e.getKeyChar()=='q') { + System.err.println("QUIT Key "+Thread.currentThread()); + shouldQuit = true; + } + } + } + public void keyPressed(final KeyEvent e) {} +} + diff --git a/src/test/com/jogamp/opengl/test/android/NEWTElektronActivity.java b/src/test/com/jogamp/opengl/test/android/NEWTElektronActivity.java deleted file mode 100644 index ebce37994..000000000 --- a/src/test/com/jogamp/opengl/test/android/NEWTElektronActivity.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Copyright 2011 JogAmp Community. All rights reserved. - * - * 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 - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * 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.android; - -import com.jogamp.opengl.GLCapabilities; -import com.jogamp.opengl.GLProfile; - -import jogamp.newt.driver.android.NewtBaseActivity; - -import com.jogamp.newt.event.MonitorEvent; -import com.jogamp.newt.event.MonitorModeListener; -import com.jogamp.newt.opengl.GLWindow; - -import com.jogamp.opengl.test.junit.jogl.demos.es2.ElektronenMultiplizierer; -import com.jogamp.opengl.util.Animator; - -import android.os.Bundle; -import android.util.Log; - -public class NEWTElektronActivity extends NewtBaseActivity { - static String TAG = "NEWTElektronActivity"; - - @Override - public void onCreate(final Bundle savedInstanceState) { - Log.d(TAG, "onCreate - 0"); - super.onCreate(savedInstanceState); - - // create GLWindow (-> incl. underlying NEWT Display, Screen & Window) - final GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2ES2)); - Log.d(TAG, "req caps: "+caps); - final GLWindow glWindow = GLWindow.create(caps); - glWindow.setFullscreen(true); - setContentView(getWindow(), glWindow); - - glWindow.addGLEventListener(new ElektronenMultiplizierer()); - glWindow.getScreen().addMonitorModeListener(new MonitorModeListener() { - @Override - public void monitorModeChangeNotify(final MonitorEvent me) { } - @Override - public void monitorModeChanged(final MonitorEvent me, final boolean success) { - System.err.println("MonitorMode Changed (success "+success+"): "+me); - } - }); - glWindow.setVisible(true); - final Animator animator = new Animator(glWindow); - - animator.setUpdateFPSFrames(60, System.err); - animator.resetFPSCounter(); - glWindow.resetFPSCounter(); - - Log.d(TAG, "onCreate - X"); - } -} diff --git a/src/test/com/jogamp/opengl/test/android/NEWTElektronActivityLauncher.java b/src/test/com/jogamp/opengl/test/android/NEWTElektronActivityLauncher.java deleted file mode 100644 index f2eb70bb6..000000000 --- a/src/test/com/jogamp/opengl/test/android/NEWTElektronActivityLauncher.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.jogamp.opengl.test.android; - -import java.util.Arrays; -import java.util.List; - -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; - -public class NEWTElektronActivityLauncher extends LauncherUtil.BaseActivityLauncher { - - static String demo = "com.jogamp.opengl.test.android.NEWTElektronActivity"; - static String[] sys_pkgs = new String[] { "com.jogamp.common", "com.jogamp.opengl" }; - static String[] usr_pkgs = new String[] { "com.jogamp.opengl.test" }; - - @Override - public void init() { - final OrderedProperties props = getProperties(); - // props.setProperty("jogamp.debug.JNILibLoader", "true"); - // props.setProperty("jogamp.debug.NativeLibrary", "true"); - // properties.setProperty("jogamp.debug.NativeLibrary.Lookup", "true"); - // properties.setProperty("jogamp.debug.IOUtil", "true"); - // properties.setProperty("nativewindow.debug", "all"); - props.setProperty("nativewindow.debug.GraphicsConfiguration", "true"); - // properties.setProperty("jogl.debug", "all"); - // properties.setProperty("jogl.debug.GLProfile", "true"); - props.setProperty("jogl.debug.GLDrawable", "true"); - props.setProperty("jogl.debug.GLContext", "true"); - props.setProperty("jogl.debug.GLSLCode", "true"); - props.setProperty("jogl.debug.CapabilitiesChooser", "true"); - // properties.setProperty("jogl.debug.GLSLState", "true"); - // properties.setProperty("jogl.debug.DebugGL", "true"); - // properties.setProperty("jogl.debug.TraceGL", "true"); - // properties.setProperty("newt.debug", "all"); - props.setProperty("newt.debug.Window", "true"); - // properties.setProperty("newt.debug.Window.MouseEvent", "true"); - // properties.setProperty("newt.debug.Window.KeyEvent", "true"); - } - - @Override - public String getActivityName() { - return demo; - } - @Override - public List<String> getSysPackages() { - return Arrays.asList(sys_pkgs); - } - - @Override - public List<String> getUsrPackages() { - return Arrays.asList(usr_pkgs); - } -} diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGearsES1Activity.java b/src/test/com/jogamp/opengl/test/android/NEWTGearsES1Activity.java deleted file mode 100644 index 46165e70b..000000000 --- a/src/test/com/jogamp/opengl/test/android/NEWTGearsES1Activity.java +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Copyright 2011 JogAmp Community. All rights reserved. - * - * 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 - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * 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.android; - -import com.jogamp.opengl.GLCapabilities; -import com.jogamp.opengl.GLProfile; - -import jogamp.newt.driver.android.NewtBaseActivity; - -import com.jogamp.newt.event.MonitorEvent; -import com.jogamp.newt.event.MonitorModeListener; -import com.jogamp.newt.opengl.GLWindow; - -import com.jogamp.opengl.test.junit.jogl.demos.es1.GearsES1; -import com.jogamp.opengl.util.Animator; - -import android.os.Bundle; -import android.util.Log; - -public class NEWTGearsES1Activity extends NewtBaseActivity { - static String TAG = "NEWTGearsES1Activity"; - - @Override - public void onCreate(final Bundle savedInstanceState) { - Log.d(TAG, "onCreate - 0"); - super.onCreate(savedInstanceState); - - // create GLWindow (-> incl. underlying NEWT Display, Screen & Window) - final GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GLES1)); - /* - caps.setRedBits(5); - caps.setGreenBits(6); - caps.setBlueBits(5); - caps.setAlphaBits(0); */ - Log.d(TAG, "req caps: "+caps); - final GLWindow glWindow = GLWindow.create(caps); - glWindow.setFullscreen(true); - setContentView(getWindow(), glWindow); - - glWindow.addGLEventListener(new GearsES1(-1)); - glWindow.getScreen().addMonitorModeListener(new MonitorModeListener() { - @Override - public void monitorModeChangeNotify(final MonitorEvent me) { } - @Override - public void monitorModeChanged(final MonitorEvent me, final boolean success) { - System.err.println("MonitorMode Changed (success "+success+"): "+me); - } - }); - glWindow.setVisible(true); - final Animator animator = new Animator(glWindow); - - animator.setUpdateFPSFrames(60, System.err); - animator.resetFPSCounter(); - glWindow.resetFPSCounter(); - - Log.d(TAG, "onCreate - X"); - } -} diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGearsES1ActivityLauncher.java b/src/test/com/jogamp/opengl/test/android/NEWTGearsES1ActivityLauncher.java deleted file mode 100644 index 5e721f32d..000000000 --- a/src/test/com/jogamp/opengl/test/android/NEWTGearsES1ActivityLauncher.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.jogamp.opengl.test.android; - -import java.util.Arrays; -import java.util.List; - -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; - -public class NEWTGearsES1ActivityLauncher extends LauncherUtil.BaseActivityLauncher { - static String demo = "com.jogamp.opengl.test.android.NEWTGearsES1Activity"; - static String[] sys_pkgs = new String[] { "com.jogamp.common", "com.jogamp.opengl" }; - static String[] usr_pkgs = new String[] { "com.jogamp.opengl.test" }; - - @Override - public void init() { - final OrderedProperties props = getProperties(); - // props.setProperty("jogamp.debug.JNILibLoader", "true"); - // props.setProperty("jogamp.debug.NativeLibrary", "true"); - // properties.setProperty("jogamp.debug.NativeLibrary.Lookup", "true"); - // properties.setProperty("jogamp.debug.IOUtil", "true"); - // properties.setProperty("nativewindow.debug", "all"); - props.setProperty("nativewindow.debug.GraphicsConfiguration", "true"); - // properties.setProperty("jogl.debug", "all"); - // properties.setProperty("jogl.debug.GLProfile", "true"); - props.setProperty("jogl.debug.GLDrawable", "true"); - props.setProperty("jogl.debug.GLContext", "true"); - props.setProperty("jogl.debug.GLSLCode", "true"); - props.setProperty("jogl.debug.CapabilitiesChooser", "true"); - // properties.setProperty("jogl.debug.GLSLState", "true"); - // properties.setProperty("jogl.debug.DebugGL", "true"); - // properties.setProperty("jogl.debug.TraceGL", "true"); - // properties.setProperty("newt.debug", "all"); - props.setProperty("newt.debug.Window", "true"); - // properties.setProperty("newt.debug.Window.MouseEvent", "true"); - // properties.setProperty("newt.debug.Window.KeyEvent", "true"); - } - - @Override - public String getActivityName() { - return demo; - } - @Override - public List<String> getSysPackages() { - return Arrays.asList(sys_pkgs); - } - - @Override - public List<String> getUsrPackages() { - return Arrays.asList(usr_pkgs); - } -} diff --git a/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES1Activity.java b/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES1Activity.java deleted file mode 100644 index a3a51ef0c..000000000 --- a/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES1Activity.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright 2011 JogAmp Community. All rights reserved. - * - * 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 - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * 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.android; - -import com.jogamp.opengl.GLCapabilities; -import com.jogamp.opengl.GLProfile; - -import jogamp.newt.driver.android.NewtBaseActivity; - -import com.jogamp.newt.event.MonitorEvent; -import com.jogamp.newt.event.MonitorModeListener; -import com.jogamp.newt.opengl.GLWindow; - -import com.jogamp.opengl.test.junit.jogl.demos.es1.RedSquareES1; -import com.jogamp.opengl.util.Animator; - -import android.os.Bundle; -import android.util.Log; - -public class NEWTRedSquareES1Activity extends NewtBaseActivity { - static String TAG = "NEWTGearsES1Activity"; - - @Override - public void onCreate(final Bundle savedInstanceState) { - Log.d(TAG, "onCreate - 0"); - super.onCreate(savedInstanceState); - - // create GLWindow (-> incl. underlying NEWT Display, Screen & Window) - final GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GLES1)); - Log.d(TAG, "req caps: "+caps); - final GLWindow glWindow = GLWindow.create(caps); - setContentView(getWindow(), glWindow); - - glWindow.addGLEventListener(new RedSquareES1(-1)); - glWindow.getScreen().addMonitorModeListener(new MonitorModeListener() { - @Override - public void monitorModeChangeNotify(final MonitorEvent me) { } - @Override - public void monitorModeChanged(final MonitorEvent me, final boolean success) { - System.err.println("MonitorMode Changed (success "+success+"): "+me); - } - }); - glWindow.setVisible(true); - final Animator animator = new Animator(glWindow); - - animator.setUpdateFPSFrames(60, System.err); - animator.resetFPSCounter(); - glWindow.resetFPSCounter(); - - Log.d(TAG, "onCreate - X"); - } -} diff --git a/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES1ActivityLauncher.java b/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES1ActivityLauncher.java deleted file mode 100644 index 380a37b93..000000000 --- a/src/test/com/jogamp/opengl/test/android/NEWTRedSquareES1ActivityLauncher.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.jogamp.opengl.test.android; - -import java.util.Arrays; -import java.util.List; - -import com.jogamp.opengl.test.android.LauncherUtil.OrderedProperties; - -public class NEWTRedSquareES1ActivityLauncher extends LauncherUtil.BaseActivityLauncher { - static String demo = "com.jogamp.opengl.test.android.NEWTRedSquareES1Activity"; - static String[] sys_pkgs = new String[] { "com.jogamp.common", "com.jogamp.opengl" }; - static String[] usr_pkgs = new String[] { "com.jogamp.opengl.test" }; - - @Override - public void init() { - final OrderedProperties props = getProperties(); - // props.setProperty("jogamp.debug.JNILibLoader", "true"); - // props.setProperty("jogamp.debug.NativeLibrary", "true"); - // properties.setProperty("jogamp.debug.NativeLibrary.Lookup", "true"); - // properties.setProperty("jogamp.debug.IOUtil", "true"); - // properties.setProperty("nativewindow.debug", "all"); - props.setProperty("nativewindow.debug.GraphicsConfiguration", "true"); - // properties.setProperty("jogl.debug", "all"); - // properties.setProperty("jogl.debug.GLProfile", "true"); - props.setProperty("jogl.debug.GLDrawable", "true"); - props.setProperty("jogl.debug.GLContext", "true"); - props.setProperty("jogl.debug.GLSLCode", "true"); - props.setProperty("jogl.debug.CapabilitiesChooser", "true"); - // properties.setProperty("jogl.debug.GLSLState", "true"); - // properties.setProperty("jogl.debug.DebugGL", "true"); - // properties.setProperty("jogl.debug.TraceGL", "true"); - // properties.setProperty("newt.debug", "all"); - props.setProperty("newt.debug.Window", "true"); - // properties.setProperty("newt.debug.Window.MouseEvent", "true"); - // properties.setProperty("newt.debug.Window.KeyEvent", "true"); - } - - @Override - public String getActivityName() { - return demo; - } - - @Override - public List<String> getSysPackages() { - return Arrays.asList(sys_pkgs); - } - - @Override - public List<String> getUsrPackages() { - return Arrays.asList(usr_pkgs); - } -} diff --git a/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener01.java b/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener01.java new file mode 100644 index 000000000..e192cd2b9 --- /dev/null +++ b/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener01.java @@ -0,0 +1,299 @@ +/** + * Copyright 2010 JogAmp Community. All rights reserved. + * + * 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 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * 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.graph; + +import com.jogamp.opengl.GL; +import com.jogamp.opengl.GL2ES2; +import com.jogamp.opengl.GLAutoDrawable; +import com.jogamp.opengl.fixedfunc.GLMatrixFunc; + +import com.jogamp.graph.curve.OutlineShape; +import com.jogamp.graph.curve.opengl.GLRegion; +import com.jogamp.graph.curve.opengl.RenderState; +import com.jogamp.graph.geom.plane.Path2F; +import com.jogamp.graph.geom.plane.WindingRule; +import com.jogamp.graph.curve.opengl.RegionRenderer; +import com.jogamp.opengl.util.PMVMatrix; + +/** Demonstrate the rendering of multiple outlines into one region/OutlineShape + * These Outlines are not necessary connected or contained. + * The output of this demo shows two identical shapes but the left one + * has some vertices with off-curve flag set to true, and the right allt he vertices + * are on the curve. Demos the Res. Independent Nurbs based Curve rendering + * + */ +public class GPURegionGLListener01 extends GPURendererListenerBase01 { + final int shape_ctor_mode; + OutlineShape outlineShape = null; + + public GPURegionGLListener01 (final RenderState rs, final int renderModes, final int sampleCount, final boolean debug, final boolean trace) { + this(1, rs, renderModes, sampleCount, debug, trace); + } + + public GPURegionGLListener01 (final int shape_ctor_mode, final RenderState rs, final int renderModes, final int sampleCount, final boolean debug, final boolean trace) { + super(RegionRenderer.create(rs, RegionRenderer.defaultBlendEnable, RegionRenderer.defaultBlendDisable), renderModes, debug, trace); + this.shape_ctor_mode = shape_ctor_mode; + rs.setHintMask(RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED); + setMatrix(-20, 00, -50, 0f, sampleCount); + } + + private void createTestOutline00(){ + outlineShape.addVertex(0.0f,-10.0f, true); + outlineShape.addVertex(15.0f,-10.0f, true); + outlineShape.addVertex(10.0f,5.0f, false); + outlineShape.addVertex(15.0f,10.0f, true); + outlineShape.addVertex(6.0f,15.0f, false); + outlineShape.addVertex(5.0f,8.0f, false); + outlineShape.addVertex(0.0f,10.0f,true); + outlineShape.closeLastOutline(true); + outlineShape.addEmptyOutline(); + outlineShape.addVertex(5.0f,-5.0f,true); + outlineShape.addVertex(10.0f,-5.0f, false); + outlineShape.addVertex(10.0f,0.0f, true); + outlineShape.addVertex(5.0f,0.0f, false); + outlineShape.closeLastOutline(true); + + /** Same shape as above but without any off-curve vertices */ + final float offset = 30; + outlineShape.addEmptyOutline(); + outlineShape.addVertex(offset+0.0f,-10.0f, true); + outlineShape.addVertex(offset+17.0f,-10.0f, true); + outlineShape.addVertex(offset+11.0f,5.0f, true); + outlineShape.addVertex(offset+16.0f,10.0f, true); + outlineShape.addVertex(offset+7.0f,15.0f, true); + outlineShape.addVertex(offset+6.0f,8.0f, true); + outlineShape.addVertex(offset+0.0f,10.0f, true); + outlineShape.closeLastOutline(true); + outlineShape.addEmptyOutline(); + outlineShape.addVertex(offset+5.0f,0.0f, true); + outlineShape.addVertex(offset+5.0f,-5.0f, true); + outlineShape.addVertex(offset+10.0f,-5.0f, true); + outlineShape.addVertex(offset+10.0f,0.0f, true); + outlineShape.closeLastOutline(true); + } + + private void createTestOutline01(){ + outlineShape.moveTo(0.0f,-10.0f, 0f); + outlineShape.lineTo(15.0f,-10.0f, 0f); + outlineShape.quadTo(10.0f,5.0f,0f, 15.0f,10.0f,0f); + outlineShape.cubicTo(6.0f,15.0f,0f, 5.0f,8.0f,0f, 0.0f,10.0f,0f); + outlineShape.closePath(); + outlineShape.moveTo(5.0f,-5.0f,0f); + outlineShape.quadTo(10.0f,-5.0f,0f, 10.0f,0.0f,0f); + outlineShape.quadTo(5.0f,0.0f,0f, 5.0f,-5.0f,0f); + outlineShape.closePath(); + + /** Same shape as above but without any off-curve vertices */ + final float offset = 30; + outlineShape.moveTo(offset+0.0f,-10.0f,0f); + outlineShape.lineTo(offset+17.0f,-10.0f,0f); + outlineShape.lineTo(offset+11.0f,5.0f,0f); + outlineShape.lineTo(offset+16.0f,10.0f,0f); + outlineShape.lineTo(offset+7.0f,15.0f,0f); + outlineShape.lineTo(offset+6.0f,8.0f,0f); + outlineShape.lineTo(offset+0.0f,10.0f,0f); + outlineShape.closePath(); + outlineShape.moveTo(offset+5.0f,0.0f,0f); + outlineShape.lineTo(offset+5.0f,-5.0f,0f); + outlineShape.lineTo(offset+10.0f,-5.0f,0f); + outlineShape.lineTo(offset+10.0f,0.0f,0f); + outlineShape.closePath(); + } + + private void createTestOutline02(){ + final Path2F path = new Path2F(WindingRule.NON_ZERO); + path.moveTo(0.0f,-10.0f); + path.lineTo(15.0f,-10.0f); + path.quadTo(10.0f,5.0f, 15.0f,10.0f); + path.cubicTo(6.0f,15.0f, 5.0f,8.0f, 0.0f,10.0f); + path.closePath(); + path.moveTo(5.0f,-5.0f); + path.quadTo(10.0f,-5.0f, 10.0f,0.0f); + path.quadTo(5.0f,0.0f, 5.0f,-5.0f); + path.closePath(); + + /** Same shape as above but without any off-curve vertices */ + final float offset = 30; + path.moveTo(offset+0.0f,-10.0f); + path.lineTo(offset+17.0f,-10.0f); + path.lineTo(offset+11.0f,5.0f); + path.lineTo(offset+16.0f,10.0f); + path.lineTo(offset+7.0f,15.0f); + path.lineTo(offset+6.0f,8.0f); + path.lineTo(offset+0.0f,10.0f); + path.closePath(); + path.moveTo(offset+5.0f,0.0f); + path.lineTo(offset+5.0f,-5.0f); + path.lineTo(offset+10.0f,-5.0f); + path.lineTo(offset+10.0f,0.0f); + path.closePath(); + + System.err.println("GPURegionGLListener01.createTestOutline02.X: path "+path); + path.printSegments(System.err); + outlineShape.addPath(path, false /* connect */); + } + + private void createTestOutline03(){ + { + final Path2F path = new Path2F(WindingRule.NON_ZERO); + path.moveTo(0.0f,-10.0f); + path.lineTo(15.0f,-10.0f); + path.quadTo(10.0f,5.0f, 15.0f,10.0f); + path.cubicTo(6.0f,15.0f, 5.0f,8.0f, 0.0f,10.0f); + path.closePath(); + System.err.println("GPURegionGLListener01.createTestOutline03.0: path "+path); + path.printSegments(System.err); + { + final Path2F path2 = new Path2F(WindingRule.NON_ZERO); + path2.moveTo(5.0f,-5.0f); + path2.quadTo(10.0f,-5.0f, 10.0f,0.0f); + path2.quadTo(5.0f,0.0f, 5.0f,-5.0f); + path2.closePath(); + System.err.println("GPURegionGLListener01.createTestOutline03.0: path2 "+path2); + path2.printSegments(System.err); + path.append(path2, false); + System.err.println("GPURegionGLListener01.createTestOutline03.1: path "+path); + path.printSegments(System.err); + } + outlineShape.addPath(path, false /* connect */); + } + { + /** Same shape as above but without any off-curve vertices */ + final float offset = 30; + final Path2F path = new Path2F(WindingRule.NON_ZERO); + path.moveTo(offset+0.0f,-10.0f); + path.lineTo(offset+17.0f,-10.0f); + path.lineTo(offset+11.0f,5.0f); + path.lineTo(offset+16.0f,10.0f); + path.lineTo(offset+7.0f,15.0f); + path.lineTo(offset+6.0f,8.0f); + path.lineTo(offset+0.0f,10.0f); + path.closePath(); + path.moveTo(offset+5.0f,0.0f); + path.lineTo(offset+5.0f,-5.0f); + path.lineTo(offset+10.0f,-5.0f); + path.lineTo(offset+10.0f,0.0f); + path.closePath(); + System.err.println("GPURegionGLListener01.createTestOutline03.3: path "+path); + path.printSegments(System.err); + outlineShape.addPath(path, false /* connect */); + } + + } + + private void createTestOutline04(){ + final Path2F path = new Path2F(WindingRule.NON_ZERO); + + path.moveTo(0.0f,10.0f); + path.cubicTo(5.0f,8.0f, 6.0f,15.0f, 15.0f,10.0f); + path.quadTo(10.0f,5.0f, 15.0f,-10.0f); + path.lineTo(0.0f,-10.0f); + path.closePath(); + path.moveTo(5.0f,-5.0f); + path.quadTo(5.0f,0.0f, 10.0f,0.0f); + path.quadTo(10.0f,-5.0f, 5.0f,-5.0f); + path.closePath(); + + /** Same shape as above but without any off-curve vertices */ + final float offset = 30; + path.moveTo(offset+0.0f,10.0f); + path.lineTo(offset+6.0f,8.0f); + path.lineTo(offset+7.0f,15.0f); + path.lineTo(offset+16.0f,10.0f); + path.lineTo(offset+11.0f,5.0f); + path.lineTo(offset+17.0f,-10.0f); + path.lineTo(offset+0.0f,-10.0f); + path.closePath(); + path.moveTo(offset+10.0f,0.0f); + path.lineTo(offset+10.0f,-5.0f); + path.lineTo(offset+5.0f,-5.0f); + path.lineTo(offset+5.0f,0.0f); + path.closePath(); + + System.err.println("GPURegionGLListener01.createTestOutline04.X: path "+path); + path.printSegments(System.err); + outlineShape.addPathRev(path, false /* connect */); + } + + @Override + public void init(final GLAutoDrawable drawable) { + super.init(drawable); + + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + + final RenderState rs = getRenderer().getRenderState(); + + gl.setSwapInterval(1); + gl.glEnable(GL.GL_DEPTH_TEST); + gl.glEnable(GL.GL_BLEND); + rs.setColorStatic(0.0f, 0.0f, 0.0f, 1.0f); + + outlineShape = new OutlineShape(getRenderer().getRenderState().getVertexFactory()); + switch( shape_ctor_mode ) { + case 0: + createTestOutline00(); + break; + case 2: + createTestOutline02(); + break; + case 3: + createTestOutline03(); + break; + case 4: + createTestOutline04(); + break; + default: + createTestOutline01(); + break; + } + region = GLRegion.create(gl.getGLProfile(), getRenderModes(), null); + region.addOutlineShape(outlineShape, null, region.hasColorChannel() ? getRenderer().getRenderState().getColorStatic(new float[4]) : null); + } + + @Override + public void display(final GLAutoDrawable drawable) { + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + + gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); + + final RegionRenderer regionRenderer = getRenderer(); + final PMVMatrix pmv = regionRenderer.getMatrix(); + pmv.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); + pmv.glLoadIdentity(); + pmv.glTranslatef(getXTran(), getYTran(), getZTran()); + pmv.glRotatef(getAngle(), 0, 1, 0); + if( weight != regionRenderer.getRenderState().getWeight() ) { + regionRenderer.getRenderState().setWeight(weight); + } + regionRenderer.enable(gl, true); + region.draw(gl, regionRenderer, getSampleCount()); + regionRenderer.enable(gl, false); + } +} diff --git a/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener10.java b/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener10.java new file mode 100644 index 000000000..4cfd61777 --- /dev/null +++ b/src/test/com/jogamp/opengl/test/junit/graph/GPURegionGLListener10.java @@ -0,0 +1,138 @@ +/** + * Copyright 2010 JogAmp Community. All rights reserved. + * + * 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 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * 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.graph; + +import java.util.ArrayList; +import java.util.List; + +import com.jogamp.opengl.GL; +import com.jogamp.opengl.GL2ES2; +import com.jogamp.opengl.GLAutoDrawable; +import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.fixedfunc.GLMatrixFunc; + +import com.jogamp.graph.curve.OutlineShape; +import com.jogamp.graph.curve.opengl.GLRegion; +import com.jogamp.graph.curve.opengl.RenderState; +import com.jogamp.graph.curve.opengl.RegionRenderer; +import com.jogamp.opengl.util.PMVMatrix; + +/** Demonstrate the rendering of multiple OutlineShapes + * into one region + * + */ +public class GPURegionGLListener10 extends GPURendererListenerBase01 { + List<OutlineShape> outlineShapes = new ArrayList<OutlineShape>(); + + public GPURegionGLListener10 (final RenderState rs, final int renderModes, final int sampleCount, final boolean debug, final boolean trace) { + super(RegionRenderer.create(rs, RegionRenderer.defaultBlendEnable, RegionRenderer.defaultBlendDisable), renderModes, debug, trace); + rs.setHintMask(RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED); + setMatrix(-20, 00, -50, 0f, sampleCount); + } + + private void createTestOutline(final GLProfile glp){ + OutlineShape shape = new OutlineShape(getRenderer().getRenderState().getVertexFactory()); + outlineShapes.add(shape); + shape.addVertex(0.0f,-10.0f,true); + shape.addVertex(15.0f,-10.0f, true); + shape.addVertex(10.0f,5.0f, false); + shape.addVertex(15.0f,10.0f, true); + shape.addVertex(6.0f,15.0f, false); + shape.addVertex(5.0f,8.0f, false); + shape.addVertex(0.0f,10.0f,true); + shape.closeLastOutline(true); + shape.addEmptyOutline(); + shape.addVertex(5.0f,-5.0f,true); + shape.addVertex(10.0f,-5.0f, false); + shape.addVertex(10.0f,0.0f, true); + shape.addVertex(5.0f,0.0f, false); + shape.closeLastOutline(true); + + /** Same shape as above but without any off-curve vertices */ + shape = new OutlineShape(getRenderer().getRenderState().getVertexFactory()); + outlineShapes.add(shape); + final float offset = 30; + shape.addVertex(offset+0.0f,-10.0f, true); + shape.addVertex(offset+17.0f,-10.0f, true); + shape.addVertex(offset+11.0f,5.0f, true); + shape.addVertex(offset+16.0f,10.0f, true); + shape.addVertex(offset+7.0f,15.0f, true); + shape.addVertex(offset+6.0f,8.0f, true); + shape.addVertex(offset+0.0f,10.0f, true); + shape.closeLastOutline(true); + shape.addEmptyOutline(); + shape.addVertex(offset+5.0f,0.0f, true); + shape.addVertex(offset+5.0f,-5.0f, true); + shape.addVertex(offset+10.0f,-5.0f, true); + shape.addVertex(offset+10.0f,0.0f, true); + shape.closeLastOutline(true); + + region = GLRegion.create(glp, getRenderModes(), null); + region.addOutlineShapes(outlineShapes, null, null); + } + + @Override + public void init(final GLAutoDrawable drawable) { + super.init(drawable); + + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + + final RenderState rs = getRenderer().getRenderState(); + + gl.setSwapInterval(1); + gl.glEnable(GL.GL_DEPTH_TEST); + gl.glEnable(GL.GL_BLEND); + rs.setColorStatic(0.0f, 0.0f, 0.0f, 1.0f); + + createTestOutline(gl.getGLProfile()); + } + + @Override + public void display(final GLAutoDrawable drawable) { + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + + gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); + + final RegionRenderer regionRenderer = getRenderer(); + + final PMVMatrix pmv = regionRenderer.getMatrix(); + pmv.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); + pmv.glLoadIdentity(); + pmv.glTranslatef(getXTran(), getYTran(), getZTran()); + pmv.glRotatef(getAngle(), 0, 1, 0); + if( weight != regionRenderer.getRenderState().getWeight() ) { + regionRenderer.getRenderState().setWeight(weight); + } + regionRenderer.enable(gl, true); + region.draw(gl, regionRenderer, getSampleCount()); + regionRenderer.enable(gl, false); + + } +} diff --git a/src/test/com/jogamp/opengl/test/junit/graph/GPURendererListenerBase01.java b/src/test/com/jogamp/opengl/test/junit/graph/GPURendererListenerBase01.java new file mode 100644 index 000000000..b99d91070 --- /dev/null +++ b/src/test/com/jogamp/opengl/test/junit/graph/GPURendererListenerBase01.java @@ -0,0 +1,361 @@ +/** + * Copyright 2010 JogAmp Community. All rights reserved. + * + * 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 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * 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.graph; + +import java.io.File; +import java.io.IOException; + +import com.jogamp.opengl.FPSCounter; +import com.jogamp.opengl.GL; +import com.jogamp.opengl.GL2ES2; +import com.jogamp.opengl.GLAnimatorControl; +import com.jogamp.opengl.GLAutoDrawable; +import com.jogamp.opengl.GLEventListener; +import com.jogamp.opengl.GLException; +import com.jogamp.opengl.GLPipelineFactory; +import com.jogamp.opengl.GLRunnable; +import com.jogamp.opengl.fixedfunc.GLMatrixFunc; + +import com.jogamp.graph.curve.Region; +import com.jogamp.graph.curve.opengl.GLRegion; +import com.jogamp.graph.curve.opengl.RegionRenderer; +import com.jogamp.graph.curve.opengl.RenderState; +import com.jogamp.graph.font.FontScale; +import com.jogamp.newt.Window; +import com.jogamp.newt.event.KeyEvent; +import com.jogamp.newt.event.KeyListener; +import com.jogamp.newt.opengl.GLWindow; +import com.jogamp.opengl.math.geom.AABBox; +import com.jogamp.opengl.util.GLReadBufferUtil; +import com.jogamp.opengl.util.PMVMatrix; + +/** + * + * Action Keys: + * - 1/2: zoom in/out + * - 6/7: 2nd pass texture size + * - 0/9: rotate + * - Q/W: change weight + * - v: toggle v-sync + * - s: screenshot + */ +public abstract class GPURendererListenerBase01 implements GLEventListener { + private final RegionRenderer renderer; + private final int renderModes; + private final boolean debug; + private final boolean trace; + + protected GLRegion region; + + private final GLReadBufferUtil screenshot; + + private KeyAction keyAction; + + private volatile GLAutoDrawable autoDrawable = null; + + private final float[] position = new float[] {0,0,0}; + + protected final float zNear = 0.1f, zFar = 7000f; + /** Describing the bounding box in model-coordinates of the near-plane parallel at distance one. */ + protected final AABBox nearPlane1Box; + + private float xTran = -10; + private float yTran = 10; + private float ang = 0f; + private float zTran = -70f; + private final int[] sampleCount = new int[] { 4 }; + + protected volatile float weight = 1.0f; + boolean ignoreInput = false; + + public GPURendererListenerBase01(final RegionRenderer renderer, final int renderModes, final boolean debug, final boolean trace) { + this.renderer = renderer; + this.renderModes = renderModes; + this.debug = debug; + this.trace = trace; + this.screenshot = new GLReadBufferUtil(false, false); + nearPlane1Box = new AABBox(); + } + + public final RegionRenderer getRenderer() { return renderer; } + public final int getRenderModes() { return renderModes; } + public final float getZTran() { return zTran; } + public final float getXTran() { return xTran; } + public final float getYTran() { return yTran; } + public final float getAngle() { return ang; } + public final int[] getSampleCount() { return sampleCount; } + public final float[] getPosition() { return position; } + + public void setMatrix(final float xtrans, final float ytrans, final float zTran, final float angle, final int sampleCount) { + this.xTran = xtrans; + this.yTran = ytrans; + this.zTran = zTran; + this.ang = angle; + this.sampleCount[0] = sampleCount; + } + + @Override + public void init(final GLAutoDrawable drawable) { + final Object upObj = drawable.getUpstreamWidget(); + if( upObj instanceof Window ) { + final Window window = (Window) upObj; + final float[] sPpMM = window.getPixelsPerMM(new float[2]); + final float[] sDPI = FontScale.perMMToPerInch( new float[] { sPpMM[0], sPpMM[1] } ); + System.err.println("DPI "+sDPI[0]+" x "+sDPI[1]+", "+sPpMM[0]+" x "+sPpMM[1]+" pixel/mm"); + + final float[] hasSurfacePixelScale1 = window.getCurrentSurfaceScale(new float[2]); + System.err.println("HiDPI PixelScale: "+hasSurfacePixelScale1[0]+"x"+hasSurfacePixelScale1[1]+" (has)"); + } + autoDrawable = drawable; + GL2ES2 gl = drawable.getGL().getGL2ES2(); + if(debug) { + gl = gl.getContext().setGL( GLPipelineFactory.create("com.jogamp.opengl.Debug", null, gl, null) ).getGL2ES2(); + } + if(trace) { + gl = gl.getContext().setGL( GLPipelineFactory.create("com.jogamp.opengl.Trace", null, gl, new Object[] { System.err } ) ).getGL2ES2(); + } + System.err.println("*** "+gl.getContext().getGLVersion()); + System.err.println("*** GLDebugMessage "+gl.getContext().isGLDebugMessageEnabled()); + MSAATool.dump(drawable); + gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + getRenderer().init(gl); + } + + public static void mapWin2ObjectCoords(final PMVMatrix pmv, final int[] view, + final float zNear, final float zFar, + final float orthoX, final float orthoY, final float orthoDist, + final float[] winZ, final float[] objPos) { + winZ[0] = (1f/zNear-1f/orthoDist)/(1f/zNear-1f/zFar); + pmv.gluUnProject(orthoX, orthoY, winZ[0], view, 0, objPos, 0); + } + + @Override + public void reshape(final GLAutoDrawable drawable, final int xstart, final int ystart, final int width, final int height) { + final PMVMatrix pmv = renderer.getMatrix(); + renderer.reshapePerspective(45.0f, width, height, zNear, zFar); + pmv.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); + pmv.glLoadIdentity(); + System.err.printf("Reshape: zNear %f, zFar %f%n", zNear, zFar); + System.err.printf("Reshape: Frustum: %s%n", pmv.glGetFrustum()); + { + final float orthoDist = 1f; + final float[] obj00Coord = new float[3]; + final float[] obj11Coord = new float[3]; + final float[] winZ = new float[1]; + final int[] view = new int[] { 0, 0, width, height }; + + mapWin2ObjectCoords(pmv, view, zNear, zFar, 0f, 0f, orthoDist, winZ, obj00Coord); + System.err.printf("Reshape: mapped.00: [%f, %f, %f], winZ %f -> [%f, %f, %f]%n", 0f, 0f, orthoDist, winZ[0], obj00Coord[0], obj00Coord[1], obj00Coord[2]); + + mapWin2ObjectCoords(pmv, view, zNear, zFar, width, height, orthoDist, winZ, obj11Coord); + System.err.printf("Reshape: mapped.11: [%f, %f, %f], winZ %f -> [%f, %f, %f]%n", (float)width, (float)height, orthoDist, winZ[0], obj11Coord[0], obj11Coord[1], obj11Coord[2]); + + nearPlane1Box.setSize( obj00Coord[0], // lx + obj00Coord[1], // ly + obj00Coord[2], // lz + obj11Coord[0], // hx + obj11Coord[1], // hy + obj11Coord[2] );// hz + System.err.printf("Reshape: dist1Box: %s%n", nearPlane1Box); + } + + dumpMatrix(); + // System.err.println("Reshape: "+renderer.getRenderState()); + } + + @Override + public void dispose(final GLAutoDrawable drawable) { + autoDrawable = null; + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + if(null != region) { + region.destroy(gl); + } + screenshot.dispose(gl); + renderer.destroy(gl); + } + + public void zoom(final int v){ + zTran += v; + dumpMatrix(); + } + + public void move(final float x, final float y){ + xTran += x; + yTran += y; + dumpMatrix(); + } + public void rotate(final float delta){ + ang += delta; + ang %= 360.0f; + dumpMatrix(); + } + public void editGlobalWeight(final float delta) { + if( !RenderState.isWeightValid(weight+delta) ) { + return; + } + weight += delta; + System.err.println("Global Weight: "+ weight); + } + + void dumpMatrix() { + System.err.println("Matrix: " + xTran + " / " + yTran + " / "+zTran + " @ "+ang); + } + + /** Attach the input listener to the window */ + public void attachInputListenerTo(final GLWindow window) { + if ( null == keyAction ) { + keyAction = new KeyAction(); + window.addKeyListener(keyAction); + } + } + + public void detachInputListenerFrom(final GLWindow window) { + if ( null == keyAction ) { + return; + } + window.removeKeyListener(keyAction); + } + + public void printScreen(final GLAutoDrawable drawable, final String dir, final String tech, final String objName, final boolean exportAlpha) throws GLException, IOException { + final String sw = String.format("_s%02d-%s-Z%04d-snap%02d-%03dx%03d", sampleCount[0], objName, (int)Math.abs(zTran), screenshot_num++, drawable.getSurfaceWidth(), drawable.getSurfaceHeight()); + final String filename = dir + tech + sw +".png"; + if(screenshot.readPixels(drawable.getGL(), false)) { + screenshot.write(new File(filename)); + } + } + private int screenshot_num = 0; + + public void printScreenOnGLThread(final GLAutoDrawable drawable, final String dir, final String tech, final String objName, final boolean exportAlpha) { + drawable.invoke(false, new GLRunnable() { + @Override + public boolean run(final GLAutoDrawable drawable) { + try { + printScreen(drawable, dir, tech, objName, exportAlpha); + } catch (final GLException e) { + e.printStackTrace(); + } catch (final IOException e) { + e.printStackTrace(); + } + return true; + } + }); + } + + public void setIgnoreInput(final boolean v) { + ignoreInput = v; + } + public boolean getIgnoreInput() { + return ignoreInput; + } + + public class KeyAction implements KeyListener { + @Override + public void keyPressed(final KeyEvent arg0) { + if(ignoreInput) { + return; + } + + if(arg0.getKeyCode() == KeyEvent.VK_1){ + zoom(10); + } + else if(arg0.getKeyCode() == KeyEvent.VK_2){ + zoom(-10); + } + else if(arg0.getKeyCode() == KeyEvent.VK_UP){ + move(0, -1); + } + else if(arg0.getKeyCode() == KeyEvent.VK_DOWN){ + move(0, 1); + } + else if(arg0.getKeyCode() == KeyEvent.VK_LEFT){ + move(-1, 0); + } + else if(arg0.getKeyCode() == KeyEvent.VK_RIGHT){ + move(1, 0); + } + else if(arg0.getKeyCode() == KeyEvent.VK_6){ + sampleCount[0] -= 1; + System.err.println("Sample Count: " + sampleCount[0]); + } + else if(arg0.getKeyCode() == KeyEvent.VK_7){ + sampleCount[0] += 1; + System.err.println("Sample Count: " + sampleCount[0]); + } + else if(arg0.getKeyCode() == KeyEvent.VK_0){ + rotate(1); + } + else if(arg0.getKeyCode() == KeyEvent.VK_9){ + rotate(-1); + } + else if(arg0.getKeyCode() == KeyEvent.VK_Q){ + editGlobalWeight(-0.1f); + } + else if(arg0.getKeyCode() == KeyEvent.VK_W){ + editGlobalWeight(0.1f); + } + else if(arg0.getKeyCode() == KeyEvent.VK_V) { + if(null != autoDrawable) { + autoDrawable.invoke(false, new GLRunnable() { + @Override + public boolean run(final GLAutoDrawable drawable) { + final GL gl = drawable.getGL(); + final int _i = gl.getSwapInterval(); + final int i; + switch(_i) { + case 0: i = -1; break; + case -1: i = 1; break; + case 1: i = 0; break; + default: i = 1; break; + } + gl.setSwapInterval(i); + + final GLAnimatorControl a = drawable.getAnimator(); + if( null != a ) { + a.resetFPSCounter(); + } + if(drawable instanceof FPSCounter) { + ((FPSCounter)drawable).resetFPSCounter(); + } + System.err.println("Swap Interval: "+_i+" -> "+i+" -> "+gl.getSwapInterval()); + return true; + } + }); + } + } + else if(arg0.getKeyCode() == KeyEvent.VK_S){ + if(null != autoDrawable) { + final String modeS = Region.getRenderModeString(renderModes); + final String type = modeS + ( Region.hasVariableWeight(renderModes) ? "-vc" : "-uc" ) ; + printScreenOnGLThread(autoDrawable, "./", "demo-"+type, "", false); + } + } + } + @Override + public void keyReleased(final KeyEvent arg0) {} + } +} diff --git a/src/test/com/jogamp/opengl/test/junit/graph/GPUTextRendererListenerBase01.java b/src/test/com/jogamp/opengl/test/junit/graph/GPUTextRendererListenerBase01.java new file mode 100644 index 000000000..8f813d537 --- /dev/null +++ b/src/test/com/jogamp/opengl/test/junit/graph/GPUTextRendererListenerBase01.java @@ -0,0 +1,588 @@ +/** + * Copyright 2010 JogAmp Community. All rights reserved. + * + * 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 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * 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.graph; + +import java.io.IOException; + +import com.jogamp.opengl.GL; +import com.jogamp.opengl.GL2ES2; +import com.jogamp.opengl.GLAnimatorControl; +import com.jogamp.opengl.GLAutoDrawable; +import com.jogamp.opengl.GLException; +import com.jogamp.opengl.GLProfile; +import com.jogamp.opengl.fixedfunc.GLMatrixFunc; +import com.jogamp.common.util.InterruptSource; +import com.jogamp.graph.curve.Region; +import com.jogamp.graph.curve.opengl.GLRegion; +import com.jogamp.graph.curve.opengl.RegionRenderer; +import com.jogamp.graph.curve.opengl.RenderState; +import com.jogamp.graph.curve.opengl.TextRegionUtil; +import com.jogamp.graph.font.Font; +import com.jogamp.graph.font.FontFactory; +import com.jogamp.graph.font.FontScale; +import com.jogamp.graph.font.FontSet; +import com.jogamp.graph.geom.plane.AffineTransform; +import com.jogamp.newt.Window; +import com.jogamp.newt.event.KeyEvent; +import com.jogamp.newt.event.KeyListener; +import com.jogamp.newt.opengl.GLWindow; +import com.jogamp.opengl.math.geom.AABBox; +import com.jogamp.opengl.util.PMVMatrix; + +/** + * + * GPURendererListenerBase01 Keys: + * - 1/2: zoom in/out + * - 6/7: 2nd pass texture size + * - 0/9: rotate + * - v: toggle v-sync + * - s: screenshot + * + * Additional Keys: + * - 3/4: font +/- + * - h: toogle draw 'font set' + * - f: toggle draw fps + * - space: toggle font (ubuntu/java) + * - i: live input text input (CR ends it, backspace supported) + */ +public abstract class GPUTextRendererListenerBase01 extends GPURendererListenerBase01 { + public final TextRegionUtil textRegionUtil; + private final GLRegion regionFPS, regionHead, regionBottom; + int fontSet = FontFactory.UBUNTU; + Font font; + + int headType = 1; + boolean drawFPS = true; + final float fontSizeFName = 10f; + final float fontSizeFPS = 10f; + final int[] sampleCountFPS = new int[] { 8 }; + float fontSizeHead = 12f; + float fontSizeCenter = 16f; + float dpiV = 96; + float ppmmV = 1; + final int fontSizeModulo = 100; + String fontName; + AABBox fontNameBox; + String headtext; + AABBox headbox; + + protected final AffineTransform tempT1 = new AffineTransform(); + protected final AffineTransform tempT2 = new AffineTransform(); + + static final String text2 = "The quick brown fox jumps over the lazy dog"; + public static final String text_help = + "JOGL: Java™ Binding for OpenGL®, providing hardware-accelerated 3D graphics.\n\n"+ + "JOGAMP graph demo using Resolution Independent NURBS\n"+ + "JOGAMP JOGL - OpenGL ES2 profile\n"+ + "Press 1/2 to zoom in/out the below text\n"+ + "Press 3/4 to incr/decs font size (alt: head, w/o bottom)\n"+ + "Press 6/7 to edit texture size if using VBAA\n"+ + "Press 0/9 to rotate the below string\n"+ + "Press s to screenshot\n"+ + "Press v to toggle vsync\n"+ + "Press i for live input text input (CR ends it, backspace supported)\n"+ + "Press f to toggle fps. H for different text, space for font type\n"; + + public static final String textX1 = + "JOGL: Java™ Binding for OpenGL®, providing hardware-accelerated 3D graphics.\n\n"+ + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec sapien tellus. \n"+ + "Ut purus odio, rhoncus sit amet commodo eget, ullamcorper vel urna. Mauris ultricies \n"+ + "quam iaculis urna cursus ornare. Nullam ut felis a ante ultrices ultricies nec a elit. \n"+ + "In hac habitasse platea dictumst. Vivamus et mi a quam lacinia pharetra at venenatis est. \n"+ + "Morbi quis bibendum nibh. Donec lectus orci, sagittis in consequat nec, volutpat nec nisi. \n"+ + "Donec ut dolor et nulla tristique varius. In nulla magna, fermentum id tempus quis, semper \n"+ + "in lorem. Maecenas in ipsum ac justo scelerisque sollicitudin. Quisque sit amet neque lorem, \n" + + "-------Press H to change text---------"; + + public static final String textX2 = + "I “Ask Jeff” or ‘Ask Jeff’. Take the chef d’œuvre! Two of [of] (of) ‘of’ “of” of? of! of*.\n"+ + "Les Woëvres, the Fôret de Wœvres, the Voire and Vauvise. Yves is in heaven; D’Amboise is in jail.\n"+ + "Lyford’s in Texas & L’Anse-aux-Griffons in Québec; the Łyna in Poland. Yriarte, Yciar and Ysaÿe are at Yale.\n"+ + "Kyoto and Ryotsu are both in Japan, Kwikpak on the Yukon delta, Kvæven in Norway, Kyulu in Kenya, not in Rwanda.…\n"+ + "Von-Vincke-Straße in Münster, Vdovino in Russia, Ytterbium in the periodic table. Are Toussaint L’Ouverture, Wölfflin, Wolfe,\n"+ + "Miłosz and Wū Wŭ all in the library? 1510–1620, 11:00 pm, and the 1980s are over. X\n"+ + "-------Press H to change text---------"; + + public static final String textX20 = + "I “Ask Jeff” or ‘Ask Jeff’. Take the chef d’œuvre! Two of [of] (of) ‘of’ “of” of? of! of*.\n"+ + "Two of [of] (of) ‘of’ “of” of? of! of*. Ydes, Yffignac and Ygrande are in France: so are Ypres,\n"+ + "Les Woëvres, the Fôret de Wœvres, the Voire and Vauvise. Yves is in heaven; D’Amboise is in jail.\n"+ + "Lyford’s in Texas & L’Anse-aux-Griffons in Québec; the Łyna in Poland. Yriarte, Yciar and Ysaÿe are at Yale.\n"+ + "Kyoto and Ryotsu are both in Japan, Kwikpak on the Yukon delta, Kvæven in Norway, Kyulu in Kenya, not in Rwanda.…\n"+ + "Walton’s in West Virginia, but «Wren» is in Oregon. Tlálpan is near Xochimilco in México.\n"+ + "The Zygos & Xylophagou are in Cyprus, Zwettl in Austria, Fænø in Denmark, the Vøringsfossen and Værøy in Norway.\n"+ + "Tchula is in Mississippi, the Tittabawassee in Michigan. Twodot is here in Montana, Ywamun in Burma.\n"+ + "Yggdrasil and Ymir, Yngvi and Vóden, Vídrið and Skeggjöld and Týr are all in the Eddas.\n"+ + "Tørberget and Våg, of course, are in Norway, Ktipas and Tmolos in Greece, but Vázquez is in Argentina, Vreden in Germany,\n"+ + "Von-Vincke-Straße in Münster, Vdovino in Russia, Ytterbium in the periodic table. Are Toussaint L’Ouverture, Wölfflin, Wolfe,\n"+ + "Miłosz and Wū Wŭ all in the library? 1510–1620, 11:00 pm, and the 1980s are over.\n"+ + "Ut purus odio, rhoncus sit amet commodo eget, ullamcorper vel urna. Mauris ultricies \n"+ + "-------Press H to change text---------"; + + static final String textXLast = "abcdefghijklmnopqrstuvwxyz\nABCDEFGHIJKLMNOPQRSTUVWXYZ\n0123456789.:,;(*!?/\\\")$%^&-+@~#<>{}[]"; + + Window upstream_window = null; + StringBuilder userString = new StringBuilder(textX1); + boolean userInput = false; + public GPUTextRendererListenerBase01(final GLProfile glp, final RenderState rs, final int renderModes, final int sampleCount, final boolean blending, final boolean debug, final boolean trace) { + // NOTE_ALPHA_BLENDING: We use alpha-blending + super(RegionRenderer.create(rs, blending ? RegionRenderer.defaultBlendEnable : null, + blending ? RegionRenderer.defaultBlendDisable : null), + renderModes, debug, trace); + rs.setHintMask(RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED); + this.textRegionUtil = new TextRegionUtil(renderModes); + this.regionFPS = GLRegion.create(glp, renderModes, null); + this.regionHead = GLRegion.create(glp, renderModes, null); + this.regionBottom = GLRegion.create(glp, renderModes, null); + setFontSet(fontSet, FontSet.FAMILY_LIGHT, FontSet.STYLE_NONE); + setMatrix(0, 0, 0, 0f, sampleCount); + } + + void switchHeadBox() { + setHeadBox( ( headType + 1 ) % 5, true ); + } + public int getHeadBoxType() { return headType; } + public AABBox getHeadBox() { return headbox; } + public void setHeadBox(final int choice, final boolean resize) { + headType = choice % 5 ; + switch(headType) { + case 0: + headtext = null; + break; + + case 1: + headtext= textX1; + break; + case 2: + headtext= textX2; + break; + case 3: + headtext= text_help; + break; + + default: + headtext = textXLast; + } + if(resize && null != headtext) { + headbox = font.getMetricBounds(headtext); + if( headtext != text_help ) { + final float pxSz = FontScale.toPixels(fontSizeHead, dpiV); + upsizeWindowSurface(upstream_window, true, (int)(headbox.getWidth()*pxSz*1.1f), (int)(headbox.getHeight()*pxSz*2f)); + } + } + } + + public void setHeadBox(final String text, final boolean resize) { + headtext = text; + if(resize && null != headtext) { + headbox = font.getMetricBounds(headtext); + if( headtext != text_help ) { + final float pxSz = FontScale.toPixels(fontSizeHead, dpiV); + upsizeWindowSurface(upstream_window, true, (int)(headbox.getWidth()*pxSz*1.1f), (int)(headbox.getHeight()*pxSz*2f)); + } + } + } + + public static void upsizeWindowSurface(final Window window, final boolean off_thread, final int w, final int h) { + if( null == window ) { + return; + } + final int w2 = Math.max(window.getSurfaceWidth(), w); + final int h2 = Math.max(window.getSurfaceHeight(), h); + System.err.println("upsizeWindowSurface: "+window.getSurfaceWidth()+"x"+window.getSurfaceHeight()+" -> "+w+"x"+h+" -> "+w2+"x"+h2); + if( off_thread ) { + new InterruptSource.Thread() { + @Override + public void run() { + window.setSurfaceSize(w2, h2); + } }.start(); + } else { + window.setSurfaceSize(w2, h2); + } + } + + @Override + public void init(final GLAutoDrawable drawable) { + super.init(drawable); + final Object upObj = drawable.getUpstreamWidget(); + if( upObj instanceof Window ) { + upstream_window = (Window) upObj; + final float[] sPpMM = upstream_window.getPixelsPerMM(new float[2]); + final float[] sDPI = FontScale.perMMToPerInch( new float[] { sPpMM[0], sPpMM[1] } ); + dpiV = sDPI[1]; + ppmmV = sPpMM[1]; + System.err.println("Using vertical screen DPI of "+dpiV+", "+ppmmV+" pixel/mm"); + } else { + System.err.println("Using vertical default DPI of "+dpiV+", "+ppmmV+" pixel/mm"); + } + fontNameBox = font.getGlyphBounds(fontName, tempT1, tempT2); + setHeadBox(headType, true); + { + final float pixelSizeFName = FontScale.toPixels(fontSizeFName, dpiV); + System.err.println("XXX: fontName size "+fontSizeFName+"pt, dpiV "+dpiV+" -> "+pixelSizeFName+"px"); + System.err.println("XXX: fontName boxM fu "+font.getMetricBoundsFU(fontName)); + System.err.println("XXX: fontName boxG fu "+font.getGlyphBoundsFU(fontName, tempT1, tempT2)); + System.err.println("XXX: fontName boxM em "+font.getMetricBounds(fontName)); + System.err.println("XXX: fontName boxG em "+font.getGlyphBounds(fontName, tempT1, tempT2)); + System.err.println("XXX: fontName box height px "+(fontNameBox.getHeight() * pixelSizeFName)); + } + } + + @Override + public void reshape(final GLAutoDrawable drawable, final int xstart, final int ystart, final int width, final int height) { + super.reshape(drawable, xstart, ystart, width, height); + final Object upObj = drawable.getUpstreamWidget(); + if( upObj instanceof Window ) { + upstream_window = (Window) upObj; + } + final float dist = 100f; + nearPlaneX0 = nearPlane1Box.getMinX() * dist; + nearPlaneY0 = nearPlane1Box.getMinY() * dist; + nearPlaneZ0 = nearPlane1Box.getMinZ() * dist; + final float xd = nearPlane1Box.getWidth() * dist; + final float yd = nearPlane1Box.getHeight() * dist; + nearPlaneSx = xd / width; + nearPlaneSy = yd / height; + nearPlaneS = nearPlaneSy; + System.err.printf("Scale: [%f x %f] / [%d x %d] = [%f, %f] -> %f%n", xd, yd, width, height, nearPlaneSx, nearPlaneSy, nearPlaneS); + } + float nearPlaneX0, nearPlaneY0, nearPlaneZ0, nearPlaneSx, nearPlaneSy, nearPlaneS; + + @Override + public void dispose(final GLAutoDrawable drawable) { + upstream_window = null; + regionFPS.destroy(drawable.getGL().getGL2ES2()); + regionHead.destroy(drawable.getGL().getGL2ES2()); + regionBottom.destroy(drawable.getGL().getGL2ES2()); + super.dispose(drawable); + } + + @Override + public void display(final GLAutoDrawable drawable) { + final Object upObj = drawable.getUpstreamWidget(); + if( upObj instanceof Window ) { + upstream_window = (Window) upObj; + } + final int width = drawable.getSurfaceWidth(); + final int height = drawable.getSurfaceHeight(); + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + + gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); + + // final float zDistance0 = 500f; + // final float zDistance1 = 400f; + // final float[] objPos = new float[3]; + // final float[] winZ = new float[1]; + // final int[] view = new int[] { 0, 0, drawable.getWidth(), drawable.getHeight() }; + + final RegionRenderer renderer = getRenderer(); + final RenderState rs = renderer.getRenderState(); + final PMVMatrix pmv = renderer.getMatrix(); + pmv.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); + pmv.glLoadIdentity(); + rs.setColorStatic(0.1f, 0.1f, 0.1f, 1.0f); + final float pixelSizeFName = FontScale.toPixels(fontSizeFName, dpiV); + final float pixelSizeHead = FontScale.toPixels(fontSizeHead, dpiV); + final float mmSizeHead = pixelSizeHead / ppmmV; + final float pixelSizeCenter = FontScale.toPixels(fontSizeCenter, dpiV); + final float mmSizeCenter = pixelSizeCenter / ppmmV; + + renderer.enable(gl, true); + + if( drawFPS ) { + pmv.glPushMatrix(); + final float pixelSizeFPS = FontScale.toPixels(fontSizeFPS, dpiV); + final float lfps, tfps, td; + final GLAnimatorControl animator = drawable.getAnimator(); + if( null != animator ) { + lfps = animator.getLastFPS(); + tfps = animator.getTotalFPS(); + td = animator.getTotalFPSDuration()/1000f; + } else { + lfps = 0f; + tfps = 0f; + td = 0f; + } + final String modeS = Region.getRenderModeString(regionFPS.getRenderModes()); + final String text = String.format("%03.1f/%03.1f fps, v-sync %d, dpiV %.2f %.2f px/mm, font[head %.1fpt %.2fpx %.2fmm, center %.1fpt %.2fpx %.2fmm], %s-samples[%d, this %d], blend %b, alpha %d", + lfps, tfps, gl.getSwapInterval(), dpiV, ppmmV, + fontSizeHead, pixelSizeHead, mmSizeHead, + fontSizeCenter, pixelSizeCenter, mmSizeCenter, + modeS, getSampleCount()[0], sampleCountFPS[0], + renderer.getRenderState().isHintMaskSet(RenderState.BITHINT_BLENDING_ENABLED), + drawable.getChosenGLCapabilities().getAlphaBits()); + + // bottom, half line up + pmv.glTranslatef(nearPlaneX0, nearPlaneY0+(nearPlaneS * pixelSizeFPS / 2f), nearPlaneZ0); + { + final float sxy = nearPlaneS * pixelSizeFPS; + pmv.glScalef(sxy, sxy, 1.0f); + } + // No cache, keep region alive! + TextRegionUtil.drawString3D(gl, regionFPS.clear(gl), renderer, font, text, null, sampleCountFPS, tempT1, tempT2); + pmv.glPopMatrix(); + } + + // float dx = width - ( fontNameBox.getWidth() + font.getAdvanceWidth( Glyph.ID_SPACE ) ) * pixelSizeFName; + float dx = width - ( fontNameBox.getWidth() + 2 * font.getAdvanceWidth( font.getGlyphID('X') ) ) * pixelSizeFName; + float dy = height - fontNameBox.getHeight() * pixelSizeFName; + { + pmv.glPushMatrix(); + pmv.glTranslatef(nearPlaneX0+(dx*nearPlaneSx), nearPlaneY0+(dy*nearPlaneSy), nearPlaneZ0); + { + final float sxy = nearPlaneS * pixelSizeFName; + pmv.glScalef(sxy, sxy, 1.0f); + } + // System.err.printf("FontN: [%f %f] -> [%f %f]%n", dx, dy, nearPlaneX0+(dx*nearPlaneSx), nearPlaneY0+(dy*nearPlaneSy)); + textRegionUtil.drawString3D(gl, renderer, font, fontName, null, getSampleCount()); + pmv.glPopMatrix(); + } + + dx = 10f; + dy += -fontNameBox.getHeight() * pixelSizeFName - 10f; + + if(null != headtext) { + pmv.glPushMatrix(); + // System.err.printf("Head: [%f %f] -> [%f %f]%n", dx, dy, nearPlaneX0+(dx*nearPlaneSx), nearPlaneY0+(dy*nearPlaneSy)); + pmv.glTranslatef(nearPlaneX0+(dx*nearPlaneSx), nearPlaneY0+(dy*nearPlaneSy), nearPlaneZ0); + { + final float sxy = nearPlaneS * pixelSizeHead; + pmv.glScalef(sxy, sxy, 1.0f); + } + // pmv.glTranslatef(x0, y1, z0); + textRegionUtil.drawString3D(gl, renderer, font, headtext, null, getSampleCount()); + pmv.glPopMatrix(); + } + + dy += ( -headbox.getHeight() - font.getLineHeight() ) * pixelSizeCenter; + + { + pmv.glPushMatrix(); + pmv.glTranslatef(nearPlaneX0+(dx*nearPlaneSx), nearPlaneY0+(dy*nearPlaneSy), nearPlaneZ0); + // System.err.printf("Bottom: [%f %f] -> [%f %f]%n", dx, dy, nearPlaneX0+(dx*nearPlaneSx), nearPlaneY0+(dy*nearPlaneSy)); + pmv.glTranslatef(getXTran(), getYTran(), getZTran()); + pmv.glRotatef(getAngle(), 0, 1, 0); + { + final float sxy = nearPlaneS * pixelSizeCenter; + pmv.glScalef(sxy, sxy, 1.0f); + } + rs.setColorStatic(0.9f, 0.0f, 0.0f, 1.0f); + + if( bottomTextUseFrustum ) { + regionBottom.setFrustum(pmv.glGetFrustum()); + } + if(!userInput) { + if( bottomTextUseFrustum ) { + TextRegionUtil.drawString3D(gl, regionBottom.clear(gl), renderer, font, text2, null, getSampleCount(), tempT1, tempT2); + } else { + textRegionUtil.drawString3D(gl, renderer, font, text2, null, getSampleCount()); + } + } else { + if( bottomTextUseFrustum ) { + TextRegionUtil.drawString3D(gl, regionBottom.clear(gl), renderer, font, userString.toString(), null, getSampleCount(), tempT1, tempT2); + } else { + textRegionUtil.drawString3D(gl, renderer, font, userString.toString(), null, getSampleCount()); + } + } + pmv.glPopMatrix(); + } + renderer.enable(gl, false); + } + final boolean bottomTextUseFrustum = true; + + public Font getFont() { return font; } + public float getFontSizeHead() { return fontSizeHead; } + + public void fontBottomIncr(final int v) { + fontSizeCenter = Math.abs((fontSizeCenter + v) % fontSizeModulo) ; + dumpMatrix(true); + } + + public void fontHeadIncr(final int v) { + fontSizeHead = Math.abs((fontSizeHead + v) % fontSizeModulo) ; + updateFontNameBox(); + if(null != headtext) { + headbox = font.getMetricBounds(headtext); + } + } + + public void setFontHeadSize(final int v) { + if( 0 < v ) { + fontSizeHead = v % fontSizeModulo; + updateFontNameBox(); + if(null != headtext) { + headbox = font.getMetricBounds(headtext); + } + } + } + + public boolean nextFontSet() { + try { + final int set = ( fontSet == FontFactory.UBUNTU ) ? FontFactory.JAVA : FontFactory.UBUNTU ; + final Font _font = FontFactory.get(set).getDefault(); + if(null != _font) { + fontSet = set; + font = _font; + updateFontNameBox(); + return true; + } + } catch (final IOException ex) { + System.err.println("Caught: "+ex.getMessage()); + } + return false; + } + + public boolean setFontSet(final int set, final int family, final int stylebits) { + try { + final Font _font = FontFactory.get(set).get(family, stylebits); + if(null != _font) { + fontSet = set; + font = _font; + updateFontNameBox(); + return true; + } + } catch (final IOException ex) { + System.err.println("Caught: "+ex.getMessage()); + } + return false; + } + + public boolean setFont(final Font _font) { + if(null != _font) { + // fontSet = ??? + font = _font; + updateFontNameBox(); + return true; + } + return false; + } + + private void updateFontNameBox() { + fontName = font.getFullFamilyName()+" (head "+fontSizeHead+"pt)"; + fontNameBox = font.getMetricBounds(fontName); + } + + public boolean isUserInputMode() { return userInput; } + + void dumpMatrix(final boolean bbox) { + System.err.println("Matrix: " + getXTran() + "/" + getYTran() + " x"+getZTran() + " @"+getAngle() +" fontSize "+fontSizeCenter); + if(bbox) { + System.err.println("bbox em: "+font.getMetricBounds(text2)); + System.err.println("bbox px: "+font.getMetricBounds(text2).scale(nearPlaneS * FontScale.toPixels(fontSizeCenter, dpiV), new float[3])); + } + } + + KeyAction keyAction = null; + + @Override + public void attachInputListenerTo(final GLWindow window) { + if ( null == keyAction ) { + keyAction = new KeyAction(); + window.addKeyListener(keyAction); + super.attachInputListenerTo(window); + } + } + + @Override + public void detachInputListenerFrom(final GLWindow window) { + super.detachInputListenerFrom(window); + if ( null == keyAction ) { + return; + } + window.removeKeyListener(keyAction); + } + + @Override + public void printScreen(final GLAutoDrawable drawable, final String dir, final String tech, final String objName, final boolean exportAlpha) throws GLException, IOException { + final String fn = font.getFullFamilyName().replace(' ', '_').replace('-', '_'); + final String modes = Region.getRenderModeString(getRenderModes()); + final String fsaa = "fsaa"+drawable.getChosenGLCapabilities().getNumSamples(); + super.printScreen(drawable, dir, tech+"-"+modes, fsaa+"-"+fn+"-text"+getHeadBoxType()+"-"+objName, exportAlpha); + } + + float fontHeadScale = 1f; + + public class KeyAction implements KeyListener { + @Override + public void keyPressed(final KeyEvent e) { + if(userInput) { + return; + } + final short s = e.getKeySymbol(); + if(s == KeyEvent.VK_3) { + if( e.isAltDown() ) { + fontHeadIncr(1); + } else { + fontBottomIncr(1); + } + } + else if(s == KeyEvent.VK_4) { + if( e.isAltDown() ) { + fontHeadIncr(-1); + } else { + fontBottomIncr(-1); + } + } + else if(s == KeyEvent.VK_H) { + switchHeadBox(); + } + else if(s == KeyEvent.VK_F) { + drawFPS = !drawFPS; + } + else if(s == KeyEvent.VK_SPACE) { + nextFontSet(); + } + else if(s == KeyEvent.VK_I) { + userInput = true; + setIgnoreInput(true); + } + } + + @Override + public void keyReleased(final KeyEvent e) { + if( !e.isPrintableKey() || e.isAutoRepeat() ) { + return; + } + if(userInput) { + final short k = e.getKeySymbol(); + if( KeyEvent.VK_ENTER == k ) { + userInput = false; + setIgnoreInput(false); + } else if( KeyEvent.VK_BACK_SPACE == k && userString.length()>0) { + userString.deleteCharAt(userString.length()-1); + } else { + final char c = e.getKeyChar(); + if( font.isPrintableChar( c ) ) { + userString.append(c); + } + } + } + } + } +} diff --git a/src/test/com/jogamp/opengl/test/junit/graph/MSAATool.java b/src/test/com/jogamp/opengl/test/junit/graph/MSAATool.java new file mode 100644 index 000000000..bd18214dc --- /dev/null +++ b/src/test/com/jogamp/opengl/test/junit/graph/MSAATool.java @@ -0,0 +1,96 @@ +/** + * Copyright 2010 JogAmp Community. All rights reserved. + * + * 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 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * 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.graph; + +import com.jogamp.opengl.GL; +import com.jogamp.opengl.GL2ES2; +import com.jogamp.opengl.GL2GL3; +import com.jogamp.opengl.GLAutoDrawable; +import com.jogamp.opengl.GLCapabilitiesImmutable; + +public class MSAATool { + public static boolean glIsEnabled(final GL gl, final int name) { + boolean isEnabled = false; + try { + isEnabled = gl.glIsEnabled(name); + final int glerr = gl.glGetError(); + if(GL.GL_NO_ERROR != glerr) { + System.err.println("glIsEnabled(0x"+Integer.toHexString(name)+") -> error 0x"+Integer.toHexString(glerr)); + } + } catch (final Exception e) { + System.err.println("Caught exception: "+e.getMessage()); + // e.printStackTrace(); + } + return isEnabled; + } + public static void dump(final GLAutoDrawable drawable) { + final float[] vf = new float[] { 0f }; + final byte[] vb = new byte[] { 0 }; + final int[] vi = new int[] { 0, 0 }; + + System.out.println("GL MSAA SETUP:"); + final GL2ES2 gl = drawable.getGL().getGL2ES2(); + final GLCapabilitiesImmutable caps = drawable.getChosenGLCapabilities(); + System.out.println(" Caps realised "+caps); + System.out.println(" Caps sample buffers "+caps.getSampleBuffers()+", samples "+caps.getNumSamples()); + + System.out.println(" GL MULTISAMPLE "+glIsEnabled(gl, GL.GL_MULTISAMPLE)); + // sample buffers min 0, same as GLX_SAMPLE_BUFFERS_ARB or WGL_SAMPLE_BUFFERS_ARB + gl.glGetIntegerv(GL.GL_SAMPLE_BUFFERS, vi, 0); + // samples min 0 + gl.glGetIntegerv(GL.GL_SAMPLES, vi, 1); + System.out.println(" GL SAMPLE_BUFFERS "+vi[0]+", SAMPLES "+vi[1]); + + System.out.println("GL CSAA SETUP:"); + // default FALSE + System.out.println(" GL SAMPLE COVERAGE "+glIsEnabled(gl, GL.GL_SAMPLE_COVERAGE)); + // default FALSE + System.out.println(" GL SAMPLE_ALPHA_TO_COVERAGE "+glIsEnabled(gl, GL.GL_SAMPLE_ALPHA_TO_COVERAGE)); + // default FALSE + System.out.println(" GL SAMPLE_ALPHA_TO_ONE "+glIsEnabled(gl, GL.GL_SAMPLE_ALPHA_TO_ONE)); + // default FALSE, value 1, invert false + gl.glGetFloatv(GL.GL_SAMPLE_COVERAGE_VALUE, vf, 0); + gl.glGetBooleanv(GL.GL_SAMPLE_COVERAGE_INVERT, vb, 0); + System.out.println(" GL SAMPLE_COVERAGE "+glIsEnabled(gl, GL.GL_SAMPLE_COVERAGE) + + ": SAMPLE_COVERAGE_VALUE "+vf[0]+ + ", SAMPLE_COVERAGE_INVERT "+vb[0]); + dumpBlend(gl); + } + public static void dumpBlend(final GL gl) { + final int[] vi = new int[] { 0, 0, 0, 0 }; + gl.glGetIntegerv(GL.GL_BLEND, vi, 0); + gl.glGetIntegerv(GL.GL_BLEND_SRC_ALPHA, vi, 1); + gl.glGetIntegerv(GL.GL_BLEND_SRC_RGB, vi, 2); + gl.glGetIntegerv(GL.GL_BLEND_DST_RGB, vi, 3); + final boolean blendEnabled = vi[0] == GL.GL_TRUE; + System.out.println("GL_BLEND "+blendEnabled+"/"+glIsEnabled(gl, GL.GL_BLEND) + + " GL_SRC_ALPHA 0x"+Integer.toHexString(vi[1])+ + " GL_SRC_RGB 0x"+Integer.toHexString(vi[2])+ + " GL_DST_RGB 0x"+Integer.toHexString(vi[3])); + } +} diff --git a/src/test/com/jogamp/opengl/test/junit/graph/TestRegionRendererNEWT01.java b/src/test/com/jogamp/opengl/test/junit/graph/TestRegionRendererNEWT01.java index b7aff2f79..3ffd22fd0 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/TestRegionRendererNEWT01.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/TestRegionRendererNEWT01.java @@ -48,9 +48,6 @@ import com.jogamp.graph.curve.Region; import com.jogamp.graph.curve.opengl.RenderState; import com.jogamp.graph.geom.SVertex; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.graph.demos.GPURegionGLListener01; -import com.jogamp.opengl.test.junit.graph.demos.GPURegionGLListener10; -import com.jogamp.opengl.test.junit.graph.demos.GPURendererListenerBase01; import com.jogamp.opengl.test.junit.util.UITestCase; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT20.java b/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT20.java index 624b1ff94..562688bdc 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT20.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT20.java @@ -53,8 +53,6 @@ import com.jogamp.graph.font.Font; import com.jogamp.graph.font.FontFactory; import com.jogamp.graph.geom.SVertex; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.graph.demos.GPUTextRendererListenerBase01; -import com.jogamp.opengl.test.junit.graph.demos.MSAATool; import com.jogamp.opengl.test.junit.util.UITestCase; import com.jogamp.opengl.util.caps.NonFSAAGLCapsChooser; diff --git a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneNewtCanvasAWTDemo.java b/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneNewtCanvasAWTDemo.java deleted file mode 100644 index c279079b7..000000000 --- a/src/test/com/jogamp/opengl/test/junit/graph/ui/demos/GPUUISceneNewtCanvasAWTDemo.java +++ /dev/null @@ -1,220 +0,0 @@ -/** - * Copyright 2010-2023 JogAmp Community. All rights reserved. - * - * 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 - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * 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.graph.ui.demos; - -import java.awt.Component; -import java.awt.Frame; -import java.lang.reflect.InvocationTargetException; - -import com.jogamp.nativewindow.ScalableSurface; -import com.jogamp.nativewindow.util.Dimension; -import com.jogamp.nativewindow.util.DimensionImmutable; -import com.jogamp.opengl.GLCapabilities; -import com.jogamp.opengl.GLProfile; -import javax.swing.SwingUtilities; - -import org.junit.Assume; - -import com.jogamp.graph.curve.Region; -import com.jogamp.newt.awt.NewtCanvasAWT; -import com.jogamp.newt.event.WindowAdapter; -import com.jogamp.newt.event.WindowEvent; -import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.test.junit.util.MiscUtils; -import com.jogamp.opengl.util.Animator; - -public class GPUUISceneNewtCanvasAWTDemo { - static final boolean DEBUG = false; - static final boolean TRACE = false; - - static void setComponentSize(final Component comp, final DimensionImmutable new_sz) { - try { - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - @Override - public void run() { - final java.awt.Dimension d = new java.awt.Dimension(new_sz.getWidth(), new_sz.getHeight()); - comp.setMinimumSize(d); - comp.setPreferredSize(d); - comp.setSize(d); - } } ); - } catch( final Throwable throwable ) { - throwable.printStackTrace(); - Assume.assumeNoException( throwable ); - } - } - - public static void main(final String[] args) throws InterruptedException, InvocationTargetException { - String fontfilename = null; - - int SceneMSAASamples = 0; - boolean GraphVBAAMode = false; - boolean GraphMSAAMode = false; - float GraphAutoMode = GPUUISceneGLListener0A.DefaultNoAADPIThreshold; - - final float[] reqSurfacePixelScale = new float[] { ScalableSurface.AUTOMAX_PIXELSCALE, ScalableSurface.AUTOMAX_PIXELSCALE }; - - int width = 800, height = 400; - int x = 10, y = 10; - - boolean forceES2 = false; - boolean forceES3 = false; - boolean forceGL3 = false; - boolean forceGLDef = false; - - if( 0 != args.length ) { - for(int i=0; i<args.length; i++) { - if(args[i].equals("-smsaa")) { - i++; - SceneMSAASamples = MiscUtils.atoi(args[i], SceneMSAASamples); - GraphMSAAMode = false; - GraphVBAAMode = false; - GraphAutoMode = 0f; - } else if(args[i].equals("-gmsaa")) { - GraphMSAAMode = true; - GraphVBAAMode = false; - GraphAutoMode = 0f; - } else if(args[i].equals("-gvbaa")) { - GraphMSAAMode = false; - GraphVBAAMode = true; - GraphAutoMode = 0f; - } else if(args[i].equals("-gauto")) { - GraphMSAAMode = false; - GraphVBAAMode = true; - i++; - GraphAutoMode = MiscUtils.atof(args[i], GraphAutoMode); - } else if(args[i].equals("-font")) { - i++; - fontfilename = args[i]; - } 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); - } else if(args[i].equals("-pixelScale")) { - i++; - final float pS = MiscUtils.atof(args[i], reqSurfacePixelScale[0]); - reqSurfacePixelScale[0] = pS; - reqSurfacePixelScale[1] = pS; - } else if(args[i].equals("-es2")) { - forceES2 = true; - } else if(args[i].equals("-es3")) { - forceES3 = true; - } else if(args[i].equals("-gl3")) { - forceGL3 = true; - } else if(args[i].equals("-gldef")) { - forceGLDef = true; - } - } - } - System.err.println("forceES2 "+forceES2); - System.err.println("forceES3 "+forceES3); - System.err.println("forceGL3 "+forceGL3); - System.err.println("forceGLDef "+forceGLDef); - 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); - System.err.println("Graph Auto Mode "+GraphAutoMode+" no-AA dpi threshold"); - - final GLProfile glp; - if(forceGLDef) { - glp = GLProfile.getDefault(); - } else if(forceGL3) { - glp = GLProfile.get(GLProfile.GL3); - } else if(forceES3) { - glp = GLProfile.get(GLProfile.GLES3); - } else if(forceES2) { - glp = GLProfile.get(GLProfile.GLES2); - } else { - glp = GLProfile.getGL2ES2(); - } - System.err.println("GLProfile: "+glp); - final GLCapabilities caps = new GLCapabilities(glp); - caps.setAlphaBits(4); - if( SceneMSAASamples > 0 ) { - caps.setSampleBuffers(true); - caps.setNumSamples(SceneMSAASamples); - } - System.out.println("Requested: " + caps); - - final int rmode; - if( GraphVBAAMode ) { - rmode = Region.VBAA_RENDERING_BIT; - } else if( GraphMSAAMode ) { - rmode = Region.MSAA_RENDERING_BIT; - } else { - rmode = 0; - } - - final GLWindow window = GLWindow.create(caps); - window.setPosition(x, y); - window.setSize(width, height); - window.setTitle("GraphUI Newt/AWT Demo: graph["+Region.getRenderModeString(rmode)+"], msaa "+SceneMSAASamples); - window.setSurfaceScale(reqSurfacePixelScale); - final float[] valReqSurfacePixelScale = window.getRequestedSurfaceScale(new float[2]); - - final GPUUISceneGLListener0A sceneGLListener = 0 < GraphAutoMode ? new GPUUISceneGLListener0A(fontfilename, GraphAutoMode, DEBUG, TRACE) : - new GPUUISceneGLListener0A(fontfilename, rmode, DEBUG, TRACE); - - window.addGLEventListener(sceneGLListener); - sceneGLListener.attachInputListenerTo(window); - - final Animator animator = new Animator(); - animator.setUpdateFPSFrames(60, System.err); - animator.add(window); - - window.addWindowListener(new WindowAdapter() { - @Override - public void windowDestroyed(final WindowEvent e) { - animator.stop(); - } - }); - - final NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(window); - final Frame frame = new Frame("GraphUI Newt/AWT Demo: graph["+Region.getRenderModeString(rmode)+"], msaa "+SceneMSAASamples); - - setComponentSize(newtCanvasAWT, new Dimension(width, height)); - frame.add(newtCanvasAWT); - SwingUtilities.invokeAndWait(new Runnable() { - @Override - public void run() { - frame.pack(); - frame.setVisible(true); - } - }); - animator.start(); - } -} |