From 8a9502503691264383d2b8cecf9d07565129406b Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 20 Jun 2023 21:53:27 -0700 Subject: [PATCH] borders around editor nodes --- 0021-compute_layout | 21 ++++++++++++++------- 0026-on.draw | 4 ++-- README.md | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/0021-compute_layout b/0021-compute_layout index a438942..203f10d 100644 --- a/0021-compute_layout +++ b/0021-compute_layout @@ -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 \ No newline at end of file diff --git a/0026-on.draw b/0026-on.draw index 537ae9a..d569a9a 100644 --- a/0026-on.draw +++ b/0026-on.draw @@ -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 \ No newline at end of file +end diff --git a/README.md b/README.md index 3dcaf70..e3da6e9 100644 --- a/README.md +++ b/README.md @@ -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={