commit f5964604d3e940c07c3e6af884f06b4eceb08dd4 Author: Sven Göthel Date: Sat Aug 30 12:26:30 2025 +0200 Bug 1528: Perform all `OSXUtil.DestroyNSWindow()` calls on AppKit's MainThread OSXDummyUpstreamSurfaceHook::destroy() was using current thread, moved to appkit main-thread. commit 92336365cd326cd6cb0da7940cee3f3f7f70cc7f Author: Sven Göthel Date: Sat Aug 30 11:31:04 2025 +0200 Bug 1531: Use jvmarg.generic for unit testing, e.g. '--enable-native-access=ALL-UNNAMED' The property setup has been moved to GlueGen's make/jogamp-env.xml. commit 7814c5d1e7292f3acd3d1b885e1be224bc51ddf2 Author: Sven Göthel Date: Sat Aug 30 07:00:47 2025 +0200 NEWT Android: We use API 26, drop lower checks. Translate more Android MotionEvents. commit ec964823eaa926a5e50d6f21c9403f5c78b5cdb4 Author: Sven Göthel Date: Sat Aug 30 06:59:07 2025 +0200 GraphUI: Cleanup Tooltip related method names: xxxToolTip -> xxxTooltip and clarify usage within Scene. commit 34b423902c21e00fd2ef4261a444ef31f289c5ec Author: Sven Göthel Date: Sat Aug 30 06:57:28 2025 +0200 Demo graph/ui/FontView01: Use GLEventLister model and add to Android fat demo; ... .. additionally: - NEWT - MonitorDevice's mm/inch conversion simplified for use. - Demos - Rename UISceneDemo03b -> UISceneDemo03, removing linear hacked variant. - Android fat demo activities: Don't print fps updates to stderr. - UISceneDemo03: Add button to toggle animGroup.setFixedPeriod() - CommandlineOptions: fixAARenderModeWithDPIThreshold() -> fixDefaultAARenderModeWithDPIThreshold(), - Changes default AA rendering bit if not modified via parse(), i.e. default_aa_setting is true - AA rendering will be enabled if dpiV < noAADPIThreshold, otherwise enabled commit 26eaf5ae24f676528983bfb82f24219ff5e059af Author: Sven Göthel Date: Wed Aug 27 14:24:13 2025 +0200 NEWT MonitorDevice/Mode: Use zero default for user props for detection. Pushed commit 9635c194e421752a0d8c163f0cc9335421f8dd56 too early, TestScreenMode00aNEWT verifies. commit a4b6868120a9fa6ab4dfda78a3409e0a74aab651 Author: Sven Göthel Date: Wed Aug 27 11:28:44 2025 +0200 NEWT MonitorDevice/Mode: Android ScreenDriver Fix commit 9635c194e421752a0d8c163f0cc9335421f8dd56 Author: Sven Göthel Date: Wed Aug 27 10:58:03 2025 +0200 NEWT MonitorDevice/Mode: Unify default (fallback) handling across driver Default monitor properties: 1920x1080 32bpp @ 60Hz, size 421x237 mm, dpi 93.60 x 93.62 - Pixel size of via property `newt.monitor.pxwidth` and `newt.monitor.pxheight` - Refresh rate via property `newt.monitor.refresh` - Bits per pixel via property `newt.monitor.bpp` - Display size in millimeter via property `newt.monitor.mmwidth` The defaults are being used either if value could not be retrieved by the driver or if they are overridden via properties. This change concludes commit d5b29814f2a48a9d6ac2c0e355adf81dec71cb89 commit 21dab053b3b0930ea3c105b9f31f12b080562dc5 Author: Sven Göthel Date: Wed Aug 27 08:08:58 2025 +0200 Bug 1529: FreeBSD: Use apache-ant pkg default commit a3832163428fa8c490feb607a8d5dba8d21b2a34 Author: Sven Göthel Date: Tue Aug 26 21:59:25 2025 +0200 Bug 1529: Updated FreeBSD Support (HowToBuild) commit d5b29814f2a48a9d6ac2c0e355adf81dec71cb89 Author: Sven Göthel Date: Tue Aug 26 14:12:42 2025 +0200 NEWT MonitorDevice/Mode: Use defaults for resolution, sizeMM (dpi) and refresh-rate if zero is retrieved In case these values can't be properly queried, we use a default monitor setup: 1920x1080 @ 60Hz, size 421x237 mm, dpi 115.84 x 115.75 commit 15f7cfa1ca9ca5885016dbbdc096c8fa2959c0a1 Author: Sven Göthel Date: Tue Aug 26 14:11:06 2025 +0200 Bug 1529 - Updated FreeBSD Support Tested against FreeBSD 14.3 commit 87fa7bb9d7c25b56a857a3f037a20137747c664c Author: Sven Göthel Date: Mon Aug 25 20:06:48 2025 +0200 Build Test/Demos: Consider graphui sources to trigger rebuild commit f10e386fbbb17aadd4060b54cde27a85b6f8f21b Author: Sven Göthel Date: Mon Aug 25 20:06:12 2025 +0200 GraphUI AnimGroup: Allow setting a fixed frame period like 1f/60f commit 48e5c3df585d7bf3a9adec00b812a4efb139992d Author: Sven Göthel Date: Sun Aug 24 04:25:59 2025 +0200 Bug 1524 - NEWT High-DPI Soft-PixelScale: Fix NewtCanvasSWT regression Regression of commit 224322e5eb5e26914dc635bd7aa1ec4afd393f05 NewtCanvasSWT.updatePosSizeCheck can only issue newtChild.setSurfaceScale() if newtChildReady. Further issue newtChild.setSurfaceScale() also in swt paint event if pending and always after newtChild.setSize(). commit 05bcb255ca909eb3a3a1f5df1b82b5b58ddad06e Author: Sven Göthel Date: Sun Aug 24 03:17:03 2025 +0200 Bug 1528: Mitigate OSXUtil.GetNSView() performed on non main-thread When running with `Main Thread Checker`, enabled by system property - `nativewindow.debug.OSXUtil.MainThreadChecker`, or - `nativewindow.debug=all` OSXUtil.GetNSView() gets notices as it is not forcefully performed on the main-thread. This change adds an option to GetNSView 'onMainThread'. On use cases where CreateNSWindow is performed on main-thread anyways, we utilize CreateNSWindow2, which returns the tuple win and view handle. Only in one instance we intentionally leave GetNSView performed on the current thread, MacOSXCGLContext.NSViewDescriptor ctor. The latter is called from MacOSXCGLContext.NSOpenGLImpl.create and MacOSXCGLContext.NSOpenGLImpl.makeCurrent and could cause deadlock issues. Hence this change soothes the debugging experience and resolves potential future issues in all but one spot. commit d83e5c5b772753f086b3c6780662586a3395e6e1 Author: Sven Göthel Date: Sat Aug 23 05:33:44 2025 +0200 Bug 1527 - JogampVersion: Accept accept first manifest w/ extension-name if no extension matches commit 317222d1428a9d8325f571e1231b7fe304348b85 Author: Sven Göthel Date: Fri Aug 22 08:56:42 2025 +0200 Bug 1444: Add missing make/config/jogl/gl-gl4_es3-ignores.cfg Commit 149216ae2a3034beb49390312651650aa5e2e79c is incomplete, i.e. this configuaration was missing. commit 0d8503412ab8729e2d33f181bebe9a779f253cab Author: Sven Göthel Date: Fri Aug 22 06:54:20 2025 +0200 Test: SWT High-DPI Soft-PixelScale on Windows On Windows ans SWT >= 4.36, set system property `-Dswt.autoScale.updateOnRuntime=true` to enable using the Windows scale factor. commit 224322e5eb5e26914dc635bd7aa1ec4afd393f05 Author: Sven Göthel Date: Fri Aug 22 06:51:02 2025 +0200 NewtCanvasSWT DPI Scale X11/Windows: We don't require pre-scaled size anymore Since fixing Bug 1373 and Bug 1524, X11 and Windows NEWT windows are created (and changed) with respect to the Soft-PixelScale factor. commit 21c52cf660ce4c7afbf4fcc796310357bb299d9b Author: Sven Göthel Date: Fri Aug 22 06:18:02 2025 +0200 Bug 1525 - SWT High-DPI X11/GTK: Wrong Scaling since SWT 4.36 (update) After updating SWT to 4.36 (commit f71c29bace8ce579470b29e8e2aeca99e43f632a) the dpi scaling on X11/GTK fails, e.g. via GDK_SCALE=2 environment variable. The (new) GTK implementation sets `useCairoAutoScale` to true, avoiding scaling the window-coordinates up. Hence we have to duplicate the scaleUp/scaleDown using the device scale-factor. SWTAccessor.getClientAreaInPixels() uses Scrollable.getClientAreaInPixels(), however the current GTK implementation doesn't returned the scaled value. Hence we have to autoScaleUp. commit 34c423ed8ade1d3b42cf31b034f9a789a0cdae98 Author: Sven Göthel Date: Fri Aug 22 04:35:14 2025 +0200 Bug 1524 - NEWT High-DPI Soft-PixelScale on X11: Honor OS Scale-Factor at Creation commit fc47b0b9ea4c662246d0aee172a03e496d949b71 Author: Sven Göthel Date: Fri Aug 22 04:14:31 2025 +0200 Bug 1524 - NEWT High-DPI Soft-PixelScale on Windows: Honor Windows OS Scale-Factor at Creation + Change commit 5ee576e495492aabe302c4defce12d5cc6e349fb Author: Sven Göthel Date: Thu Aug 21 10:08:51 2025 +0200 UISceneDemo03: Disable GL_BLEND (matching UISceneDemo03b) commit 149216ae2a3034beb49390312651650aa5e2e79c Author: Sven Göthel Date: Thu Aug 21 10:08:20 2025 +0200 Bug 1444: Complete OpenGL 4.6 and ES 3.2 mapping incl Extensions - Update KHR, GL, GLES2 and GLES3 Khronos header files - Adjust set ordering of (new) extensions avoiding duplicates & matching GL profiles - Refined *ignore* (in make/config/jogl/) files - Adjusted GLSL extensions for GL3/GL4/ES3 (gpu_shader5 etc) - Validate/iterate using `cmpOld2New` script, see scripts/update-cmpOld2New.sh - Updated documentation: Desktop max GL-Profile 4.5 -> 4.6 commit 367f3a875096b0091ba6c1053d2804a252062130 Author: Sven Göthel Date: Mon Jul 28 01:24:59 2025 +0200 Demos: Add various GearsFBO* demos, demonstrating FBO color-, depth- and stencil texture-buffer usage - GearsFB00: Simple FBObject color-texture usage - GearsFB01: FBO color- and depth-texture usage - GearsFB02: FBO color-, depth- and stencil-texture usage commit ebd3c9d1f3e38699af08195236434896bdd2ca7c Author: Sven Göthel Date: Mon Jul 28 01:19:40 2025 +0200 Fix Demo texture01_xxx.fp: Use mgl_Texture0, mgl_ActiveTexture is undefined commit 13f29e53c8458835677d5ae7710771bb9cad15b5 Author: Sven Göthel Date: Mon Jul 28 01:19:00 2025 +0200 Demo LandscapeES2: Fix resolution @ reshape, use viewport dimension commit 9a57338c43d7bc0639f0935c3e057e51e4c8d02b Author: Sven Göthel Date: Mon Jul 28 01:18:33 2025 +0200 Demos: Simplify GearsES2 + RedSquareES2 commit 63ef82e4af8f9f170cd93837653902f51bc7eb9c Author: Sven Göthel Date: Sun Jul 27 00:47:05 2025 +0200 build: Fix uptodate dependencies, skip building jar files if not outdated commit 354b9adce2b4d0e16db91454da462c8b2bdff1a0 Author: Sven Göthel Date: Tue Jul 22 04:24:55 2025 +0200 Fix whitespace of build*.xml files commit 1fe760048ad6eec3e5d2578db7b151fc5ffccbfe Author: Sven Göthel Date: Tue Jul 22 04:24:32 2025 +0200 Bug 1523: Java8 build setup using target.releaselevel=8 (gluegen default) commit b9d9a48dbb65878395c3e373ac34c5272c40cced Author: Sven Göthel Date: Mon Jul 21 20:19:30 2025 +0200 Fix JVM_JNI6.c #error message commit 9bc97ad037d61d1b118057b6fd1b97bd0909a3bc Author: Sven Göthel Date: Mon Jul 21 15:18:22 2025 +0200 Eclipse: Use `Android 26 (stripped)` User Library to gluegen/make/lib/android-sdk/26/android-stripped.jar commit 311840b750b1d1c93b4a34315b27be0a85a2c73e Author: Sven Göthel Date: Mon Jul 21 05:28:21 2025 +0200 GraphUI Demo: Add UISceneDemo03b (GLEventListener based version of UISceneDemo03) w/ Android activity commit c5293b1d6087538ec0cc28b8882c4fdc9b0691a6 Author: Sven Göthel Date: Mon Jul 21 05:26:38 2025 +0200 GLContext: Return VersionNumberString for getGLVersionNumber() and getGLSLVersionNumber() .. .. preserving original GL/GLSL version string. commit b01834eb5c45396d3e264d3d0573b4bcd1870bcb Author: Sven Göthel Date: Mon Jul 21 05:25:12 2025 +0200 Graph pass1 fragment-shader: Early out (discard/alpha) if alpha is 0.0 commit 5d3af875dfddb0ea31833fef9d86885059ddb48a Author: Sven Göthel Date: Mon Jul 21 05:23:55 2025 +0200 Add Demo's CommandlineOptions: fix{Default}AARenderModeWithDPIThreshold() i.e. disabling AA for dpi >= 200 commit a4d1641dbd1a8961ef5d11f48fedfce9ba299f43 Author: Sven Göthel Date: Mon Jul 21 05:19:20 2025 +0200 GraphUI Scene: Disable screenshot for Android commit e00542ad5a1bc17855d7d1960e0f744bd3d288f2 Author: Sven Göthel Date: Mon Jul 21 05:18:40 2025 +0200 MonitorDevice: Rename {perMM->mm}To{Per->}Inch(), add inchToMM() commit e5035211b2f1354a52a5487a33de79103af52429 Author: Sven Göthel Date: Mon Jul 21 05:09:40 2025 +0200 Android: Min API 24 -> 26 (Use GlueGen default settings) commit fcef5ff61866b5fca56ba9efd9e92ab50d5bd538 Author: Sven Göthel Date: Fri Jul 18 04:39:53 2025 +0200 Add fat Android target jogl-demos-fat-android-${arch} w/ GlueGen, JOAL, JOGL and demos in one apk commit 5936a76d7d26e6f6226ee0404c28fdd0ef66b32e Author: Sven Göthel Date: Fri Jul 18 04:36:11 2025 +0200 Add building jogl-fat-${os.and.arch}.jar w/ GlueGen, JOAL and JOGL for convenience commit dbf49cd4f1a1ba3fbb5fe36c4af0bd38b39b26f4 Author: Sven Göthel Date: Fri Jul 18 04:31:05 2025 +0200 Fix GLSL version for ES >= 3.1 Add mapping of OpenGL ES 3.1 -> GLSL 3.10, ES 3.2 -> GLSL 3.20. commit 0ce40a53cac4f6c2eec65f84c82155e8ae32fea8 Author: Sven Göthel Date: Fri Jul 18 04:11:54 2025 +0200 UISceneDemo20: Group ALAudioSink usage commit 0f90897d7ca7a2d10805f9fd80e79c04bf84452f Author: Sven Göthel Date: Fri Jul 18 03:58:36 2025 +0200 Demos: Fix test video URLs, using https instead of http commit d14ee072ed546f031ad9b0a055c3886e80cd9f56 Author: Sven Göthel Date: Fri Jul 18 03:57:07 2025 +0200 Eclipse: Use android-stripped.jar in .classpath (via use library) commit 8e16cb8d17b622ad6a1b5a59d386cc36595a190a Author: Sven Göthel Date: Wed Jul 16 04:20:53 2025 +0200 joglversion-demo-android: Fix package name, Test -> Demo commit 85ae6e4af699398d4474027836dca82490a359ed Author: Sven Göthel Date: Wed Jul 16 04:20:29 2025 +0200 Manifest templates: Add-Opens: Add java.desktop/sun.awt.windows commit de4bd09c25bab116cd126aa042c91c45e6741cb3 Author: Sven Göthel Date: Wed Jul 16 04:19:37 2025 +0200 Rename: NEWTGraphUI[12]pActivity* -> NEWTGraphUISceneDemo20Activity[12]p* and prepare fat android demo apk (all in one apk) commit f7267c370ee043f39004a6f01cccdd56ee874f25 Author: Sven Göthel Date: Mon Jul 14 02:45:22 2025 +0200 jogamp/graph/curve/opengl/shader/functions.glsl: Fix float literals (GLSL ES < 310) commit 84a8f28cb98036f9c08a960cfc6670a4c84a7600 Author: Sven Göthel Date: Mon Jul 14 02:43:15 2025 +0200 NativeWindowFactory.createDevice(): Fix `EGLDisplayUtil.eglCreateEGLGraphicsDevice` argument types commit 389090e98620297133f86b6dfcabf6bfc02d1345 Author: Sven Göthel Date: Mon Jul 14 02:42:24 2025 +0200 Bug 1520: Android Demos: Fix package name `com.jogamp.opengl.{test->demos}` commit 342b4d4426d88f5b70ac1a2446e42750314e6431 Author: Sven Göthel Date: Mon Jul 14 02:40:35 2025 +0200 Bug 1520: Fix adb-[un]install scripts commit c1a2b231ec8f36f7528859a77dd8c4990c36ec9a Author: Sven Göthel Date: Mon Jul 14 02:38:34 2025 +0200 Bug 1520: Add `android:exported="true"` to activities commit 2f3985b2afcc1c8d94ef3e1a1a4c88c85976f273 Author: Sven Göthel Date: Mon Jul 14 02:37:23 2025 +0200 xxxx commit 021d537b774b7077509b25bfcefedcc477ed5bc3 Author: Sven Göthel Date: Mon Jul 14 02:36:51 2025 +0200 Bug 1520: JNI: Only request min JNI_VERSION_1_6 (Android) commit e7609ec1298a8e941f031c53d352cb01c396e2a9 Author: Sven Göthel Date: Sun Jul 13 08:00:41 2025 +0200 Add ShaderUtil.isComputeShaderSupported() and ComputeShader01GL4ES31 demo JOGL Compute ShaderCode demo using OpenGL 4.3 or ES 3.1 core profile features. The compute shader fills tuples of vertices + color attributes in a VBO buffer, passed directly to the vertex-shader w/o leaving the GPU. Inspired by commit ca0a1643dac1fa0cbeb9e5d73feba5369657d5a7 Author: Sven Göthel Date: Sat Jul 12 18:39:41 2025 +0200 doc/Windows_Custom_OpenGL.md: Adding runtime switch via `jogamp.primary.library.path` commit 5772c179340364a39deaf5d7a7238bed56c727d3 Author: Sven Göthel Date: Fri Jul 11 10:48:20 2025 +0200 uses-sdk android:minSdkVersion="24" android:targetSdkVersion="35" (2025-08-31 requirements) commit c22ef02ac2f270da926148d8231038d177c4583e Author: Sven Göthel Date: Sun Jul 6 17:33:43 2025 +0200 Adopt to VersionSemanticsUtil changes commit eb539f9311fb616cf84bfa7cfed2f3661e99c42a Author: Sven Göthel Date: Sun Jul 6 16:10:56 2025 +0200 Doxygen JOGL: Use doc/spec-overview.md as mainpage. Converted from html to markdown via pandoc and fixed manually. commit 7af249015a97697e242de69ca69d22eee70300de Author: Sven Göthel Date: Sat Jul 5 20:51:41 2025 +0200 Doxygen: Realign w/ orig 'javadoc' locations and archive name, to preserve doc-root commit 929e2c27629c38e20d1d3f1ccf9c9e060aa283ba Author: Sven Göthel Date: Sat Jul 5 19:11:13 2025 +0200 Add: doxygen.public.zip, fix publix Doxyfile (missing line concat) commit e2230dc6fd996cadf286559fb0f6cc6748d1ab8f Author: Sven Göthel Date: Sat Jul 5 18:16:00 2025 +0200 Bug 1516: Add doxygen.all.zip target Using doxygen-awesome of - jaulib commit f12d0ebfcdb567d1ba08dfc9792273f25709510d https://jausoft.com/cgit/jaulib.git/about/ - original source https://github.com/jothepro/doxygen-awesome-css commit 88082593389e6b4e85a9a745fc80de08aa20a36b Author: Sven Göthel Date: Sat Jul 5 17:39:12 2025 +0200 Fix GLContext: get{GLDynamicLookupHelper->DynamicLibraryBundle}() returning public DynamicLibraryBundle Refines commit 4cd2e5a5f9c3e5ade8872371d0d54d747e51d57b commit cad8f72fef3e8869f2b5e8acc8755cfe7774d30c Author: Sven Göthel Date: Sat Jul 5 16:33:27 2025 +0200 SWTAccessor: Adopt to SWT 4.36 changes DPIUtil.useCairoAutoScale() has been removed in eclipse.platform.swt commit 111b874343d65aaee4f13d74eda554bde1a740a7 (always true for GTK since version 4.36.0). commit 17a55054d52c356c4bf4dd73bff7adec758df061 Author: Sven Göthel Date: Sat Jul 5 11:40:46 2025 +0200 Fix EGLDynamicLibraryBundleInfo: Add EGL symbol for 2nd tool-lib commit 4cd2e5a5f9c3e5ade8872371d0d54d747e51d57b Author: Sven Göthel Date: Fri Jul 4 20:12:54 2025 +0200 GLContext: Export current GLDynamicLookupHelper, allowing to pass through used OpenGL library handle and lookup function pointer to 3rd party toolkits commit cc624a1c3ea7b4599c1c21191bac689310fadfdc Author: Sven Göthel Date: Mon Jun 30 13:10:13 2025 +0200 SWT GLCanvas: Use pre-allocated system color white, as SWT < 4.26 requires color to be disposed - SWT 3.110 (Eclipse 4.10?) would require color to be disposed, hence use pre-allocated. - Since at least 'Eclipse 4.26.0 Release Build: 4.26' no more disposal of Color required. commit 2ff8e7213011f4a39150cb62cef3499a54460470 Author: Sven Göthel Date: Mon Jun 30 12:53:26 2025 +0200 Bug 1513 - Handle X11RandR13 XRRGetOutputInfo NULL return value It has been reported that `Java_jogamp_newt_driver_x11_RandR13_getMonitorDevice` causes SIGSEGV on * Raspi 3B+ * jogl 2.5.0 * java 17 (openjdk from apt) * Raspian Bookworm with kernel 6.6. (July 202) * Wayland/Wayfire "I think i might have found the underlying issue, Raspbian Bookworm uses Wayland/Wayfire as the default window manager. As far as I could find out, Wayfire does implement X11 api, but it might be a bit different in how it returns things. " commit f71c29bace8ce579470b29e8e2aeca99e43f632a Author: Sven Göthel Date: Sun Jun 29 18:52:04 2025 +0200 Bump SWT to 4.36 (R-4.36-202505281830) commit 64904935bc7777ece985503cc8429d919d906bf2 Author: Sven Göthel Date: Sun Jun 29 13:12:52 2025 +0200 Eclipse: Drop android from build-path, no more working w/ using JRE-11 from JDK-21 Causes 'package is accessible from more than one module/source'. commit 319b81cf5d52b88dddecb34b39ae66f1e4f95bad Author: Sven Göthel Date: Sun Jun 29 03:11:57 2025 +0200 www: replace fenggui homeaddress commit 768b949bf4c199c2336f51d0aa18799bcad0d9bb Author: Sven Göthel Date: Sat Jun 28 22:37:01 2025 +0200 Eclipse Java-11 (min target) setting and replace semver -> japicmp (classpath) commit 0a307e574c422ccfa60b3abd93e69fcb79d01787 Author: Sven Göthel Date: Sat Jun 28 19:12:28 2025 +0200 GlueGen's uses japicmp.jar instead of semver.jar commit 3044cfc2eb4ddf909add4a0d915e1a0429772702 Author: Sven Göthel Date: Sat Jun 28 19:11:57 2025 +0200 Fix Android NEWT build: ANDROID_TOOLCHAIN_SYSROOT0 -> ANDROID_TOOLCHAIN_SYSROOT1 commit 8ff64a9e2e306c8618033c7c96515c6043f2b63d Author: Sven Göthel Date: Sat Jun 28 17:08:06 2025 +0200 Adopt to GlueGen's VersionSemanticsUtil changes commit 5c344e99f262af0430ea4d286ab6219095ad249e Author: Sven Göthel Date: Sat Jun 28 17:07:14 2025 +0200 Use OpenJDK-21 and Java-11 source/target commit c10d5e47bdf5986d1f8f497fdaff7c61525aa5aa Author: Sven Göthel Date: Tue Jun 24 09:13:12 2025 +0200 WindowsAWTWGLGraphicsConfigurationFactory::chooseGraphicsConfigurationImpl: Skip invalid PixelFormatID Change: `2nd Choice: Choose and match the GL Visual with AWT` - skip invalid PFD-ID, i.e. zero - add more verbose DEBUG output commit ba91fa6450fa410fae79d7a8d4ab34bc0a127a4b Author: Sven Göthel Date: Tue Jun 24 08:54:56 2025 +0200 doc: Using a custom OpenGL Library under Windows commit 6ad423fe31847b86d2d2dfa73ea1cf8a5d5056da Author: Sven Göthel Date: Tue Jun 24 08:35:57 2025 +0200 Build/test: Use OpenJDK-21 per default commit bd8eae033b3f609bf57162109d6cdc11ec5921c9 Author: Sven Göthel Date: Sat Jun 21 11:48:20 2025 +0200 test script: align unix/win for testing NativeLibrary (Bug 1510) commit 9235306911855d641310b8936ec2e0bff21b8d69 Author: Sven Göthel Date: Sat Jun 21 11:47:02 2025 +0200 ffmpeg: Use manually looked-up symbol for sws_freeContext commit bcbd59e05d94d49c71f012a83c0d5aaf7d524878 Author: Sven Göthel Date: Sat Jun 21 07:31:19 2025 +0200 test script: bump commit 76c2d1f0b07b97e00351eb2dbbd2c867de013fd3 Author: Sven Göthel Date: Sat Jun 21 07:30:56 2025 +0200 Eclipse bump commit 7b81c1d0fb274311da578b9af1328a70143bdaef Author: Sven Göthel Date: Sat Jun 21 07:30:38 2025 +0200 GPURegionGLListener01: Add debug output and createTestOutline01a commit 54a45272ec32045a0ae5715e67980b52881ce2b0 Author: Sven Göthel Date: Sat Jun 21 07:25:03 2025 +0200 HowToBuild: Adjust Debian 12 commit c14664d9416f5c38271a12d4cd6dcea5dafee3d3 Author: Sven Göthel Date: Sat Jun 21 07:22:25 2025 +0200 Graph Hedge/Loop: Debug output commit 2b38ed2745f3cb2ec8e75b5ad7046fe6d1d0c370 Author: Sven Göthel Date: Sat Jun 21 07:21:10 2025 +0200 Graph Hedge: Cleanup initialization commit 1935dc12d313e7ce931a93a875d15a474b9283a3 Author: Sven Göthel Date: Sat Jun 21 07:16:07 2025 +0200 ShaderState::bindAttribLocation: Add missing glBindAttribLocation commit 8b4afceed33ca9542eda3061b9f3613f3337ece8 Author: Sven Göthel Date: Sat Jun 21 07:14:45 2025 +0200 Matrix4f::mapWinToRay: Drop unused 2nd temp matrix commit aa1f82d1ff8b463d3d4a6b02fb244dcd666e952f Author: Sven Göthel Date: Sat Jun 21 07:13:08 2025 +0200 AABBox: Optimize contains and intersect commit 40c6e4a5b29e3d3476d3df05e81c38ac0c92a6b1 Author: Sven Göthel Date: Sat Jun 21 06:51:02 2025 +0200 Graph OutlineShape/Region: Enhance debug output commit 8362c7ba0bbd884e0b60358d4615e19d7ca7ff7f Author: Sven Göthel Date: Sat Jun 21 06:49:27 2025 +0200 Graph: Fix OutlineShape::getBounds: validateBoundingBox() if DIRTY_BOUNDS commit 95506f9e89377ab03d477a711aab2a12cdc1b1d8 Author: Sven Göthel Date: Sat Jun 21 06:48:16 2025 +0200 Graph: Fix Outline::setWinding: Clear DIRTY_WINDING bit commit 48717894eddfe6111364416aa7755f7369f09ed6 Author: Sven Göthel Date: Fri Apr 26 02:39:48 2024 +0200 Math: Align mul + inv perf tests with native jaulib commit 59420652c96956c7d9d4e501200ddbe91edc1c34 Author: Sven Göthel Date: Thu Apr 25 03:31:01 2024 +0200 TestMatrix4f02MulNOUI: Align w/ native jaulib commit 3541b44659df4b021131270752fdf582d7f04f56 Author: Sven Göthel Date: Thu Apr 25 03:30:42 2024 +0200 Math: AABBox + AffineTransform: Make class final commit 74401be43ac786c395cd142967448637194c5394 Author: Sven Göthel Date: Thu Apr 25 03:30:15 2024 +0200 Math: Recti::size(): Change semantics: Return true if area is zero, not if x and y is zero commit 33b1da5886a58feb9ee770f640f7bd07553c1bca Author: Sven Göthel Date: Thu Apr 25 03:29:23 2024 +0200 Math: AABBox: Fix getRayIntersection(), i.e. setting the correct resulting component. commit dd67c91abd2e5f549fe35f590f37c5d6c732a100 Author: Sven Göthel Date: Thu Apr 25 03:27:51 2024 +0200 Math: Align Frustum/Matrix dependency w/ native jaulib commit 78f6de75d2645a8cc0c6df0f1f2d01d81645f3de Author: Sven Göthel Date: Thu Apr 25 03:20:14 2024 +0200 FloatUtil: Add IEC559_SIGN_BIT; Align API doc and implementation w/ native jaulib, i.e. drop 0==epsilon case for performance commit 8bb2f6dec8ab731b07387b947715fa1959c680e4 Author: Sven Göthel Date: Sat Feb 17 20:26:10 2024 +0100 Bug 1489: Lock-Free Double-Buffered 'renderedShapes' causes data-race between rendering & input-edt, use synchronized tripple-buffering Tripple-buffering _almost_ produces zero data-race collisions, however .. it still does rarely -> hence synchronize on the used ArrayList<>. This adds a minimal chance for blocking the input-EDT, but gives correct code & results. Double-buffered 'renderedShapes' was introduced to resolve Bug 1489 in commit 5f9fb7159fa33bc979e5050d384b6939658049bd This solution is tested by passing '-swapInterval 0' via CommandlineOptions for FontView01, UIMediaGrid01 .., i.e. rendering faster than picking and hence provoking the data-race condition. commit 82288c112e910feae10ef3cfcded50e35395ed2b Author: Sven Göthel Date: Thu Feb 15 04:55:35 2024 +0100 VectorUtil.isSelfIntersecting1(): Always use off-curve points commit e6b2367f47a0cf976d7eaa173de53474be61f4d5 Author: Sven Göthel Date: Thu Feb 15 04:54:33 2024 +0100 TypecastGlyph: Add complex/simple info in toString() commit 6b548c2408b08128a686eef49118d35543a3667d Author: Sven Göthel Date: Thu Feb 15 04:54:11 2024 +0100 TestTextRendererNEWT20: Fix fontSet override at main + add some glyph info in demo text commit 57732e298fa7249e4b772108543f9aebbc6000ac Author: Sven Göthel Date: Thu Feb 15 00:28:01 2024 +0100 Graph: Cleanup Loop & OutlineShape, more compact methods commit 840ffdf17f7c985f271f080b602bc2426223dcb8 Author: Sven Göthel Date: Wed Feb 14 20:50:34 2024 +0100 VectorUtil: Add experimental isSelfIntersecting1() with O(n*n) complexity This doesn't bring reliable results for Graph and also is pretty expensive. commit b4d91c9df427122759df6b76ee06f535406f7074 Author: Sven Göthel Date: Wed Feb 14 20:49:27 2024 +0100 VectorUtil: Bring back specialized testSeg2segIntersection() w/ build-in FloatUtil.EPSILON epsilon and no collinear test commit 5488665474cc7b88577cedfca6416784f0fda3ba Generalize *seg2segIntersection* w/ epsilon and doCollinear caused a big performance hit about 1/3 due to added doCollinear case and manual epsilon adding branches and having the method being longer - probably not 'hotspot'ed. commit c8a55eda5fac532c0a650a0c2c639a517794d7f2 Author: Sven Göthel Date: Wed Feb 14 20:23:56 2024 +0100 Bump tests.sh commit e4b49663f6c6f138a8718847b68d1d78fba8fe73 Author: Sven Göthel Date: Wed Feb 14 20:23:24 2024 +0100 Bug 1501: Refine convex == !complex: Use 'complex' term, have env-property toggle OutlineShape's isComplex() for visibility We may use complex for other criteria than !convex, i.e. self-intersecting etc. commit 52277dc625b515ecc3ff0d26ca05428f3d973427 Author: Sven Göthel Date: Wed Feb 14 20:20:57 2024 +0100 VectorUtil.isConvex1(): Fix zero test and handle out-of-bounds commit 5488665474cc7b88577cedfca6416784f0fda3ba Author: Sven Göthel Date: Wed Feb 14 20:20:19 2024 +0100 VectorUtil: Generalize *seg2segIntersection* w/ epsilon and doCollinear commit 122297fb52849db477f4b85d83fb53c0af633903 Author: Sven Göthel Date: Wed Feb 14 20:17:53 2024 +0100 VectorUtil: Remove double InCircleDThreshold = DoubleUtil.EPSILON commit b5a3a3d53dfbf1d9681ec288eaf788f9f058ba98 Author: Sven Göthel Date: Wed Feb 14 19:29:35 2024 +0100 DoubleUtil: Align Epsilon ops w/ FloatUtil commit 572688e736f22e5b23e2b3b19ba9d37770e8508c Author: Sven Göthel Date: Wed Feb 14 18:40:46 2024 +0100 FloatUtil Epsilon ops: Generalize all epsilon operations by allowing passing a zero epsilon value to reduce complexity in upper math layers commit 716e59a9286ebf6c8a215957ab4a74a2a81315e4 Author: Sven Göthel Date: Wed Feb 14 15:34:55 2024 +0100 Use FloatUtil.isZero(a) w/ build-in FloatUtil.EPSILON directly instead of passing FloatUtil.EPSILON to explicit isZero(a, epsilon) commit d4d4a797ab0e53db59dac1ea915825845861667e Author: Sven Göthel Date: Wed Feb 14 00:03:11 2024 +0100 Bug 1501: Graph CDTriangulator2D: Add properties to enforce convex and non-convex treatment to simplify debugging etc commit c0133b46c0dfbd506a0ad11416fae3a09d64ec97 Author: Sven Göthel Date: Tue Feb 13 23:20:42 2024 +0100 Bump tests.sh script commit 00b140e39d0181bc2f41500c1797108157e30164 Author: Sven Göthel Date: Tue Feb 13 23:20:12 2024 +0100 GraphUI Demo FontView01: Re-Enable snapshot via 's' commit 949676fb8cac4d6aa626a375501e41a65a1a11fa Author: Sven Göthel Date: Tue Feb 13 23:03:01 2024 +0100 Bug 1501: Apply intersection tests for non-convex shapes to reject new CCW and non-circulcircle triangulation candidates in our Delaunay tessellator The used Delaunay tessellation works well with (almost) convex shapes. In case e.g. a glyph gets to the extremes like 'M' in FreeMono or any other complex Chinese symbol - it may just simply happen that the new non-circumcircle triangle point crosses the inner (hope) or outer boundaries of the given polygon. Applying further constraint at Loop.cut() resolves most cases by rejecting the proposed CCW and non-circumcircle triangle candidate if its new two line-segments intersects with the original polygon. This results in mostly proper rendered Chinese fonts and also FreeMono is now readable - overal remaining bugs in Glyphs is low. +++ Of course, this intersection test is costly around >= O(log(n)*n) costs, practically adding a measured ~65% processing time. E.g. for FontView01 using FreeSerif.ttf - orig total took 1430.817638ms, per-glyph 0.2236ms, glyphs 6399 - fix total took 2377.337359ms, per-glyph 0.371517ms, glyphs 6399 Pure Glyph/Shape instantiation shows > 2x costs: 750 ms 100% convex (fake) 1875 ms 0% convex (fake) 1870 ms 13% convex 824/6399 +++ Hence it is desired to either (1) Manually mark a polygon non-convex to add described intersection test for accuracy. Also may be used to just drop the additional costs despite the lack of correctness. PROVIDED (2) Determine non-convex nature of a polygon with a and overall less expensive algorithm. If considerably cheaper, this could reduce O(log(n) * n) -> O(n) or even O(log n). Added convex/non-convex classification while ignoring off-curve points, but only ~13% of FreeSerif is pure convex, hence there is no benefit with this classification type. It might be desired to attempt other classes, i.e. being rendered in non-convex mode w/o intersection tests. See - GENERALIZED DELAUNAY TRIANGULATIONS OF NON-CONVEX DOMAINS https://deepblue.lib.umich.edu/bitstream/handle/2027.42/28782/0000614.pdf;sequence=1 - https://en.wikipedia.org/wiki/List_of_self-intersecting_polygons - https://en.wikipedia.org/wiki/Complex_polygon commit 08f0d34424aab6a496a71fa5d83af6c407c7c569 Author: Sven Göthel Date: Tue Feb 13 22:52:31 2024 +0100 Bug 1501: VectorUtil: Deprecate prev line2line intersection tests, adding new impl; Add isConvex*() to determine whether a polyline is convex I had problems using the previous line2line intersection methods in my (and my son's) C++ gfxbox2 project, e.g. freefall01. Hence I found a different solution, also using less operations: While adding intersection tests for our Delaunay (Bug 1501) .. I came across this issue again and hence swapped the implementation. commit 220880f8105a35423a5c3dc3ea06147f9a8fd7e2 Author: Sven Göthel Date: Tue Feb 13 22:46:46 2024 +0100 VectorUtil: Consolidate names, remove unused float prevision variants (if any) commit 06e5b0503a0b32b8b1e5985a9da0d5373f8b7096 Author: Sven Göthel Date: Tue Feb 13 22:21:55 2024 +0100 Bug 1501: Graph Shape: onInit(ListenerBool) -> onDraw(DrawListener) w/ added capability for code injection to render Besides the one-shot on-init functionality, this allows us to re-render the shape differently. commit 101ec44f9d6df7faa0695accccfd43f51e48e7a4 Author: Sven Göthel Date: Tue Feb 13 22:19:05 2024 +0100 Bug 1501: Graph RenderState add debug-bits, i.e. DEBUG_LINESTRIP used in VBORegionSPES2 to just render lines instead of the filled area -> Used in UIShapeDemo02a commit 65b3a230a53252f7c2cacd968b7afee6d43e7327 Author: Sven Göthel Date: Tue Feb 13 22:17:06 2024 +0100 Graph RenderState/RegionRenderer: Rename isHintMaskSet()->hintBitsSet(), setHintMask()->setHintBits(), clearHintMask()->clearHintBits() commit e6dd773b249cbeb117a710a46133fa42f748f1d7 Author: Sven Göthel Date: Mon Feb 12 14:36:30 2024 +0100 Loop.isValidNeighborDbg(): Remove DEBUG branch, always true commit c4f14aa011c567b54667ed2209c2f48363998644 Author: Sven Göthel Date: Mon Feb 12 06:45:49 2024 +0100 VectorUtil: Remove unused isInCircleVec2f() and triAreaVec2f(), now using *2d() variants commit f3d181114f804661c92485864047291651880718 Author: Sven Göthel Date: Mon Feb 12 06:23:23 2024 +0100 Remove unused imports ... commit dcacff437e23d93f1fa835bc4fff0a73242e51f6 Author: Sven Göthel Date: Mon Feb 12 06:18:35 2024 +0100 Bug 1501 Graph Delaunay: Replace MaterialIconsRound-Regular.ttf with fixed winding direction (outer-bondary TTF CW (Graph CCW) and inner-hole TTF CCW (Graph CW) commit a77b487a44124a9e55fa9a53d1f9c3ae20b9c3ba Author: Sven Göthel Date: Mon Feb 12 06:17:07 2024 +0100 Bug 1501: Graph Delaunay: Use default winding outer-boundary:=CCW and inner-hole:=CW w/o using winding determination (might be incorrect) This simplifies our code further and it has been validated that our polygon shoelace-algo for area >= 0 ? CCW doesn't produce correct results with all curves. Hence rely on given winding depending on outer-boundary and inner-hole if CDTriangulator2D.FixedWindingRule == true (default and fixed). This also removes the more costly winding shoelace calculus, hence Outline ctor only sets dirtyWinding:=true w/o calculating the winding. commit bf882af1675f390500cc36c5396f75c394372d52 Author: Sven Göthel Date: Mon Feb 12 02:33:39 2024 +0100 Bug 1501: Graph: Add UIShapeDemo02a test for rectangular shape provoking tessellation issue / or use Glyph03FreeMonoRegular_M commit 277ad1ba1453b7e2e0164f1a609482a36469b2ea Author: Sven Göthel Date: Mon Feb 12 02:31:13 2024 +0100 Bug 1501: Graph Delaunay: Add double triAreaVec2() and isInCircleVec2() version, overcome float precision; Loop: Pass edgeType not Winding, simplify findClosestValidNeighbor() -> isValidNeighbor(); CDTriangulator2D.addCurve() enforces Winding.CCW on BOUNDARY null == loop case Add double version of triAreaVec2() and isInCircleVec2() in VectorUtil, overcoming float precision limits - Analysis exposed float precision limits within isInCircleVec2() Loop: Pass edgeType not Winding, simplify findClosestValidNeighbor() -> isValidNeighbor() - Enhance code clarity CDTriangulator2D.addCurve() enforces Winding.CCW on BOUNDARY null == loop case commit 499d8474247053f47e1f217f5e78fc0f5397f2d9 Author: Sven Göthel Date: Sun Feb 11 19:48:48 2024 +0100 Graph: Outline[Shape]: Add print() commit 1e6b604393509e631d46fe72053ca813aee33a74 Author: Sven Göthel Date: Wed Feb 7 13:07:36 2024 +0100 GraphUI Demos FontView01 + UIMediaGrid01: Use FSAA 8 (GPU MSAA 8) as these demos utilize lots of smaller resources regions ... .. and this also brings us to the next required task: Resolve AA w/o supersampling right in our shader, which is very well possible when extending the tessellated outline triangle's area. commit 6e7f7b444691e2c0c56c9746e6a27d42d6e35a46 Author: Sven Göthel Date: Wed Feb 7 03:33:14 2024 +0100 GraphUI MediaPlayer: Add HUDShape on time-slider @ mouse-over with time-string and still-images (optional) .. using HUDShape commit 35715d84f2c268f33b86814534ddcac70b883118 Author: Sven Göthel Date: Wed Feb 7 03:31:43 2024 +0100 GraphUI: Add HUDShape, a convenient HUD shape to be exposed in the scene using inner object size/pos, similar like TooltipShape commit 250f8e76bc8a9ac55d2dc198c01dc88335cb9ecb Author: Sven Göthel Date: Wed Feb 7 03:28:02 2024 +0100 GraphUI Tooltip*: Remove unused paramter in createTip() and clarify names commit 29697eaac78bdc0c1a6cfb8547516c614dc1db8e Author: Sven Göthel Date: Wed Feb 7 03:25:27 2024 +0100 GraphUI Shape: Add MouseEvent to MoveListener; RangeSlider: Add rel obj position + NEWT MouseEvent to listener, renamed {Slider->Change}Listener and add PeekListener for mouse-over events commit 5bacb8e6887b55ab2053dc5ed76bebcc0743a45e Author: Sven Göthel Date: Wed Feb 7 02:26:59 2024 +0100 GLMediaPlayerImpl: Adjust aid/sid to AUTO if alang/slang is given commit 2c84a3f7bf97ecfe445cd33a14ac7f968deb3e5e Author: Sven Göthel Date: Wed Feb 7 02:25:58 2024 +0100 GLMediaPlayerImpl: Fix playing one frame after seek() @ getNextTexture(), requires pause state (normal at play-state) commit 1d54666a16863d69a03345ab7ef4aaa3332a79ac Author: Sven Göthel Date: Mon Feb 5 20:56:46 2024 +0100 GraphUI RangeSlider: Fix 'activeOldMod' -> static to member commit 9bf746d7c8d1e4a3b0c363b54fe9e7a96578228a Author: Sven Göthel Date: Mon Feb 5 20:56:16 2024 +0100 Bug 1492: GLMediaPlayer: Add playStream(..) variant passing desired audio- and subtitle language commit eff91a9e29fc97d7e5051d9900e79ba9d044fb3a Author: Sven Göthel Date: Mon Feb 5 17:23:41 2024 +0100 GraphUI: Add Shape.IO_DISCARDED and update it @ Scene/Group draw(); Prepare for experimental occlusion-culling TreeTool's cullShapes(), actually a naive dumm occlusion test (*RENAME IT*), would need to realize whether the shape/groups actually cover shapes below, i.e. are not on same Z-Axis and transparent. Hence, this is disabled in code and we rely on the Z buffer still, just an idea .. commit 0ac7b2e59d5b41302f8e0ec7596d8f44447cf0a1 Author: Sven Göthel Date: Mon Feb 5 16:50:15 2024 +0100 Bug 1498: Refine Top-Level Widget Mode: Handle active-state by Scene, simplify and reduce runtime costs Refines commit 43a7899fedf2a570d20b03848bf15710f30b7f26 Scene handles top-level active state via releaseActiveShape() and setActive(), now calling into setActiveTopLevel() -> dispatchActivationEvent(). Drop child's addActivationListener(forwardActivation) and isActive() override. commit 80f226fffcab51f8e46caa48e9dd3a134ca87dd0 Author: Sven Göthel Date: Mon Feb 5 16:44:57 2024 +0100 GraphUI MediaPlayer: Elevate the ctrlSlider a little (and add it behind ctrlBlend) to remove the occlusion by the blending box commit 6ec212e0348fc9028e2afc6a298c49890566bf2d Author: Sven Göthel Date: Mon Feb 5 12:20:44 2024 +0100 Bug 805: GraphUI Demos: Adopt changes to FontView01 + UIMediaGrid01, dropping UIMediaGrid00 commit 347739f9589b1f846e2a0db33b554ff34b2ce984 Author: Sven Göthel Date: Mon Feb 5 12:19:38 2024 +0100 Bug 805: GraphUI MediaPlayer: Add 'Aspect Ratio Crop' Button; Have Chapter Pre/Next Buttons; Toggle HUD head info box (full or brief) commit 4b5de7337d2b335d512a0ff969222f038b734b8b Author: Sven Göthel Date: Mon Feb 5 12:03:02 2024 +0100 Bug 1498: GraphUI: Fix Picking Traversal throughout Groups in Z-Descending Order, testing Children and fallback to Group if positive Picking algo in Z-Ascending order worked only by chance, as it picked up any bottom node. +++ Proper algo is in Z-Descending order to block occluded (child) nodes: for-all s : shapes p1 = testPicking(s) if ( s is Container ) { p2 = testPicking(s.childs) if( null != p2 ) { p1 = p2; // override w/ child prio } } return p1 } Further, testPicking(shape) shall only return a positive shape, if the event dispatching check (mouse-over, click, ..) signals end-of-traversal - as originally intended. Overall philosophy is to pick the 'deepest' child of a group if responding, otherwise the next higher interactive group. commit 43a7899fedf2a570d20b03848bf15710f30b7f26 Author: Sven Göthel Date: Mon Feb 5 11:54:34 2024 +0100 Bug 1498: Change Top-Level Widget Mode: Register a top-level Group in Scene, where its zOffset gets adjusted when activated.. .. instead of having a non-working complicated callback orgy setup. This also takes away the getAdjustedZ() overloading burden (or better uglyness) etc. Hence Group's setWidgetMode(boolean) became: - enableTopLevelWidget(Scene) - disableTopLevelWidget() The forwardActivation listener is still applied to all children as well as isActive() is also still overloaded for same required behavior. However, none of the children is set in 'widget mode' as well as the Group is simply added to (or removed from) the Scene's top-level Group list - the holder. Scene's setActiveShape(Shape) and releaseActiveShape() handle the top-level Group if affected, i.e. adding or zero'ing its ZOffset. commit 8df74578481431768b3c26294c6bd64ed7030ae5 Author: Sven Göthel Date: Sun Feb 4 20:55:39 2024 +0100 Bug 1498: GraphUI: Adopt RangedSlider to new picking (coming up), simplifies code. commit ec5d278a51eaaf4062010df41cf23f884e4b715b Author: Sven Göthel Date: Sun Feb 4 20:49:20 2024 +0100 GraphUI Cleanup: Use TreeTool directly (Reduce virtl-funcs); Fix typos; Use PointerListener for onClicked(), add onHover(); Subsequent commits will fix complete cleanup where code was changed mostly regarding other issues. commit d35a9d954fbe638546f95f0122b8c083ee4bd809 Author: Sven Göthel Date: Sun Feb 4 13:31:00 2024 +0100 GLMediaPlayer.Chapter: Add duration() commit e4ddb70fcdf36beaccc991c8642f9343eb048057 Author: Sven Göthel Date: Sun Feb 4 13:29:29 2024 +0100 GraphUI RangeSlider: Active {Page -> Knob} Color modulation now affects the knob for round-knob and page-size knob commit 119a9bf8c474ec8d7db11235f90a3e266c911e1e Author: Sven Göthel Date: Sun Feb 4 07:43:51 2024 +0100 Bug 1493: Enhance Text/ASS subtitle layout: Split too wide text into multiple lines (max 4) fitting into box, trimming it beforehand Not always are Text/ASS subtitles well formed with newline character. Use new StringUtil to re-layout if their width doesn't fit into the box, by trimming all whitespace and splitting them into up-to 4 lines. commit 1967fd22d432e2b37f3d8de94dd7e07f166c05ba Author: Sven Göthel Date: Sun Feb 4 07:41:06 2024 +0100 GraphUI Button: Fix API doc typo commit 37664c391b4d0bb4f0718726c543726ee30a13f8 Author: Sven Göthel Date: Sun Feb 4 07:40:26 2024 +0100 Graph Font: Pull up static function commit 5770c2465e171dd191fbc09003476f5ad4c33e53 Author: Sven Göthel Date: Sun Feb 4 07:40:06 2024 +0100 GraphUI: Fix func-name, rename TexSeqButton.use{AspectRation->ARatio}Letterbox() matching TextureSequence commit 5bf50ce8876df289c362aa270fbfabccd571f29e Author: Sven Göthel Date: Sun Feb 4 07:37:34 2024 +0100 GraphUI RangedGroup: Keep position @ validate() Positional change could occurre in case the content has changed. However, our positional slider would not reflect this and the sliding view should stay stable. Test: UIMediaGrid01 having one player tile zoomed and returned. commit 5e24fc150f505fc5e08fc6c8cc9274ecea66b28b Author: Sven Göthel Date: Sun Feb 4 07:35:20 2024 +0100 Tooltip[Text]: Use a slightly round button, change to grayscale colors matching our buildin-theme and have the tips placed just above center of the toop (not above it) commit 6caed46dba2c8be34c3cb32dc6bddf31f98eac02 Author: Sven Göthel Date: Sun Feb 4 07:33:21 2024 +0100 Use new com.jogamp.common.util.StringUtil (GlueGen) commit 8fcbeaa4e440e1bb8e51658f15a35d2a217dc0bc Author: Sven Göthel Date: Sat Feb 3 05:01:29 2024 +0100 Typecast: Re-apply overwritten stability changes (NPE, redundancy) 0e5e38478a6197b2dc65960c55bc831d6b4796a7 Sun Feb 12 00:54:40 2023 +0100 d18df847b17a89fdc4b47fa9cfe010af1a61690b Sat Mar 1 16:48:48 2014 +0100 commit 5acc02aee010d0bae0186bf906bd0c5e8abfb948 Author: Sven Göthel Date: Sat Feb 3 04:55:14 2024 +0100 Typecast: Cleanup: final commit 7cc0bf0d58a3e3f672ce2e4f179de21f1f67dc93 Author: Sven Göthel Date: Sat Feb 3 02:55:43 2024 +0100 Hausmacher Merge: Complete merge part-1 into JOGL from our typecast branch; Adding missing LongDateTime class haumacher https://github.com/haumacher/typecast https://jogamp.org/cgit/typecast.git/log/?h=jogl_patches Status: - Compile clean - Graph/GraphUI Bring-Up OK - Fixes CJK ttf font parsing due to fixed Cmap table commit fcf10b35daeab6356e389487a37196f14523df71 Author: Sven Göthel Date: Sat Feb 3 00:31:42 2024 +0100 Cleanup (static, final, whitespace, ..) post Hausmacher Merge commit 6c84171b109fb2de8400e20cab191e5801f3e6c6 Author: Sven Göthel Date: Fri Feb 2 23:56:12 2024 +0100 Hausmacher Merge: Complete merge part-1: Compile and test clean (pre-write-feature) Bernhard Haumacher provided changes in May 2020 to the typecast project within his public branch https://github.com/haumacher/typecast This merges the pre-write-feature work, which probably is incomplete. commit 237de4e4c7e403c4bf0b014399e28b2f16d06df7 Author: Bernhard Haumacher Date: Sun May 10 21:39:01 2020 +0200 Enhanced dump format of cmap table. commit 5a4f663e9ce0b5df06ae99dd8f6b9809a2ce2bc4 Author: Bernhard Haumacher Date: Sun May 10 21:08:15 2020 +0200 Added rudimentary documentation to the CFF table. commit adc90be6effd090f217e2613d0dab13f9a1ad7c9 Author: Bernhard Haumacher Date: Sun May 10 20:46:02 2020 +0200 Added support for reading the SVG table. # Conflicts: # src/jogl/classes/jogamp/graph/font/typecast/ot/TTFont.java # src/jogl/classes/jogamp/graph/font/typecast/ot/table/Table.java commit 2a23fede0f8ee99ed958f0f547f2558da7662cd9 Author: Bernhard Haumacher Date: Sun May 10 14:35:31 2020 +0200 Added documentation to the 'loca' table. commit 24a4f764c1f7b07c81a31991bf65808c2406e5bd Author: Bernhard Haumacher Date: Sun May 10 14:09:51 2020 +0200 Improved documentation of Cmap table. commit 468a75d6b84b0cdcbd860f8a52492725be8771d9 Author: Bernhard Haumacher Date: Sun May 10 14:08:18 2020 +0200 Bugfix: Format 14 header of Cmap table is not skipped correctly. commit 5f2f0905a41d7f0477a1561243c61489066e9de4 Author: Bernhard Haumacher Date: Sun May 10 12:41:31 2020 +0200 Added offset table as member to the font. * Include the offset table in the font's dump. * Simplified reading since the offset table now does not be read twice. # Conflicts: # src/jogl/classes/jogamp/graph/font/typecast/ot/OTFont.java # src/jogl/classes/jogamp/graph/font/typecast/ot/TTFont.java commit 8f0c4a6b250a2afa4d5145bee39adbf443dfcbd8 Author: Bernhard Haumacher Date: Sun May 10 12:28:42 2020 +0200 Added documentation to the HmtxTable. commit a237a956fcc925e27d72ba49d242dcc1dc09072c Author: Bernhard Haumacher Date: Sun May 10 11:45:50 2020 +0200 Added documentation to the 'glyf' table and structures. * Completed missing toString() functions in some table. * Added dump() functionality to create a human readable description of all font tables with complete detail. * Fixed some signed/unsigned problems in the parser. # Conflicts: # src/jogl/classes/jogamp/graph/font/typecast/ot/OTFont.java # src/jogl/classes/jogamp/graph/font/typecast/ot/TTFont.java # src/jogl/classes/jogamp/graph/font/typecast/ot/table/GlyfCompositeDescript.java # src/jogl/classes/jogamp/graph/font/typecast/ot/table/GlyfDescript.java # src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameTable.java # src/test/java/net/java/dev/typecast/ot/TTFontTest.java commit a71ee81c72baa1c4d6a58220df7733acca499166 Author: Bernhard Haumacher Date: Sat May 9 14:13:46 2020 +0200 Getters for macStyle bits, enhanced docu for fontDirectionHint. commit d5880b4ba4a3fec40647960682aead03a977b9ad Author: Bernhard Haumacher Date: Sat May 9 13:42:32 2020 +0200 Added JavaDoc references, split version fields according to spec. commit 842d26748d6eaf7fde33dced3a33aef60f09d7d3 Author: Bernhard Haumacher Date: Sat Feb 3 01:42:00 2024 +0100 Documentation for `HeadTable` * Added documentation to fields in `HeadTable` taken from https://docs.microsoft.com/en-us/typography/opentype/spec/head. * Added `LongDateTime` conversion of date values encoded as "seconds since 1904". * Added `getType()` API to `Table` interface. # Conflicts: # src/jogl/classes/jogamp/graph/font/typecast/ot/table/HdmxTable.java # src/jogl/classes/jogamp/graph/font/typecast/ot/table/HeadTable.java # src/jogl/classes/jogamp/graph/font/typecast/ot/table/LocaTable.java # src/jogl/classes/jogamp/graph/font/typecast/ot/table/SbixTable.java Original commit from typecast merge: From 43c20bb2e7644aef7002caeb93e1770be5cacaab Mon Sep 17 00:00:00 2001 From: Bernhard Haumacher Date: Sat, 9 May 2020 12:49:39 +0200 commit 4ba099b97df41be220c4b2816c728e6b8cc1b037 Author: Sven Göthel Date: Sat Feb 3 01:14:10 2024 +0100 Graph/GraphUI: Move getDefault*() to FontFactory and add {get,set}FallbackFont() + Font.getBestCoverage(..); Use fallback-font in MediaButton in case chosen font doesn't match (foreign languages, e.g. 'zho' Chinese .. ) commit 7928ed90104f71fb53ae8201b3140b8e347b83ee Author: Sven Göthel Date: Fri Feb 2 14:25:12 2024 +0100 Bug 1493: Supply language code to SubtitleEvent, perhaps allowsing player to select font for ASS/Text rendering; Remove GLMediaPlayer's getStreamLang() as replaced by getLang() commit 020f998cad685ce2267751196528b31ce939764c Author: Sven Göthel Date: Fri Feb 2 12:11:59 2024 +0100 Bug 1493 - Text/ASS Subtitle via MediaButton/MediaPlayer Alignment defaults to CenterHoriz, also support Left. MediaButton: Also cleanup local vars in layout commit 5242c1392c39d3a4b0a95ebfdc72bcd93bf2f820 Author: Sven Göthel Date: Fri Feb 2 10:33:49 2024 +0100 OutlineShape: Earmark coloring task when triangulating .. commit aa39750aa27fc4c65f34fbd599186b30e5005f59 Author: Sven Göthel Date: Fri Feb 2 10:24:51 2024 +0100 Remove Clonable and clone() in favor of explicit determined copy() and copy-ctor in com.jogamp.graph.* and com.jogamp.math.* commit 1639bf159810895eb24791c8128a7b2c02d15a56 Author: Sven Göthel Date: Fri Feb 2 08:51:15 2024 +0100 GLMediaPlayerImpl: Disable subDEBUG flag commit a676fb259c310246975f9c2f67f7a9795967f7bb Author: Sven Göthel Date: Fri Feb 2 08:47:52 2024 +0100 GLMediaPlayer: Adjust API doc and certain names differentiating video (from subtititle) etc. commit 1672233124e425e5446e1ae87974af248784be3c Author: Sven Göthel Date: Fri Feb 2 08:33:30 2024 +0100 GLMediaPlayerImpl.StreamWorker: Don't grow videoFramesFree since having removed buffer grow in commit 68ca5b14966cb7eec9501c17dc8b3b465421a68e commit 0dd2b17f1dd484d22d68828bfb61558be09a4bfa Author: Sven Göthel Date: Fri Feb 2 08:31:29 2024 +0100 GLMediaPlayerImpl: Allow one frame to be shown paused when issuing seek(), i.e. 'oneVideoFrameOnce'. This allows a player to see the current seek'ed position while paused. commit 23cf5279472d3ae1b2d8d1904e6b1f1e7fd8f012 Author: Sven Göthel Date: Fri Feb 2 08:27:49 2024 +0100 Bug 1494 - GLMediaPlayer/GraphUI: Support Displaying Bitmap'ed Subtitles (PGS ..) via FFMPEGFMediaPlayer/FFmpeg FFMPEGFMediaPlayer related changes: - Add libswscale (6th FFmpeg lib used) for sws_getCachedContext(), sws_scale() and sws_freeContext(), used natively to convert the palette'ed bitmap into RGBA colorspace -> GL texture - Handling AVSubtitleRect.type SUBTITLE_BITMAP -- only handled if libswscale is available -- config/adjust texture object -- sws_scale palette'ed bitmap to texture -- intermediate memory is cached, may be resized and free'ed at destroy -- texture objects are managed and passed from GLMediaPlayerImpl, as they are also forwarded to player client via SubBitmapEvent - Passing the AVCodecID to GLMediaPlayerImpl, converted to our CodecID enum. - Unifying creation and opening of AVCodecContext with 'createOpenedAVCodecContext(..)' +++ SubtitleEvent* - SubTextEvent now also handles ASS.Dialogue (FFmpeg 4) besides ASS.Event (FFmpeg 5, 6, ..). +++ GLMediaPlayerImpl - Added ringbuffer subTexFree, managing Texture for bitmap'ed subtitles -- Uses 1 bitmap-subtitle Texture per used textureCount in cache, as one bitmap-subtile can be displayed per frame. Could be potentially reduced to just 2 .. but resources used are relatively low here. - Validating subTexFree + videoFramesFree usage, use blocking get/put ringbuffer due to utilization from different threads. - Receives subtitle content from native getNextPacket0() via callback, creates SubtitleEvent instance and passes it to a SubtitleEventListener - if exists. (See MediaButton example) -- SubBitmapEvent also gets its special SubBitmapEvent.TextureOwner to handle client releasing the event and allowing us to put back the Texture resource to 'subTexFree'. This passing through of the Texture object is probably a weakness of this lifecycle and requires the client to ensure SubtitleEvent.release() gets called. See MediaButton example! - Exposing CodecID, allowing clients like MediaButton to handle SubtitleEvent content according to codec commit 9ff736464e0d2762c424bab66bc6d03ccc6e6d11 Author: Sven Göthel Date: Thu Feb 1 15:37:03 2024 +0100 Bug 805: Graph/GraphUI TextureSequence Scale: Move Region.COLORTEXTURE_LETTERBOX_RENDERING_BIT to TextureSequence and add enabling/disabling of aratio adjustment + letter-box back-color TextureSequence color-texture params fetched from Graph VBORegion* and fed into shader. This allows more flexibility in aspect-ratio adjustment as well as setting a clipping background color for the added letter-box space. commit ca846bc67e6a074a182e97f29b3c34b90a12cac3 Author: Sven Göthel Date: Thu Feb 1 13:46:27 2024 +0100 Vec[234][ifd]: Add toArray(..) method commit 9fe460aecf8509c8305416bb9d77aadf6165c677 Author: Sven Göthel Date: Thu Feb 1 13:45:41 2024 +0100 Bug 1494: Clarify SubtitleEvent class, adding general FFmpeg analog CodecID and hence also promoting VideoPixelFormat commit bb32e88ca0e8fa95b7d8503f5881fa256bf95e59 Author: Sven Göthel Date: Wed Jan 31 12:15:27 2024 +0100 Bug 1495: GraphUI Shape: Fix updateMat() API doc commit fe8f67563aa0bf2ff8f6e242c13f1d267c18b7f5 Author: Sven Göthel Date: Wed Jan 31 12:01:15 2024 +0100 Graph shader (pass1 simple): USE_COLOR_TEXTURE: Clip to vec4(0) color using alpha 0 instead of the debug color white vec4(1), which leads to the white seam if out of gcu_ColorTexBBox commit db2daee62669ee649a6cb1d8d99731c6b3d3a250 Author: Sven Göthel Date: Wed Jan 31 11:59:33 2024 +0100 GraphUI Demos: FontView01 can use scaling Lable ctor; UISceneDemo01b doesn't need to issue Shape.updateMat() commit 8d03e7e0b79cf5bd70fa45f524abb236787303ad Author: Sven Göthel Date: Wed Jan 31 11:58:08 2024 +0100 Add Vec2f.set(Vec2i) and Vec2f(Vec2i); Add Texture.set(..) allowing a pending setup/update of texture and image dimensions commit 5cf0d370dbc2b1f59102522d40f4875f7d77b1f7 Author: Sven Göthel Date: Wed Jan 31 11:56:36 2024 +0100 GraphUI: Only issue Shape.mark*Dirty() if values were updated or data available; JOGL ImageSequence: Add addFrame(GL, TextureFrame), remove*Frame() and isSequenceAnimating() commit f7458c47338c90db19ef3f0143a268b60b1267a3 Author: Sven Göthel Date: Wed Jan 31 11:46:28 2024 +0100 Bug 1496 - GraphUI Shape: Allow markShapeDirty() and markStateDirty() to be lock free commit 03f24c544a70ebecc4e61c48425d361abc34d951 Author: Sven Göthel Date: Wed Jan 31 11:44:11 2024 +0100 Bug 1495: GraphUI Shape: Only updateMat() if marked dirty once in applyMatToMv() and getMat(*) It is sufficient to mark the internal iMat dirty when mutating the source values (pos, ..) and calling updateMat() only once when used in applyMatToMv() and getMat(*). iMatIdent can also be set to true within updateMat() IF neither mutations occured, i.e. no translocation, scale or rotation. commit f93b6c570b94beab1656f0024bdc06a22b2431d6 Author: Sven Göthel Date: Wed Jan 31 11:36:38 2024 +0100 Utilize PTS.getCurrent() where applicable commit b8b692e9cf3120d788ae912514f54948ddccacf5 Author: Sven Göthel Date: Wed Jan 31 11:28:10 2024 +0100 GLMediaPlayer: Split GLMediaFrameListener (rarely used) from GLMediaEventListener, easing listener callbacks; Prepare SubtitleEventListener generalization (Bug 1494) Moves pushSound(), pushSubtitle*() from FFMPEGMediaPlayer to GLMediaPlayerImpl, as it is handled in a generic way - even though currently only called by native FFMPEGMediaPlayer implementation. Note: This patch is incomplete, i.e. not even compile clean. But choses as-is to semantically split the work to ease review. commit 72065d9e2a9d6480c34afc9920071d5ed577d37a Author: Sven Göthel Date: Wed Jan 31 11:05:36 2024 +0100 Bug 1494: Add SubTextureEvent & SubEmptyEvent; Add SubtitleEvent.release() provided by owner to take back borrowed resources (texture of bitmap subtitle) commit 9a21e23b3296eb481bcb407d740e822ad11ac7cd Author: Sven Göthel Date: Mon Jan 29 06:11:05 2024 +0100 GraphUI MediaButton: Add blending below subtitle, allow setting color/blending and subLineDY; MediaPlayer: Add full infoLine toggle with click on infoBox commit 670286747af423781aa4f54062aa34345d32a397 Author: Sven Göthel Date: Mon Jan 29 06:08:35 2024 +0100 GLMediaPlayer: Add getSubtitleCodec() commit a19f810c9618e2fa6829f1c157d2e1a88ca178de Author: Sven Göthel Date: Sun Jan 28 22:05:18 2024 +0100 FFMPEGPlayer: Prep for bitmap'ed subtitles: Use glEnable()/glBindTexture() func-ptr in native; readNextPacket0() passes video+subtitle texTarget and texID For bitmap subtitles we need to push the bitmap into its own texture. Hence readNextPacket0() must switch to used texture using glEnable() on !core and glBindTexture(). commit 3e95c1994d363bc137ffcf548fd3751ac500ac7b Author: Sven Göthel Date: Sun Jan 28 22:01:28 2024 +0100 FFMPEGMediaPlayer/GraphUI MediaButton: AVSubtitles's start/end are relative to pts [ms] (fixed); Use ASSEventLine packets within proper pts only. commit c5bca1f0dba2540088e8e2a90d720fdbc4870b30 Author: Sven Göthel Date: Sun Jan 28 09:20:11 2024 +0100 Cleanup GLMediaPlayer.EventMask.Bit handling in GLMediaEventListener implementations: Either Uninit, Init, Pause or Play (exclusive) commit 28e5b66e6e201259c6ad240552045314d2072595 Author: Sven Göthel Date: Sun Jan 28 09:08:28 2024 +0100 GraphUI MediaButton: Clear cached subtitle data on uninit and init from GLMediaPlayer commit 9aeff8cb3113729adcb5910061015a88ac827002 Author: Sven Göthel Date: Sun Jan 28 09:07:48 2024 +0100 FFMPEGMediaPlayer (native): Simplify subtitle handling in readNextPacket0() commit 0f30aa0995aed0afa610efd49ab8f7ea26fa6db0 Author: Sven Göthel Date: Sun Jan 28 08:48:35 2024 +0100 FFMPEGMediaPlayer (native): Set used sid to none if not selected (missed) commit 432339880fbf00d0003cd1ed4ac3c7d37d323c22 Author: Sven Göthel Date: Sun Jan 28 08:42:26 2024 +0100 GraphUI Demo UIMediaGrid00: Add missing patch from relocating getSymbolsFont() commit d537f28ca05e1ae5d611cc3d30ca9c54137d599f Author: Sven Göthel Date: Sun Jan 28 07:18:12 2024 +0100 GraphUI Demos: Disable debug toggles commit 36c3176264db381d23678ee5631bf4a3f1b86c7d Author: Sven Göthel Date: Sun Jan 28 06:51:40 2024 +0100 GraphUI MediaPlayer: Remove debug message (Behavior to disable border if zoomSize == 1, full-screen) commit f92f72adef6abc76dce7eecf6c058e8d43d3add9 Author: Sven Göthel Date: Sun Jan 28 06:46:08 2024 +0100 GraphUI MediaButton/MediaPlayer-Widget: Add working subtitle (text + ass/saa) support via GLMediaPlayer/FFMPEGMediaPlayer commit 6c67d73dc6b9e49bdd406902e533be91db1a3b0a Author: Sven Göthel Date: Sun Jan 28 06:42:50 2024 +0100 GLMediaPlayer/FFMPEGMediaPlayer: Add working subtitle (text + ass/saa) support via FFMpeg TODO: - We may want to refine subtitle PTS handling - We may want to support bitmapped subtitles commit 62a1f18e98df6783d487f7dfbbc83026b04a19b8 Author: Sven Göthel Date: Sun Jan 28 06:39:29 2024 +0100 GraphUI Misc Cleanup: Move get*Font() helper to Scene; Allow GraphShape.drawImpl0(..) override; commit d46c8e7f5288fb07e632b063462a6c08bba91fb2 Author: Sven Göthel Date: Sun Jan 28 06:35:24 2024 +0100 GraphUI Group: Don't draw border is set invisible commit 298cfd3a0c36bcb7580f8fd3d02e470f36b50f10 Author: Sven Göthel Date: Sat Jan 27 08:25:48 2024 +0100 GraphUI MediaPlayer: Disable always DEBUG hack commit ccf52ae58e55c09139fd44d4d7a6812f51adb15e Author: Sven Göthel Date: Sat Jan 27 08:02:02 2024 +0100 GraphUI MediaPlayer: Bump Chapter tooltip scale commit b2bd320e2b688097f0d5171eb6e89e985909c7b7 Author: Sven Göthel Date: Sat Jan 27 07:58:44 2024 +0100 GLMediaPlayer: Support tile metadata commit 0b908ee7fc80344118d3fa6d4d92ebb082968cb3 Author: Sven Göthel Date: Sat Jan 27 07:37:09 2024 +0100 GraphUI MediaPlayer Widget: Support switching audio and subtitle streams, show their language as a button - press to switch to next commit 7fe9da9d2b5b7475ea3878b0a8d23f485bb19dff Author: Sven Göthel Date: Sat Jan 27 07:36:07 2024 +0100 GLMediaPlayer: Add initial subtitle support, track audio/video/subtitle streams and languages and add convenient switchStream(..) entry. audio/video/subtitle streams and language metadata is maintained by arrays holding the stream-IDs and language string identifier. Implementation added in FFMPEGPlayer for these data-sets. commit a8e382bf6ebc7d405ef2479dae97762d9b7e2967 Author: Sven Göthel Date: Sat Jan 27 03:16:52 2024 +0100 GraphUI MediaPlayer: seek from display-thread, don't act on SliderAdapter.clicked() as dragged is always called commit 68ca5b14966cb7eec9501c17dc8b3b465421a68e Author: Sven Göthel Date: Sat Jan 27 02:03:49 2024 +0100 GLMediaPlayerImpl: Throw out video_queue_growth commit 85ff5a8b745a0dd582d19871f685b7b0beb1af70 Author: Sven Göthel Date: Fri Jan 26 20:08:49 2024 +0100 GLMediaPlayer: Fix playing with single-threaded mode w/ texture-count 1 commit f981e929d29157b6128db6cccd585baf58049516 Author: Sven Göthel Date: Fri Jan 26 05:17:46 2024 +0100 GraphUI Demos: Bump FontView01 + UIMediaGrid01 commit 3d409f9ddde495f6a2cccbd06e4552acf134cbd7 Author: Sven Göthel Date: Fri Jan 26 05:15:13 2024 +0100 GraphUI MediaPlayer: Cleanup infoLabel layout; Add sticky HUD (always-on) button; Fix tooltip help; Make slower-speed reduce by half if <= 1 commit 4ef4dea6eee5873f1185ecfb283a4eff059b22c7 Author: Sven Göthel Date: Fri Jan 26 05:12:19 2024 +0100 GraphUI RangeSlider: Use a modulating color for rect page frame for visible response when active commit f57d165b3f6194918dfa7327188b96b79d601393 Author: Sven Göthel Date: Fri Jan 26 05:10:31 2024 +0100 GraphUI Shape: API doc for colors; add makeShapeDirty() on setColor(); add activeRGBAModulateOn. commit ab29e3b34ea29d35b04ad2771ca20e49f1a59351 Author: Sven Göthel Date: Fri Jan 26 02:06:58 2024 +0100 GraphUI Layout: Emphasize whether a value/parameter is scaled or unscaled in API doc to ease usage commit 09c256e2f26938cc2015176e259164bd7421dbdd Author: Sven Göthel Date: Fri Jan 26 01:18:21 2024 +0100 Math Vec*: Rename {scale->mul}(..) for non-scalar types (n-dim); Add div(..) commit 8fe39d3a524e5e580cf2667988965f1e27fed95b Author: Sven Göthel Date: Thu Jan 25 09:53:30 2024 +0100 Bug 1491: GLMediaPlayerImpl: Use a shared *GraphicsDevice for all compatible shared GLContext, removing resource restrictions In a use case with hundreds of GLMediaPlayer instances, this causes the application to bail out due to running out of resources. +++ GLMediaPlayer exposes resource restrictions and locking related with the created off-thread shared GLContext due to its newly created NativeWindow *GraphicsDevice instance (on X11). On the X11 platform, the *GraphicsDevice actually uses a native resource (X11 Display handle) and hence creating such device is costly and limited. To operate an off-thread GLContext w/o actual X11 input handling, it is *NOT* required to use a new instance. +++ Further more, the device is using locking. To operate an off-thread GLContext, it is *NOT* required to use locking on it as it does not perform actual X11 input handling etc. All operations are performed on the shared GL context. +++ Solution is to create a shared non-locking device clone compatible with the source. A share counter shall determine that the last one actually gets destructed. The usual .. commit 78812de21182e32f86a823321b017f7f6cf52ae3 Author: Sven Göthel Date: Thu Jan 25 09:50:12 2024 +0100 Bug 1491: FFMPEGMediaPlayer: Lock moviePtr lifecycle phase in-between [initStreamImpl - destruction] initStreamImpl() calls ffmpeg natives.setStream0(..), which in turn callsback to the GLMediaPlayerImpl and FFMPEGPlayer and hence requires a valid moviePtr. In total, it covers a longer time period. This patch uses a moviePtrLock object avoiding destruction while within initStreamImpl. commit 18afa5200983bb158e631c81f2df1ca1a45cd882 Author: Sven Göthel Date: Thu Jan 25 09:43:29 2024 +0100 Bug 1491: Add missing rename DefaultGraphicsDevice.swap{Device->}HandleAndOwnership() commit 76487cd34ba706bee6c122a1cbbc75f5639eb4a4 Author: Sven Göthel Date: Thu Jan 25 09:31:51 2024 +0100 NativeWindowFactory.createDevice(..) w/ unitID for cloning; DefaultGraphicsDevice: Move ownership (Object) code into base class ensuring same code NativeWindowFactory.createDevice(..) w/ unitID - Allows cloning a device instance with same parameter. DefaultGraphicsDevice: Move ownership (Object) code final into base class ensuring same code - Rename DefaultGraphicsDevice.swapDeviceHandleAndOwnership() -> swapHandleAndOwnership() commit b711ae5239b8581a197d468b2804cfeb8c4d6c94 Author: Sven Göthel Date: Thu Jan 25 09:21:54 2024 +0100 Bug 1488: Complete/Fix producing the 64-bit shaderKey: Use long values in bit-shift expressions and simplify it commit 1dcfdf71c09c6d774ac47012c05e09da4a085d7b - still used the 'hash code' bit shift pattern, not necessary -> simplified - the value as not ensured to be long, hence conversion occured This caused Graph's MSAA not being picked up properly using the shaderKey. commit 4cbf5297af18f541baa5cd5b85017b1a7a5c19c0 Author: Sven Göthel Date: Thu Jan 25 09:00:20 2024 +0100 Graph: Drop non-existing 'JAVA' font from FontFactory commit 4358310d3233f38d154c03ffbf1fed71891aeaf3 Author: Sven Göthel Date: Fri Jan 19 06:11:46 2024 +0100 GraphUI MediaPlayer: Fix Zoom behavior; Disable DEBUG output commit 95de4407faf91f30ccecb3af1aad4242172a6e0f Author: Sven Göthel Date: Fri Jan 19 06:11:46 2024 +0100 GraphUI RangeSlider/RangedGroup: Fix overall integration, adding more API comments; UIMediaGrid01 now uses RangedGroup RangeSlider - Fix pageSize, i.e. allow valid content.getBounds() be pending @ validateImpl() - Clip value [0, maximum - pageSize] - Has to use Float.isFinite() to capture both, NaN and Infinity -- used for pageSize, determining whether slider uses pageSize rect-knob or position round-knob -- used for minMax, val, val_pct and temp range + pageSize_pct -- don't overwrite valid pageSize if leading to !isFinite() - Reuse setKnobSize() for ctor as well, where padding is be done once (FIXME?) - Tested via RangedGroup w/ UIMediaGrid01 and FontView0 -- vertical slider, inverse and !inverse commit a516c694031e77c0e94d30f769c66495c4bf72ea Author: Sven Göthel Date: Fri Jan 19 06:11:46 2024 +0100 GraphUI Tooltip: Use delayMS for no time-based alarm (only used for now()); FontView01: Use TooltipShape for GlyphShape only with mouse click -> Tooltip.now() commit 48f907dc431817806f8bd766d98dcca59dc8290c Author: Sven Göthel Date: Mon Jan 22 22:04:31 2024 +0100 GraphUI Demos: Minor fixes commit 234ca0c815a6261ac59c20ad30bf97eb997df63e Author: Sven Göthel Date: Mon Jan 22 22:03:59 2024 +0100 VBORegionSPES2: Disable verbose flag in TextureSequence.setTexCoordBBox() .. oops commit 95e2519a0fc37d19d05bc0f4cc14f593eaae7dd9 Author: Sven Göthel Date: Mon Jan 22 22:03:29 2024 +0100 Bug 1488: FFMPEGMediaPlayer: Fix getTextureFragmentShaderHashID(), i.e. use actual tc_w_1 = (float)getWidth() / (float)texWidth value as hardcoded within the shader. commit 1dcfdf71c09c6d774ac47012c05e09da4a085d7b Author: Sven Göthel Date: Mon Jan 22 22:01:59 2024 +0100 Bug 1488 - Graph RegionRenderer: Use a more deterministic 64-bit shaderKey: [0-31] bit values and state, [32-63] colorTexSeqHash This leaves only room for a key collision on the 32-bit colorTexSeqHash value and hence should be save within our shader-code environment. + // # | s | + // 0 | 1 | isTwoPass + // 1 | 1 | pass1 + // 2 | 5 | ShaderModeSelector1 + // 7 | 1 | hasFrustumClipping + // 8 | 1 | hasColorChannel + // 9 | 1 | hasColorTexture + // 32 | 32 | colorTexSeqHash + long hash = ( isTwoPass ? 1 : 0 ); + hash = ( hash << 1 ) | ( pass1 ? 1 : 0 ) ; + hash = ( hash << 1 ) | sms.ordinal(); // incl. pass2Quality + sampleCount + hash = ( hash << 5 ) | ( hasFrustumClipping ? 1 : 0 ); + hash = ( hash << 1 ) | ( hasColorChannel ? 1 : 0 ); + hash = ( hash << 1 ) | ( hasColorTexture ? 1 : 0 ); + hash = ( hash << 1 ) | ( ( colorTexSeqHash & 0xFFFFFFL ) << 32 ); commit 19fac36ae64ffb219fb40449b537219d74a1f000 Author: Sven Göthel Date: Fri Jan 19 06:11:46 2024 +0100 Scene.dispatchMouseEventPickShape(): Reuse PMVMatrix4f, Ray and Vec3f within EDT, reducing temp objects on mouse moves commit 9b7ce6e69033d46a033af0538facad293054670a Author: Sven Göthel Date: Fri Jan 19 06:11:46 2024 +0100 TooltipShape.destroyTip(): Only show warning instead of throwing a RuntimeException if tip couldn't be found within wrapper Group commit 6c11c32f4081e9029eeed281d317894bd179f1e3 Author: Sven Göthel Date: Mon Jan 22 08:37:26 2024 +0100 Simplify TooltipShape: Create own wrapper Group to not mutate user given Shape (if reused in DAG); Fix FontView01 TooltipShape instance, use NoOp DestroyCallback commit 6cf158cc59e901b49ab54681e363d23492421a9d Author: Sven Göthel Date: Mon Jan 22 06:44:41 2024 +0100 Bug 1488 - Graph RegionRenderer: Ensure shaderPrograms1 path is disabled using 'static final boolean useShaderPrograms0 = true' For now, let's leave the dead shaderPrograms1 code path inside the class for further consideration. commit daf9ae20ebc45c851bc3b8384f4cee3cded8d9dc Author: Sven Göthel Date: Mon Jan 22 06:38:05 2024 +0100 Bug 1490: Add missing rename Shape.transformMvTo() -> applyMatToMv(), an transformMvTo() was an intermediate rename (oops) commit 5f9fb7159fa33bc979e5050d384b6939658049bd Author: Sven Göthel Date: Mon Jan 22 06:35:25 2024 +0100 Bug 1489 - GraphUI Group: Resolve Performance Regression in Scene.pickShape(): Drop invisible and clipped shapes After implementing Bug 1487 (Frustum Clipping/Culling) and using thousands of shapes within one Group mostly culled (outside of frustum), overall mouse Scene.pickShape() caused tremendous lagging. This is caused by Scene.pickShape() traversing through _all_ shapes, rendered ones, invisible ones and culled ones. +++ Solution is to have Scene and Group provide a pre-sorted list of actually rendered shapes, i.e. isVisible() and not culled. Scene.pickShape() can now use this reduced and pre-sorted list reducing the load considerably. +++ Further - cleanup TreeTool - rename Container methods: -- setFrustumCullingEnabled() -> setPMvCullingEnabled() -- isFrustumCullingEnabled() -> isPMvCullingEnabled() - supply Container with -- isCullingEnabled() -- List getRenderedShapes() -- isOutside() -- isOutside2() -- forAllRendered() commit bf096870c73898963558bef5c9d75760f9f76290 Author: Sven Göthel Date: Mon Jan 22 06:02:30 2024 +0100 Bug 1490 - GraphUI Performance: Group/Scene: Use temp sorted arrays Group/Scene's uses temp arrays for Z oder sorting, which should be maintained locally to avoid too many temp object creations. commit a883f3e2e1563736df32573141fd5119f0678c92 Author: Sven Göthel Date: Mon Jan 22 05:53:34 2024 +0100 Bug 1490 - GraphUI Group: Resolve Performance Issues with Shape Mv Transform -> PMVMatrix4f Shape.setTransformMv() is called for each renderer frame and for each shape, involving 6 Matrix4f.mul() and set*() operations. Since mutation of shape's position, rotation or scale is less frequent than rendering one frame (for all shapes), it is more efficient to maintain a local Matrix4f and update it on such single mutations. Rendering then only needs to perform one Matrix4f.mul() operation using this internal matrix. +++ Also changes name from setTransformMv(PMVMatrix4f) to applyMatToMv(PMVMatrix4f), as its name might be misleading. commit ffe4e670c9d35121934c6f3c95067d9c18aee386 Author: Sven Göthel Date: Mon Jan 22 05:38:15 2024 +0100 Bug 1488 - Graph RegionRenderer Shader Mapping: Revert to IntObjectHashMap and throw exception on shaderKey collision Commit 6363ae5fb6975a6f2e7c1093ce81f25b699e3e61 changed RegionRenderer.useShaderProgram()'s shader mapping using a new ShaderKey instance. Such ShaderKey instance is created every time @ RegionRenderer.useShaderProgram() to retrieve the ShaderProgram from the HashMap. While this is most correct, creating the ShaderKey instance causes a lot of temp objects. ShaderKey also uses the optional colorTexSeq shader code for equality test in case of hash-collisions. Previous code simply ignored hash-collisions and used a 1:1 hashCode -> ShaderProgram mapping using our IntObjectHashMap. However, there was no test whether collision occur. +++ Solution would be either 1- Revert fully to the previous code just using an IntObjectHashMap, but throwing a RuntimeException in case of hashCode collisions. In case of a collisions, we would need to produce a better hashCode. This is possible, as the underlying data is fully internal .. etc. 2- Use the IntObjectHashMap as long there is no hashCode collision, then revert back to HashMap. +++ This patch implements variant (1), so far no exception has been thrown on multiple demos w/ and w/o diff color-textures. commit 93adc67938cfcf00fc5f5f5efb78cd6319ffdc31 Author: Sven Göthel Date: Sun Jan 21 06:20:05 2024 +0100 GraphUI Demos: Minor finetuning.. commit b69496fef8d802b4af7d00c9a8150984520e1b4c Author: Sven Göthel Date: Sun Jan 21 02:49:52 2024 +0100 UIShapeClippingDemo00: Fix behavior, use shape as child and completely chain rendering in display() commit 4a9f20330309a4a788e13ca7388b5663cd9f85c3 Author: Sven Göthel Date: Sat Jan 20 05:14:26 2024 +0100 GraphUI Demo Fontview: Demonstrate Clipping w/ rotation; Reuse GlyphShape for grid, info-box and tooltip Added TooltipText for help and TooltipShape for GlyphShape. Notable: The actual {@link GlyphShape} created for the glyph-grid {@link Group} is reused as-is in the bigger info-grid as well as for the {@link TooltipShape}. This is possible only if not modifying the scale or position of the {@link GlyphShape}, achieved by simply wrapping it in a {@link Group}. The latter gets scaled and translated when dropped into a {@link Group} with {@link Group.Layout}. This is a good example for a Directed Acyclic Graph (DAG). commit af1ad04206b56b3e268d24ca9244face6b802e2c Author: Sven Göthel Date: Sat Jan 20 05:11:54 2024 +0100 GraphUI RangeSlider: Keep Region.AA_RENDERING_MASK in renderModes commit 018f2633ba8f7106439ec70829d2444abf0c389b Author: Sven Göthel Date: Sat Jan 20 05:11:28 2024 +0100 GraphUI Tooltip*: Allow user to trigger display via now(); Ensure TooltipShape.DestroyCallback gets passed the user provided Shape only commit 5a24e0bbaaa0cdb61292e264b4919295fff40a2a Author: Sven Göthel Date: Sat Jan 20 05:07:10 2024 +0100 GraphUI Group: Add ctor with most usable values, allowing injecting a Group as a one-liner in code commit 5e2160edfb53d8896e4f8f0ed43e59a8e963d991 Author: Sven Göthel Date: Sat Jan 20 05:06:00 2024 +0100 GraphUI Group/BoxLayout/GridLayout: Handle empty Group, i.e. detect zero-size and avoid scale=Infinity and zero-sized resulting AABBox commit cd47baa406818f99c6d7e7711b7c1d16357456f6 Author: Sven Göthel Date: Sat Jan 20 05:04:15 2024 +0100 GraphUI Graph/Scene: Reuse TreeTool for contains(), getShapeByID() and getShapeByName(), also adding full traversion (instead of a flat lookup) commit c1531c3d99b19032040018b9414263b0d3000147 Author: Sven Göthel Date: Sat Jan 20 05:01:38 2024 +0100 Graph Clipping: Use Frustum Clipping using AABBox -> Mv transformed Cube -> Frustum mapping + GraphUI Support AABBox clipping naturally couldn't be transformed into 3D Model-View (Mv) Space, as it is axis aligned and only provided 2 points (min/max). Therefor we map the Group's AABBox to a 8-point Cube, perform the Mv-transformation and then produce the 6-plane Frustum. As before, we cull fully outside shapes within the Group's draw method and perform fragment clipping with same Frustum planes in the shader. With clipping enabled, the 3D z-axis getBounds() depth will be slightly increased for functional Frustum operation. This is also done for setFixedSize(Vec2f). The Frustum planes are copied to the Graph shader via float[4*6] -> uniform vec4 gcu_ClipFrustum[6]; // L, R, B, T, N, F each {n.x, n.y, n.z, d} +++ Concludes related work of below commits - 1040bed4ecc6f4598ea459f1073a9240583fc3c3 - 5cca51e32999a882e2a5f00cb45ecafc824ffd86 commit 5cca51e32999a882e2a5f00cb45ecafc824ffd86 Author: Sven Göthel Date: Fri Jan 19 06:11:46 2024 +0100 Frustum: Revise code and its Plane definition to support Cube->Frustum as well as to extract planes for float[] vec4-shader uniforms. commit 1040bed4ecc6f4598ea459f1073a9240583fc3c3 added AABBox -> Cube -> Frustum mapping (incomplete) and requires Frustum.Plane.set(..) by normal and point-on-plane for distance. Frustum.isOutside(Cube) has been added, testing all its 8-points similar to AABBox. Further all 6 Frustum.Plane shall be extracted to Vec4f and float[], the latter to pass the whole float[4*6] as a vec4[6] uniform array to the shader. +++ Constructor, setter and getter have been adjusted accordingly. Most of the loops have been unrolled. +++ Method names to query Frustum, i.e. 'is*Outside()' have been reduced to 'isOutside()' where uniquely indenticates the purpose. Hence only 'isSphereOutside()' is left over. commit 1040bed4ecc6f4598ea459f1073a9240583fc3c3 Author: Sven Göthel Date: Fri Jan 19 06:11:46 2024 +0100 Add Cube to Frustum Plane mapping, supporting transformation of object-space AABBox into model-view Cube to Frustum.Plane for culling (cpu) and clipping (gpu) commit 7e582cbe21084e2b4b624761a411259da270ce26 Author: Sven Göthel Date: Fri Jan 19 06:11:46 2024 +0100 AABBox: Rename private fields {bl, tr} -> {lo, hi} denoting proper orientation in API doc br, tr wasn't sufficient as in commit d778889f36bd6bee999ceb502c5f0ce265b014bf while working on Frustum, as it doesn't properly reflect axis order not z. Hence going back to 'low' and 'high' semantics, but using same length identifier and emphasizing far (lo) < near (hi) of our model-view coordinate system. commit 30369089cd02e9a0a4875c2a5f5958bcf497c701 Author: Sven Göthel Date: Fri Jan 19 00:30:04 2024 +0100 GraphUI Tooltip*: Generalize Tooltip base (more versatile) and add TooltipShape supporting general Shapes to be added commit f6ae0ff2e4bad67c929a53d705af02e7d92368bc Author: Sven Göthel Date: Tue Jan 16 09:36:28 2024 +0100 GraphUI Clipping Demo: Adding a simple Shape within a clipping Group all driven by a Scene commit 3336d930e991679eadaa1ff4068cb8d23562b42c Author: Sven Göthel Date: Tue Jan 16 08:05:27 2024 +0100 GraphUI Enhance Clipping: Drop 'cullingScale' param, a simple intersection-test against 'clipBox' to discard whole shapes if completely outside is enough. Commit f06fe57b0ae738870a61700ff2c65680102d9e73 turns out addition of using `clipbBox*cullingScale` for the AABBox contains test was not required to render the new Glyphs in the FontView01 demo 'in time'. A simple intersection-test against 'clipBox' to discard shapes if completely outside is enough, hence dropping the 'cullingScale' parameter - simplifying. commit a8cf4cd506297cd05175e43eeefa4e6d7eabb960 Author: Sven Göthel Date: Tue Jan 16 05:23:27 2024 +0100 GraphUI GLButton: Filter out Region.AA_RENDERING_MASK in ctor, as GLEventListener renders into FBO at correct resolution. commit 6b1979992a7da2573c420ce3eb22f35abcbd35b7 Author: Sven Göthel Date: Tue Jan 16 05:02:24 2024 +0100 Graph/GraphUI AA-Quality + SampleCount (shader): Push params down to RegionRenderer's RenderState usually rarely set from top of user API, reducing complexity. Discussion: Alternative was to pass AA-Quality same as SampleCount from the top (e.g. GraphUI Scene), however, this convolutes the API even more. Both parameter modify the resulting shader code in pass2 rendering (only). The used 'renderMode' is still maintained within the Region, since it contains more dynamic states individual to each Region instance (color-texture, ..). This despite 'renderMode' also changes the RenderState's shader program. In the end, it really doesn't matter and is a choice of frequency - the pipeline is usually rendering from on OpenGL rendering thread sequentially. AA-Quality and SampleCount simply usually don't change that often and are set only once. commit 33ec9480da3d414a4c973607970afa06b5ed79ca Author: Sven Göthel Date: Tue Jan 16 01:04:10 2024 +0100 GraphUI RangedGroup.validateImpl(): Simplify updating contentPosZero commit f06fe57b0ae738870a61700ff2c65680102d9e73 Author: Sven Göthel Date: Tue Jan 16 00:39:36 2024 +0100 GraphUI Enhance Clipping: Drop pixel clipping if `clip-box >= clip-box*cullingScale` (Group). RangedGroup: Pass through `clipCullingScale` to cull fully outside shapes; Apply in FontView01 Demo.. Group.setClip{BBox, OnBounds}() set 'cullingScale' drops pixel clipping if `clip-box >= clip-box*cullingScale`. - Discard Shape rendering if completely outside of `clip-box*cullingScale` - Otherwise perform pixel-accurate clipping inside the shader within [`clip-box` .. `clip-box*cullingScale`] - If `clip-box >= clip-box*cullingScale` for all axis, no pixel-accurate clipping is performed as shapes are culled before +++ RangedGroup: Pass through `clipCullingScale` allowing to cull fully outside shapes outside the 'box * clipCullingScale' and use pixel-accurate clipping from [box..box*clipCullingScale]. Uses content.setClipBBox(..) with Mv premul-mat clippedContent.getBounds() in drawImpl0() override +++ FontView01 Demo - Using RangedGroup 'clipCullingScale' w/ culling >= 2*cell-size outside of clipping box (vertical only) - Allows to drop the manually coded setVisible() hack and simplifies overall usage! - This to not issue _initial_ rendering (draw) of all 14k+ Regions (Glyph-Count * 2) at once (resources, startup-performance) commit 0999b85e467c27737784a89f933d70863d027a36 Author: Sven Göthel Date: Mon Jan 15 23:53:55 2024 +0100 GraphUI Group Clipping setClip{OnBox->OnBounds}(): Add Vec3f cullingScale factor for the clip-box to discard rendering completely..; Add Group.setClipBBox(..) Changed Group.setClip{OnBox->OnBounds}(): Enable AABBox clipping on getBounds() for this group and its shapes as follows: - Discard Shape rendering if completely outside of the 'clip-box * cullingScale' - Otherwise perform pixel-accurate clipping inside the shader on 'clip-box' +++ Added Group.setClipBBox(): Enable AABBox clipping on explicit given pre-multiplied Mv-matrix 'clip-box as follows - Discard Shape rendering if completely outside of the 'clip-box * cullingScale' - Otherwise perform pixel-accurate clipping inside the shader on 'clip-box' commit 106142dfa4cdbf0579f8d07f23ca3c4897a5cc95 Author: Sven Göthel Date: Mon Jan 15 23:31:20 2024 +0100 AABBox: Add intersects(AABBox), contains(AABBox), scale(float, float, float) and scale2(float, float, float) commit d778889f36bd6bee999ceb502c5f0ce265b014bf Author: Sven Göthel Date: Mon Jan 15 23:30:21 2024 +0100 AABBox: Rename private fields low -> bl and hight -> tr for readability; Unroll getRayIntersection()'s 'find candidate planes' commit 7fac6c60d7af8a22a82d6702a3380fee2926b608 Author: Sven Göthel Date: Mon Jan 15 18:35:52 2024 +0100 GraphUI Demo FontView01: Remove using jogamp.graph.curve.opengl.VBORegion2PVBAAES2 perf-counter hooks (not committed) commit 447a98a0dcb7add50d77c1d8392e670bffb358ec Author: Sven Göthel Date: Mon Jan 15 11:12:52 2024 +0100 GraphUI: Added RangedGroup Widget, displaying a clipped content Group with optional horizontal and/or vertical RangeSlider; FontView01 now uses RangedGroup scrolling GlyphGrid smooth per-pixel GraphUI: Added RangedGroup Widget, displaying a clipped content Group with optional horizontal and/or vertical RangeSlider - Utilizes Group.setClipBox() to enable clipping of its content to the Group's AABBox - Uses RangeSlider based on given contentSize FontView01 now uses RangedGroup scrolling GlyphGrid smooth per-pixel commit a7cd8fd48d49fcd3cdff35b1fcdcc8903913fec0 Author: Sven Göthel Date: Mon Jan 15 11:02:46 2024 +0100 GraphUI Demos CommandlineOptions: Add ctor w/ graphAAQuality and graphAASamples commit 2bd66b50f21fd21e2102ac75cf4ce6cf875aca4d Author: Sven Göthel Date: Mon Jan 15 11:02:09 2024 +0100 GraphUI Shape: Add receiveKeyEvents() and receiveMouseEvents() allowing a Shape to receive forwarded events from another Shape; Added receive*Events() specialisation for RangeSlider Forwarding events from shape to shape is useful, allowing inner shapes to send them to its group, which itself may send it out towards an outer widget like RangeSlider. RangeSlider's receive*Events() specialisation receives desired events from the source to its barAndKnob and knob shapes, which are listening. It also suppresses the mouseClicked() event as it is only useful coming from itself. commit 31ef5df9c5868b2b8e4ce843a4bf0a6c3f5a9879 Author: Sven Göthel Date: Mon Jan 15 10:54:33 2024 +0100 GraphUI RangeSlider: [add,remove]{->Slider}Listener() commit 90452c782a2de049aeaaddd81f27eadbdf29f0b4 Author: Sven Göthel Date: Mon Jan 15 05:08:18 2024 +0100 Graph Text Tests: TestTextRendererNEWT20, TestTextRendererNEWT21: Reduce sampleSet 3 -> 1 and fontSet 11 -> 7 to avoid footprint for default tests. commit 7f91a60a0f5d7043d44fd22639d27aaefa1dc1a4 Author: Sven Göthel Date: Mon Jan 15 04:48:48 2024 +0100 GraphUI RangeSlider: Add SliderAdapter (convenience) and use a listener-array (was 1 instance) commit d7cb4a77b71cb3703ff7ac0667c5a97f29a5bdb4 Author: Sven Göthel Date: Mon Jan 15 04:47:34 2024 +0100 Graph/GraphUI AA-Quality (shader): Region: Add DEFAULT_AA_QUALITY and clipping funs for aaQuality/sampleCount; TextRegionUtil: Pass quality parameter in draw-functions Region.DEFAULT_AA_QUALITY defaults to MAX_AA_QUALITY still - TODO: AA shader is subject to change .. Region.draw(..) clips the quality param (save) TextRegionUtil: Pass quality parameter in draw-functions - Allowing to select the AA shader GraphUI Scene and some demos add the AA-quality param to the status line or screenshot-filename. - See Region.getRenderModeString(..) +++ TestTextRendererNEWT20 and TestTextRendererNEWT21 now iterate through all fonts, AA-quality shader and sample-sizes. Most demos and some more tests take AA-quality into acount, demos via CommandlineOptions.graphAAQuality commit 9b8d1825cfb76454e42b196a93dc54d189a8a9a6 Author: Sven Göthel Date: Sun Jan 14 18:48:15 2024 +0100 GraphUI RangeSlider: Fix API doc for implementation detail commit 0250b2e5a8cbf91e94d50fd9860c62b28a1fcc17 Author: Sven Göthel Date: Sun Jan 14 18:15:11 2024 +0100 GraphUI RangeSlider: Position page-sized knob (variant) with value at page-start position. commit 3ceb0c6e06b513690e2a4ab67c8aa34e9fbd5698 Author: Sven Göthel Date: Sun Jan 14 04:32:34 2024 +0100 GraphUI UIShapeDemo00: Simple Shape within Scene commit e0c5eed5149a868e202b128c990bb1a4c5259b2f Author: Sven Göthel Date: Sun Jan 14 04:31:35 2024 +0100 Bump (c) -2024 for edited files + LICENSE.txt commit 6363ae5fb6975a6f2e7c1093ce81f25b699e3e61 Author: Sven Göthel Date: Sun Jan 14 04:19:10 2024 +0100 Graph/GraphUI: Revise Graph Region ShaderMapping, fix AABBox-Clipping for Pass2-AA, revise Pass2 AA Quality parameter .. Misc: - Graph VBORegion2PVBAAES2: Drop unused FBO rescale - Move MIN/MAX QUALITY/SAMPLE from GraphUI Scene -> Graph Region +++ Quality -> Pass2 AA Quality - Drop quality field in region - Pass quality to GLRegion.draw(..) similar to sampleCount for dynamic shader and switch - TODO: Pass quality parameter in TextRegionUtil's functions Fix RegionRenderer Shader Mapping - Use ShaderKey class to properly implement the hash value and equals method - For this, TextureSequence.getTextureFragmentShaderHashID() has been added to provide actual shader-snippet for the equals function - All required criterias are included in the hash value and equals method Fix AABBox Clipping for Pass-2 AA - Clipping in pass2-AA must happen in pass2 on actual gcu_PMVMatrix01 (not ortho) +++ GraphUI GraphShape - Rename: [get,set]{->AA}Quality() GraphUI Scene - Rename: mark{All->}ShapesDirty(), set{AllShapes->}Sharpness(), set{AllShapes->AA}Quality() - Fix setSampleCount(..), i.e. markStatesDirty() not markShapesDirty() - Fix setAAQuality(), markShapesDirty() and markStatesDirty(): Use forAll(..) to traverse through all shapes and groups. GraphUI Group - Add setFixedSize() - Add setClipOnBox() - Document setRelayoutOnDirtyShapes(), isShapeDirty() commit 3062f72c7b83cef71d8e6d471846449aba66d861 Author: Sven Göthel Date: Sat Jan 13 23:33:59 2024 +0100 GLReadBufferUtil: Allow passing a custom GL read-buffer name, useful to read FBO attachments (GL_COLOR_ATTACHMENTi) commit b886aaabf6a9c2c2ab3d03a56c3c134307fbfba4 Author: Sven Göthel Date: Sat Jan 13 23:31:48 2024 +0100 Matrix4f: Fix minor API doc parem ref-name commit c6e83daaf04541907fa5ac36f1cd06c2c65e2882 Author: Sven Göthel Date: Fri Jan 12 05:38:37 2024 +0100 Graph VBORegion2PVBAAES2: Fix Rescale (MAX texSize): renderFboHeight shall use winHeight (typo) commit fa0703fda03f34468c9c8645a52d13536c366991 Author: Sven Göthel Date: Fri Jan 12 05:36:38 2024 +0100 GraphUI RangeSlider: Add unitSize param: Size of one unit (element) in sliding direction commit 4bc55e2f2e3603b43d6fdcb9786c61e32a64327f Author: Sven Göthel Date: Fri Jan 12 05:31:34 2024 +0100 GraphUI Demos: Use CommandlineOptions properly commit 9c4e97a896e4ce2491ac38bfbf0c21a527548cb3 Author: Sven Göthel Date: Fri Jan 12 05:30:27 2024 +0100 AABBox resize{Width, Height}(..): Positive argument shall always denote expansion commit 76a74ca56e2708c967b3e5aafaa24eb9603bbb99 Author: Sven Göthel Date: Fri Jan 12 05:28:07 2024 +0100 GraphUI Margin/Padding: Rename zeroSum*() -> zero*() commit 335dd0a493fff1435cad1cd22e4ac5a20d7df03a Author: Sven Göthel Date: Tue Jan 9 03:37:00 2024 +0100 Graph Clipping: Add missing Modelview-Matrix (Mv) Multiplication / Consideration - GLSL vertex shader sets smooth varying 'gcv_ClipBBoxCoord' w/ Mv multiplied vertex-coord - RegionRenderer.setClipBBox(AABBox) expects a pre-multiplied Mv AABBox covering an independent area, not per Shape/Region. - This works as expected with moving/scaling of each Shape/Region etc commit bb11c498b7d4fe269e7273a1b164e46f3c7a3b50 Author: Sven Göthel Date: Tue Jan 9 03:13:20 2024 +0100 Graph Clipping: Initial Region impl of AABBox clipping using GLSL shader (Convenient using Graph/GraphUI produced AABBox) Simple demo, setting clip-bbox manually: - src/demos/com/jogamp/opengl/demos/graph/ui/UIShapeClippingDemo00.java TODO: - GLSL: Add missing Mv-multiplication of vertex-position -> gcv_ClipBBoxCoord -- AABBox min/max should be set pre-multiplied w/ Mv covering an independent area, not per Shape/Region. -- This to properly work with moving/scaling of each Shape/Region etc commit f836fbd9201034010ecbf591348433f23920f527 Author: Sven Göthel Date: Tue Jan 9 03:02:57 2024 +0100 Graph Clipping: GLSL: Add `USE_AABBOX_CLIPPING`, i.e. clipping via AABBox min/max vec3 as convenient using Graph/GraphUI produced AABBox USE_AABBOX_CLIPPING - Conditional compilation w/ macro 'USE_AABBOX_CLIPPING' - gcv_ClipBBoxCoord smooth varying setup in vertex shader - fragment shader clips via branch if( is_inside(gcv_ClipBBoxCoord, gcu_ClipBBox[0], gcu_ClipBBox[1]) < 0.5 ) { CLIP } - clipping via discard or alpha=0 in case of buggy-discard. Other optimization: - Drop gcv_ColorTexExt, fragment-shader uses gcu_ColorTexBBox[2] directly (flat) - Simplified gcv_ColorTexCoord smooth varying equation in vertex shader. commit c87e89959e40ee8411cccc16fe0a5708f54a6c9f Author: Sven Göthel Date: Tue Jan 9 02:55:58 2024 +0100 Graph GLSL functions.glsl: Complete overload vec2 and vec3 variants; Fix 'and'/'or' semantic (swapped); Add EPSILON in clip_coord(..) and add is_inside(..) function Complete overload vec2 and vec3 variants Fix 'and'/'or' semantic (swapped) - 'and' uses multiplication, i.e. all arguments must be > 0 (ideally 1) - 'or' uses addition, i.e. only one arguments must be > 0 (ideally 1) - both uses clamp [0..1] Add EPSILON in clip_coord(..) - Only 'coord > high+EPSILON' is outside Add is_inside(..) function - Similar to clip_coord(..) but returns float 0 or 1 instead of selecting color. commit 4db23616aca2f191b2685311dc676fdac739338a Author: Sven Göthel Date: Mon Jan 8 13:40:31 2024 +0100 GraphUI Demo UIMediaGrid00: Add letterBox option, defaults to true now commit cb50ca301d927683374212e8efe9818f53f818c1 Author: Sven Göthel Date: Mon Jan 8 13:37:16 2024 +0100 GraphUI Demos: Have CommandlineOptions produce GLProfile and full GLCapabilities request, removing code duplication commit e6bbc1a93ff4925d2aae33de527353826f81bcf1 Author: Sven Göthel Date: Sun Jan 7 22:48:08 2024 +0100 GraphUI Rectangle: Remove dropping AA_RENDERING_MASK, i.e. allow VBAA_RENDERING_BIT again Dropping AA was added in commit eb99bfc27f9f49387cbb08471debcd4d61e4f745, but non-planar rectangles need AA to avoid stairs. Hence manually dropping some AA in MediaPlayer for blending rectangles. RangeSlider already drops AA for its bars etc. commit 6dbd73108ec0b2f829674c07771c232395034157 Author: Sven Göthel Date: Sun Jan 7 21:27:18 2024 +0100 GraphUI Tooltip: Simplify integration w/ Scene + Shape; Use Shape.setToolTip(Tooltip) for generic usage; Add TooltipText colors. Shape also takes care of setting Tooltip's tool-Shape (itself), simplifying Tooltip ctor and having it more independent from Scene/Shape. Tooltip also drop Scene reference, as it shall be passed from Scene caller at Tooltip.createTip(..) commit c2452b211dc3f347dbffaac4e6c35b3c3e8c6d65 Author: Sven Göthel Date: Sun Jan 7 21:20:02 2024 +0100 GraphUI Button.setLabelColor(..): Add alpha channel and variant w/ Vec4f for flexibility commit d80762bdaf79a852cde2391479bb066968ae573c Author: Sven Göthel Date: Sun Jan 7 13:05:42 2024 +0100 GraphUI Shape: Ease Tooltip managment via Scene: Only started Tooltip is required to tick(), drop List commit fa973b03fc1d6af5696cee27e1824c45da3150b4 Author: Sven Göthel Date: Sun Jan 7 04:56:28 2024 +0100 GraphUI Shape: Enable Tooltip (currently text only) to be displayed after delay w/o mouse-move (1s) For efficiency, all Tooltip instances is hooked to Scene via Shape as well as its singleton pop-up HUD tip after delay and no mouse move. TooltipText is a simple text Button implementation, but other more fancy HUD tips can be implemented. Shape adds - 'public Tooltip setToolTip(final CharSequence text, final Font font, final float scaleY, final Scene scene)' Demoed within MediaPlayer widget. commit cf0c60eaabd7334c0ae2099a1f999032cddf14dd Author: Sven Göthel Date: Sun Jan 7 04:51:17 2024 +0100 GraphUI RangeSlider.addMark(): Return the mark-shape and use double itemLen (in sliding direction) for better visibility commit e9e1732dc6691cb72920f25b1fb8431e94c7b561 Author: Sven Göthel Date: Sun Jan 7 04:49:51 2024 +0100 GraphUI MediaPlayer / GLMediaPlayer: Add current chapter-title to info-field commit 79eba1f0e450a75f01505ca5ed5817ec481491a8 Author: Sven Göthel Date: Sun Jan 7 04:48:16 2024 +0100 GraphUI Shape: Maintain multiple Activation Listener (ArrayList instead of single instance) This allows listenting to activation of Group members, while Group is set to widget-mode. For the latter, Group adds a forward listener to itself. commit 259fce6ca0fa4fe92e6dc2266d442c62723eb73c Author: Sven Göthel Date: Sun Jan 7 04:44:01 2024 +0100 GraphUI Cleanup: Simplify Shape.draw*() and Container.{add,remove*}Shape[s](); Remove Scene.setDebugBorderBox() Simplify Shape/Scene - Split scene.display()/shape.drawImpl0() and scene.displayGLSelect()/shape.drawToSelectImpl0() Simplify Container (Scene/Group) - {add,remove*}Shape[s](), i.e. drop unusual removeShape*() and simplify implementation Scene - Remove setDebugBorderBox() commit 6af37910eac365ed2b5ac957276337fe71f7e56b Author: Sven Gothel Date: Sun Dec 31 01:27:53 2023 +0100 GraphUI RangeSlider: Add rectangular marks (e.g. for chapters, see MediaPlayer), by simply overlay marks on bar Knob color defaults to 0.80f, 0.80f, 0.80f, 0.7f, i.e. light-mode better matching MediaPlayer use-case. commit 5ad98721c2f868aca0567e2467b5dfb0c071c490 Author: Sven Gothel Date: Sun Dec 31 01:24:29 2023 +0100 GraphUI Group: Fix layout w/ zero shapes (empty), i.e. set AABBox to zero commit f89bfe3d830a2b489e8b2488d07677ee057124f0 Author: Sven Gothel Date: Sat Dec 30 21:18:46 2023 +0100 GraphUI MediaButton: Add clearImpl(..), stopping and rewinding stream commit 68b2dad19bd6d84f18b22f967ce320b448e8a270 Author: Sven Gothel Date: Sat Dec 30 21:18:16 2023 +0100 GLMediaPlayer/FFMPEGMediaPlayer: Add chapter metadata support and use com.jogamp.common.av.PTS.millisToTimeStr(..) Chapter metadata is now supported via our FFMPEGMediaPlayer implementation. Added public method: 'Chapters[] GLMediaPlayer.getChapters()' commit c6e39c6e313a34688ca0164d7a34b6465e92396f Author: Sven Gothel Date: Sun Dec 24 19:12:52 2023 +0100 GraphUI RangeSlider Widget: Add rectangular page-sized knob mode using a 'page size' of covered view. Resolve color-setup. Tested with FontView01 commit b5e6a852451f2a78a1783ca8fbd704005fbafd07 Author: Sven Gothel Date: Sun Dec 24 19:11:01 2023 +0100 GraphUI MediaPlayer Widget: Issue playStream(..) and setTextureUnit(..) by caller, reducing specification commit fdedf6cff64efc1d7ab554c2bf084392a099ef0f Author: Sven Gothel Date: Sun Dec 24 16:10:09 2023 +0100 GraphUI Shape: Allow overriding of setColor(..) and setPressedColorMod(..) commit a782f343aeecbfdb640198bcc73794a90f63730d Author: Sven Gothel Date: Sun Dec 24 16:09:38 2023 +0100 GraphUI Scene/Shape: Add KeyListener for activeShape commit feb3d34be097bcbef5ebc40342b405a832ac581f Author: Sven Gothel Date: Tue Dec 19 17:40:17 2023 +0100 Bug 805: GraphUI: Add Widget 'marker' (a Group), derived by {MediaUI01 -> MediaPlayer} and new RangeSlider - A widget specifies specific UI semantics including individual controls. - Being a {@link Group}, implementations provide shape(s) and its instance can be added to the user's scene. - Due to the specific nature of widgets, individual controls/listener may be provided with semantic values. +++ MediaPlayer exposes a RangeSlider for current position (view and control). commit eb99bfc27f9f49387cbb08471debcd4d61e4f745 Author: Sven Gothel Date: Tue Dec 19 17:35:31 2023 +0100 GraphUI Shape Rectangle: Draw simple filled rect if lineWidth==0, drop AA_RENDERING_MASK from renderModes (not necessary for a rect) commit 0944e120702c8bbaa562b817d387651addb11b86 Author: Sven Gothel Date: Tue Dec 19 17:33:35 2023 +0100 GraphUI Group: Allow override of clearImpl0() and destroyImpl0() commit b76f3c048fb93e7b2c66d7aca4f88f3cbf4b6046 Author: Sven Gothel Date: Tue Dec 19 17:32:08 2023 +0100 GraphUI Shape: Unify 'resetState()' for clear and destroy, refine API doc commit 53c2891909941d0261c15e5679bb108f3c70fb82 Author: Sven Gothel Date: Tue Dec 19 17:31:11 2023 +0100 GraphUI Shape: setParent() pp -> protected, allow to override setName() commit 1bf9f42690880413e8d58a5525ec76605bfdfe83 Author: Sven Gothel Date: Tue Dec 19 17:29:59 2023 +0100 GraphUI Shape.move*(): Don't notify MotionListener on programmatic move. commit 8e8507e93dc603ece8417e6931d58dbbd6042201 Author: Sven Gothel Date: Mon Dec 18 10:27:25 2023 +0100 UIMediaGrid0{01}: Minor cleanup: Drop unused local Font commit 9dbfdcd7524b2bbd5eecb7fd45bbc544e24724c5 Author: Sven Gothel Date: Mon Dec 18 09:51:19 2023 +0100 OMXGLMediaPlayer: Add 'printNativeInfo(..)' - completes commit d99c2d8b28470d335ab5b30124ef8b0607b3b90f commit 3ea26f16a0ea976b37e8661fdc9ed9ddaa1e985e Author: Sven Gothel Date: Mon Dec 18 09:50:33 2023 +0100 GLMediaPlayer: TEXTURE_COUNT_DEFAULT 4 -> 3 as tested via UIMediaGrid01, usable w/ fix for Bug 1472 (Enhance A/V Sync) commit c306094e8dbba3c9e77953daaf8054731f327923 Author: Sven Gothel Date: Mon Dec 18 09:47:30 2023 +0100 Bug 805: GraphUI: Add MediaUI01 widtget (MediaButton w/ full feature controls), used in demos UIMediaGrid0[01] commit 47f5e083ba79ac02590a452149e31bf433109346 Author: Sven Gothel Date: Mon Dec 18 09:11:44 2023 +0100 Bug 805: GraphUI: Add Group.replaceShape(..) and Shape.getParent() Group.replaceShape(..) allows replacing a shape w/o disturbing a layout, e.g. to zoom one element by taking it out of a grid-group and placing it on-top of the Scene while using a placeholder in the grid until returned. Shape.getParent() - depending on use-case (w/o DAG) - allows access and control of a shape's Group. commit d99c2d8b28470d335ab5b30124ef8b0607b3b90f Author: Sven Gothel Date: Mon Dec 18 05:49:02 2023 +0100 GLMediaPlayer: Add printNativeInfo(..) exposing used native library information (if any), FFMPEG* utilizes NativeLibrary.get[Native]LibraryPath() commit 121260d2b7bc4f57a16ca53ed1b08082d7977bbe Author: Sven Gothel Date: Mon Dec 18 04:31:37 2023 +0100 Bug 805: GraphUI Scene/Shape Pick-Active/Interaction: Pick shall complete traversion for most inner interactive shape; ... Pick shall complete traversion for most inner interactive shape - Shape::dispatchMouseEvent() is only invoked for interactive shapes, impl. simplified. - Remove 'Scene::dispatchMouseEvent(..)', use 'Scene::dispatchMouseEventPickShape(..)' for given use cases - Scene::dispatchMouseEventForShape(..) used for mouseDragged() only, i.e. using activeShape. +++ This allows a 'group widget' being used, allowing to click on inner shapes like a button. commit a4fc84cba410e7e7082e8fd097cb0185d0aac1a2 Author: Sven Gothel Date: Mon Dec 18 03:53:39 2023 +0100 Bug 805: GraphUI Group: Add 'widget-mode' used to utilize a group as one visible UI widget element (activation, visibility) Enabled widget behavior for a group causes - the whole group to be shown on top on (mouse over) activation of one of its elements via getAdjustedZ() - this group's onActivation(Listener) to handle all it's elements activation events - isActive() of this group and its sub-groups to return true if one of its elements is active commit cf924e3ff144408ea175c8aeac0819bd1a05467d Author: Sven Gothel Date: Mon Dec 18 03:29:24 2023 +0100 GraphUI Shape: Fix Z{Ascending,Descending}Comparator using and exposing getAdjustedZ() getAdjustedZ() simply returns `position.z() * getScale().z() + zOffset`, i.e. with added zOffset reflecting activation status (renders shape/group on top). commit e31129b8bfd1d53fcd709b1c6f58f45de928062e Author: Sven Gothel Date: Mon Dec 18 03:21:25 2023 +0100 Graph Shader: Fix 'curverenderer01-single.vp' aligning w/ 'curverenderer01-pass1.vp' (commit 297c48f4fefd1ab59800524ea5f0dd56684d6786) commit 7ae9dae12553f2f8f0e6dcd494f972a50c62cb1f Author: Sven Gothel Date: Mon Dec 18 03:19:31 2023 +0100 GraphUI Container: Cleanup or Group/Scene add*/remove* methods commit d0e77a9d3fee687011d0ff0d610f49262cc2834f Author: Sven Gothel Date: Mon Dec 18 03:05:53 2023 +0100 GraphUI Shape: Rename is{Container -> Group}(), denoting a group only commit d5701c831643b99a0eb76883b0fc392641b6404d Author: Sven Gothel Date: Mon Dec 18 02:55:31 2023 +0100 Graph Region: Edit API doc for AA_RENDERING_MASK commit ad8471401f7ca004df823f7f7436c2cbc4676195 Author: Sven Gothel Date: Mon Dec 18 02:54:51 2023 +0100 GraphUI Padding, Margin, Gap: Use zero value constant None instead of default ctor commit 47061b4528953eea0632f04082013bf38f0fe863 Author: Sven Gothel Date: Mon Dec 18 02:42:32 2023 +0100 GraphUI Alignment: Use Alignment.None instead of default ctor. commit 0fd9d02430082e930fe1058b08f4d80155a007ed Author: Sven Gothel Date: Mon Dec 18 02:41:11 2023 +0100 GraphUI UISceneDemo20: Only use ALAudioSink if its context is already created (ready) commit c5890ee3e6bfa8aa40a55145b3b7e8a9bca344be Author: Sven Gothel Date: Mon Dec 18 02:40:01 2023 +0100 GraphUI MediaButton: Disable AA_RENDERING_MASK for GLMediaPlayer color texture (effiency, less artifacts) 2-pass Graph-AA is not desired for video textures to enhance efficiency and reduce artifacts. Consider using 'mPlayer.setTextureMinMagFilter( new int[] { GL.GL_LINEAR, GL.GL_LINEAR } )' of passed GLMediaPlayer instance to use bilinear filtering for different sizes. commit a503f9c06faaa3cf0b9af18ad07e50b02bc19318 Author: Sven Gothel Date: Mon Dec 18 02:35:47 2023 +0100 MovieSBSStereo: GLMediaPlayer.setTextureMinMagFilter() must be called before initialization commit 8b30ea9859fb1a1e9d1a373a0e355748b9a7c8ef Author: Sven Gothel Date: Mon Dec 18 02:34:17 2023 +0100 GraphUI Shape: Rename [set|is]{Enabled -> Visible}(..) for clarity Note that invisible shapes are still considered for picking/activation. To completely mute the shape, issue {@link #setInteractive(boolean)} as well. commit b7f8a70674e36a8c324f91d0f73f89667c3c8300 Author: Sven Gothel Date: Tue Dec 12 08:27:43 2023 +0100 GraphUI Shape/Group: Group.isActive() also returns true if any child is active; Add isContainer() to avoid rfeflection commit f5978af858b387b5e58cf470c4edcf40ac0cabfd Author: Sven Gothel Date: Tue Dec 12 08:22:24 2023 +0100 GraphUI Shape: Use Shape.MoveListener for Shape.onMove(..) providing more details of the translation commit b481746f83440b120d0333a07747b7fafcb2295d Author: Sven Gothel Date: Tue Dec 12 08:15:37 2023 +0100 GraphUI Shape: Add IO_ACTIVABLE state commit f8ec81aea5f2b1355e283aba93814c7ea38e67b9 Author: Sven Gothel Date: Tue Dec 12 08:13:33 2023 +0100 GraphUI Shape: Simplify setIO(..) usage (private) commit 75955684c15c593133d619ddc38ad5674073de38 Author: Sven Gothel Date: Mon Dec 4 13:41:24 2023 +0100 GraphUI Scene: Allow attaching GLAutoDrawable manually and adding GLEventListener (API) commit 2e3092d1ed533b819e2b6442e0d9563818599564 Author: Sven Gothel Date: Mon Dec 4 13:35:22 2023 +0100 FFMpeg: Just be nice and flush GL stream, no finish sync required commit 44ec1a4669a099adadb15e5f7ae6ce75c6afa985 Author: Sven Gothel Date: Mon Dec 4 13:34:41 2023 +0100 FFMpeg: Fix and clarify 'resend package' and 'continue draining frames' states commit 736b717b5d6d2b2e7ac4066f54495e8e111d0e01 Author: Sven Gothel Date: Sun Nov 26 10:00:34 2023 +0100 Bug 1479 - NativeLibrary: Add getNativeLibraryPath() returning actual native library path, support throughout DynamicLibraryBundle[Info] commit 3ee35be6e15298bb8366abd850cea01202418e25 Author: Sven Gothel Date: Mon Oct 16 14:17:15 2023 +0200 GLMediaPlayer.getPerfString(): Don't show audio pts values is no_audio, misleading and wrong info (e.g. on mute) commit 9e63207f07de7ab5805d166be992c7faeebef5cc Author: Sven Gothel Date: Mon Oct 16 14:08:16 2023 +0200 GLMediaPlayer: Don't resetAVPTS() on resume(), allowing less AV sync disruption after pause(flush:=false) commit b7d41ff2430adad96d546228c99b4a4610a6b752 Author: Sven Gothel Date: Mon Oct 16 13:56:23 2023 +0200 GLMediaPlayer: Recognize !use_audio when repeating (caching) a video-frame, i.e. ignore audio_queued_ms in such case (Fixes video sync on SCR w/o audio) commit 11ee5d827d634cfcb3d9785912a42bfd874976ba Author: Sven Gothel Date: Mon Oct 16 06:11:13 2023 +0200 GLMediaPlayerImpl: Use a PTS av_scr_cpy from av_scr for getPTS() avoiding direct user-exposure and potential data-race commit 14e3a4640844e7857bb8569379129964ff46cab2 Author: Sven Gothel Date: Mon Oct 16 06:09:55 2023 +0200 GLMediaPlayerImpl: Don't reset SCR on video_scr_reset or irq'ed rendering w/o video-frame (fixes 'massive' seek'ing) commit f5ac5dec4bd339da45df3f23e8677c673c985db6 Author: Sven Gothel Date: Mon Oct 16 04:24:34 2023 +0200 FFMPEGMediaPlayer: Remove unconditional DEBUG output Left behind hacking for AV sync .. commit a35ca1763c773b4533b9b9850a9842522303ad01 Author: Sven Gothel Date: Mon Oct 16 04:11:51 2023 +0200 Bug 1472: GLMediaPlayer.getNextTexture(): Fix playSpeed > 1; Handle !hasVideoFrame upfront, simplifying sync-block Fix playSpeed > 1: dt_v (keep playSpeed factor), allow drop frame on no-frames w/ playSpeed > 2 commit dac49f32e09d61f5ba9be53a21d351843a48761b Author: Sven Gothel Date: Mon Oct 16 04:05:40 2023 +0200 Bug 1472: GLMediaPlayer: Handle setPlaySpeed() like setAudioVolume() if stream is not yet initialized or playing, cached clipped value and set at initGL(..) commit ee29eaf770d0d3627e5989dcae58a87cf27184d3 Author: Sven Gothel Date: Mon Oct 16 04:03:24 2023 +0200 Bug 1472: GLMediaPlayer: Expose SCR PTS and encourage its usage, removes user from selecting video or audio PTS. commit 76cf00ea0a157b33af9b2ffa608ded992f8c0ff2 Author: Sven Gothel Date: Mon Oct 16 00:54:20 2023 +0200 GLJPanel: Fix DEBUG output USE_GLSL_TEXTURE_RASTERIZER -> USE_GLSL_VERTICAL_FLIP, changed names in commit d6cf89f22a5926b437c4430eb166972d90fd92be commit d6cf89f22a5926b437c4430eb166972d90fd92be Author: Sven Gothel Date: Mon Oct 16 00:40:36 2023 +0200 GLJPanel: Allow disabling GLSL vertical flip programmatically via setUseGLSLVerticalFlip(false) in addition to property 'jogl.gljpanel.noglsl' Suche setting would enable the slow path of flipping a potentially 'big' framebuffer via the CPU. The best performance path is using the GLSL shader to vertically flip the FBO, or - w/o using the shader - to render the GL scene vertically-flipped and set the flag 'flipVertical' to false. - property "jogl.gljpanel.noverticalflip" - setter setSkipGLOrientationVerticalFlip(boolean) If set to true, user needs to flip the OpenGL rendered scene if {@link #isGLOriented()} == true, e.g. via the projection matrix.
See constraints of {@link #isGLOriented()}. commit bd2aa98d57c0c03bbface35000ed1c4bac6470e2 Author: Sven Gothel Date: Sun Oct 15 19:02:32 2023 +0200 Bug 1472: Enhance GLMediaPlayer AV Sync: Fine tune AV heuristics to (multiple of) audio_dequeued_ms The case of lagging audio to the audio master-clock (by experience) is a rare and probably synthethic case of the AV async videos, was dt_a > MAX_VIDEO_ASYNC && d_apts > 0 now with increased threshold max_adelay = Math.max( 4*audio_dequeued_ms, 4*MAX_VIDEO_ASYNC ) dt_a > max_adelay && d_apts > 0 In conjunction the video-repeat case (video pts > SCR) shall use a higher threshold _when_ detecting, i.e. min1_audio_queued_ms = Math.max( 2*audio_dequeued_ms, 2*MAX_VIDEO_ASYNC ) to ensure enough buffered audio exists (2 audio-frames) before the next getNextTexture() hits within vsync. This early detection and min1_audio_queued_ms threshold is double of the late threshold for video-repeat min0_audio_queued_ms = Math.max( audio_dequeued_ms, MAX_VIDEO_ASYNC ), when the to-be repeated frame shall be displayed within getNextThreshold(). Failing this requirement (1 audio-frame) will discard it and gather the next video-frame, allowing to fill the audio-buffer. A subsequent AV sync shall correct the difference. Strategy is less intervention on less buffered-audio. This shorter tolerance also reduces some video lag or stuttering on 24fps -> 60fps films. commit 2c80bb2e6eb12e155d747daf8a08362396d5e0fc Author: Sven Gothel Date: Sun Oct 15 07:10:15 2023 +0200 Bug 1472: Enhance GLMediaPlayer AV Sync: Fix FFMPEGMediaPlayer's audio resample: Use swr_get_out_samples(..) to calculate the required output sample count Notable when playing audio with e.g. 24k sample rate on a 48k OpenAL ALAudioSink, the sample duration was cut in half due to erroneous resampling missing half the required samples. Using swr_get_out_samples(..) resolves this issue pre swr_convert(..), the resampling. commit b1956113f5601b0cc6ac525d3918a0dfa8d240af Author: Sven Gothel Date: Sun Oct 15 07:06:53 2023 +0200 Bug 1472: Enhance GLMediaPlayer AV Sync: Utilize SCR aware audio PTS used as master-clock, enabling proper AV sync w/ untouched audio We can finally utilize the added pass through audio PTS, see commits - GlueGen 52725b4c6525487f93407f529dc0a758b387a4fc - JOAL 12029f1ec1d8afa576e1ac61655f318cc37c1d16 This enables us to use the audio PTS as the master-clock and adjust video to the untouched audio. In case no audio is selected/playing or audio is muted, we sync merely on the system-clock (SCR) w/o audio. AV granularity is 22ms, however, since the ALAudioSink PTS may be a little late, it renders even a slightly better sync in case of too early audio (d_apts < 0). Since video frames are sync'ed to audio, the resync procedure may result in a hysteresis swinging into sync. This might be notable at start and when resumed audio or after seek. We leave the audio frames untouched to reduce processing burden and allow non-disrupted listening. Passed AV sync tests - Five-minute-sync-test.mp4 - Audio-Video-Sync-Test-Calibration-23.98fps-24fps.mp4 - Audio-Video-Sync-Test-2.mkv commit 86210fde931400ff6f1b0a2da48ca031a957df8d Author: Sven Gothel Date: Wed Oct 4 18:10:03 2023 +0200 Bug 1472: GLMediaPlayerImpl: Track repeatedFrame count commit e066250b908f0f2187d468d2c5ab586341031753 Author: Sven Gothel Date: Wed Oct 4 12:05:10 2023 +0200 Bug 1472: GLMediaPlayer AVSync: Refine AVSync debug output (WIP) Using `-Djogl.debug.GLMediaPlayer.AVSync -Djogamp.debug.AudioSink` to trace AVSync issues for now. commit d0dd0c04463c6b09b1f15ce6cc3a2c50286c57bf Author: Sven Gothel Date: Wed Oct 4 11:35:48 2023 +0200 Bug 1473 - ALAudioSink: AV Synchronization: Adopt to JOAL ALAudioSink changes FFMPEGMediaPlayer: This also effectively reduces the audio buffer size from 3000ms -> 768ms, the new default for audio streams with video. commit 1db4e6813bf4c70c5ba465beaee6eab8ee547d18 Author: Sven Gothel Date: Tue Oct 3 04:18:37 2023 +0200 FFMPEGMediaPlayer: Always use own textureLookupShader and validate its custom name against GLSL internal 'texture2D', add missing VideoPixelFormat conversions Always use own textureLookupShader, avoiding confusion or even race conditions. Validate textureLookupShader custom name against GLSL internal 'texture2D' (illegal override) Add missing VideoPixelFormat conversions: - RGB24, ARGB, RGBA, ABGR, BGRA commit 3b994439acd0c001b64e96634636026f11af619c Author: Sven Gothel Date: Tue Oct 3 04:12:23 2023 +0200 TextureSequence.setTexCoordBBox(): Add 'verbose' parameter for debug output instead hard coded branch commit 4fd725b1cd4bf4d9f1bd3a20e3b23784485c3751 Author: Sven Gothel Date: Tue Oct 3 02:42:07 2023 +0200 GraphUI Shape: Complete commit c8ec6fa7cc16a0777db16af8b4d0d0b898f8b546 commit c8ec6fa7cc16a0777db16af8b4d0d0b898f8b546 Author: Sven Gothel Date: Tue Oct 3 02:37:32 2023 +0200 GraphUI Shape: 'int name' -> 'int id' and add 'String name', change get/set methods accordingly commit 69549319e1d9ddf4d3903aa077f2c4cebb54195e Author: Sven Gothel Date: Tue Oct 3 02:23:54 2023 +0200 GraphUI Scene: Add custom one-time GLRunnable disposable action list, allowing to properly take-down user resources at dispose(GLAutoDrawable) Used for UISceneDemo20 to stop and release SimpleSineSynth and its ALAudioSink. The latter causes a bad exit (crash at OpenAL32.dll) on OpenJDK's Window Binary if not stopped! commit e8c3c0382d58c8eabf4b96aa555683252c10d569 Author: Sven Gothel Date: Mon Oct 2 20:30:38 2023 +0200 Bug 1470 - FFmpeg / JNI: Perform exception check and rethrow for all Java Callbacks as recommended commit 3c13e7be0bcd7c5fca03f57cb1b0e3351c2ac3a9 Author: Sven Gothel Date: Mon Oct 2 19:51:18 2023 +0200 Bug 1471: Add a GLEventAdapter for GLEventListener similar to the other Adapter patterns commit 7a2ee84416989476b7b2fd05ce484a5c7fcf81e8 Author: Sven Gothel Date: Mon Oct 2 19:49:04 2023 +0200 Bug 1470 - NEWT/JNI: Perform exception check and rethrow for all Java Callbacks as recommended commit af13e40ee502e69bb12e979e406c1a9793535482 Author: Sven Gothel Date: Mon Oct 2 19:46:00 2023 +0200 Bug 1469 - FFmpeg binding uses ReleaseStringChars instead of ReleaseStringUTFChars for GetStringUTFChars() acquired UTF commit f842843df2c77f5badaace6858d3336151ce0827 Author: Sven Gothel Date: Mon Oct 2 19:42:42 2023 +0200 Bug 1468 - SIGSEGV on use after free when destroying NEWT Window/Display via a native dispatch'ed event like key/mouse/touch input SIGSEGV on use after free of native X11 Display* at XEventsQueued in DisplayDriver.DispatchMessages0. This potentially happens when an application destroys the NEWT Window/Display from an action being called directly from DisplayDriver.DispatchMessages0 (itself), i.e. keyboard or mouse input. DisplayDriver.DispatchMessages0 stays in the event loop and the next XEventsQueued call causes a SIGSEGV due to already deleted display driver connection and hence invalid native X11 Display*. This issue also exist for other Windowing System drivers, where the native (dispatch) method sticks to a loop and still (re)uses the window or display handle. One is WindowsWindow, where touch events are looped, but such handler could have closed the window. Querying the status of a window / display instance before dispatching is not be good enough - resource could already be GC'ed, so we also would need to query jobject status - would imply an addition Java callback +++ This fix: Having the Java callbacks return a boolean with the value Window.isNativeValid(). This way the dispatch logic - can bail out right away w/o using the resource anymore - must be reviewed by myself due to changed Call{Void->Boolean}*(..) invocation change. This review shall resolve potential similar issues. +++ Tested on X11/Linux/GNU, Windows and MacOS with new TestDestroyGLAutoDrawableNewtAWT, which tests all destruction invocation variants. commit b0893eda1035bcb1c6a88e52dac6cd00dfedf696 Author: Sven Gothel Date: Sun Oct 1 19:55:12 2023 +0200 Bug 1468: Demos MiscUtil.destroyWindow() Call GLAutoDrawable.destroy() directly w/o mitigation attempts (off-thread) commit 05a344b98277a19858cd5c4a22e93620ec05a8d5 Author: Sven Gothel Date: Sat Sep 30 01:46:36 2023 +0200 Bug 1467 - GraphUI: Don't de-activate a Shape if became active via 'mouseOver' (mouseDragged) When using a mouse, Scene activates a Shape if mouse is over it (mouseOver). Hence don't de-activate such Shape via mouse-button clicked or released. commit b38890a32ff35e364d5c433a0afa6c9fdda2c90a Author: Sven Gothel Date: Sat Sep 30 01:42:50 2023 +0200 GraphUI: Shape: Add missing 'markShapeDirty()' on setBorderColor() commit 4b8574c63e100f0ef8bb2ad292d71f612e6cfceb Author: Sven Gothel Date: Sat Sep 30 01:42:23 2023 +0200 Bug 1454 + Bug 1464: Maintain a Shape local 'zOffset' and only consider it for sorting w/o actually modifying the position (enogh to be painted on top and for selection) Also use a simplified comparison using only float relational operations w/o NaN/Inf bit-stuff or epsilon, as it should be accurate enough for this cause. This shall also resolve Bug 1454, as we no more modify the position directly but the local zOffset field .. but this has to be seen (data race). commit 972682a9247d3b4e8deb07b4ac1867d090f5ffff Author: Sven Gothel Date: Sat Sep 30 01:32:28 2023 +0200 GraphUI: Group: Add attribute to allow not to relayout if child Shapes are dirty. Only issue validate on childs if theyre shape is dirty commit dd9f05890a157bf1688c3c325512e208cdd628ee Author: Sven Gothel Date: Sat Sep 30 01:30:37 2023 +0200 FFMPEGMediaPlayer: Insert GLSL comment-line documenting the addressed VideoPixelFormat conversion for easier debugging commit 297c48f4fefd1ab59800524ea5f0dd56684d6786 Author: Sven Gothel Date: Sat Sep 30 01:28:59 2023 +0200 Bug 1465 - Graph / GraphUI: Render a Region's ColorTexture in proper aspect-ratio, letter-boxed or zoomed (config) + Bug 1466 Fix color mixing Bug 1465: Region currently simply bloats a given texture to its region AABBox, which renders textures with the wrong aspect ratio. Add facility to program the texture-coordinates to either letter-box or scaled-up (and cut) true aspect-ratio. Default shall be zoom (scale-up and cut), but user shall be able to set a flag in the Region for letter-box. Have the shader clip texture coordinates properly, best w/o branching to soothe performance. See functions.glsl +++ Bug 1466: Current color mix: texture * color_channel * color_static is useless in GraphUI. color_static shall modulate the texture, which works. But in case of color_channel (attribute/varying) we want it to be mixed so it can become the more dominant color for e.g. a border. Desired is: color = vec4( mix( tex.rgb * gcu_ColorStatic.rgb, gcv_Color.rgb, gcv_Color.a ), mix( tex.a * gcu_ColorStatic.a, 1, gcv_Color.a) ); commit 2e46eb1bf06ef07801062122716aa99a6c871646 Author: Sven Gothel Date: Fri Sep 29 03:22:28 2023 +0200 Bug 1430 - Fix Background erase not disabled with AWT GLCanvas and NewtCanvasAWT Commit c5431f46b7bf64f109315ec78461859dd88f202a reduced the disableBackgroundErase(..) to SunToolkit's variation which doesn't work on Windows as it does not act upon the java.awt.Canvas peer post addNotify(). This re-introduces the java.awt.Canvas method via class JAWTUtil.BackgroundEraseControl and its called only after addNotify() on Windows and ASAP for everyone else. Method also calles the SunTookit variation just to be sure. commit a0e6d5883de009d4649d011633090d7660fa229a Author: Sven Gothel Date: Fri Sep 29 00:08:23 2023 +0200 Bug 1431: Fix NewtCanvasAWT resize on X11, broken since commit ad38d1559854985b1131e5b6c7274a392b5bc265 Commit ad38d1559854985b1131e5b6c7274a392b5bc265 introduced XTranslateCoordinates(..) to savely validate the client-space window position against the parent (root). Totally missing in this change was the NEWT child window case since it always used the root-window as the destination. This change tracks the parent-window (valid parent Window or NULL) within the JavaWindow struct and either uses the parent-window if available or the root-window for XTranslateCoordinates(..). This results in the proper client-space position. Validated against - TestGearsES2NewtCanvasAWT - TestBug1431NewtCanvasAWT on Debian 12 w/ Java17. commit c5fde40428937c08486226e9d4488a0ca1a00377 Author: Sven Gothel Date: Tue Sep 26 06:19:11 2023 +0200 GraphUI Demos: Minor refinements.. commit e0664688e45c07b8bc082f960b6790e592dd2034 Author: Sven Gothel Date: Tue Sep 26 05:46:02 2023 +0200 GraphUI Demo UISceneDemo20: Give 'Show FPS' a toggle text 'Hide FPS' .. and have the text resize being of fixed aspect-ratio (like the movie) commit 893903d2ece1193aa87257bd6162754dfb89f9f9 Author: Sven Gothel Date: Tue Sep 26 05:34:24 2023 +0200 GraphUI Button: Support toggle'ed labels and fixed font size scaling for symbols (see setFixedLabelSize()), This allows convenient instantiation of a Button changing its text (or symbol) when toggled, e.g.: UISceneDemo03: + final Button button = new Button(options.renderModes, fontSymbols, + fontSymbols.getUTF16String("play_arrow"), fontSymbols.getUTF16String("pause"), + buttonWidth, buttonHeight, buttonZOffset); + button.setSpacing(symSpacing, fixedSymSize); +++ setFixedLabelSize(..): Sets fixed label font size clipped to range [0 .. 1], defaults to {@code 0, 0}. Use {@code w=0, h=1} when using single symbols from fixed sized symbol fonts! Use {@link #setSpacing(Vec2f, Vec2f)} to also set spacing. The fixed label font size is used as the denominator when scaling.{@code max(fixedLabelSize, fontLabelSize)}, hence reasonable values are either {@code 1} to enable using the given font-size for the axis or {@code 0} to scale up/down the font to match the button box less spacing for the axis. commit 3025466c5c79ffb06c761dbfa380e643d562994a Author: Sven Gothel Date: Tue Sep 26 05:11:42 2023 +0200 GraphUI Button: Increase default spacing a little: x .12 -> .20, y .42 -> .46 commit 42c67292e026325a493ec968e0f46749286e82dc Author: Sven Gothel Date: Tue Sep 26 05:09:44 2023 +0200 GraphUI Shape: Issue onToggleListener on setToggle(..) to complete user experience, add overridable toggleNotify(..) allowing implementations to react before listener. commit 2dc2907618a528f9ad3666c0450be26ecd850602 Author: Sven Gothel Date: Tue Sep 26 05:07:04 2023 +0200 GraphUI Shape: Add remaining binary states to bitfield to preserver footprint .. See commit e5eadcdaa615dbeb762885b50435a1f79d6ca895 commit 949558bc0bcd10a24293b5880c90940008d0118a Author: Sven Gothel Date: Tue Sep 26 04:53:06 2023 +0200 Bug 1463 - Graph Font: Whitespace or undefined Glyphs shall not cover (any) height exceeding overall CharSequence TypecastFont using `metrics.getAscentFU() - metrics.getDescentFU()` for ascent used for all undefined and whitespace Glyphs w/o a spatial outline, leads to a potential exceeding height compared to the actual used bounding box of the rendered text. This in turn leads to layout issues, e.g. button labels are placed too low. Solution: - Whitespace/Undefined: Drop full height 'metrics.getAscentFU() - metrics.getDescentFU()', b/c of non-existing shape height. - Otherwise, layout on AABBox or created empty shape would pick up such default hhea-table ascent which might exceed actual string height. Sideeffect would be if user relies on height of a whitespace. However, knowing this fact - a user may always pick the hhea-table's ascent metric values as exposed in Font and Font.Metric. This resolves remaining layout issues, including button labels. commit 5f876580500471531dc6973eda7eb4d9878b871d Author: Sven Gothel Date: Tue Sep 26 04:45:28 2023 +0200 GraphUI: Mark some more methods final in Shape + GraphShape commit e5eadcdaa615dbeb762885b50435a1f79d6ca895 Author: Sven Gothel Date: Tue Sep 26 04:20:14 2023 +0200 GraphUI Shape: Use a bitfield for the many binrary states instead of boolean to preserver footprint .. commit 2a9382b4e5d0387bfd939fdbdf281b730b67ee9b Author: Sven Gothel Date: Tue Sep 26 04:16:20 2023 +0200 GraphUI GraphShape: Factor out static addRectangle(..) to be reused for debugging purposes commit 306ab40451f79dc6e41113efd597bddbd79514a5 Author: Sven Gothel Date: Tue Sep 26 04:14:05 2023 +0200 GraphUI Layout: Simplify non-centered negative-offset (underline) removal commit 1beed5ba82b55a292bb1f916d615f152139a7060 Author: Sven Gothel Date: Sun Sep 24 17:25:01 2023 +0200 Bug 1462 / 1462: GraphUI Demo UISceneDemo20: Replace some text in buttons with symbols commit 397bd0df305e8f5b15e98523eb94cfad2ee5bb41 Author: Sven Gothel Date: Sun Sep 24 17:02:22 2023 +0200 Bump make/scripts/tests.sh commit 176ea9245a201bbba381245bc46657b30de9f4b3 Author: Sven Gothel Date: Sun Sep 24 16:59:56 2023 +0200 GraphUI Demos UIMediaGrid01: Demos multiple MediaButton in a grid - performance & stability commit 36d8475adaf0abb5eae93b5c6a110e21c1b32399 Author: Sven Gothel Date: Sun Sep 24 16:52:21 2023 +0200 Graph Font: API doc: Fix typos 'Return ' .. to 'Returns `. commit 9db8aeaf345a373029bd497c5125f8471aecbd4e Author: Sven Gothel Date: Sun Sep 24 16:51:37 2023 +0200 Graph Font Tests: Fix missing codepoint -> GlyphID conversion commit a8de1673ca83475227fcc914fd94a9a0be1cba79 Author: Sven Gothel Date: Sun Sep 24 16:50:49 2023 +0200 Bug 1462 - Graph Font: Add name + codepoint to ID and Glyph mapping plus traversing through all Glyphs See UISceneDemo03 new Button(options.renderModes, fontSymbols, " "+fontSymbols.getUTF16String("pause")+" ", buttonWidth, buttonHeight); // pause Unicode codepoint symbol is also contained in FontGlyph commit 0c8700589abffe13e42f18d3c755541268d44a34 Author: Sven Gothel Date: Sun Sep 24 12:01:53 2023 +0200 Graph Fonts: Add 'Material Icons Round-Regular' (APL-2 license) and use it in UISceneDemo03 via hard coded unicode symbol numbers commit 652cfd2f307e0a34537ff8ec5ae2d023cfc2ce5d Author: Sven Gothel Date: Sun Sep 24 08:30:52 2023 +0200 Graph Fonts UbuntuFontLoader: Factor out FontLoaderImpl and have get(..) synchronized for static fontMap field access commit c9bf488a916ee1a27dc1ce46467b0a40a365a492 Author: Sven Gothel Date: Sun Sep 24 08:21:51 2023 +0200 Graph Fonts: Remove not required text files from Ubuntu fonts commit 55052919c8977dcf103f53a44f0391de39eb3979 Author: Sven Gothel Date: Sun Sep 24 07:29:09 2023 +0200 GraphUI Demo FontView01: Add mode showing the Glyph's name below in grid Yeah, for good eyes only .. but enough to label the Greek alphabet :) commit b87b41eb55959f4fbf70e4ed868701545e6ed687 Author: Sven Gothel Date: Sun Sep 24 06:59:19 2023 +0200 GraphUI Label: Condense getUnscaledGlyphBounds() commit bcb71a24ff6c211ea67b4916bd7e43e502f7bfe5 Author: Sven Gothel Date: Sun Sep 24 05:46:52 2023 +0200 Bug 1460 - GraphUI Shape: Allow keeping aspect-ratio at resize For certain shapes the aspect-ratio shall be kept, e.g. MediaButton etc. commit 55b0c752721b782295e856dda5b2791c879cec87 Author: Sven Gothel Date: Sun Sep 24 05:43:29 2023 +0200 GraphUI Shape: Crossref input modifier funcs in API doc; Condense simple setter/getter commit 1911d5dfb53c7757eedfebe289074661e125bea0 Author: Sven Gothel Date: Sun Sep 24 05:41:27 2023 +0200 GraphUI MediaButton: Return this for chaining on setter commit 3dc4d80b0b8b0d4d82368b229ee403bf5937e1de Author: Sven Gothel Date: Sun Sep 24 03:36:58 2023 +0200 GLMediaPlayer: Stop audio streaming to AudioSink on zero volume (Flush on mute and play on un-mute) commit ff36502e7ffeb9108368c517c401fad120b73d0a Author: Sven Gothel Date: Sun Sep 24 03:26:02 2023 +0200 UISceneDemo20 Use onToggle(..) for media-button (audio on/off) as well as use direct lambdas for all its other listener commit f29347ff72a13fa8344d21dc3589af3ff8b370cf Author: Sven Gothel Date: Sun Sep 24 02:39:26 2023 +0200 Bug 1459 - GraphUI Shape: Add active (pointer over/left) state and callback Listener We already track this state within Scene, i.e. a shape is marked active when pointer is over it and released from active-duty when pointer left. Scene shall notify the Shape so it can track this state locally and also forward this event to the user via the typical Shape.Listener callback. commit 9f900c7f88d70808e24ed8b48087126dad0c3188 Author: Sven Gothel Date: Sun Sep 24 02:39:00 2023 +0200 Bug 1454 - GraphUI Scene: Make active ZOffset scale configurable commit 2e52e801cfb14a96c60bf3e003af221efeddf3c3 Author: Sven Gothel Date: Sun Sep 24 02:36:17 2023 +0200 GraphUI Button: Remove redundant ctors and methods. ZOffset shall be simply given, calculated by caller commit 1281e1ace2fbc884dd3ad4b561054a19f8e498c5 Author: Sven Gothel Date: Sun Sep 24 02:35:41 2023 +0200 UISceneDemo20: Set proper z-epsilon for all Buttons on reshape to use the perfect minimum label-z-offset commit 13a81396bd5183d1f2c00c517936c54efaa61db3 Author: Sven Gothel Date: Sat Sep 23 20:44:09 2023 +0200 Bug 1455 - GLMediaPlayer: Add isAutioMuted() query on volume and earmark audio-volume if not initialized and set it when AudioSink becomes available Setting the audio volume before initialization shall impact GLMediaPlayer when it becomes initialized. Further add a query if audio is muted, merely based on volume. commit 84b26f9efcd62cc8c41bf3cd867482080d16d7a0 Author: Sven Gothel Date: Sat Sep 23 20:38:50 2023 +0200 Bug 1454 - GraphUI Scene: Elevate active (selected) shape (add z-offset) and select (pick) in Z descending order Picking (select) a shape shall process all shapes in Z descending order, i.e. top shape first. This is a bug currently. Note: Picking (selecting) a shape using a (mouse-)pointer device is active by mouse-moved and not only mouse-clicked. Therefor, we select shapes by mouse-over. The active selected shape shall have an elevated Z offset to be rendered on top of the others on same plane. - This avoids them being rendered below others while moving them around etc. - This also avoids flickering of overlapping shapes with mouse over. - This stabilizes the UI experience commit 3ecb8e9d1bfd1149f32b05c13c5ec1be6c0cab54 Author: Sven Gothel Date: Sat Sep 23 04:02:23 2023 +0200 GraphUI Layout: Add UILayoutBoxGridOffset01, showing behavior w/ shapes not starting at 0/0 but at an offset OK for centered or non-zoomed .. as used w/ FontView01 to show the underline space. Sure, Fill (zoom) w/o center on offset shapes is tricky and a matter of definition and taste, but in general useless. commit 6c97c5fa201d221a37773db54994d27e34ba86c3 Author: Sven Gothel Date: Sat Sep 23 03:11:57 2023 +0200 Bug 1452: GraphUI Shape: Rename setMvTransform(..) -> setTransformMv(..), aligning w/ PMVMatrix4f naming .. Original name was simply setTransform(..), so now let's keep using the suffix denominating the matrix while keep the main subject/verb upfront. Was an off reading .. commit 0d89f1ebae1a790151551ad9b027105d91972877 Author: Sven Gothel Date: Sat Sep 23 03:05:40 2023 +0200 GLMediaPlayerImpl: Recover lost StreamException information from commit 77eab439147af69089fa3ebf07d64ee3b4d67bfd commit 0110b2970935040aac5ee0bfa8757982c092b939 Author: Sven Gothel Date: Sat Sep 23 03:04:05 2023 +0200 Bug 1452: PMVMatrix4f: Drop redundant unused mulWith*(Vec*...) 'v_out = M * v_in', user can simply get the desired matrix and apply its mulVec*(..) operation commit f2a29726c42c91694ad4e3fa9b016708876d60da Author: Sven Gothel Date: Sat Sep 23 03:02:07 2023 +0200 GraphUI Button.getSubString(): Expose labelZOffset commit cbb0035b5c5df6eada04e38a3478091cca0fe9c5 Author: Sven Gothel Date: Sat Sep 23 03:01:39 2023 +0200 Bug 1452: GraphUI Scene DefaultPMVMatrixSetup.set(): Fix regression of commit 5d6e8a367c03644740187e500c6de5d3ac039d5e - pmv.glMatrixMode(GLMatrixFunc.GL_PROJECTION); - pmv.glLoadIdentity(); - pmv.gluPerspective(angle, ratio, zNear, zFar); - pmv.glTranslatef(0f, 0f, scene_dist); + pmv.loadPIdentity(); + pmv.perspectiveP(angle, ratio, zNear, zFar); + pmv.translateMv(0f, 0f, scene_dist); ^^ Was projection matrix. Fixed. Note: resolved via TraceGL and comparing output -> P matrix differed, here translation. commit e9e68d786716e743c7c8e93bf3a882cc6ef2f979 Author: Sven Gothel Date: Fri Sep 22 16:44:22 2023 +0200 Bump oculusvr-sdk commit c505b85fc4c5f8bc1de6ae7f571d33e401c04e56 Author: Sven Gothel Date: Fri Sep 22 16:43:36 2023 +0200 OculusVR: Adapt to latest GlueGen changes commit e4267876d0aca64e9cfa8fa9be0bc8d6e3309b83 Author: Sven Gothel Date: Fri Sep 22 16:14:26 2023 +0200 Demos MovieSimple, MovieCube: Use Uri.tryUriOrFile(..) and have user just use '-url YOUR_LOC' for file and URL. MovieSimple: Just use multiple '-url LOC' on commandline to determine window-count and so forth .. commit 77eab439147af69089fa3ebf07d64ee3b4d67bfd Author: Sven Gothel Date: Fri Sep 22 16:10:53 2023 +0200 GLMediaPlayerImpl: Replace StreamWorker thread management with GlueGen's new WorkerThread, helping to simplify code commit 9d351d095398a2899fe662dc31fcc725d2a73a85 Author: Sven Gothel Date: Wed Sep 20 20:15:12 2023 +0200 GraphUI Demo FontView01: Re-add Margin for glyphInfoBox (text) and use Group's getShapeCount() .. commit 6c81be1f822ae4e9824c20a8016881047e5728cf Author: Sven Gothel Date: Wed Sep 20 20:12:19 2023 +0200 GraphUI Test: FontViewListener01: Align to FontView01 .. fix invsible GlyphShape by adding a BoxLayout w/ Center and parent Group w/ GridLayout FillCenter commit be37d52f188b73ce2e6ae58cad60f0400da61d68 Author: Sven Gothel Date: Wed Sep 20 19:57:56 2023 +0200 GraphUI GlyphShape.addShapeToRegion(): In case the Font.Glyph has no shape, at least add an empty region to avoid an NPE commit 5eabbd8d3fc2b1e670b7641575efefe3fe235980 Author: Sven Gothel Date: Wed Sep 20 19:52:34 2023 +0200 GraphUI Container: Add getShapeCount() and add API doc .. commit 5d6e8a367c03644740187e500c6de5d3ac039d5e Author: Sven Gothel Date: Wed Sep 20 19:51:55 2023 +0200 Bug 1452 - Decouple math functionality to 'com.jogamp.math' to be toolkit agnostic (PMVMatrix, Matrix4f, Vec4f, ..) Math functionality (PMVMatrix, Matrix4f, Vec4f, ..) - shall be used toolkit agnostic, e.g. independent from OpenGL - shall be reused within our upcoming Vulkan implementation - may also move outside of JOGL, i.e. GlueGen or within its own package to be reused for other purposed. The 'com.jogamp.opengl.util.PMVMatrix' currently also used to feed in GLUniformData via the toolkit agnostic SyncAction and SyncBuffer shall also be split to a toolkit agnostic variant. An OpenGL PMVMatrix specialization implementing GLMatrixFunc can still exist, being derived from the toolkit agnostic base implementation. +++ Initial commit .. compile clean, passing most unit tests. commit bbe845846ffc00807395a5070a7352c6bbe7e4ef Author: Sven Gothel Date: Tue Sep 19 07:31:53 2023 +0200 GraphUI Demo Fontview: Fix '-showUnderline' mode; Fix and simplify addGlyphs(..) loop; Add Margin on glyphShapeBox commit e676a65eac2bfa2abbfcd346492868ed17dc4667 Author: Sven Gothel Date: Tue Sep 19 07:30:16 2023 +0200 GraphUI Layout (Box/Grid): Adjust bottom-left offset according to center-axis - Remove the negative or positive delta on centered axis. - Only remove negative offset of non-centered axis (i.e. underline) commit 81702c02e5111b6b5db8cbcc94e06472ee566b0a Author: Sven Gothel Date: Tue Sep 19 05:35:55 2023 +0200 GraphUI Demo FontView: Prescan available countour glyphs for fluent scrolling .. commit 52d3dd3b3d684d6ba37e573764c3006c4ba20494 Author: Sven Gothel Date: Tue Sep 19 05:34:36 2023 +0200 GraphUI GridLayout: Disable TRACE_LAYOUT commit 162f8e309b67c333a482d636e59d207a6c5924e7 Author: Sven Gothel Date: Tue Sep 19 04:53:40 2023 +0200 GraphUI GridLayout: Fix scaled non-center: Only add center offset if requested and avoid double-add. commit 376554c6a5bd25edd5490f51118a92ef93a0fc33 Author: Sven Gothel Date: Tue Sep 19 04:51:56 2023 +0200 GraphUI Layout Tests: Use blue for group border and black for shape border; UILayoutGrid01: Add Padding/Non-Padding comparison commit b81cf8ca025f2a525a192ec24c63f95cb54b7444 Author: Sven Gothel Date: Sun Sep 17 01:46:25 2023 +0200 etc/test.bat: Override test.log logfile, don't append commit dbe9eee971b6ac7efa01ccb32bc16577f13c53dd Author: Sven Gothel Date: Sun Sep 17 01:45:34 2023 +0200 FontView01: Have all layout performed by our Box/Grid-Layout classes w/o manual calculus (the goal) In some cases we still query a previous added box for width or height though. But in general, using the Group w/ Box- or GridLayout and Fill/Center relieves us from manually scaling things. commit 3309ea8e83241f34cb1e83b660c633b3778f34df Author: Sven Gothel Date: Sun Sep 17 01:39:33 2023 +0200 GraphUI Label: Add convenient methods getUnscaledGlyphBounds(..) commit 06b9e84c635cffc4a51beb6a38b5f5c111edcb7f Author: Sven Gothel Date: Sun Sep 17 01:38:51 2023 +0200 GraphUI Layout: Remove unused leftover var and complete GridLayout ctor commit 6f6841941abf326ebdc09173fe4e7c678d2c5569 Author: Sven Gothel Date: Sat Sep 16 15:43:48 2023 +0200 GraphUI GlyphShape: Add copy-ctor variant commit aac1265340ae2ee1cad6bbf89369ba0288a6a290 Author: Sven Gothel Date: Sat Sep 16 15:40:48 2023 +0200 Debug.debugExplicit(): Define and use explicit symbol debug flag; Use it for certain debug output to keep most silence for debugAll() commit e5de90b67efe8e8ca518159b3a73295d751764c1 Author: Sven Gothel Date: Sat Sep 16 15:38:21 2023 +0200 GraphUI BoxLayout: Margin is only ignored for center Alignment w/o Fill scale. {Box,Grid}Layout: Always remove Bottom-Left delta and refine API doc of incl scale behavior GraphUI BoxLayout: Margin is only ignored for center Alignment w/o Fill scale. Margin outside of a shape is not scaled and hence must be considered when using Fill scale. {Box,Grid}Layout: Always remove Bottom-Left delta Previously we were only dropping the negative extend. However, since our scale and center algo uses the AABBox width and height, which excludes the bottom-left delta, we have to drop such offset. TODO: Otherwise, we would need adjust for the bottom-left extend when NOT centering for each direction! This might be a useful enhancement in case one likes to drop shapes as-is w/o centering. {Box,Grid}Layout: Refine API doc of incl scale behavior commit 1e55d2a6a157cb9d70f7a879cc9a9bc97db5413d Author: Sven Gothel Date: Sat Sep 16 14:03:25 2023 +0200 GraphUI Group.validateImpl(): Pick RenderMode for border from 1st Shape if required (hasBorder() and null border yet) This avoid changing the RenderMode and hence actual shader rendering the item. commit d1cfa99135154e8e651e86ebc48a0f635fad38aa Author: Sven Gothel Date: Sat Sep 16 14:00:45 2023 +0200 GraphUI Group: Override isShapeDirty(), performing a deep dirty state update on all group member to allow validate to function commit 4e94635bb7d0f7161d587dcd923b1c1ab275e7bf Author: Sven Gothel Date: Sat Sep 16 13:42:49 2023 +0200 make/build.xml: Fix target 'all.but-onejar', adding targets 'one.lib.dir' and 'test.compile' to have native libs in place and update tests/demos 'all.but-onejar' was introduced in commit 29c9bc1bc6560f40d011a5e3ea66f085a710265e commit 29c9bc1bc6560f40d011a5e3ea66f085a710265e Author: Sven Gothel Date: Tue Sep 5 02:56:12 2023 +0200 make/build.xml: Add target 'all.but-onejar', allowing a quick build w/o the all-jar files as usable with atomic jars like: make/scripts/tests.sh `USE_BUILDDIR=1` commit ddd6cac8cc658ce542cb98e85f7d262f9917d37a Author: Sven Gothel Date: Tue Sep 5 02:54:42 2023 +0200 GraphUI Layout: Fix BoxLayout scale, margin and padding; Add same padding behavior to BoxLayout and GridLayout. For all: - Padding is applied to each {@Shape} via {@link Shape#setPaddding(Padding)} if passed in constructor BoxLayout: - Optionally centered {@link Alignment.Bit#CenterHoriz horizontally}, {@link Alignment.Bit#CenterVert vertically} or {@link Alignment#Center both}. - Optionally scaled to cell-size if given and {@link Alignment#Fill} - Margin is ignored on dimension with center {@link Alignment} - Not implemented {@link Alignment}: Top, Right, Bottom, Left GridLayout: - Optionally centered {@link Alignment.Bit#CenterHoriz horizontally}, {@link Alignment.Bit#CenterVert vertically} or {@link Alignment#Center both}. - Optionally scaled to cell-size if given and {@link Alignment#Fill} - Without cell-size behaves like a grid bag using individual shape sizes including padding - Can be filled in {@link Order#COLUMN} or {@link Order#ROW} major-order. - Not implemented {@link Alignment}: Top, Right, Bottom, Left Changes to Group.Layout interface: - Added preValidate(Shape) allowing to prepare the shape before validation, used to inject Padding Changes to Margin: - Removed the complex CENTER property and using Alignment in BoxLayout as well Changes to BoxLayout: - Using Alignment +++ Tested via UILayoutBox01 and UILayoutGrid01, try the tooltip by clicking on the group's description label. commit f39a084c6a34a083698ca56e9122642e839234c2 Author: Sven Gothel Date: Tue Sep 5 02:34:44 2023 +0200 GraphUI Layout: Html'ify API header of Gap and Padding commit 8439522d73b60bcf61cc59550df6297bbafe73fb Author: Sven Gothel Date: Tue Sep 5 02:30:51 2023 +0200 GraphUI Layout Alignment: Separate center alignment to horizontal and vertical commit d741d4869221f218d76c3b8c38c83116c07598c0 Author: Sven Gothel Date: Tue Sep 5 02:29:52 2023 +0200 GraphUI Shape: Add setScale(..) and scale(..) with Vec3f for convenience; Add border-color in toString() if hasBorder() commit b91fe4cd16646f134ce8242af30a9f69ecc6ca3e Author: Sven Gothel Date: Tue Sep 5 02:28:41 2023 +0200 GraphUI Scene: Add invoke(boolean wait, GLRunnable) for convenience using GLAutoDrawable.invoke(..) commit 05bb1255e9feab213fb2cc463049623a57c2e1fa Author: Sven Gothel Date: Tue Sep 5 02:27:44 2023 +0200 GraphUI Scene: Only set dbgBorderThickness on shape if not zero and shape has no border yet, i.e. don't override commit 6d9c0fc96485da515789921eb9d3ef8988807e54 Author: Sven Gothel Date: Tue Sep 5 02:26:42 2023 +0200 GraphUI: Use z-top of bounding box for border rectangle, not z-center commit e06d1d07125fb9489ea45d05fb40a562e2c4ca46 Author: Sven Gothel Date: Mon Sep 4 06:45:29 2023 +0200 FloatUtil.abs(a): Mark as deprecated, use Math.abs(a) directly. We assume it is an intrinsic + branch-less implementation Expected implementation is - return Float.intBitsToFloat(Float.floatToRawIntBits(a) & 0x7fffffff); replacing old implementation - return (a <= 0.0F) ? 0.0F - a : a; .. also market as @IntrinsicCandidate Hence we shall leave it to the JRE core-lib implementation... commit ba1c13b4eb4db2f15d2ee72d768748ab1f5d5639 Author: Sven Gothel Date: Mon Sep 4 05:40:32 2023 +0200 GraphUI Margin, Alignment: Reuse ctor for default-ctor commit 4ca9efd6759856f46eb0cedde28998bc2b68d2cb Author: Sven Gothel Date: Mon Sep 4 05:39:05 2023 +0200 GraphUI: Button/Label: Complete String -> CharSequence type change for text, rename Button set{Label->Text}(..), adjust demo/text code commit c3bb3fb871a92a71e7a6b05897a3dd9b62842fc5 Author: Sven Gothel Date: Mon Sep 4 05:18:40 2023 +0200 GraphUI GraphShape: Split renderModes -> final renderModesReq + mutable renderModes, allowing the latter to be adjusted e.g. in case a color-channel is required commit d5b17eddf7e7f1c33b269a3a2ed8eca959c6d639 Author: Sven Gothel Date: Mon Sep 4 05:16:33 2023 +0200 GraphUI Enhance: API doc; Scene/Button Z-offset and -epsilon; Push temp AffineTransform to local method; Simplify BaseButton setCorner(0) -> setPerp(); Protected abstract ctor .. commit b161ec3e6527ddfca0de10961de2c984016fe88b Author: Sven Gothel Date: Sun Sep 3 08:38:21 2023 +0200 GraphUI Button: Add label bounds to own shape (adds used z-range) commit bc4a97a3751b32a7825a41481959f04ff3efb3d2 Author: Sven Gothel Date: Sun Sep 3 08:37:28 2023 +0200 GraphUI Scene: Expose Z-Epsilon API for default and current PMVMatrixSetup values; Button add Z-Epsilon API for ctor and setLabelZOffset(..) commit 604b7cd0a4062a5aa44d669a51882f7f80efd08f Author: Sven Gothel Date: Sun Sep 3 08:33:57 2023 +0200 GraphUI Shape.ZAscendingComparator: Use (faster) FloatUtil.isEqual2(a,b) and consider Z-scaling commit deeb9db8ed288dcfbbb478c01b4508a691d81b80 Author: Sven Gothel Date: Sun Sep 3 08:32:48 2023 +0200 GraphUI Shape: Enhance API doc for colors commit 47233ea7014e34adca8a5c1d2323a57e9de1c7fa Author: Sven Gothel Date: Sun Sep 3 08:31:24 2023 +0200 FloatUtil.isEqual(..): Rename raw {isEqual->isEqualRaw}(a,b) varianr w/o EPSILON; Add isEqual(a,b) w/ default EPSILON; Use it where applicable Also add isEqual2(a,b) w/o corner cases (NaN, Inf) used for comparison in Graph Outline, OutlineShape and later GraphUI Shape. commit e6087583dc06c823f54bb6206af2acb0e2119b4c Author: Sven Gothel Date: Sun Sep 3 02:39:41 2023 +0200 GraphUI Scene: Generalize its interface PMVMatrixSetup and usage of its DefaultPMVMatrixSetup w/o orthogonal alike scale-back but fully parametric commit c059585e246ed707ba490f9d2bae3a8b90e949a7 Author: Sven Gothel Date: Sun Sep 3 02:30:07 2023 +0200 GraphUI Scene: Pass sampleCount in ctor variant and refine API doc, clip to [1..8]; Add clarity in Region; Demos CommandlineOptions adds actual graphAASamples set and utilized commit ef63d2e288fe47762d9cf743d11cd01f8d255349 Author: Sven Gothel Date: Sat Sep 2 21:27:14 2023 +0200 GraphUI Demos: Proper use of CommandlineOptions commit d891e70a99dfcebc205f97ed42b91111710c5176 Author: Sven Gothel Date: Sat Sep 2 20:26:23 2023 +0200 Demos: CommandlineOptions: Add total_duration command line option '-duration ' in seconds commit 71576e94af890e2a4a98225ed258445ba7db0f26 Author: Sven Gothel Date: Sat Sep 2 20:24:23 2023 +0200 PMVMatrix.gluPerspective(): Redfine angle in radians instead of degrees ** API Change ** Since this is an extra implementation of PMVMatrix and not of GLMatrixFunc, we shall use the default ISO dimension avoiding conversion. This alsi redefined Graph's RegionRenderer.reshapePerspective() angle definition from degrees to radians commit f6dd8e9562d7e0bbf681c268f40ff4c819057915 Author: Sven Gothel Date: Fri Sep 1 11:57:47 2023 +0200 Graph Font + Glyph: Fix whitespace definition: Include 'no original underlying shape' and add API doc Regression was introduced with commit 920e529516bb264f04138ed1caca80d4925e3773 'Robust detetection and API definition of non-contour/whitespace Glyphs'. Issue was mistaken a glyph as undefined if not having an underlying shape, which is true for some fonts (e.g. 'space'). +++ Also Use post table's name if no underlying shape exists. commit 5d83a6271495fe43141ee2c7f301f16ea0389134 Author: Sven Gothel Date: Fri Sep 1 11:36:27 2023 +0200 GraphUI Demo: Rename UISceneDemoU01a -> UIGraphDemoU01a, not using GraphUI's Scene but manual GLEventListener etc, add a few Glyph tests commit 35746b3a618d94b03fc1ab465114d4d97540f45d Author: Sven Gothel Date: Mon Aug 28 23:38:47 2023 +0200 GraphUI Demo FontView01: Fix '-showUnderline', i.e. glyphListener shall use the last element in container, the GlyphShape commit d45e0ae4046f1bd42a3b5107984b77c4f5ee0276 Author: Sven Gothel Date: Mon Aug 28 23:19:25 2023 +0200 GraphUI Demo FontView01: Enhance usability and refactor: Add left-column glyphSymbol number, mouse-wheel scrolling, Fitting the font info, .. - Add mouse-wheel scrolling, for one-line and with control for one page. - Add left-column glyphSymbol number, for orientation while scrolling - Fitting the font info, i.e. consider width + height Refactoring further isolated the addGlyphs(..) functionality in same method, etc. Used to test Graph's capabilitry to properly read, detect and visualize certain fonts. Previous Graph fixes were triggered by this procedure, i.e. commits - 733cc5272cfed10fa07b707e29fd756f44581508 - 920e529516bb264f04138ed1caca80d4925e3773 - 7fd51917b0cc85c3dc3d07592093a62b213d1ea5 Further the proper detection of non-contour/whitespace allows FontView to skip them and only show usably Glyphs without noise. commit f66947ef42fa827dafd359061d3b60efe4c7e432 Author: Sven Gothel Date: Mon Aug 28 23:12:38 2023 +0200 Graph Font: Make TypecastRenderer.DEBUG package private to be used by TypecastFont commit 7fd51917b0cc85c3dc3d07592093a62b213d1ea5 Author: Sven Gothel Date: Mon Aug 28 22:59:57 2023 +0200 GraphUI Shape: Show dirty-state in getSubString() commit 920e529516bb264f04138ed1caca80d4925e3773 Author: Sven Gothel Date: Mon Aug 28 22:57:53 2023 +0200 Graph Font + Glyph: More robust detetection and API definition of non-contour/whitespace Glyphs (detect and allow to skip 'em) We also drop shapes for both, but for id 0 (unknown). commit 733cc5272cfed10fa07b707e29fd756f44581508 Author: Sven Gothel Date: Mon Aug 28 22:54:36 2023 +0200 Graph Loop: Make initFromPolyline() and locateClosestVertex() more robust, report error but do not crash. This behavior has been evaluated with a few fonts and the WIP FontView01 demo application. commit d6056f4daf2bd6f19cc3f8ff7ca1a812d8db9695 Author: Sven Gothel Date: Sun Aug 27 21:06:13 2023 +0200 UISceneDemo03: Detail demo description, add blog entry commit 93087a60bb9397155b4a68eb03991ada2563dfe9 Author: Sven Gothel Date: Sun Aug 27 16:02:29 2023 +0200 GraphUI Demo: UISceneDemo03: Add optional audio (only) via '-audio ' using our GLMediaPlayer (FFmpeg + JOAL/OpenAL) commit 0054a35d22ae74b8af211211715d702ef05b88a7 Author: Sven Gothel Date: Sun Aug 27 13:23:16 2023 +0200 make/scripts/test-fat-jars.sh: Adjust UISceneDemo03b -> UISceneDemo03 commit 7cba3e8e8bc0f224cc4be8bd1290068ed5429365 Author: Sven Gothel Date: Sun Aug 27 13:07:26 2023 +0200 GraphUI: Button: Reduce default DEFAULT_LABEL_ZOFFSET from 0.005f -> 0.0001f, have to check if working on all platforms (TODO) Otherwise, we have to resolve the 'one Region' for the Button (backgroung shape + text on top) implementation with two OutlineShapes. As of now, we use the z-offset of the text above background to avoid z-fighting. This is like a manual application of glPolygonOffset(..) directly on the produced vertices. commit 4448010d8d787c73d48f54b296c3a8c2499aeaa0 Author: Sven Gothel Date: Sun Aug 27 12:55:50 2023 +0200 GraphUI: Extract generalized AnimGroup functionality from UISceneDemo03*, providing sets of animated Shapes (GlyphShape or any other) Hardcoding the whole animation process into user code is not feasible to allow a quick add-on. GraphUI's new AnimGroup is a Group and allows to add multiple AnimGroup.Set of AnimGroup.ShapeData. +++ AnimGroup.ShapeData holds the actual Shape and its start- and target position as well as its active animation state and an optional user object attachment. AnimGroup.Set holds a list of AnimGroup.ShapeData as well as the animation properties and states like acceleration and velocity for translation and angular operations. It also contains the AnimGroup.LerpFunc for linear interpolation of the next position as called via AnimGroup.tick() over all sets. AnimGroup.LerpFunc is intended to perform the linear interpolation for the next position, either user provided or one of the provided may be used, i.e. TargetLerp, ScrollLerp and SineLerp. To setup the start- and target position for each AnimGroup.ShapeData, a AnimGroup.ShapeSetup is used - user implementated or one of the build-in of AnimGroup.addGlyphSetHorizScroll01(..), AnimGroup.assGlyphSetRandom01(..). +++ UISceneDemo03 consolidated UISceneDemo03 + UISceneDemo03b (deleted) and shows the following AnimGroup capabilities: - Two repetitive scrolling text lines. One text shorter than the line-width and one longer. - One line of animated rectangles, rotating around their z-axis - A text animation assembling one line of text, each glyph coming from from a random 3D point moving to its destination all at once including rotation. - One line of text with sine wave animation commit 74e9bd8a46e20666700ce79e22d08a2a05f2c26f Author: Sven Gothel Date: Sun Aug 27 13:04:17 2023 +0200 Add TestVec3f01NOUI: This test shall be enhanced, only priliminary angle tests for now commit 2f62d6f6f3f2fd56f87e9ec40023ca5b7bec9252 Author: Sven Gothel Date: Sun Aug 27 13:01:32 2023 +0200 AABBox: Fix intersects2DRegion(..), add resize{Height, Width}(..) and AABBox ctor using Vec3f low and high intersects2DRegion(..) got the passed width and height wrong, i.e. given object low position >= this-low position and given object high position including width/height <= this-high position is required to match for intersection. commit 72980712910d1c49e324f1463d987be3ea280abd Author: Sven Gothel Date: Sun Aug 27 12:57:39 2023 +0200 Vec3f: Add UNIX_X and UNIX_X_NEG, enhance API doc commit 9ed41468fbf3d93555ac6c16630b25220f55aa39 Author: Sven Gothel Date: Sun Aug 27 12:57:10 2023 +0200 Quaternion: Add rotateByAngleNormalAxis(..) variant using Vec3f axis commit c13fed83f20db55ee0b0b548ef6526a95fd2d6c4 Author: Sven Gothel Date: Sun Aug 27 12:56:39 2023 +0200 GraphUI: Use thread-save and lock-free CopyOnWriteArrayList for List, allowing off-thread mutation commit faa80aa8c6e5231ed4c00df6ccb0fb715974eb40 Author: Sven Gothel Date: Fri Aug 25 18:44:31 2023 +0200 AABBox: Add set(AABBox) commit dafb6cc85b4f183d12bfb34e702f01860fe2b59c Author: Sven Gothel Date: Fri Aug 25 18:44:12 2023 +0200 GraphUI: Shape: Add runSynced(Runnable); Add setPMVMatrix(..) to setup complete PMVMatrix, use it in getSurfaceSize(..), shapeToWinCoord(..) and winToShapeCoord(..) commit 090e0368895ccfe46a852cc66c7e2e6a78ee01be Author: Sven Gothel Date: Fri Aug 25 18:42:38 2023 +0200 GraphUI: Group API doc + remove GlyphShape's redundant many getOrigPos() variants commit ca49bcc03029156e52dfc29f886501548e9bf397 Author: Sven Gothel Date: Wed Aug 23 05:45:55 2023 +0200 Vec[234]f: Add scale(Vec[234]f s) variant for convenience commit 64f7f17dc2db744106f1c71b576ef8e29a8854bd Author: Sven Gothel Date: Wed Aug 23 05:41:24 2023 +0200 TestSWTAccessor02NewtGLWindow: Use lambda for SWTAccessor.invokeOnOSTKThread(..) commit fd93c0692ea3ed32bcbd1f08cca2290b6da3d451 Author: Sven Gothel Date: Wed Aug 23 05:40:52 2023 +0200 Demos: Use Runnable lambda for window.destroy() off-thread and use key-symbols F4, ESC and Q to trigger off-thread window.destroy() commit f8434687e144967164b770e4d323b77fd9d295da Author: Sven Gothel Date: Sat Aug 19 17:45:34 2023 +0200 UISceneDemo03b: Add a little more customization ..