diff options
author | Joe <rrbo@proton.me> | 2023-01-31 14:03:59 +0100 |
---|---|---|
committer | Joe <rrbo@proton.me> | 2023-01-31 14:03:59 +0100 |
commit | efa2957045fe9ea4421ea4a0c546f62a8a27fb58 (patch) | |
tree | 816b267a9d431e28744db41429358516ab0c461b /.config/mpv/scripts/uosc_shared/elements/Curtain.lua | |
parent | up (diff) | |
download | dotfiles-bsd-efa2957045fe9ea4421ea4a0c546f62a8a27fb58.tar.gz dotfiles-bsd-efa2957045fe9ea4421ea4a0c546f62a8a27fb58.tar.bz2 dotfiles-bsd-efa2957045fe9ea4421ea4a0c546f62a8a27fb58.tar.xz dotfiles-bsd-efa2957045fe9ea4421ea4a0c546f62a8a27fb58.tar.zst dotfiles-bsd-efa2957045fe9ea4421ea4a0c546f62a8a27fb58.zip |
update
Diffstat (limited to '.config/mpv/scripts/uosc_shared/elements/Curtain.lua')
-rw-r--r-- | .config/mpv/scripts/uosc_shared/elements/Curtain.lua | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/.config/mpv/scripts/uosc_shared/elements/Curtain.lua b/.config/mpv/scripts/uosc_shared/elements/Curtain.lua new file mode 100644 index 0000000..99b9f14 --- /dev/null +++ b/.config/mpv/scripts/uosc_shared/elements/Curtain.lua @@ -0,0 +1,35 @@ +local Element = require('uosc_shared/elements/Element') + +---@class Curtain : Element +local Curtain = class(Element) + +function Curtain:new() return Class.new(self) --[[@as Curtain]] end +function Curtain:init() + Element.init(self, 'curtain', {ignores_menu = true}) + self.opacity = 0 + ---@type string[] + self.dependents = {} +end + +---@param id string +function Curtain:register(id) + self.dependents[#self.dependents + 1] = id + if #self.dependents == 1 then self:tween_property('opacity', self.opacity, 1) end +end + +---@param id string +function Curtain:unregister(id) + self.dependents = itable_filter(self.dependents, function(item) return item ~= id end) + if #self.dependents == 0 then self:tween_property('opacity', self.opacity, 0) end +end + +function Curtain:render() + if self.opacity == 0 or options.curtain_opacity == 0 then return end + local ass = assdraw.ass_new() + ass:rect(0, 0, display.width, display.height, { + color = '000000', opacity = options.curtain_opacity * self.opacity, + }) + return ass +end + +return Curtain |