diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2022-05-15 14:37:22 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2022-05-15 14:37:22 -0700 |
commit | f98712c0058ad1b3e3d5e5e744fade94eca2b725 (patch) | |
tree | c44785408e00457d8a5d798a6abb1e75ee33ed9e | |
parent | fd7f02e8ffe428f2470cfe5e6ee9f518ffb5e82a (diff) | |
download | text.love-f98712c0058ad1b3e3d5e5e744fade94eca2b725.tar.gz |
load/save remaining shapes
-rw-r--r-- | main.lua | 32 |
1 files 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') |