aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* GraphUI Container: Add getShapeCount() and add API doc ..Sven Gothel2023-09-203-6/+15
|
* Bug 1452 - Decouple math functionality to 'com.jogamp.math' to be toolkit ↵Sven Gothel2023-09-20188-2400/+3487
| | | | | | | | | | | | | | | | | | | | 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.
* GraphUI Demo Fontview: Fix '-showUnderline' mode; Fix and simplify ↵Sven Gothel2023-09-191-17/+7
| | | | addGlyphs(..) loop; Add Margin on glyphShapeBox
* GraphUI Layout (Box/Grid): Adjust bottom-left offset according to center-axisSven Gothel2023-09-192-6/+44
| | | | | - Remove the negative or positive delta on centered axis. - Only remove negative offset of non-centered axis (i.e. underline)
* GraphUI Demo FontView: Prescan available countour glyphs for fluent scrolling ..Sven Gothel2023-09-191-38/+40
|
* GraphUI GridLayout: Disable TRACE_LAYOUTSven Gothel2023-09-191-1/+1
|
* GraphUI GridLayout: Fix scaled non-center: Only add center offset if ↵Sven Gothel2023-09-192-26/+23
| | | | requested and avoid double-add.
* GraphUI Layout Tests: Use blue for group border and black for shape border; ↵Sven Gothel2023-09-192-32/+70
| | | | UILayoutGrid01: Add Padding/Non-Padding comparison
* FontView01: Have all layout performed by our Box/Grid-Layout classes w/o ↵Sven Gothel2023-09-171-147/+259
| | | | | | | | 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.
* GraphUI Label: Add convenient methods getUnscaledGlyphBounds(..)Sven Gothel2023-09-171-0/+12
|
* GraphUI Layout: Remove unused leftover var and complete GridLayout ctorSven Gothel2023-09-172-3/+12
|
* GraphUI GlyphShape: Add copy-ctor variantSven Gothel2023-09-161-0/+17
|
* Debug.debugExplicit(): Define and use explicit symbol debug flag; Use it for ↵Sven Gothel2023-09-1610-15/+32
| | | | certain debug output to keep most silence for debugAll()
* GraphUI BoxLayout: Margin is only ignored for center Alignment w/o Fill ↵Sven Gothel2023-09-166-102/+114
| | | | | | | | | | | | | | | | | | | | | 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
* GraphUI Group.validateImpl(): Pick RenderMode for border from 1st Shape if ↵Sven Gothel2023-09-161-1/+12
| | | | | | required (hasBorder() and null border yet) This avoid changing the RenderMode and hence actual shader rendering the item.
* GraphUI Group: Override isShapeDirty(), performing a deep dirty state update ↵Sven Gothel2023-09-162-1/+14
| | | | on all group member to allow validate to function
* GraphUI Layout: Fix BoxLayout scale, margin and padding; Add same padding ↵Sven Gothel2023-09-057-577/+950
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* GraphUI Layout: Html'ify API header of Gap and PaddingSven Gothel2023-09-052-2/+4
|
* GraphUI Layout Alignment: Separate center alignment to horizontal and verticalSven Gothel2023-09-051-8/+11
|
* GraphUI Shape: Add setScale(..) and scale(..) with Vec3f for convenience; ↵Sven Gothel2023-09-051-2/+20
| | | | Add border-color in toString() if hasBorder()
* GraphUI Scene: Add invoke(boolean wait, GLRunnable) for convenience using ↵Sven Gothel2023-09-051-0/+21
| | | | GLAutoDrawable.invoke(..)
* GraphUI Scene: Only set dbgBorderThickness on shape if not zero and shape ↵Sven Gothel2023-09-051-1/+3
| | | | has no border yet, i.e. don't override
* GraphUI: Use z-top of bounding box for border rectangle, not z-centerSven Gothel2023-09-051-6/+6
|
* FloatUtil.abs(a): Mark as deprecated, use Math.abs(a) directly. We assume it ↵Sven Gothel2023-09-046-15/+22
| | | | | | | | | | | | | | | | 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...
* GraphUI Margin, Alignment: Reuse ctor for default-ctorSven Gothel2023-09-042-2/+2
|
* GraphUI: Button/Label: Complete String -> CharSequence type change for text, ↵Sven Gothel2023-09-0410-24/+17
| | | | rename Button set{Label->Text}(..), adjust demo/text code
* GraphUI GraphShape: Split renderModes -> final renderModesReq + mutable ↵Sven Gothel2023-09-041-2/+26
| | | | renderModes, allowing the latter to be adjusted e.g. in case a color-channel is required
* GraphUI Enhance: API doc; Scene/Button Z-offset and -epsilon; Push temp ↵Sven Gothel2023-09-049-54/+243
| | | | AffineTransform to local method; Simplify BaseButton setCorner(0) -> setPerp(); Protected abstract ctor ..
* GraphUI Button: Add label bounds to own shape (adds used z-range)Sven Gothel2023-09-031-0/+2
|
* GraphUI Scene: Expose Z-Epsilon API for default and current PMVMatrixSetup ↵Sven Gothel2023-09-032-6/+53
| | | | values; Button add Z-Epsilon API for ctor and setLabelZOffset(..)
* GraphUI Shape.ZAscendingComparator: Use (faster) FloatUtil.isEqual2(a,b) and ↵Sven Gothel2023-09-031-3/+10
| | | | consider Z-scaling
* GraphUI Shape: Enhance API doc for colorsSven Gothel2023-09-031-6/+35
|
* FloatUtil.isEqual(..): Rename raw {isEqual->isEqualRaw}(a,b) varianr w/o ↵Sven Gothel2023-09-0311-59/+121
| | | | | | 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.
* GraphUI Scene: Generalize its interface PMVMatrixSetup and usage of its ↵Sven Gothel2023-09-0310-229/+188
| | | | DefaultPMVMatrixSetup w/o orthogonal alike scale-back but fully parametric
* GraphUI Scene: Pass sampleCount in ctor variant and refine API doc, clip to ↵Sven Gothel2023-09-0313-31/+84
| | | | [1..8]; Add clarity in Region; Demos CommandlineOptions adds actual graphAASamples set and utilized
* GraphUI Demos: Proper use of CommandlineOptionsSven Gothel2023-09-024-34/+18
|
* Demos: CommandlineOptions: Add total_duration command line option '-duration ↵Sven Gothel2023-09-021-14/+19
| | | | <floar>' in seconds
* PMVMatrix.gluPerspective(): Redfine angle in radians instead of degrees ** ↵Sven Gothel2023-09-0219-32/+53
| | | | | | | | 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
* Graph Font + Glyph: Fix whitespace definition: Include 'no original ↵Sven Gothel2023-09-012-20/+26
| | | | | | | | | | | | | | 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.
* GraphUI Demo: Rename UISceneDemoU01a -> UIGraphDemoU01a, not using GraphUI's ↵Sven Gothel2023-09-011-4/+24
| | | | Scene but manual GLEventListener etc, add a few Glyph tests
* GraphUI Demo FontView01: Fix '-showUnderline', i.e. glyphListener shall use ↵Sven Gothel2023-08-281-1/+1
| | | | the last element in container, the GlyphShape
* GraphUI Demo FontView01: Enhance usability and refactor: Add left-column ↵Sven Gothel2023-08-281-78/+206
| | | | | | | | | | | | | | | | | | | | 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.
* Graph Font: Make TypecastRenderer.DEBUG package private to be used by ↵Sven Gothel2023-08-281-1/+1
| | | | TypecastFont
* GraphUI Shape: Show dirty-state in getSubString()Sven Gothel2023-08-281-1/+13
|
* Graph Font + Glyph: More robust detetection and API definition of ↵Sven Gothel2023-08-289-71/+178
| | | | | | non-contour/whitespace Glyphs (detect and allow to skip 'em) We also drop shapes for both, but for id 0 (unknown).
* Graph Loop: Make initFromPolyline() and locateClosestVertex() more robust, ↵Sven Gothel2023-08-284-12/+34
| | | | | | report error but do not crash. This behavior has been evaluated with a few fonts and the WIP FontView01 demo application.
* UISceneDemo03: Detail demo description, add blog entrySven Gothel2023-08-271-3/+7
|
* GraphUI Demo: UISceneDemo03: Add optional audio (only) via '-audio <URL or ↵Sven Gothel2023-08-271-4/+108
| | | | file-path>' using our GLMediaPlayer (FFmpeg + JOAL/OpenAL)
* GraphUI: Button: Reduce default DEFAULT_LABEL_ZOFFSET from 0.005f -> ↵Sven Gothel2023-08-271-1/+1
| | | | | | | | | 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.
* GraphUI: Extract generalized AnimGroup functionality from UISceneDemo03*, ↵Sven Gothel2023-08-277-781/+1336
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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