WindowBorder.lua 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. local Element = require('elements/Element')
  2. ---@class WindowBorder : Element
  3. local WindowBorder = class(Element)
  4. function WindowBorder:new() return Class.new(self) --[[@as WindowBorder]] end
  5. function WindowBorder:init()
  6. Element.init(self, 'window_border', {render_order = 9999})
  7. self.size = 0
  8. self:decide_enabled()
  9. end
  10. function WindowBorder:decide_enabled()
  11. self.enabled = options.window_border_size > 0 and not state.fullormaxed and not state.border
  12. self.size = self.enabled and round(options.window_border_size * state.scale) or 0
  13. end
  14. function WindowBorder:on_prop_border() self:decide_enabled() end
  15. function WindowBorder:on_prop_title_bar() self:decide_enabled() end
  16. function WindowBorder:on_prop_fullormaxed() self:decide_enabled() end
  17. function WindowBorder:on_options() self:decide_enabled() end
  18. function WindowBorder:render()
  19. if self.size > 0 then
  20. local ass = assdraw.ass_new()
  21. local clip = '\\iclip(' .. self.size .. ',' .. self.size .. ',' ..
  22. (display.width - self.size) .. ',' .. (display.height - self.size) .. ')'
  23. ass:rect(0, 0, display.width + 1, display.height + 1, {
  24. color = bg, clip = clip, opacity = config.opacity.border,
  25. })
  26. return ass
  27. end
  28. end
  29. return WindowBorder