From 34e180836d03253632ae67c4ac8047cb6b44e0bb Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Mon, 17 Apr 2023 22:19:28 -0700 Subject: [PATCH] render a single node Give it a border, rounded corners, 10px padding on all sides. --- 0003-scale | 1 + 0010-initialize_editor | 2 -- 0021-compute_layout | 6 +++--- 0026-on.draw | 4 ++-- 0031-Nodes | 4 +++- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/0003-scale b/0003-scale index 22e97bb..2aa16eb 100644 --- a/0003-scale +++ b/0003-scale @@ -1,3 +1,4 @@ scale = function(d) + if d == nil then return nil end return d*Viewport.zoom end \ No newline at end of file diff --git a/0010-initialize_editor b/0010-initialize_editor index 004b576..ce5d520 100644 --- a/0010-initialize_editor +++ b/0010-initialize_editor @@ -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 \ No newline at end of file diff --git a/0021-compute_layout b/0021-compute_layout index f13427b..9b0fda5 100644 --- a/0021-compute_layout +++ b/0021-compute_layout @@ -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 diff --git a/0026-on.draw b/0026-on.draw index 537ae9a..f5bfb21 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.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 \ No newline at end of file +end diff --git a/0031-Nodes b/0031-Nodes index f6a1524..6c58c7a 100644 --- a/0031-Nodes +++ b/0031-Nodes @@ -1 +1,3 @@ -Nodes = {} \ No newline at end of file +Nodes = { + {type='text', x=0,y=0, margin=0, width=400, bg={r=0,g=1,b=1}}, +} \ No newline at end of file