Implement blur behind plasmoid to support scaling and rotation
This patch implements the math behind offset+rotate+scale transformation to replicate geometry of applet container and apply it to cut a sufficient subrect of wallpaper, and to adjust mask's positioning.
Special thanks to linear algebra courses from university. This is probably the first time I'm applying that knowledge since graduation.
See also: cede2681
A little demo with background.visible: false
and slow animations, to make it easy to see what's going on about blur and its mask:
Test plan:
- check that blur doesn't turn transparent near any of screen edges,
- pay attention to mask boundaries near edges: it shouldn't shift to the right or bottom when applet is being dragged slightly outside of screen,
- test rotation and removal, preferably with slow animations and "partially outside of screen" positioning.
CC @teams/vdg and @teams/calculus lol
PS label "bugfix" because it fixes erroneously static background during "remove applet" animation.