summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* GraphUI GraphShape: createGLRegion() -> updateGLRegion(), called by ↵Sven Gothel2023-04-2019-104/+192
| | | | | | | | | | | | | | | | | | | | | | addShapeToRegion() impl to utilize OutlineShape -> GLRegion ctor w/ proper buffer-size This way we avoid unnecessary buffer growth and allow creation of 'always' fitting buffer sizes. +++ Update or freshly create the GLRegion, while allocating its buffers with given initial `vertexCount` and `indexCount`. Method shall be invoked by the addShapeToRegion(GLProfile, GL2ES2) implementation before actually adding the OutlineShape to the GLRegion. addShapeToRegion(GLProfile, GL2ES2) is capable to determine initial `vertexCount` and `indexCount` buffer sizes, as it composes the OutlineShapes to be added. updateGLRegion(GLProfile, GL2ES2, TextureSequence, OutlineShape) maybe used for convenience. In case GLRegion is `null`, a new instance is being created. In case the GLRegion already exists, it will be either cleared if the GL2ES2 `gl` instance is not `null` or earmarked for deletion at a later time and a new instance is being created.
* Graph GLRegion/TextRegionUtil: Enhance pre-determination of buffer-size, ↵Sven Gothel2023-04-2015-58/+119
| | | | | | | | | | increase default initial 16->64 (unsued) - Region.countOutlineShape(..) now returns unpatched 3*triangle value for indices, avoiding grow - TextRegionUtil.addStringToRegion() uses countStringRegion(..) per default - Added GLRegion.create(.., OutlineShape) for convenience, using Region.countOutlineShape(..) - Refined API doc -
* Graph OutlineShape.get{Outline->}VectexCount() renamedSven Gothel2023-04-203-3/+3
|
* GLArrayDataClient: Refine API doc for grow*() and reserve()Sven Gothel2023-04-201-2/+2
|
* GraphUI Button.createGLRegion(): Pre-calc Region buffer size for BaseButton ↵Sven Gothel2023-04-201-1/+14
| | | | (16) + Label-Text to avoid buffer grow
* Graph GLRegion*: Utilize interleaved GLSL buffers for vertices, curveParams ↵Sven Gothel2023-04-206-172/+119
| | | | | | | | | | | and the optional colors (GPU effeciency and performance; Increased CPU buffer growth performance) Besides simplification, interleaved GPU memory boosts - effeciency - performance Since only one underlying backing buffer on the CPU (host) has to be managed, it also increases buffer growth performance.
* GLArrayDataServer.addGLSLSubArray(): Return (actual) GLArrayDataWrapper ↵Sven Gothel2023-04-201-1/+1
| | | | instead of just GLArrayData interface, exposing and allowing mutable access to attribute location for interleaved sub-arrays
* Graph VBORegion2P*.renderVBO(): Add comment on ↵Sven Gothel2023-04-192-0/+9
| | | | BITHINT_GLOBAL_DEPTH_TEST_ENABLED usage -> To be investigated.
* Graph [GL]Region: Use small initial indices/vertices count (640 -> 16), ↵Sven Gothel2023-04-192-6/+9
| | | | | | since (huge) text glyph gets always pre-calculated. Region.countOutlineShape() indices ceiling raised from 60% to 90% of vertices, otherwise gets exceeded too often later on.
* Graph GLRegion: Consolidate pass-1 common data (indices, vertices, ..) and ↵Sven Gothel2023-04-195-476/+186
| | | | all related methods. Add growCount stat.
* Graph Region.addOutlineShape(): Fix DEBUG_INSTANCE path, enable perf counter ↵Sven Gothel2023-04-191-0/+3
| | | | if disabled.
* Graph: Region.countOutlineShape(..) -> static, allow usage w/o instance; ↵Sven Gothel2023-04-193-33/+40
| | | | | | | | TextRegionUtil.addStringToRegion() grow region buffer w/ counting (as well); GLRegion.create(..) count + reuse create(.., size) static-ctor All supported string -> region method utilize pre-calc of size and growth! Before, GraphUI's Label0 used TextRegionUtil.addStringToRegion() and hence missed this optimization path.
* GraphUI {Round->Base}Button, denoting perpendicular or round corners (aka ↵Sven Gothel2023-04-195-54/+78
| | | | | | | | rectangle or oval shape) - Button + BaseButton setter also pass this for chaining - Button {twoPassLabel->label}ZOffset, investigate whether z-offset still required (not if blending is enabled!) -
* Graph Font.getGlyphShapeBounds(): Use variant w/ 2 temp AffineTransform ↵Sven Gothel2023-04-182-6/+10
| | | | matching getGlyphBounds()
* GraphUI Test: Have TestTextRendererNEWT21's FontViewListener01 use 8mm/cell ↵Sven Gothel2023-04-181-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 Gothel2023-04-184-1/+546
| | | | Padding and alignment (Margin?) (CSS alike)
* GraphUI Padding: Use CSS alike ctor semantics, hence swizzle ctor argumentsSven Gothel2023-04-185-57/+71
|
* Graph OutlineShape.checkOverlaps(): Test overlap first to drop ↵Sven Gothel2023-04-181-1/+1
| | | | overlaps.contains(..) test
* VectorUtil: Fix isVec3InTriangle3(..) testing p1, p2 and p3Sven Gothel2023-04-181-12/+8
|
* Graph + GraphUI: Consolidate Vertex: Drop SVertex and factory, use Vec[234]f ↵Sven Gothel2023-04-1846-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 utilSven Gothel2023-04-189-2/+9
|
* GraphUI Demo FontView01: Add font-name and selected glyphID to screenshot ↵Sven Gothel2023-04-141-4/+8
| | | | filename (documentation)
* GraphUI Demo FontView01: Add screenshot per selected GlyphSven Gothel2023-04-141-6/+9
|
* GraphUI Demo FontView01: Separate general font metrix (height, line-height) ↵Sven Gothel2023-04-141-3/+3
| | | | from actual Glyph metrix
* GraphUI Demo FontView01: Add 'infoGrid' w/ GlyphShape (-> DAG SG reusing ↵Sven Gothel2023-04-141-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 Gothel2023-04-141-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 Gothel2023-04-143-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 Gothel2023-04-141-4/+14
| | | | isWhiteSpace = true, use emptyShape
* Typecast Font: Add API doc for getLineHeight(), remove unused Vec3f importSven Gothel2023-04-141-2/+14
|
* Graph OutlineShape: Add getOutlineVectexCount(), i.e. total vertex count of ↵Sven Gothel2023-04-141-0/+10
| | | | all Outlines
* Typecast Font.Glyph: Expose isUndefined(), i.e. name == ".notdef"Sven Gothel2023-04-142-0/+6
|
* Typecast: Expose (new) getGlyphCount(): GlyfTable.getSize() -> ↵Sven Gothel2023-04-145-1/+18
| | | | (OTFont,Font).getGlyphCount()
* Typecast GlyfTable: Use `final` qualifier (cleanup)Sven Gothel2023-04-141-14/+14
|
* GraphUI Demo/Test: FontView[Listener]01: Use 10 'mmPerCell', Monitor ↵Sven Gothel2023-04-142-46/+70
| | | | resolution independent for display same size.
* GraphUI Tests: Add TestTextRendererNEWT21 using FontViewListener01 (like ↵Sven Gothel2023-04-143-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 Gothel2023-04-141-13/+25
| | | | defined and scale group accordingly
* Graph Unit Tests: Minor edits: Wait for GLRunnable done on screenshot, ...Sven Gothel2023-04-143-3/+6
|
* GraphUI Demos: Use new Scene.screenshot(.. screen.nextScreenShotFile(..))Sven Gothel2023-04-144-9/+6
|
* GraphUI Shape.validate(*): Return this for chainingSven Gothel2023-04-141-2/+4
|
* GraphUI Scene: Use getRenderModeString(..) w/ sample-counts where ↵Sven Gothel2023-04-141-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 Gothel2023-04-141-3/+7
| | | | even a Glyph was mapped to the ID
* Graph Region: Add NORM_RENDERING_BIT (0) for better documented usage; Add ↵Sven Gothel2023-04-141-0/+31
| | | | getRenderModeString(renderModes, graphSampleCount, fsaaSampleCount) for unified tech representation
* GraphUI Scene.screenshot(): Add convenient variant to be executed on-display ↵Sven Gothel2023-04-135-17/+35
| | | | call. FontView stays open and issues a screenshot.
* GraphUI Demos: Adding prelim FontView01, which may become a 'little ↵Sven Gothel2023-04-135-4/+198
| | | | FontForge' ;-)
* GraphUI GridLayout: Also adjust potential bottom-left delta when centering ↵Sven Gothel2023-04-131-2/+3
| | | | shape to cell (like GlyphShape w/ underline)
* GraphUI Shape: Add onClicked(..)Sven Gothel2023-04-131-0/+5
|
* GraphUI Group: Avoid additional shapes-loop w/o layouterSven Gothel2023-04-131-10/+15
|
* GraphUI Rectangle: Construct shape w/ 0/0 bottom-left origin as recommended ↵Sven Gothel2023-04-131-31/+26
| | | | by Shape spec
* GraphUI Demos: Fix var-name typo, its velocitySven Gothel2023-04-136-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 Gothel2023-04-126-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.