borders around editor nodes

This commit is contained in:
Kartik K. Agaram 2023-06-20 21:53:27 -07:00
parent 5e5e598cab
commit 8a95025036
3 changed files with 30 additions and 9 deletions

View File

@ -6,11 +6,18 @@ compute_layout = function(node, x,y, nodes_to_render, preserve_screen_top_of_cur
node.x = x
node.y = y
-- render background if necessary
local node_to_render
local pending_nodes = {}
if node.bg then
node_to_render = {type='rectangle', r=node.bg.r, g=node.bg.g, b=node.bg.b, x=node.x, y=node.y}
table.insert(nodes_to_render, node_to_render)
local n = {type='rectangle', drawmode='fill', r=node.bg.r, g=node.bg.g, b=node.bg.b, x=node.x, y=node.y, rx=node.rx, ry=node.ry}
table.insert(pending_nodes, n)
table.insert(nodes_to_render, n)
end
-- render border if necessary
if node.border then
local n = {type='rectangle', drawmode='line', r=node.border.r, g=node.border.g, b=node.border.b, x=node.x, y=node.y, rx=node.rx, ry=node.ry}
table.insert(pending_nodes, n)
table.insert(nodes_to_render, n)
end
-- render contents
if node.width then
node.w = node.width
@ -28,9 +35,9 @@ compute_layout = function(node, x,y, nodes_to_render, preserve_screen_top_of_cur
end
node.h = box_height(node)
table.insert(nodes_to_render, node)
if node_to_render then
node_to_render.w = node.w
node_to_render.h = node.h
for _,n in ipairs(pending_nodes) do
n.w = node.w
n.h = node.h
end
elseif node.type == 'rows' then
node.x = x
@ -94,4 +101,4 @@ compute_layout = function(node, x,y, nodes_to_render, preserve_screen_top_of_cur
end
end
return x+node.w,y+node.h
end
end

View File

@ -3,7 +3,7 @@ on.draw = function()
for _,obj in ipairs(Surface) do
love.graphics.setColor(obj.r or 0, obj.g or 0, obj.b or 0)
if obj.type == 'rectangle' then
love.graphics.rectangle(obj.drawmode or 'fill', vx(obj.x),vy(obj.y), scale(obj.w),scale(obj.h))
love.graphics.rectangle(obj.drawmode or 'fill', vx(obj.x),vy(obj.y), scale(obj.w),scale(obj.h), scale(obj.rx or 0),scale(obj.ry or obj.rx or 0))
elseif obj.type == 'line' then
love.graphics.line(unpack(obj.zdata))
elseif obj.type == 'circle' then
@ -22,4 +22,4 @@ on.draw = function()
end
end
end
end
end

View File

@ -40,6 +40,20 @@ Adjust foreground/background color (akin to a `div` with inline `style`):
}
```
Adjust border color:
```
{ type='text', border={r=1,g=0,b=0},
data={'hello, world!'}
}
```
Rounded corners:
```
{ type='text', border={r=1,g=0,b=0}, rx=5,ry=5,
data={'hello, world!'}
}
```
Two-column text:
```
{ type='cols', data={