| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
for experimental occlusion-culling
TreeTool's cullShapes(), actually a naive dumm occlusion test (*RENAME IT*),
would need to realize whether the shape/groups actually cover shapes below,
i.e. are not on same Z-Axis and transparent.
Hence, this is disabled in code and we rely on the Z buffer still,
just an idea ..
|
|
|
|
|
|
|
|
|
|
|
| |
simplify and reduce runtime costs
Refines commit 43a7899fedf2a570d20b03848bf15710f30b7f26
Scene handles top-level active state via releaseActiveShape() and setActive(),
now calling into setActiveTopLevel() -> dispatchActivationEvent().
Drop child's addActivationListener(forwardActivation) and isActive() override.
|
|
|
|
| |
ctrlBlend) to remove the occlusion by the blending box
|
|
|
|
| |
Pre/Next Buttons; Toggle HUD head info box (full or brief)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Order, testing Children and fallback to Group if positive
Picking algo in Z-Ascending order worked only by chance, as it picked up any bottom node.
+++
Proper algo is in Z-Descending order to block occluded (child) nodes:
for-all s : shapes
p1 = testPicking(s)
if ( s is Container ) {
p2 = testPicking(s.childs)
if( null != p2 ) {
p1 = p2; // override w/ child prio
}
}
return p1
}
Further, testPicking(shape) shall only return a positive shape,
if the event dispatching check (mouse-over, click, ..)
signals end-of-traversal - as originally intended.
Overall philosophy is to pick the 'deepest' child of a group
if responding, otherwise the next higher interactive group.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
where its zOffset gets adjusted when activated..
.. instead of having a non-working complicated callback orgy setup.
This also takes away the getAdjustedZ() overloading burden (or better uglyness) etc.
Hence Group's setWidgetMode(boolean) became:
- enableTopLevelWidget(Scene)
- disableTopLevelWidget()
The forwardActivation listener is still applied to all children
as well as isActive() is also still overloaded for same required behavior.
However, none of the children is set in 'widget mode'
as well as the Group is simply added to (or removed from)
the Scene's top-level Group list - the holder.
Scene's setActiveShape(Shape) and releaseActiveShape()
handle the top-level Group if affected,
i.e. adding or zero'ing its ZOffset.
|
|
|
|
| |
code.
|
|
|
|
|
|
| |
PointerListener for onClicked(), add onHover();
Subsequent commits will fix complete cleanup where code was changed mostly regarding other issues.
|
|
|
|
| |
knob for round-knob and page-size knob
|
|
|
|
|
|
|
|
| |
multiple lines (max 4) fitting into box, trimming it beforehand
Not always are Text/ASS subtitles well formed with newline character.
Use new StringUtil to re-layout if their width doesn't fit into the box,
by trimming all whitespace and splitting them into up-to 4 lines.
|
| |
|
|
|
|
| |
TexSeqButton.use{AspectRation->ARatio}Letterbox() matching TextureSequence
|
|
|
|
|
|
|
| |
Positional change could occurre in case the content has changed.
However, our positional slider would not reflect this and the sliding view should stay stable.
Test: UIMediaGrid01 having one player tile zoomed and returned.
|
|
|
|
| |
matching our buildin-theme and have the tips placed just above center of the toop (not above it)
|
|
|
|
| |
{get,set}FallbackFont() + Font.getBestCoverage(..); Use fallback-font in MediaButton in case chosen font doesn't match (foreign languages, e.g. 'zho' Chinese .. )
|
|
|
|
|
|
| |
to CenterHoriz, also support Left.
MediaButton: Also cleanup local vars in layout
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(PGS ..) via FFMPEGFMediaPlayer/FFmpeg
FFMPEGFMediaPlayer related changes:
- Add libswscale (6th FFmpeg lib used) for sws_getCachedContext(), sws_scale() and sws_freeContext(),
used natively to convert the palette'ed bitmap into RGBA colorspace -> GL texture
- Handling AVSubtitleRect.type SUBTITLE_BITMAP
-- only handled if libswscale is available
-- config/adjust texture object
-- sws_scale palette'ed bitmap to texture
-- intermediate memory is cached, may be resized and free'ed at destroy
-- texture objects are managed and passed from GLMediaPlayerImpl,
as they are also forwarded to player client via SubBitmapEvent
- Passing the AVCodecID to GLMediaPlayerImpl, converted to our CodecID enum.
- Unifying creation and opening of AVCodecContext with 'createOpenedAVCodecContext(..)'
+++
SubtitleEvent*
- SubTextEvent now also handles ASS.Dialogue (FFmpeg 4)
besides ASS.Event (FFmpeg 5, 6, ..).
+++
GLMediaPlayerImpl
- Added ringbuffer subTexFree, managing Texture for bitmap'ed subtitles
-- Uses 1 bitmap-subtitle Texture per used textureCount in cache,
as one bitmap-subtile can be displayed per frame.
Could be potentially reduced to just 2 .. but resources used are
relatively low here.
- Validating subTexFree + videoFramesFree usage,
use blocking get/put ringbuffer due to utilization from different threads.
- Receives subtitle content from native getNextPacket0() via callback,
creates SubtitleEvent instance and passes it to a SubtitleEventListener - if exists.
(See MediaButton example)
-- SubBitmapEvent also gets its special SubBitmapEvent.TextureOwner to handle client releasing
the event and allowing us to put back the Texture resource to 'subTexFree'.
This passing through of the Texture object is probably a weakness of this lifecycle
and requires the client to ensure SubtitleEvent.release() gets called.
See MediaButton example!
- Exposing CodecID, allowing clients like MediaButton to handle SubtitleEvent content according to codec
|
|
|
|
|
|
|
|
|
| |
Region.COLORTEXTURE_LETTERBOX_RENDERING_BIT to TextureSequence and add enabling/disabling of aratio adjustment + letter-box back-color
TextureSequence color-texture params fetched from Graph VBORegion* and fed into shader.
This allows more flexibility in aspect-ratio adjustment as well as setting a clipping background color for
the added letter-box space.
|
| |
|
|
|
|
| |
available; JOGL ImageSequence: Add addFrame(GL, TextureFrame), remove*Frame() and isSequenceAnimating()
|
|
|
|
| |
lock free
|
|
|
|
|
|
|
|
| |
applyMatToMv() and getMat(*)
It is sufficient to mark the internal iMat dirty when mutating the source values (pos, ..) and calling updateMat() only once when used in applyMatToMv() and getMat(*).
iMatIdent can also be set to true within updateMat() IF neither mutations occured, i.e. no translocation, scale or rotation.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
GLMediaEventListener, easing listener callbacks; Prepare SubtitleEventListener generalization (Bug 1494)
Moves pushSound(), pushSubtitle*() from FFMPEGMediaPlayer to GLMediaPlayerImpl,
as it is handled in a generic way - even though currently only called by native FFMPEGMediaPlayer implementation.
Note: This patch is incomplete, i.e. not even compile clean.
But choses as-is to semantically split the work to ease review.
|
|
|
|
| |
color/blending and subLineDY; MediaPlayer: Add full infoLine toggle with click on infoBox
|
|
|
|
| |
to pts [ms] (fixed); Use ASSEventLine packets within proper pts only.
|
|
|
|
| |
implementations: Either Uninit, Init, Pause or Play (exclusive)
|
|
|
|
| |
GLMediaPlayer
|
|
|
|
| |
zoomSize == 1, full-screen)
|
|
|
|
| |
ass/saa) support via GLMediaPlayer/FFMPEGMediaPlayer
|
|
|
|
| |
GraphShape.drawImpl0(..) override;
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
show their language as a button - press to switch to next
|
|
|
|
| |
SliderAdapter.clicked() as dragged is always called
|
|
|
|
| |
button; Fix tooltip help; Make slower-speed reduce by half if <= 1
|
|
|
|
| |
response when active
|
|
|
|
| |
activeRGBAModulateOn.
|
|
|
|
| |
API doc to ease usage
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
comments; UIMediaGrid01 now uses RangedGroup
RangeSlider
- Fix pageSize, i.e. allow valid content.getBounds() be pending @ validateImpl()
- Clip value [0, maximum - pageSize]
- Has to use Float.isFinite() to capture both, NaN and Infinity
-- used for pageSize, determining whether slider uses pageSize rect-knob or position round-knob
-- used for minMax, val, val_pct and temp range + pageSize_pct
-- don't overwrite valid pageSize if leading to !isFinite()
- Reuse setKnobSize() for ctor as well, where padding is be done once (FIXME?)
- Tested via RangedGroup w/ UIMediaGrid01 and FontView0
-- vertical slider, inverse and !inverse
|
|
|
|
| |
FontView01: Use TooltipShape for GlyphShape only with mouse click -> Tooltip.now()
|
|
|
|
| |
EDT, reducing temp objects on mouse moves
|
|
|
|
| |
RuntimeException if tip couldn't be found within wrapper Group
|
|
|
|
| |
Shape (if reused in DAG); Fix FontView01 TooltipShape instance, use NoOp DestroyCallback
|
|
|
|
| |
transformMvTo() was an intermediate rename (oops)
|