render a single node

Give it a border, rounded corners, 10px padding on all sides.
This commit is contained in:
Kartik K. Agaram 2023-04-17 22:19:28 -07:00
parent 30f61face5
commit 34e180836d
5 changed files with 9 additions and 8 deletions

View File

@ -1,3 +1,4 @@
scale = function(d)
if d == nil then return nil end
return d*Viewport.zoom
end

View File

@ -1,10 +1,8 @@
initialize_editor = function(obj)
if obj.w then
-- use an editor to wrap the text
local scaled_fontsize = scale(20)
local scaled_lineheight = math.floor(scaled_fontsize*1.3)
obj.editor = edit.initialize_state(vy(obj.y), math.floor(vx(obj.x)), math.ceil(vx(obj.x+obj.w)), scaled_fontsize, scaled_lineheight)
obj.editor.lines = load_array(obj.data)
Text.redraw_all(obj.editor)
end
end

View File

@ -8,7 +8,7 @@ compute_layout = function(node, x,y, nodes_to_render, preserve_screen_top_of_cur
-- render background if necessary
local node_to_render
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}
node_to_render = {type='rectangle', drawmode='line', r=0.5, g=0.5, b=0.5, x=node.x-10, y=node.y-10, corner_radius=5}
table.insert(nodes_to_render, node_to_render)
end
-- render contents
@ -30,8 +30,8 @@ compute_layout = function(node, x,y, nodes_to_render, preserve_screen_top_of_cur
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
node_to_render.w = node.w+20
node_to_render.h = math.max(node.h, 3*node.editor.line_height)+20
end
elseif node.type == 'rows' then
node.x = x

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.corner_radius))
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

@ -1 +1,3 @@
Nodes = {}
Nodes = {
{type='text', x=0,y=0, margin=0, width=400, bg={r=0,g=1,b=1}},
}