From f98712c0058ad1b3e3d5e5e744fade94eca2b725 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sun, 15 May 2022 14:37:22 -0700 Subject: load/save remaining shapes --- main.lua | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/main.lua b/main.lua index 4daa6ed..86a1e2a 100644 --- a/main.lua +++ b/main.lua @@ -795,9 +795,15 @@ function load_drawing(infile) assert(line) if line == '```' then break end local shape = json.decode(line) - if shape.mode == 'line' then + if shape.mode == 'line' or shape.mode == 'manhattan' then shape.p1 = insert_point(drawing.points, shape.p1.x, shape.p1.y) shape.p2 = insert_point(drawing.points, shape.p2.x, shape.p2.y) + elseif shape.mode == 'polygon' then + for i,p in ipairs(shape.vertices) do + shape.vertices[i] = insert_point(drawing.points, p.x,p.y) + end + elseif shape.mode == 'circle' or shape.mode == 'arc' then + shape.center = insert_point(drawing.points, shape.center.x,shape.center.y) end table.insert(drawing.shapes, shape) end @@ -808,23 +814,21 @@ function store_drawing(outfile, drawing) outfile:write('```lines\n') for _,shape in ipairs(drawing.shapes) do if shape.mode == 'freehand' then - outfile:write(json.encode({mode='freehand', points={{x=40,y=47}}})..'\n') - for k,v in pairs(shape) do - print(k, v) - end - for k,v in pairs(shape.points) do - print(k,v) - if type(v) == 'table' then - for k,v in pairs(v) do - print('', k,v) - end - end - end outfile:write(json.encode(shape)..'\n') - elseif shape.mode == 'line' then + elseif shape.mode == 'line' or shape.mode == 'manhattan' then local line = json.encode({mode=shape.mode, p1=drawing.points[shape.p1], p2=drawing.points[shape.p2]}) outfile:write(line..'\n') + elseif shape.mode == 'polygon' then + local obj = {mode=shape.mode, vertices={}} + for _,p in ipairs(shape.vertices) do + table.insert(obj.vertices, drawing.points[p]) + end + local line = json.encode(obj) + outfile:write(line..'\n') elseif shape.mode == 'circle' then + outfile:write(json.encode({mode=shape.mode, center=drawing.points[shape.center], radius=shape.radius})..'\n') + elseif shape.mode == 'arc' then + outfile:write(json.encode({mode=shape.mode, center=drawing.points[shape.center], radius=shape.radius, start_angle=shape.start_angle, end_angle=shape.end_angle})..'\n') end end outfile:write('```\n') -- cgit 1.4.1-2-gfad0