about summary refs log tree commit diff stats
path: root/main.lua
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-05-15 14:37:22 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-05-15 14:37:22 -0700
commitf98712c0058ad1b3e3d5e5e744fade94eca2b725 (patch)
treec44785408e00457d8a5d798a6abb1e75ee33ed9e /main.lua
parentfd7f02e8ffe428f2470cfe5e6ee9f518ffb5e82a (diff)
downloadview.love-f98712c0058ad1b3e3d5e5e744fade94eca2b725.tar.gz
load/save remaining shapes
Diffstat (limited to 'main.lua')
-rw-r--r--main.lua32
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')