Catalog · How the catalog works
MRX-Skia-Surface
An experimental widget and module rendering engine for Delphi (FMX), powered by Skia4Delphi and FFmpeg.
- ★ 2 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
MRX-Skia-Surface
An experimental module rendering engine for Delphi (FMX), powered by Skia4Delphi and FFmpeg.
Instead of using standard FMX controls, this provides a generic TMRXDesktopObject base class. The surface manages these objects in a background thread, handling Z-Index layering, hit-testing, and smooth Lerp animations.
It's a little bit like a desktop window manager...
Current State
(Prototype - Work in Progress, playing around :D)
Right now, this is an active testing ground. The core threading, the Z-Index logic, and the basic compositing (with dynamic drop shadows and alpha-blending) work. Video playback is integrated to test how heavy, continuously updating modules behave alongside transparent UI widgets.

So far working:
Start video playback (click on black module)
dblclick animated zoom to fullscreen and back
Dragging of modules
Mouseover HotZoom
Shadows
Z-Order layering
Entry animationsrequirements
Delphi (RAD Studio)
Skia4Delphi
FFmpeg DLLs v8.1 or newer (libavcodec, libavformat, libswscale, libavutil)project and zipped sample exe included (but you need to get the dlls self, they are way too big :P)
https://www.gyan.dev/ffmpeg/builds/
- take those: ffmpeg-release-full-shared
ffmpeg units from:
https://github.com/Laex/Delphi-FFMPEG
----Latest Changes
v 0.3
- Added feature toggle properties: AllowFullscreen, AllowDrag, AllowRotation,
AllowTransparent, AllowSidebarmode. - Added TargetAlpha and Rotation properties with built-in smooth physics.
- Base class ApplyDrag and ToggleFullscreen now respect their Allow-flags.
- RenderDirtyObjects applies Rotation matrix.
- Added uSkiaAliveHighlighter integration (beasty gets stuck atm, but basically working)
- Added mouse position passthrough for overlay modules (e.g., AliveHighlighter).
v 0.2
- Replaced static Enum Z-Indexing with dynamic Integer Z-Ordering.
- Moved Modules in single unit.
- Added logic to elevate modules to Z_ORDER_FULLSCREEN dynamically.
- Implemented precise Z-Order aware HitTesting for mouse interactions.
- Switched dragging from eased TargetPosition to direct 1:1 Pos tracking.
- Added FForcePhysicsUpdate flag to keep state loops alive (Video frames).
- Refined entry animation physics for smoother edge-slide-in transitions.
- Added TMRXTopInfoModule to handle cinematic black-curtain intro sequence.
- Modules now start hidden (Visible := False) and are triggered by TopInfo.
- Implemented TMRXEntryStyle (esFromEdge) to auto-detect closest screen edge.
- TMRXControls locked out of Fullscreen transitions but kept above Video layer.
- TMRXPlaylist disables dragging and HotZoom when in SideBarMode.
- Stripped redundant physics code from TMRXVideo, now fully driven by base class.
- and i forgot what all else :D
If you want to tip me a coffee.. :)
🎨 Skia4Delphi Components:
Alive Progress/Loading circle https://github.com/LaMitaOne/SkiaAliveProgress
Audio Visualizer https://github.com/LaMitaOne/SkiaAVisualizer
CustomThreadedBase (this i use mostly) https://github.com/LaMitaOne/SkiaCustomThreadedBase
Skia Alive Grid https://github.com/LaMitaOne/Skia-AliveGrid
Skia-Flowmotion animated image grid https://github.com/LaMitaOne/skia-flowmotion
Skia-Slideshow https://github.com/LaMitaOne/Skia-Slideshow
Skia-Circlepopup https://github.com/LaMitaOne/skia-circlepopup
Skia-CubesPopup https://github.com/LaMitaOne/SkiaCubesPopup
Skia-Button https://github.com/LaMitaOne/SkiaButton
Skia Desktop Pet https://github.com/LaMitaOne/SkiaDesktopPetBase
🧪 Skia4Delphi experimental Components:
CustomMultithreadedBase https://github.com/LaMitaOne/SkiaCustomMultiThreadedBase
Page Control https://github.com/LaMitaOne/SkiaPageControl
LCARS fluid engine https://github.com/LaMitaOne/Skia-LCARS-Fluid-Engine
Fluid Magma effect https://github.com/LaMitaOne/Fluid-Magma-Effect

