Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Graph Font.getGlyphShapeBounds(): Use variant w/ 2 temp AffineTransform ↵ | Sven Gothel | 2023-04-18 | 2 | -6/+10 |
| | | | | matching getGlyphBounds() | ||||
* | GraphUI Test: Have TestTextRendererNEWT21's FontViewListener01 use 8mm/cell ↵ | Sven Gothel | 2023-04-18 | 1 | -1/+1 |
| | | | | | | to match old screenshots for regression test. No rendering regressions w/ last Graph changes found. | ||||
* | GraphUI: Add BoxLayout and Margin, todo: Have GridLayout properly use Gap w/ ↵ | Sven Gothel | 2023-04-18 | 4 | -1/+546 |
| | | | | Padding and alignment (Margin?) (CSS alike) | ||||
* | GraphUI Padding: Use CSS alike ctor semantics, hence swizzle ctor arguments | Sven Gothel | 2023-04-18 | 5 | -57/+71 |
| | |||||
* | Graph OutlineShape.checkOverlaps(): Test overlap first to drop ↵ | Sven Gothel | 2023-04-18 | 1 | -1/+1 |
| | | | | overlaps.contains(..) test | ||||
* | VectorUtil: Fix isVec3InTriangle3(..) testing p1, p2 and p3 | Sven Gothel | 2023-04-18 | 1 | -12/+8 |
| | |||||
* | Graph + GraphUI: Consolidate Vertex: Drop SVertex and factory, use Vec[234]f ↵ | Sven Gothel | 2023-04-18 | 46 | -1175/+639 |
| | | | | | | | | | | | instead of float[] and remove unused VectorUtil methods After Matrix4f consolidation and proving same or better performance on non array types, this enhances code readability, simplifies API, reduces bugs and may improve performance. GraphUI: - Have RoundButton as a functional class to make a round or rectangular backdrop, i.e. impl. addShapeToRegion() via reused addRoundShapeToRegion() | ||||
* | GraphUI Demos: Move GraphUIDemoArgs to sub-package util | Sven Gothel | 2023-04-18 | 9 | -2/+9 |
| | |||||
* | GraphUI Demo FontView01: Add font-name and selected glyphID to screenshot ↵ | Sven Gothel | 2023-04-14 | 1 | -4/+8 |
| | | | | filename (documentation) | ||||
* | GraphUI Demo FontView01: Add screenshot per selected Glyph | Sven Gothel | 2023-04-14 | 1 | -6/+9 |
| | |||||
* | GraphUI Demo FontView01: Separate general font metrix (height, line-height) ↵ | Sven Gothel | 2023-04-14 | 1 | -3/+3 |
| | | | | from actual Glyph metrix | ||||
* | GraphUI Demo FontView01: Add 'infoGrid' w/ GlyphShape (-> DAG SG reusing ↵ | Sven Gothel | 2023-04-14 | 1 | -21/+106 |
| | | | | | | | | | | instance) + details in text, active via mouse-click The GlyphShape instance will be reused in this use-case, i.e. once in the 'mainGrid' and if selected, in the 'infoGrid'. This also demos our DAG capability. Further textual details are also shown in the text label. | ||||
* | GraphUI Group.drawImpl0(): Copy List<Shape> to array and sort using ↵ | Sven Gothel | 2023-04-14 | 1 | -2/+7 |
| | | | | | | | Shape.ZAscendingComparator - fixes z-order issue, as we shall do same approach as in Scene.display() - fixes mutated container issue if a Shape gets removed or added to original List | ||||
* | GraphUI Container.removeShape(..): Return removed Shape, add ↵ | Sven Gothel | 2023-04-14 | 3 | -8/+33 |
| | | | | removeShape(index) variant; Group.(add|remove)Shape(..) markShapeDirty() to recompute bbox and layout. | ||||
* | Typecast Font.getGlyph(..): Fix Glyph case w/ 0 getOutlineVectexCount() -> ↵ | Sven Gothel | 2023-04-14 | 1 | -4/+14 |
| | | | | isWhiteSpace = true, use emptyShape | ||||
* | Typecast Font: Add API doc for getLineHeight(), remove unused Vec3f import | Sven Gothel | 2023-04-14 | 1 | -2/+14 |
| | |||||
* | Graph OutlineShape: Add getOutlineVectexCount(), i.e. total vertex count of ↵ | Sven Gothel | 2023-04-14 | 1 | -0/+10 |
| | | | | all Outlines | ||||
* | Typecast Font.Glyph: Expose isUndefined(), i.e. name == ".notdef" | Sven Gothel | 2023-04-14 | 2 | -0/+6 |
| | |||||
* | Typecast: Expose (new) getGlyphCount(): GlyfTable.getSize() -> ↵ | Sven Gothel | 2023-04-14 | 5 | -1/+18 |
| | | | | (OTFont,Font).getGlyphCount() | ||||
* | Typecast GlyfTable: Use `final` qualifier (cleanup) | Sven Gothel | 2023-04-14 | 1 | -14/+14 |
| | |||||
* | GraphUI Demo/Test: FontView[Listener]01: Use 10 'mmPerCell', Monitor ↵ | Sven Gothel | 2023-04-14 | 2 | -46/+70 |
| | | | | resolution independent for display same size. | ||||
* | GraphUI Tests: Add TestTextRendererNEWT21 using FontViewListener01 (like ↵ | Sven Gothel | 2023-04-14 | 3 | -0/+460 |
| | | | | FontView01 demos) rendering a grid of each glyph for better validation for many fonts and renderModes/sampleCount | ||||
* | GraphUI Demo FontView01: Use full window size if grid is not otherwise ↵ | Sven Gothel | 2023-04-14 | 1 | -13/+25 |
| | | | | defined and scale group accordingly | ||||
* | Graph Unit Tests: Minor edits: Wait for GLRunnable done on screenshot, ... | Sven Gothel | 2023-04-14 | 3 | -3/+6 |
| | |||||
* | GraphUI Demos: Use new Scene.screenshot(.. screen.nextScreenShotFile(..)) | Sven Gothel | 2023-04-14 | 4 | -9/+6 |
| | |||||
* | GraphUI Shape.validate(*): Return this for chaining | Sven Gothel | 2023-04-14 | 1 | -2/+4 |
| | |||||
* | GraphUI Scene: Use getRenderModeString(..) w/ sample-counts where ↵ | Sven Gothel | 2023-04-14 | 1 | -43/+55 |
| | | | | applicable, restructure screenshot(..) by using nextScreenshotFile(..) - all using default tech representation | ||||
* | Graph TypecastFont: Avoid PostTable (out-of-bounds) for glyph_name when not ↵ | Sven Gothel | 2023-04-14 | 1 | -3/+7 |
| | | | | even a Glyph was mapped to the ID | ||||
* | Graph Region: Add NORM_RENDERING_BIT (0) for better documented usage; Add ↵ | Sven Gothel | 2023-04-14 | 1 | -0/+31 |
| | | | | getRenderModeString(renderModes, graphSampleCount, fsaaSampleCount) for unified tech representation | ||||
* | GraphUI Scene.screenshot(): Add convenient variant to be executed on-display ↵ | Sven Gothel | 2023-04-13 | 5 | -17/+35 |
| | | | | call. FontView stays open and issues a screenshot. | ||||
* | GraphUI Demos: Adding prelim FontView01, which may become a 'little ↵ | Sven Gothel | 2023-04-13 | 5 | -4/+198 |
| | | | | FontForge' ;-) | ||||
* | GraphUI GridLayout: Also adjust potential bottom-left delta when centering ↵ | Sven Gothel | 2023-04-13 | 1 | -2/+3 |
| | | | | shape to cell (like GlyphShape w/ underline) | ||||
* | GraphUI Shape: Add onClicked(..) | Sven Gothel | 2023-04-13 | 1 | -0/+5 |
| | |||||
* | GraphUI Group: Avoid additional shapes-loop w/o layouter | Sven Gothel | 2023-04-13 | 1 | -10/+15 |
| | |||||
* | GraphUI Rectangle: Construct shape w/ 0/0 bottom-left origin as recommended ↵ | Sven Gothel | 2023-04-13 | 1 | -31/+26 |
| | | | | by Shape spec | ||||
* | GraphUI Demos: Fix var-name typo, its velocity | Sven Gothel | 2023-04-13 | 6 | -16/+16 |
| | | | | .. or how to propagate a typo from an initial test case to all of 'em ;-) | ||||
* | GraphUI GridLayout: Functional Grid Layout w/ Padding, demo'ed in ↵ | Sven Gothel | 2023-04-12 | 6 | -193/+350 |
| | | | | | | | | | | UISceneDemo20 with button Groups All layout magic is simply performed in Group.Layout.layout(..) @ validate, incl. updating the bounding box to have the padding included. This demonstrates GraphUI's capability to be used with correct layout, i.e. its pure matrix based position, scale and rotation. | ||||
* | GraphUI TreeTool: Iterate from start to end (not vice versa), eliminating ↵ | Sven Gothel | 2023-04-12 | 1 | -4/+4 |
| | | | | potential side-effects - fixing forSortedAll(..) | ||||
* | Graph/Math: Cleanup toString(), spacing and use System.lineSeparator() | Sven Gothel | 2023-04-12 | 5 | -29/+23 |
| | |||||
* | GraphUI: Return this on setter/modifier methods for chaining | Sven Gothel | 2023-04-12 | 4 | -28/+67 |
| | |||||
* | GraphUI Demos: Use GraphUIDemoArgs for UISceneDemo1[01] | Sven Gothel | 2023-04-12 | 2 | -58/+42 |
| | |||||
* | GraphUI UISceneDemo03b: Action with the Glyph Group Container: Rotate auto ↵ | Sven Gothel | 2023-04-10 | 2 | -2/+540 |
| | | | | and w/ scroll-wheel (or zoom if alt is pressed) | ||||
* | GraphUI UISceneDemo03: Use Group as a Container to hold all Glyphs and have ↵ | Sven Gothel | 2023-04-10 | 1 | -6/+12 |
| | | | | them no more interacting when arrived. Play: Drag 'em ;-) | ||||
* | GraphUI TreeTool: For all forAll*(): Allow acting upon Container Shape, i.e. ↵ | Sven Gothel | 2023-04-10 | 1 | -22/+14 |
| | | | | | | 1st visit Shape, only therafter (if false) traverse into Container This is required to allow actions on a Container itself. | ||||
* | GraphUI Scene.pickShape(): Consider isInteractive() most early in visitor() ↵ | Sven Gothel | 2023-04-10 | 1 | -4/+2 |
| | | | | before gluUnProjectRay(..) | ||||
* | GraphUI Shape: Refined toString(), add onToggle(Listener), at toggle() only ↵ | Sven Gothel | 2023-04-10 | 1 | -4/+9 |
| | | | | markStateDirty() if toggleable | ||||
* | GraphUI: Group is non-interactive per default -> setInteractive(..) | Sven Gothel | 2023-04-10 | 1 | -1/+8 |
| | |||||
* | GraphUI: Container (Group, Scene): Add removeAllShapes() and expose ↵ | Sven Gothel | 2023-04-10 | 3 | -3/+43 |
| | | | | frustum-culling get/set | ||||
* | Matrix4f.mapWin*(): Drop unused temp matrices, map*() returns false on ↵ | Sven Gothel | 2023-04-09 | 16 | -445/+794 |
| | | | | | | | | | | | | | | | | | | | | | | | | invPMv null; PMVMatrix: Make Mvi, Mvit optional at ctor, add user PMv and PMvi - used at gluUnProject() .. Matrix4f.mapWin*() variants w/ invPMv don't need temp matrices, they also shall handle null invPMv -> return false to streamline usage w/ PMVMatrix if inversion failed. PMVMatrix adds user space common premultiplies Pmv and Pmvi on demand like Frustum. These are commonly required for e.g. gluUnProject(..)/mapWinToObj(..) and might benefit from caching if stack is maintained and no modification occured. PMVMatrix now has the shader related Mvi and Mvit optional at construction(!), so its backing buffers. This reduces footprint for other use cases. The 2nd temp matrix is also on-demand, to reduce footprint for certain use cases. Removed public access to temporary storage. +++ While these additional matrices are on demand and/or at request @ ctor, general memory footprint is reduced per default and hence deemed acceptable while still having PMVMatrix acting as a core flexible matrix provider. | ||||
* | PMVMatrix: Expose temporary storage (w/o side-effects) for efficiency; ↵ | Sven Gothel | 2023-04-08 | 2 | -5/+54 |
| | | | | | | | GraphUI.Shape: Efficiently reuse matPMv and temporary PMVMatrix storage Reuse PMv in Shape.getSurfaceSize() and Shape.winToShapeCoord(), for the latter we invert the reused PMv for mapWinToObj (i.e. UnProject). |