graphics automatic constraints
This commit is contained in:
@@ -45,7 +45,7 @@ local function rectangle(args)
|
||||
end
|
||||
|
||||
-- create new graphics element base object
|
||||
local e = element.new(args, offset_x, offset_y)
|
||||
local e = element.new(args, nil, offset_x, offset_y)
|
||||
|
||||
-- create content window for child elements
|
||||
e.content_window = window.create(e.window, 1 + offset_x, 1 + offset_y, e.frame.w - (2 * offset_x), e.frame.h - (2 * offset_y))
|
||||
|
||||
@@ -10,12 +10,13 @@ local ALIGN = core.ALIGN
|
||||
---@class textbox_args
|
||||
---@field text string text to show
|
||||
---@field alignment? ALIGN text alignment, left by default
|
||||
---@field anchor? boolean true to use this as an anchor, making it focusable
|
||||
---@field parent graphics_element
|
||||
---@field id? string element id
|
||||
---@field x? integer 1 if omitted
|
||||
---@field y? integer auto incremented if omitted
|
||||
---@field width? integer parent width if omitted
|
||||
---@field height? integer parent height if omitted
|
||||
---@field height? integer minimum necessary height for wrapped text if omitted
|
||||
---@field gframe? graphics_frame frame instead of x/y/width/height
|
||||
---@field fg_bg? cpair foreground/background colors
|
||||
---@field hidden? boolean true to hide on initial draw
|
||||
@@ -26,8 +27,17 @@ local ALIGN = core.ALIGN
|
||||
local function textbox(args)
|
||||
element.assert(type(args.text) == "string", "text is a required field")
|
||||
|
||||
if args.anchor == true then args.can_focus = true end
|
||||
|
||||
-- regex to identify entries without a height currently: ^.*TextBox\{((?!height=).)*$
|
||||
-- provide a constraint condition to element creation to prevent an pointlessly tall text box
|
||||
---@param frame graphics_frame
|
||||
local function constrain(frame)
|
||||
return frame.w, math.max(args.height, math.max(1, #util.strwrap(args.text, frame.w)))
|
||||
end
|
||||
|
||||
-- create new graphics element base object
|
||||
local e = element.new(args)
|
||||
local e = element.new(args, constrain)
|
||||
|
||||
e.value = args.text
|
||||
|
||||
|
||||
Reference in New Issue
Block a user