WIP: implement new UI #32

Draft
AnthonyKwon wants to merge 160 commits from player-ui into master
Owner

This PR implements new replacement UI, PlayerUI.
(dummy; short introduction for the PlayerUI)

Old UI, will be called TableUI from now, is going to deprecated and maintained as minimum effort.
(DataGridView, core control of the TableUI, had become part of Avalonia Accelerate, so it's unavoidable anyway)

This PR implements new replacement UI, PlayerUI. (dummy; short introduction for the PlayerUI) Old UI, will be called TableUI from now, is going to deprecated and maintained as minimum effort. (DataGridView, core control of the TableUI, had become part of Avalonia Accelerate, so it's unavoidable anyway)
This is a draft implementation, this might be changed, or removed.
This reverts commit 83f5b4cfaf.
Save button does nothing currently.
This reverts commit 771146c4f4.
AnthonyKwon added this to the 0.2.0.0 milestone 2026-07-30 01:34:06 +09:00
This parameter causes exception if backend doesn't support speex resampler.
VirtualizingStackPanel estimates the size of every line it has not
realized, so the scroll extent and line positions were approximations
that shifted as the realized window moved. Replace it with
MeasuredVirtualizingPanel, which takes each height from IMeasuredItem
and keeps an exact position table, so offsets are correct whether or not
a line is realized.

UpdateScrollPosition now asks the panel for those offsets instead of
summing heights, and clamps the target so tall lines above the active
one cannot push it out of view.

P.S. from human: my attempt of fixing scroll position desync all failed, and I ran out of idea :(

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Follow aadishv's PixiJS implementation in aadishv/html-music, which
applies its filters to the container rather than to each sprite.

The twist runs once over the composed result in viewport space rather
than per copy, and saturation is applied after the blur rather than per
copy. Copy placement and rotation match the reference, with BasePose
replacing Speed and the per copy twist phases. DrawSprite replaces
DrawCopy to scale on the GPU, and the render cache is now disposed and
compared more strictly.

P.S from human: Most custom background-related commits are AI-generated, since I don't have any graphics skills yet. Only some parts like control(partial), caching, dark mode detection, etc are human generated. For this reason, they might completely rewritten later.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #48
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin player-ui:player-ui
git switch player-ui
Sign in to join this conversation.
No description provided.