aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* GraphUI Group Clipping setClip{OnBox->OnBounds}(): Add Vec3f cullingScale ↵Sven Göthel2024-01-151-21/+76
| | | | | | | | | | | | | | | | | | 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'
* AABBox: Add intersects(AABBox), contains(AABBox), scale(float, float, float) ↵Sven Göthel2024-01-151-0/+59
| | | | and scale2(float, float, float)
* AABBox: Rename private fields low -> bl and hight -> tr for readability; ↵Sven Göthel2024-01-151-149/+187
| | | | Unroll getRayIntersection()'s 'find candidate planes'
* GraphUI Demo FontView01: Remove using ↵Sven Göthel2024-01-151-3/+0
| | | | jogamp.graph.curve.opengl.VBORegion2PVBAAES2 perf-counter hooks (not committed)
* GraphUI: Added RangedGroup Widget, displaying a clipped content Group with ↵Sven Göthel2024-01-152-130/+320
| | | | | | | | | | 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
* GraphUI Demos CommandlineOptions: Add ctor w/ graphAAQuality and graphAASamplesSven Göthel2024-01-151-4/+15
|
* GraphUI Shape: Add receiveKeyEvents() and receiveMouseEvents() allowing a ↵Sven Göthel2024-01-153-8/+135
| | | | | | | | | | 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.
* GraphUI RangeSlider: [add,remove]{->Slider}Listener()Sven Göthel2024-01-152-4/+4
|
* Graph Text Tests: TestTextRendererNEWT20, TestTextRendererNEWT21: Reduce ↵Sven Göthel2024-01-153-13/+42
| | | | sampleSet 3 -> 1 and fontSet 11 -> 7 to avoid footprint for default tests.
* GraphUI RangeSlider: Add SliderAdapter (convenience) and use a ↵Sven Göthel2024-01-153-47/+74
| | | | listener-array (was 1 instance)
* Graph/GraphUI AA-Quality (shader): Region: Add DEFAULT_AA_QUALITY and ↵Sven Göthel2024-01-1541-226/+288
| | | | | | | | | | | | | | | | | | | | | | | | 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
* GraphUI RangeSlider: Fix API doc for implementation detailSven Göthel2024-01-141-2/+2
|
* GraphUI RangeSlider: Position page-sized knob (variant) with value at ↵Sven Göthel2024-01-141-5/+22
| | | | page-start position.
* GraphUI UIShapeDemo00: Simple Shape within SceneSven Göthel2024-01-141-0/+152
|
* Bump (c) -2024 for edited files + LICENSE.txtSven Göthel2024-01-1423-25/+25
|
* Graph/GraphUI: Revise Graph Region ShaderMapping, fix AABBox-Clipping for ↵Sven Göthel2024-01-1433-404/+609
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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()
* GLReadBufferUtil: Allow passing a custom GL read-buffer name, useful to read ↵Sven Göthel2024-01-131-1/+8
| | | | FBO attachments (GL_COLOR_ATTACHMENTi)
* Matrix4f: Fix minor API doc parem ref-nameSven Göthel2024-01-131-1/+1
|
* Graph VBORegion2PVBAAES2: Fix Rescale (MAX texSize): renderFboHeight shall ↵Sven Göthel2024-01-121-1/+1
| | | | use winHeight (typo)
* GraphUI RangeSlider: Add unitSize param: Size of one unit (element) in ↵Sven Göthel2024-01-123-42/+52
| | | | sliding direction
* GraphUI Demos: Use CommandlineOptions properlySven Göthel2024-01-122-21/+21
|
* AABBox resize{Width, Height}(..): Positive argument shall always denote ↵Sven Göthel2024-01-122-5/+5
| | | | expansion
* GraphUI Margin/Padding: Rename zeroSum*() -> zero*()Sven Göthel2024-01-128-37/+37
|
* Graph Clipping: Add missing Modelview-Matrix (Mv) Multiplication / ConsiderationSven Göthel2024-01-095-13/+42
| | | | | | - 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
* Graph Clipping: Initial Region impl of AABBox clipping using GLSL shader ↵Sven Göthel2024-01-099-34/+464
| | | | | | | | | | | | (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
* Graph Clipping: GLSL: Add `USE_AABBOX_CLIPPING`, i.e. clipping via AABBox ↵Sven Göthel2024-01-098-19/+50
| | | | | | | | | | | | | | | 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.
* Graph GLSL functions.glsl: Complete overload vec2 and vec3 variants; Fix ↵Sven Göthel2024-01-091-8/+52
| | | | | | | | | | | | | | | | | | '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.
* GraphUI Demo UIMediaGrid00: Add letterBox option, defaults to true nowSven Göthel2024-01-081-1/+5
|
* GraphUI Demos: Have CommandlineOptions produce GLProfile and full ↵Sven Göthel2024-01-0819-236/+128
| | | | GLCapabilities request, removing code duplication
* GraphUI Rectangle: Remove dropping AA_RENDERING_MASK, i.e. allow ↵Sven Göthel2024-01-072-3/+3
| | | | | | | | | | 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.
* GraphUI Tooltip: Simplify integration w/ Scene + Shape; Use ↵Sven Göthel2024-01-075-66/+101
| | | | | | | | | | 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(..)
* GraphUI Button.setLabelColor(..): Add alpha channel and variant w/ Vec4f for ↵Sven Göthel2024-01-075-8/+18
| | | | flexibility
* GraphUI Shape: Ease Tooltip managment via Scene: Only started Tooltip is ↵Sven Göthel2024-01-073-22/+15
| | | | required to tick(), drop List<Tooltip>
* GraphUI Shape: Enable Tooltip (currently text only) to be displayed after ↵Sven Göthel2024-01-075-6/+289
| | | | | | | | | | | | | | | 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.
* GraphUI RangeSlider.addMark(): Return the mark-shape and use double itemLen ↵Sven Göthel2024-01-071-10/+21
| | | | (in sliding direction) for better visibility
* GraphUI MediaPlayer / GLMediaPlayer: Add current chapter-title to info-fieldSven Göthel2024-01-075-7/+30
|
* GraphUI Shape: Maintain multiple Activation Listener (ArrayList instead of ↵Sven Göthel2024-01-073-13/+40
| | | | | | | 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.
* GraphUI Cleanup: Simplify Shape.draw*() and ↵Sven Göthel2024-01-078-154/+144
| | | | | | | | | | | | | 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()
* GraphUI RangeSlider: Add rectangular marks (e.g. for chapters, see ↵Sven Gothel2023-12-313-54/+89
| | | | | | 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.
* GraphUI Group: Fix layout w/ zero shapes (empty), i.e. set AABBox to zeroSven Gothel2023-12-311-1/+3
|
* GraphUI MediaButton: Add clearImpl(..), stopping and rewinding streamSven Gothel2023-12-301-0/+5
|
* GLMediaPlayer/FFMPEGMediaPlayer: Add chapter metadata support and use ↵Sven Gothel2023-12-3010-55/+184
| | | | | | | | com.jogamp.common.av.PTS.millisToTimeStr(..) Chapter metadata is now supported via our FFMPEGMediaPlayer implementation. Added public method: 'Chapters[] GLMediaPlayer.getChapters()'
* GraphUI RangeSlider Widget: Add rectangular page-sized knob mode using a ↵Sven Gothel2023-12-243-178/+412
| | | | | | 'page size' of covered view. Resolve color-setup. Tested with FontView01
* GraphUI MediaPlayer Widget: Issue playStream(..) and setTextureUnit(..) by ↵Sven Gothel2023-12-243-14/+8
| | | | caller, reducing specification
* GraphUI Shape: Allow overriding of setColor(..) and setPressedColorMod(..)Sven Gothel2023-12-241-3/+3
|
* GraphUI Scene/Shape: Add KeyListener for activeShapeSven Gothel2023-12-242-6/+98
|
* Bug 805: GraphUI: Add Widget 'marker' (a Group), derived by {MediaUI01 -> ↵Sven Gothel2023-12-195-124/+487
| | | | | | | | | | | | | 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).
* GraphUI Shape Rectangle: Draw simple filled rect if lineWidth==0, drop ↵Sven Gothel2023-12-191-7/+8
| | | | AA_RENDERING_MASK from renderModes (not necessary for a rect)
* GraphUI Group: Allow override of clearImpl0() and destroyImpl0()Sven Gothel2023-12-191-5/+5
|
* GraphUI Shape: Unify 'resetState()' for clear and destroy, refine API docSven Gothel2023-12-191-16/+22
|