61 lines
1.2 KiB
Lua
61 lines
1.2 KiB
Lua
--
|
|
-- Line Widget.
|
|
-- @copyright Jefferson Gonzalez
|
|
-- @license MIT
|
|
--
|
|
|
|
local style = require "core.style"
|
|
local Widget = require "libraries.widget"
|
|
|
|
---@class widget.line : widget
|
|
---@field public padding integer
|
|
---@field private custom_width number
|
|
local Line = Widget:extend()
|
|
|
|
---Constructor
|
|
---@param parent widget
|
|
---@param thickness integer
|
|
---@param padding number
|
|
function Line:new(parent, thickness, padding)
|
|
Line.super.new(self, parent)
|
|
self.type_name = "widget.line"
|
|
self.size.y = thickness or 2
|
|
self.custom_width = nil
|
|
self.border.width = 0
|
|
self.padding = padding or (style.padding.x / 2)
|
|
end
|
|
|
|
---Set the thickness of the line
|
|
---@param thickness number
|
|
function Line:set_thickness(thickness)
|
|
self.size.y = thickness or 2
|
|
end
|
|
|
|
---Set a custom width for the line
|
|
---@param width number
|
|
function Line:set_width(width)
|
|
self.custom_width = width
|
|
self.size.x = width
|
|
end
|
|
|
|
function Line:draw()
|
|
if not self:is_visible() then return false end
|
|
|
|
if not self.custom_width then
|
|
self.size.x = self.parent.size.x - (self.padding * 2)
|
|
end
|
|
|
|
renderer.draw_rect(
|
|
self.position.x + self.padding,
|
|
self.position.y,
|
|
self.size.x,
|
|
self.size.y,
|
|
self.foreground_color or style.caret
|
|
)
|
|
|
|
return true
|
|
end
|
|
|
|
|
|
return Line
|
|
|