summaryrefslogtreecommitdiffstats
path: root/.config/mpv/scripts/uosc_shared/elements/Curtain.lua
diff options
context:
space:
mode:
authorJoe <rrbo@proton.me>2023-01-31 14:03:59 +0100
committerJoe <rrbo@proton.me>2023-01-31 14:03:59 +0100
commitefa2957045fe9ea4421ea4a0c546f62a8a27fb58 (patch)
tree816b267a9d431e28744db41429358516ab0c461b /.config/mpv/scripts/uosc_shared/elements/Curtain.lua
parentup (diff)
downloaddotfiles-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.lua35
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