Bernhard Haumacher (12): Documentation for `HeadTable` Added JavaDoc references, split version fields according to spec. Getters for macStyle bits, enhanced docu for fontDirectionHint. Added documentation to the 'glyf' table and structures. Added documentation to the HmtxTable. Added offset table as member to the font. Bugfix: Format 14 header of Cmap table is not skipped correctly. Improved documentation of Cmap table. Added documentation to the 'loca' table. 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 Added rudimentary documentation to the CFF table. Enhanced dump format of cmap table. Sven Gothel (189): UISceneDemo03b: Add a little more customization .. Demos: Use Runnable lambda for window.destroy() off-thread and use key-symbols F4, ESC and Q to trigger off-thread window.destroy() TestSWTAccessor02NewtGLWindow: Use lambda for SWTAccessor.invokeOnOSTKThread(..) Vec[234]f: Add scale(Vec[234]f s) variant for convenience GraphUI: Group API doc + remove GlyphShape's redundant many getOrigPos() variants GraphUI: Shape: Add runSynced(Runnable); Add setPMVMatrix(..) to setup complete PMVMatrix, use it in getSurfaceSize(..), shapeToWinCoord(..) and winToShapeCoord(..) AABBox: Add set(AABBox) GraphUI: Use thread-save and lock-free CopyOnWriteArrayList for List, allowing off-thread mutation Quaternion: Add rotateByAngleNormalAxis(..) variant using Vec3f axis Vec3f: Add UNIX_X and UNIX_X_NEG, enhance API doc AABBox: Fix intersects2DRegion(..), add resize{Height, Width}(..) and AABBox ctor using Vec3f low and high Add TestVec3f01NOUI: This test shall be enhanced, only priliminary angle tests for now GraphUI: Extract generalized AnimGroup functionality from UISceneDemo03*, providing sets of animated Shapes (GlyphShape or any other) GraphUI: Button: Reduce default DEFAULT_LABEL_ZOFFSET from 0.005f -> 0.0001f, have to check if working on all platforms (TODO) make/scripts/test-fat-jars.sh: Adjust UISceneDemo03b -> UISceneDemo03 GraphUI Demo: UISceneDemo03: Add optional audio (only) via '-audio ' using our GLMediaPlayer (FFmpeg + JOAL/OpenAL) UISceneDemo03: Detail demo description, add blog entry Graph Loop: Make initFromPolyline() and locateClosestVertex() more robust, report error but do not crash. Graph Font + Glyph: More robust detetection and API definition of non-contour/whitespace Glyphs (detect and allow to skip 'em) GraphUI Shape: Show dirty-state in getSubString() Graph Font: Make TypecastRenderer.DEBUG package private to be used by TypecastFont GraphUI Demo FontView01: Enhance usability and refactor: Add left-column glyphSymbol number, mouse-wheel scrolling, Fitting the font info, .. GraphUI Demo FontView01: Fix '-showUnderline', i.e. glyphListener shall use the last element in container, the GlyphShape GraphUI Demo: Rename UISceneDemoU01a -> UIGraphDemoU01a, not using GraphUI's Scene but manual GLEventListener etc, add a few Glyph tests Graph Font + Glyph: Fix whitespace definition: Include 'no original underlying shape' and add API doc PMVMatrix.gluPerspective(): Redfine angle in radians instead of degrees ** API Change ** Demos: CommandlineOptions: Add total_duration command line option '-duration ' in seconds GraphUI Demos: Proper use of CommandlineOptions 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 GraphUI Scene: Generalize its interface PMVMatrixSetup and usage of its DefaultPMVMatrixSetup w/o orthogonal alike scale-back but fully parametric FloatUtil.isEqual(..): Rename raw {isEqual->isEqualRaw}(a,b) varianr w/o EPSILON; Add isEqual(a,b) w/ default EPSILON; Use it where applicable GraphUI Shape: Enhance API doc for colors GraphUI Shape.ZAscendingComparator: Use (faster) FloatUtil.isEqual2(a,b) and consider Z-scaling GraphUI Scene: Expose Z-Epsilon API for default and current PMVMatrixSetup values; Button add Z-Epsilon API for ctor and setLabelZOffset(..) GraphUI Button: Add label bounds to own shape (adds used z-range) GraphUI Enhance: API doc; Scene/Button Z-offset and -epsilon; Push temp AffineTransform to local method; Simplify BaseButton setCorner(0) -> setPerp(); Protected abstract ctor .. GraphUI GraphShape: Split renderModes -> final renderModesReq + mutable renderModes, allowing the latter to be adjusted e.g. in case a color-channel is required GraphUI: Button/Label: Complete String -> CharSequence type change for text, rename Button set{Label->Text}(..), adjust demo/text code GraphUI Margin, Alignment: Reuse ctor for default-ctor FloatUtil.abs(a): Mark as deprecated, use Math.abs(a) directly. We assume it is an intrinsic + branch-less implementation GraphUI: Use z-top of bounding box for border rectangle, not z-center GraphUI Scene: Only set dbgBorderThickness on shape if not zero and shape has no border yet, i.e. don't override GraphUI Scene: Add invoke(boolean wait, GLRunnable) for convenience using GLAutoDrawable.invoke(..) GraphUI Shape: Add setScale(..) and scale(..) with Vec3f for convenience; Add border-color in toString() if hasBorder() GraphUI Layout Alignment: Separate center alignment to horizontal and vertical GraphUI Layout: Html'ify API header of Gap and Padding GraphUI Layout: Fix BoxLayout scale, margin and padding; Add same padding behavior to BoxLayout and GridLayout. 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` 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 GraphUI Group: Override isShapeDirty(), performing a deep dirty state update on all group member to allow validate to function GraphUI Group.validateImpl(): Pick RenderMode for border from 1st Shape if required (hasBorder() and null border yet) 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 Debug.debugExplicit(): Define and use explicit symbol debug flag; Use it for certain debug output to keep most silence for debugAll() GraphUI GlyphShape: Add copy-ctor variant GraphUI Layout: Remove unused leftover var and complete GridLayout ctor GraphUI Label: Add convenient methods getUnscaledGlyphBounds(..) FontView01: Have all layout performed by our Box/Grid-Layout classes w/o manual calculus (the goal) etc/test.bat: Override test.log logfile, don't append GraphUI Layout Tests: Use blue for group border and black for shape border; UILayoutGrid01: Add Padding/Non-Padding comparison GraphUI GridLayout: Fix scaled non-center: Only add center offset if requested and avoid double-add. GraphUI GridLayout: Disable TRACE_LAYOUT GraphUI Demo FontView: Prescan available countour glyphs for fluent scrolling .. GraphUI Layout (Box/Grid): Adjust bottom-left offset according to center-axis GraphUI Demo Fontview: Fix '-showUnderline' mode; Fix and simplify addGlyphs(..) loop; Add Margin on glyphShapeBox Bug 1452 - Decouple math functionality to 'com.jogamp.math' to be toolkit agnostic (PMVMatrix, Matrix4f, Vec4f, ..) GraphUI Container: Add getShapeCount() and add API doc .. GraphUI GlyphShape.addShapeToRegion(): In case the Font.Glyph has no shape, at least add an empty region to avoid an NPE GraphUI Test: FontViewListener01: Align to FontView01 .. fix invsible GlyphShape by adding a BoxLayout w/ Center and parent Group w/ GridLayout FillCenter GraphUI Demo FontView01: Re-add Margin for glyphInfoBox (text) and use Group's getShapeCount() .. GLMediaPlayerImpl: Replace StreamWorker thread management with GlueGen's new WorkerThread, helping to simplify code 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 .. OculusVR: Adapt to latest GlueGen changes Bump oculusvr-sdk Bug 1452: GraphUI Scene DefaultPMVMatrixSetup.set(): Fix regression of commit 5d6e8a367c03644740187e500c6de5d3ac039d5e GraphUI Button.getSubString(): Expose labelZOffset 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 GLMediaPlayerImpl: Recover lost StreamException information from commit 77eab439147af69089fa3ebf07d64ee3b4d67bfd Bug 1452: GraphUI Shape: Rename setMvTransform(..) -> setTransformMv(..), aligning w/ PMVMatrix4f naming .. GraphUI Layout: Add UILayoutBoxGridOffset01, showing behavior w/ shapes not starting at 0/0 but at an offset Bug 1454 - GraphUI Scene: Elevate active (selected) shape (add z-offset) and select (pick) in Z descending order Bug 1455 - GLMediaPlayer: Add isAutioMuted() query on volume and earmark audio-volume if not initialized and set it when AudioSink becomes available UISceneDemo20: Set proper z-epsilon for all Buttons on reshape to use the perfect minimum label-z-offset GraphUI Button: Remove redundant ctors and methods. ZOffset shall be simply given, calculated by caller Bug 1454 - GraphUI Scene: Make active ZOffset scale configurable Bug 1459 - GraphUI Shape: Add active (pointer over/left) state and callback Listener UISceneDemo20 Use onToggle(..) for media-button (audio on/off) as well as use direct lambdas for all its other listener GLMediaPlayer: Stop audio streaming to AudioSink on zero volume (Flush on mute and play on un-mute) GraphUI MediaButton: Return this for chaining on setter GraphUI Shape: Crossref input modifier funcs in API doc; Condense simple setter/getter Bug 1460 - GraphUI Shape: Allow keeping aspect-ratio at resize GraphUI Label: Condense getUnscaledGlyphBounds() GraphUI Demo FontView01: Add mode showing the Glyph's name below in grid Graph Fonts: Remove not required text files from Ubuntu fonts Graph Fonts UbuntuFontLoader: Factor out FontLoaderImpl and have get(..) synchronized for static fontMap field access Graph Fonts: Add 'Material Icons Round-Regular' (APL-2 license) and use it in UISceneDemo03 via hard coded unicode symbol numbers Bug 1462 - Graph Font: Add name + codepoint to ID and Glyph mapping plus traversing through all Glyphs Graph Font Tests: Fix missing codepoint -> GlyphID conversion Graph Font: API doc: Fix typos 'Return ' .. to 'Returns `. GraphUI Demos UIMediaGrid01: Demos multiple MediaButton in a grid - performance & stability Bump make/scripts/tests.sh Bug 1462 / 1462: GraphUI Demo UISceneDemo20: Replace some text in buttons with symbols GraphUI Layout: Simplify non-centered negative-offset (underline) removal GraphUI GraphShape: Factor out static addRectangle(..) to be reused for debugging purposes GraphUI Shape: Use a bitfield for the many binrary states instead of boolean to preserver footprint .. GraphUI: Mark some more methods final in Shape + GraphShape Bug 1463 - Graph Font: Whitespace or undefined Glyphs shall not cover (any) height exceeding overall CharSequence GraphUI Shape: Add remaining binary states to bitfield to preserver footprint .. GraphUI Shape: Issue onToggleListener on setToggle(..) to complete user experience, add overridable toggleNotify(..) allowing implementations to react before listener. GraphUI Button: Increase default spacing a little: x .12 -> .20, y .42 -> .46 GraphUI Button: Support toggle'ed labels and fixed font size scaling for symbols (see setFixedLabelSize()), GraphUI Demo UISceneDemo20: Give 'Show FPS' a toggle text 'Hide FPS' .. and have the text resize being of fixed aspect-ratio (like the movie) GraphUI Demos: Minor refinements.. Bug 1431: Fix NewtCanvasAWT resize on X11, broken since commit ad38d1559854985b1131e5b6c7274a392b5bc265 Bug 1430 - Fix Background erase not disabled with AWT GLCanvas and NewtCanvasAWT Bug 1465 - Graph / GraphUI: Render a Region's ColorTexture in proper aspect-ratio, letter-boxed or zoomed (config) + Bug 1466 Fix color mixing FFMPEGMediaPlayer: Insert GLSL comment-line documenting the addressed VideoPixelFormat conversion for easier debugging GraphUI: Group: Add attribute to allow not to relayout if child Shapes are dirty. Only issue validate on childs if theyre shape is dirty 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) GraphUI: Shape: Add missing 'markShapeDirty()' on setBorderColor() Bug 1467 - GraphUI: Don't de-activate a Shape if became active via 'mouseOver' (mouseDragged) Bug 1468: Demos MiscUtil.destroyWindow() Call GLAutoDrawable.destroy() directly w/o mitigation attempts (off-thread) Bug 1468 - SIGSEGV on use after free when destroying NEWT Window/Display via a native dispatch'ed event like key/mouse/touch input Bug 1469 - FFmpeg binding uses ReleaseStringChars instead of ReleaseStringUTFChars for GetStringUTFChars() acquired UTF Bug 1470 - NEWT/JNI: Perform exception check and rethrow for all Java Callbacks as recommended Bug 1471: Add a GLEventAdapter for GLEventListener similar to the other Adapter patterns Bug 1470 - FFmpeg / JNI: Perform exception check and rethrow for all Java Callbacks as recommended GraphUI Scene: Add custom one-time GLRunnable disposable action list, allowing to properly take-down user resources at dispose(GLAutoDrawable) GraphUI Shape: 'int name' -> 'int id' and add 'String name', change get/set methods accordingly GraphUI Shape: Complete commit c8ec6fa7cc16a0777db16af8b4d0d0b898f8b546 TextureSequence.setTexCoordBBox(): Add 'verbose' parameter for debug output instead hard coded branch FFMPEGMediaPlayer: Always use own textureLookupShader and validate its custom name against GLSL internal 'texture2D', add missing VideoPixelFormat conversions Bug 1473 - ALAudioSink: AV Synchronization: Adopt to JOAL ALAudioSink changes Bug 1472: GLMediaPlayer AVSync: Refine AVSync debug output (WIP) Bug 1472: GLMediaPlayerImpl: Track repeatedFrame count Bug 1472: Enhance GLMediaPlayer AV Sync: Utilize SCR aware audio PTS used as master-clock, enabling proper AV sync w/ untouched audio Bug 1472: Enhance GLMediaPlayer AV Sync: Fix FFMPEGMediaPlayer's audio resample: Use swr_get_out_samples(..) to calculate the required output sample count Bug 1472: Enhance GLMediaPlayer AV Sync: Fine tune AV heuristics to (multiple of) audio_dequeued_ms GLJPanel: Allow disabling GLSL vertical flip programmatically via setUseGLSLVerticalFlip(false) in addition to property 'jogl.gljpanel.noglsl' GLJPanel: Fix DEBUG output USE_GLSL_TEXTURE_RASTERIZER -> USE_GLSL_VERTICAL_FLIP, changed names in commit d6cf89f22a5926b437c4430eb166972d90fd92be Bug 1472: GLMediaPlayer: Expose SCR PTS and encourage its usage, removes user from selecting video or audio PTS. Bug 1472: GLMediaPlayer: Handle setPlaySpeed() like setAudioVolume() if stream is not yet initialized or playing, cached clipped value and set at initGL(..) Bug 1472: GLMediaPlayer.getNextTexture(): Fix playSpeed > 1; Handle !hasVideoFrame upfront, simplifying sync-block FFMPEGMediaPlayer: Remove unconditional DEBUG output GLMediaPlayerImpl: Don't reset SCR on video_scr_reset or irq'ed rendering w/o video-frame (fixes 'massive' seek'ing) GLMediaPlayerImpl: Use a PTS av_scr_cpy from av_scr for getPTS() avoiding direct user-exposure and potential data-race 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) GLMediaPlayer: Don't resetAVPTS() on resume(), allowing less AV sync disruption after pause(flush:=false) GLMediaPlayer.getPerfString(): Don't show audio pts values is no_audio, misleading and wrong info (e.g. on mute) Bug 1479 - NativeLibrary: Add getNativeLibraryPath() returning actual native library path, support throughout DynamicLibraryBundle[Info] FFMpeg: Fix and clarify 'resend package' and 'continue draining frames' states FFMpeg: Just be nice and flush GL stream, no finish sync required GraphUI Scene: Allow attaching GLAutoDrawable manually and adding GLEventListener (API) GraphUI Shape: Simplify setIO(..) usage (private) GraphUI Shape: Add IO_ACTIVABLE state GraphUI Shape: Use Shape.MoveListener for Shape.onMove(..) providing more details of the translation GraphUI Shape/Group: Group.isActive() also returns true if any child is active; Add isContainer() to avoid rfeflection GraphUI Shape: Rename [set|is]{Enabled -> Visible}(..) for clarity MovieSBSStereo: GLMediaPlayer.setTextureMinMagFilter() must be called before initialization GraphUI MediaButton: Disable AA_RENDERING_MASK for GLMediaPlayer color texture (effiency, less artifacts) GraphUI UISceneDemo20: Only use ALAudioSink if its context is already created (ready) GraphUI Alignment: Use Alignment.None instead of default ctor. GraphUI Padding, Margin, Gap: Use zero value constant None instead of default ctor Graph Region: Edit API doc for AA_RENDERING_MASK GraphUI Shape: Rename is{Container -> Group}(), denoting a group only GraphUI Container: Cleanup or Group/Scene add*/remove* methods Graph Shader: Fix 'curverenderer01-single.vp' aligning w/ 'curverenderer01-pass1.vp' (commit 297c48f4fefd1ab59800524ea5f0dd56684d6786) GraphUI Shape: Fix Z{Ascending,Descending}Comparator using and exposing getAdjustedZ() Bug 805: GraphUI Group: Add 'widget-mode' used to utilize a group as one visible UI widget element (activation, visibility) Bug 805: GraphUI Scene/Shape Pick-Active/Interaction: Pick shall complete traversion for most inner interactive shape; ... GLMediaPlayer: Add printNativeInfo(..) exposing used native library information (if any), FFMPEG* utilizes NativeLibrary.get[Native]LibraryPath() Bug 805: GraphUI: Add Group.replaceShape(..) and Shape.getParent() Bug 805: GraphUI: Add MediaUI01 widtget (MediaButton w/ full feature controls), used in demos UIMediaGrid0[01] GLMediaPlayer: TEXTURE_COUNT_DEFAULT 4 -> 3 as tested via UIMediaGrid01, usable w/ fix for Bug 1472 (Enhance A/V Sync) OMXGLMediaPlayer: Add 'printNativeInfo(..)' - completes commit d99c2d8b28470d335ab5b30124ef8b0607b3b90f UIMediaGrid0{01}: Minor cleanup: Drop unused local Font GraphUI Shape.move*(): Don't notify MotionListener on programmatic move. GraphUI Shape: setParent() pp -> protected, allow to override setName() GraphUI Shape: Unify 'resetState()' for clear and destroy, refine API doc GraphUI Group: Allow override of clearImpl0() and destroyImpl0() GraphUI Shape Rectangle: Draw simple filled rect if lineWidth==0, drop AA_RENDERING_MASK from renderModes (not necessary for a rect) Bug 805: GraphUI: Add Widget 'marker' (a Group), derived by {MediaUI01 -> MediaPlayer} and new RangeSlider GraphUI Scene/Shape: Add KeyListener for activeShape GraphUI Shape: Allow overriding of setColor(..) and setPressedColorMod(..) GraphUI MediaPlayer Widget: Issue playStream(..) and setTextureUnit(..) by caller, reducing specification GraphUI RangeSlider Widget: Add rectangular page-sized knob mode using a 'page size' of covered view. Resolve color-setup. GLMediaPlayer/FFMPEGMediaPlayer: Add chapter metadata support and use com.jogamp.common.av.PTS.millisToTimeStr(..) GraphUI MediaButton: Add clearImpl(..), stopping and rewinding stream GraphUI Group: Fix layout w/ zero shapes (empty), i.e. set AABBox to zero GraphUI RangeSlider: Add rectangular marks (e.g. for chapters, see MediaPlayer), by simply overlay marks on bar Sven Göthel (298): GraphUI Cleanup: Simplify Shape.draw*() and Container.{add,remove*}Shape[s](); Remove Scene.setDebugBorderBox() GraphUI Shape: Maintain multiple Activation Listener (ArrayList instead of single instance) GraphUI MediaPlayer / GLMediaPlayer: Add current chapter-title to info-field GraphUI RangeSlider.addMark(): Return the mark-shape and use double itemLen (in sliding direction) for better visibility GraphUI Shape: Enable Tooltip (currently text only) to be displayed after delay w/o mouse-move (1s) GraphUI Shape: Ease Tooltip managment via Scene: Only started Tooltip is required to tick(), drop List GraphUI Button.setLabelColor(..): Add alpha channel and variant w/ Vec4f for flexibility GraphUI Tooltip: Simplify integration w/ Scene + Shape; Use Shape.setToolTip(Tooltip) for generic usage; Add TooltipText colors. GraphUI Rectangle: Remove dropping AA_RENDERING_MASK, i.e. allow VBAA_RENDERING_BIT again GraphUI Demos: Have CommandlineOptions produce GLProfile and full GLCapabilities request, removing code duplication GraphUI Demo UIMediaGrid00: Add letterBox option, defaults to true now 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 Graph Clipping: GLSL: Add `USE_AABBOX_CLIPPING`, i.e. clipping via AABBox min/max vec3 as convenient using Graph/GraphUI produced AABBox Graph Clipping: Initial Region impl of AABBox clipping using GLSL shader (Convenient using Graph/GraphUI produced AABBox) Graph Clipping: Add missing Modelview-Matrix (Mv) Multiplication / Consideration GraphUI Margin/Padding: Rename zeroSum*() -> zero*() AABBox resize{Width, Height}(..): Positive argument shall always denote expansion GraphUI Demos: Use CommandlineOptions properly GraphUI RangeSlider: Add unitSize param: Size of one unit (element) in sliding direction Graph VBORegion2PVBAAES2: Fix Rescale (MAX texSize): renderFboHeight shall use winHeight (typo) Matrix4f: Fix minor API doc parem ref-name GLReadBufferUtil: Allow passing a custom GL read-buffer name, useful to read FBO attachments (GL_COLOR_ATTACHMENTi) Graph/GraphUI: Revise Graph Region ShaderMapping, fix AABBox-Clipping for Pass2-AA, revise Pass2 AA Quality parameter .. Bump (c) -2024 for edited files + LICENSE.txt GraphUI UIShapeDemo00: Simple Shape within Scene GraphUI RangeSlider: Position page-sized knob (variant) with value at page-start position. GraphUI RangeSlider: Fix API doc for implementation detail Graph/GraphUI AA-Quality (shader): Region: Add DEFAULT_AA_QUALITY and clipping funs for aaQuality/sampleCount; TextRegionUtil: Pass quality parameter in draw-functions GraphUI RangeSlider: Add SliderAdapter (convenience) and use a listener-array (was 1 instance) Graph Text Tests: TestTextRendererNEWT20, TestTextRendererNEWT21: Reduce sampleSet 3 -> 1 and fontSet 11 -> 7 to avoid footprint for default tests. GraphUI RangeSlider: [add,remove]{->Slider}Listener() GraphUI Shape: Add receiveKeyEvents() and receiveMouseEvents() allowing a Shape to receive forwarded events from another Shape; Added receive*Events() specialisation for RangeSlider GraphUI Demos CommandlineOptions: Add ctor w/ graphAAQuality and graphAASamples 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 Demo FontView01: Remove using jogamp.graph.curve.opengl.VBORegion2PVBAAES2 perf-counter hooks (not committed) AABBox: Rename private fields low -> bl and hight -> tr for readability; Unroll getRayIntersection()'s 'find candidate planes' AABBox: Add intersects(AABBox), contains(AABBox), scale(float, float, float) and scale2(float, float, float) GraphUI Group Clipping setClip{OnBox->OnBounds}(): Add Vec3f cullingScale factor for the clip-box to discard rendering completely..; Add Group.setClipBBox(..) 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.. GraphUI RangedGroup.validateImpl(): Simplify updating contentPosZero Graph/GraphUI AA-Quality + SampleCount (shader): Push params down to RegionRenderer's RenderState usually rarely set from top of user API, reducing complexity. GraphUI GLButton: Filter out Region.AA_RENDERING_MASK in ctor, as GLEventListener renders into FBO at correct resolution. GraphUI Enhance Clipping: Drop 'cullingScale' param, a simple intersection-test against 'clipBox' to discard whole shapes if completely outside is enough. GraphUI Clipping Demo: Adding a simple Shape within a clipping Group all driven by a Scene GraphUI Tooltip*: Generalize Tooltip base (more versatile) and add TooltipShape supporting general Shapes to be added AABBox: Rename private fields {bl, tr} -> {lo, hi} denoting proper orientation in API doc 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) Frustum: Revise code and its Plane definition to support Cube->Frustum as well as to extract planes for float[] vec4-shader uniforms. Graph Clipping: Use Frustum Clipping using AABBox -> Mv transformed Cube -> Frustum mapping + GraphUI Support GraphUI Graph/Scene: Reuse TreeTool for contains(), getShapeByID() and getShapeByName(), also adding full traversion (instead of a flat lookup) GraphUI Group/BoxLayout/GridLayout: Handle empty Group, i.e. detect zero-size and avoid scale=Infinity and zero-sized resulting AABBox GraphUI Group: Add ctor with most usable values, allowing injecting a Group as a one-liner in code GraphUI Tooltip*: Allow user to trigger display via now(); Ensure TooltipShape.DestroyCallback gets passed the user provided Shape only GraphUI RangeSlider: Keep Region.AA_RENDERING_MASK in renderModes GraphUI Demo Fontview: Demonstrate Clipping w/ rotation; Reuse GlyphShape for grid, info-box and tooltip UIShapeClippingDemo00: Fix behavior, use shape as child and completely chain rendering in display() GraphUI Demos: Minor finetuning.. Bug 1488 - Graph RegionRenderer Shader Mapping: Revert to IntObjectHashMap and throw exception on shaderKey collision Bug 1490 - GraphUI Group: Resolve Performance Issues with Shape Mv Transform -> PMVMatrix4f Bug 1490 - GraphUI Performance: Group/Scene: Use temp sorted arrays Bug 1489 - GraphUI Group: Resolve Performance Regression in Scene.pickShape(): Drop invisible and clipped shapes Bug 1490: Add missing rename Shape.transformMvTo() -> applyMatToMv(), an transformMvTo() was an intermediate rename (oops) Bug 1488 - Graph RegionRenderer: Ensure shaderPrograms1 path is disabled using 'static final boolean useShaderPrograms0 = true' Simplify TooltipShape: Create own wrapper Group to not mutate user given Shape (if reused in DAG); Fix FontView01 TooltipShape instance, use NoOp DestroyCallback TooltipShape.destroyTip(): Only show warning instead of throwing a RuntimeException if tip couldn't be found within wrapper Group Scene.dispatchMouseEventPickShape(): Reuse PMVMatrix4f, Ray and Vec3f within EDT, reducing temp objects on mouse moves Bug 1488 - Graph RegionRenderer: Use a more deterministic 64-bit shaderKey: [0-31] bit values and state, [32-63] colorTexSeqHash Bug 1488: FFMPEGMediaPlayer: Fix getTextureFragmentShaderHashID(), i.e. use actual tc_w_1 = (float)getWidth() / (float)texWidth value as hardcoded within the shader. VBORegionSPES2: Disable verbose flag in TextureSequence.setTexCoordBBox() .. oops GraphUI Demos: Minor fixes GraphUI Tooltip: Use delayMS for no time-based alarm (only used for now()); FontView01: Use TooltipShape for GlyphShape only with mouse click -> Tooltip.now() GraphUI RangeSlider/RangedGroup: Fix overall integration, adding more API comments; UIMediaGrid01 now uses RangedGroup GraphUI MediaPlayer: Fix Zoom behavior; Disable DEBUG output Graph: Drop non-existing 'JAVA' font from FontFactory Bug 1488: Complete/Fix producing the 64-bit shaderKey: Use long values in bit-shift expressions and simplify it NativeWindowFactory.createDevice(..) w/ unitID for cloning; DefaultGraphicsDevice: Move ownership (Object) code into base class ensuring same code Bug 1491: Add missing rename DefaultGraphicsDevice.swap{Device->}HandleAndOwnership() Bug 1491: FFMPEGMediaPlayer: Lock moviePtr lifecycle phase in-between [initStreamImpl - destruction] Bug 1491: GLMediaPlayerImpl: Use a shared *GraphicsDevice for all compatible shared GLContext, removing resource restrictions Math Vec*: Rename {scale->mul}(..) for non-scalar types (n-dim); Add div(..) GraphUI Layout: Emphasize whether a value/parameter is scaled or unscaled in API doc to ease usage GraphUI Shape: API doc for colors; add makeShapeDirty() on setColor(); add activeRGBAModulateOn. GraphUI RangeSlider: Use a modulating color for rect page frame for visible response when active GraphUI MediaPlayer: Cleanup infoLabel layout; Add sticky HUD (always-on) button; Fix tooltip help; Make slower-speed reduce by half if <= 1 GraphUI Demos: Bump FontView01 + UIMediaGrid01 GLMediaPlayer: Fix playing with single-threaded mode w/ texture-count 1 GLMediaPlayerImpl: Throw out video_queue_growth GraphUI MediaPlayer: seek from display-thread, don't act on SliderAdapter.clicked() as dragged is always called GLMediaPlayer: Add initial subtitle support, track audio/video/subtitle streams and languages and add convenient switchStream(..) entry. GraphUI MediaPlayer Widget: Support switching audio and subtitle streams, show their language as a button - press to switch to next GLMediaPlayer: Support tile metadata GraphUI MediaPlayer: Bump Chapter tooltip scale GraphUI MediaPlayer: Disable always DEBUG hack GraphUI Group: Don't draw border is set invisible GraphUI Misc Cleanup: Move get*Font() helper to Scene; Allow GraphShape.drawImpl0(..) override; GLMediaPlayer/FFMPEGMediaPlayer: Add working subtitle (text + ass/saa) support via FFMpeg GraphUI MediaButton/MediaPlayer-Widget: Add working subtitle (text + ass/saa) support via GLMediaPlayer/FFMPEGMediaPlayer GraphUI MediaPlayer: Remove debug message (Behavior to disable border if zoomSize == 1, full-screen) GraphUI Demos: Disable debug toggles GraphUI Demo UIMediaGrid00: Add missing patch from relocating getSymbolsFont() FFMPEGMediaPlayer (native): Set used sid to none if not selected (missed) FFMPEGMediaPlayer (native): Simplify subtitle handling in readNextPacket0() GraphUI MediaButton: Clear cached subtitle data on uninit and init from GLMediaPlayer Cleanup GLMediaPlayer.EventMask.Bit handling in GLMediaEventListener implementations: Either Uninit, Init, Pause or Play (exclusive) FFMPEGMediaPlayer/GraphUI MediaButton: AVSubtitles's start/end are relative to pts [ms] (fixed); Use ASSEventLine packets within proper pts only. FFMPEGPlayer: Prep for bitmap'ed subtitles: Use glEnable()/glBindTexture() func-ptr in native; readNextPacket0() passes video+subtitle texTarget and texID GLMediaPlayer: Add getSubtitleCodec() GraphUI MediaButton: Add blending below subtitle, allow setting color/blending and subLineDY; MediaPlayer: Add full infoLine toggle with click on infoBox Bug 1494: Add SubTextureEvent & SubEmptyEvent; Add SubtitleEvent.release() provided by owner to take back borrowed resources (texture of bitmap subtitle) GLMediaPlayer: Split GLMediaFrameListener (rarely used) from GLMediaEventListener, easing listener callbacks; Prepare SubtitleEventListener generalization (Bug 1494) Utilize PTS.getCurrent() where applicable Bug 1495: GraphUI Shape: Only updateMat() if marked dirty once in applyMatToMv() and getMat(*) Bug 1496 - GraphUI Shape: Allow markShapeDirty() and markStateDirty() to be lock free GraphUI: Only issue Shape.mark*Dirty() if values were updated or data available; JOGL ImageSequence: Add addFrame(GL, TextureFrame), remove*Frame() and isSequenceAnimating() Add Vec2f.set(Vec2i) and Vec2f(Vec2i); Add Texture.set(..) allowing a pending setup/update of texture and image dimensions GraphUI Demos: FontView01 can use scaling Lable ctor; UISceneDemo01b doesn't need to issue Shape.updateMat() 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 Bug 1495: GraphUI Shape: Fix updateMat() API doc Bug 1494: Clarify SubtitleEvent class, adding general FFmpeg analog CodecID and hence also promoting VideoPixelFormat Vec[234][ifd]: Add toArray(..) method 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 Bug 1494 - GLMediaPlayer/GraphUI: Support Displaying Bitmap'ed Subtitles (PGS ..) via FFMPEGFMediaPlayer/FFmpeg GLMediaPlayerImpl: Allow one frame to be shown paused when issuing seek(), i.e. 'oneVideoFrameOnce'. GLMediaPlayerImpl.StreamWorker: Don't grow videoFramesFree since having removed buffer grow in commit 68ca5b14966cb7eec9501c17dc8b3b465421a68e GLMediaPlayer: Adjust API doc and certain names differentiating video (from subtititle) etc. GLMediaPlayerImpl: Disable subDEBUG flag Remove Clonable and clone() in favor of explicit determined copy() and copy-ctor in com.jogamp.graph.* and com.jogamp.math.* OutlineShape: Earmark coloring task when triangulating .. Bug 1493 - Text/ASS Subtitle via MediaButton/MediaPlayer Alignment defaults to CenterHoriz, also support Left. 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() 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 .. ) Hausmacher Merge: Complete merge part-1: Compile and test clean (pre-write-feature) Cleanup (static, final, whitespace, ..) post Hausmacher Merge Hausmacher Merge: Complete merge part-1 into JOGL from our typecast branch; Adding missing LongDateTime class Typecast: Cleanup: final Typecast: Re-apply overwritten stability changes (NPE, redundancy) Use new com.jogamp.common.util.StringUtil (GlueGen) 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) GraphUI RangedGroup: Keep position @ validate() GraphUI: Fix func-name, rename TexSeqButton.use{AspectRation->ARatio}Letterbox() matching TextureSequence Graph Font: Pull up static function GraphUI Button: Fix API doc typo Bug 1493: Enhance Text/ASS subtitle layout: Split too wide text into multiple lines (max 4) fitting into box, trimming it beforehand GraphUI RangeSlider: Active {Page -> Knob} Color modulation now affects the knob for round-knob and page-size knob GLMediaPlayer.Chapter: Add duration() GraphUI Cleanup: Use TreeTool directly (Reduce virtl-funcs); Fix typos; Use PointerListener for onClicked(), add onHover(); Bug 1498: GraphUI: Adopt RangedSlider to new picking (coming up), simplifies code. Bug 1498: Change Top-Level Widget Mode: Register a top-level Group in Scene, where its zOffset gets adjusted when activated.. Bug 1498: GraphUI: Fix Picking Traversal throughout Groups in Z-Descending Order, testing Children and fallback to Group if positive Bug 805: GraphUI MediaPlayer: Add 'Aspect Ratio Crop' Button; Have Chapter Pre/Next Buttons; Toggle HUD head info box (full or brief) Bug 805: GraphUI Demos: Adopt changes to FontView01 + UIMediaGrid01, dropping UIMediaGrid00 GraphUI MediaPlayer: Elevate the ctrlSlider a little (and add it behind ctrlBlend) to remove the occlusion by the blending box Bug 1498: Refine Top-Level Widget Mode: Handle active-state by Scene, simplify and reduce runtime costs GraphUI: Add Shape.IO_DISCARDED and update it @ Scene/Group draw(); Prepare for experimental occlusion-culling Bug 1492: GLMediaPlayer: Add playStream(..) variant passing desired audio- and subtitle language GraphUI RangeSlider: Fix 'activeOldMod' -> static to member GLMediaPlayerImpl: Fix playing one frame after seek() @ getNextTexture(), requires pause state (normal at play-state) GLMediaPlayerImpl: Adjust aid/sid to AUTO if alang/slang is given 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 GraphUI Tooltip*: Remove unused paramter in createTip() and clarify names GraphUI: Add HUDShape, a convenient HUD shape to be exposed in the scene using inner object size/pos, similar like TooltipShape GraphUI MediaPlayer: Add HUDShape on time-slider @ mouse-over with time-string and still-images (optional) .. using HUDShape GraphUI Demos FontView01 + UIMediaGrid01: Use FSAA 8 (GPU MSAA 8) as these demos utilize lots of smaller resources regions ... Graph: Outline[Shape]: Add print() 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 Bug 1501: Graph: Add UIShapeDemo02a test for rectangular shape provoking tessellation issue / or use Glyph03FreeMonoRegular_M Bug 1501: Graph Delaunay: Use default winding outer-boundary:=CCW and inner-hole:=CW w/o using winding determination (might be incorrect) 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) Remove unused imports ... VectorUtil: Remove unused isInCircleVec2f() and triAreaVec2f(), now using *2d() variants Loop.isValidNeighborDbg(): Remove DEBUG branch, always true Graph RenderState/RegionRenderer: Rename isHintMaskSet()->hintBitsSet(), setHintMask()->setHintBits(), clearHintMask()->clearHintBits() 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 Bug 1501: Graph Shape: onInit(ListenerBool) -> onDraw(DrawListener) w/ added capability for code injection to render VectorUtil: Consolidate names, remove unused float prevision variants (if any) Bug 1501: VectorUtil: Deprecate prev line2line intersection tests, adding new impl; Add isConvex*() to determine whether a polyline is convex Bug 1501: Apply intersection tests for non-convex shapes to reject new CCW and non-circulcircle triangulation candidates in our Delaunay tessellator GraphUI Demo FontView01: Re-Enable snapshot via 's' Bump tests.sh script Bug 1501: Graph CDTriangulator2D: Add properties to enforce convex and non-convex treatment to simplify debugging etc Use FloatUtil.isZero(a) w/ build-in FloatUtil.EPSILON directly instead of passing FloatUtil.EPSILON to explicit isZero(a, epsilon) FloatUtil Epsilon ops: Generalize all epsilon operations by allowing passing a zero epsilon value to reduce complexity in upper math layers DoubleUtil: Align Epsilon ops w/ FloatUtil VectorUtil: Remove double InCircleDThreshold = DoubleUtil.EPSILON VectorUtil: Generalize *seg2segIntersection* w/ epsilon and doCollinear VectorUtil.isConvex1(): Fix zero test and handle out-of-bounds Bug 1501: Refine convex == !complex: Use 'complex' term, have env-property toggle OutlineShape's isComplex() for visibility Bump tests.sh VectorUtil: Bring back specialized testSeg2segIntersection() w/ build-in FloatUtil.EPSILON epsilon and no collinear test VectorUtil: Add experimental isSelfIntersecting1() with O(n*n) complexity Graph: Cleanup Loop & OutlineShape, more compact methods TestTextRendererNEWT20: Fix fontSet override at main + add some glyph info in demo text TypecastGlyph: Add complex/simple info in toString() VectorUtil.isSelfIntersecting1(): Always use off-curve points Bug 1489: Lock-Free Double-Buffered 'renderedShapes' causes data-race between rendering & input-edt, use synchronized tripple-buffering FloatUtil: Add IEC559_SIGN_BIT; Align API doc and implementation w/ native jaulib, i.e. drop 0==epsilon case for performance Math: Align Frustum/Matrix dependency w/ native jaulib Math: AABBox: Fix getRayIntersection(), i.e. setting the correct resulting component. Math: Recti::size(): Change semantics: Return true if area is zero, not if x and y is zero Math: AABBox + AffineTransform: Make class final TestMatrix4f02MulNOUI: Align w/ native jaulib Math: Align mul + inv perf tests with native jaulib Graph: Fix Outline::setWinding: Clear DIRTY_WINDING bit Graph: Fix OutlineShape::getBounds: validateBoundingBox() if DIRTY_BOUNDS Graph OutlineShape/Region: Enhance debug output AABBox: Optimize contains and intersect Matrix4f::mapWinToRay: Drop unused 2nd temp matrix ShaderState::bindAttribLocation: Add missing glBindAttribLocation Graph Hedge: Cleanup initialization Graph Hedge/Loop: Debug output HowToBuild: Adjust Debian 12 GPURegionGLListener01: Add debug output and createTestOutline01a Eclipse bump test script: bump ffmpeg: Use manually looked-up symbol for sws_freeContext test script: align unix/win for testing NativeLibrary (Bug 1510) Build/test: Use OpenJDK-21 per default doc: Using a custom OpenGL Library under Windows WindowsAWTWGLGraphicsConfigurationFactory::chooseGraphicsConfigurationImpl: Skip invalid PixelFormatID Use OpenJDK-21 and Java-11 source/target Adopt to GlueGen's VersionSemanticsUtil changes Fix Android NEWT build: ANDROID_TOOLCHAIN_SYSROOT0 -> ANDROID_TOOLCHAIN_SYSROOT1 GlueGen's uses japicmp.jar instead of semver.jar Eclipse Java-11 (min target) setting and replace semver -> japicmp (classpath) www: replace fenggui homeaddress Eclipse: Drop android from build-path, no more working w/ using JRE-11 from JDK-21 Bump SWT to 4.36 (R-4.36-202505281830) Bug 1513 - Handle X11RandR13 XRRGetOutputInfo NULL return value SWT GLCanvas: Use pre-allocated system color white, as SWT < 4.26 requires color to be disposed GLContext: Export current GLDynamicLookupHelper, allowing to pass through used OpenGL library handle and lookup function pointer to 3rd party toolkits Fix EGLDynamicLibraryBundleInfo: Add EGL symbol for 2nd tool-lib SWTAccessor: Adopt to SWT 4.36 changes Fix GLContext: get{GLDynamicLookupHelper->DynamicLibraryBundle}() returning public DynamicLibraryBundle Bug 1516: Add doxygen.all.zip target Add: doxygen.public.zip, fix publix Doxyfile (missing line concat) Doxygen: Realign w/ orig 'javadoc' locations and archive name, to preserve doc-root Doxygen JOGL: Use doc/spec-overview.md as mainpage. Adopt to VersionSemanticsUtil changes uses-sdk android:minSdkVersion="24" android:targetSdkVersion="35" (2025-08-31 requirements) doc/Windows_Custom_OpenGL.md: Adding runtime switch via `jogamp.primary.library.path` Add ShaderUtil.isComputeShaderSupported() and ComputeShader01GL4ES31 demo Bug 1520: JNI: Only request min JNI_VERSION_1_6 (Android) xxxx Bug 1520: Add `android:exported="true"` to activities Bug 1520: Fix adb-[un]install scripts Bug 1520: Android Demos: Fix package name `com.jogamp.opengl.{test->demos}` NativeWindowFactory.createDevice(): Fix `EGLDisplayUtil.eglCreateEGLGraphicsDevice` argument types jogamp/graph/curve/opengl/shader/functions.glsl: Fix float literals (GLSL ES < 310) Rename: NEWTGraphUI[12]pActivity* -> NEWTGraphUISceneDemo20Activity[12]p* Manifest templates: Add-Opens: Add java.desktop/sun.awt.windows joglversion-demo-android: Fix package name, Test -> Demo Eclipse: Use android-stripped.jar in .classpath (via use library) Demos: Fix test video URLs, using https instead of http UISceneDemo20: Group ALAudioSink usage Fix GLSL version for ES >= 3.1 Add building jogl-fat-${os.and.arch}.jar w/ GlueGen, JOAL and JOGL for convenience Add fat Android target jogl-demos-fat-android-${arch} w/ GlueGen, JOAL, JOGL and demos in one apk Android: Min API 24 -> 26 (Use GlueGen default settings) MonitorDevice: Rename {perMM->mm}To{Per->}Inch(), add inchToMM() GraphUI Scene: Disable screenshot for Android Add Demo's CommandlineOptions: fix{Default}AARenderModeWithDPIThreshold() Graph pass1 fragment-shader: Early out (discard/alpha) if alpha is 0.0 GLContext: Return VersionNumberString for getGLVersionNumber() and getGLSLVersionNumber() .. GraphUI Demo: Add UISceneDemo03b (GLEventListener based version of UISceneDemo03) w/ Android activity Eclipse: Use `Android 26 (stripped)` User Library to gluegen/make/lib/android-sdk/26/android-stripped.jar Fix JVM_JNI6.c #error message Bug 1523: Java8 build setup using target.releaselevel=8 (gluegen default) Fix whitespace of build*.xml files build: Fix uptodate dependencies, skip building jar files if not outdated Demos: Simplify GearsES2 + RedSquareES2 Demo LandscapeES2: Fix resolution @ reshape, use viewport dimension Fix Demo texture01_xxx.fp: Use mgl_Texture0, mgl_ActiveTexture is undefined Demos: Add various GearsFBO* demos, demonstrating FBO color-, depth- and stencil texture-buffer usage Bug 1444: Complete OpenGL 4.6 and ES 3.2 mapping incl Extensions UISceneDemo03: Disable GL_BLEND (matching UISceneDemo03b) Bug 1524 - NEWT High-DPI Soft-PixelScale on Windows: Honor Windows OS Scale-Factor at Creation + Change Bug 1524 - NEWT High-DPI Soft-PixelScale on X11: Honor OS Scale-Factor at Creation Bug 1525 - SWT High-DPI X11/GTK: Wrong Scaling since SWT 4.36 (update) NewtCanvasSWT DPI Scale X11/Windows: We don't require pre-scaled size anymore Test: SWT High-DPI Soft-PixelScale on Windows Bug 1444: Add missing make/config/jogl/gl-gl4_es3-ignores.cfg Bug 1527 - JogampVersion: Accept accept first manifest w/ extension-name if no extension matches Bug 1528: Mitigate OSXUtil.GetNSView() performed on non main-thread Bug 1524 - NEWT High-DPI Soft-PixelScale: Fix NewtCanvasSWT regression GraphUI AnimGroup: Allow setting a fixed frame period like 1f/60f Build Test/Demos: Consider graphui sources to trigger rebuild Bug 1529 - Updated FreeBSD Support NEWT MonitorDevice/Mode: Use defaults for resolution, sizeMM (dpi) and refresh-rate if zero is retrieved Bug 1529: Updated FreeBSD Support (HowToBuild) Bug 1529: FreeBSD: Use apache-ant pkg default NEWT MonitorDevice/Mode: Unify default (fallback) handling across driver NEWT MonitorDevice/Mode: Android ScreenDriver Fix NEWT MonitorDevice/Mode: Use zero default for user props for detection. Demo graph/ui/FontView01: Use GLEventLister model and add to Android fat demo; ... GraphUI: Cleanup Tooltip related method names: xxxToolTip -> xxxTooltip NEWT Android: We use API 26, drop lower checks. Translate more Android MotionEvents. Bug 1531: Use jvmarg.generic for unit testing, e.g. '--enable-native-access=ALL-UNNAMED' Bug 1528: Perform all `OSXUtil.DestroyNSWindow()` calls on AppKit's MainThread