about summary refs log tree commit diff stats
path: root/drawing.lua
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-06-03 08:00:31 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-06-03 08:00:31 -0700
commit91d79eba335e6d0f3f426d3ddd3e01f8d51d6a44 (patch)
tree472be4c104efe6d24d84b3418e15f60632980c48 /drawing.lua
parent7301f3964c518858ba6e3ffc2404baee1734639b (diff)
downloadlines.love-91d79eba335e6d0f3f426d3ddd3e01f8d51d6a44.tar.gz
local var
Diffstat (limited to 'drawing.lua')
-rw-r--r--drawing.lua121
1 files changed, 61 insertions, 60 deletions
diff --git a/drawing.lua b/drawing.lua
index 4c5d76b..949c569 100644
--- a/drawing.lua
+++ b/drawing.lua
@@ -261,86 +261,87 @@ function Drawing.mouse_released(x,y, button)
     Current_drawing_mode = Previous_drawing_mode
     Previous_drawing_mode = nil
   elseif Lines.current then
-    if Lines.current.pending then
-      if Lines.current.pending.mode == 'freehand' then
+    local drawing = Lines.current
+    if drawing.pending then
+      if drawing.pending.mode == 'freehand' then
         -- the last point added during update is good enough
-        table.insert(Lines.current.shapes, Lines.current.pending)
-      elseif Lines.current.pending.mode == 'line' then
-        local mx,my = Drawing.coord(x-16), Drawing.coord(y-Lines.current.y)
-        if mx >= 0 and mx < 256 and my >= 0 and my < Lines.current.h then
-          local j = Drawing.insert_point(Lines.current.points, mx,my)
-          Lines.current.pending.p2 = j
-          table.insert(Lines.current.shapes, Lines.current.pending)
+        table.insert(drawing.shapes, drawing.pending)
+      elseif drawing.pending.mode == 'line' then
+        local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
+        if mx >= 0 and mx < 256 and my >= 0 and my < drawing.h then
+          local j = Drawing.insert_point(drawing.points, mx,my)
+          drawing.pending.p2 = j
+          table.insert(drawing.shapes, drawing.pending)
         end
-      elseif Lines.current.pending.mode == 'manhattan' then
-        local p1 = Lines.current.points[Lines.current.pending.p1]
-        local mx,my = Drawing.coord(x-16), Drawing.coord(y-Lines.current.y)
-        if mx >= 0 and mx < 256 and my >= 0 and my < Lines.current.h then
+      elseif drawing.pending.mode == 'manhattan' then
+        local p1 = drawing.points[drawing.pending.p1]
+        local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
+        if mx >= 0 and mx < 256 and my >= 0 and my < drawing.h then
           if math.abs(mx-p1.x) > math.abs(my-p1.y) then
-            local j = Drawing.insert_point(Lines.current.points, mx, p1.y)
-            Lines.current.pending.p2 = j
+            local j = Drawing.insert_point(drawing.points, mx, p1.y)
+            drawing.pending.p2 = j
           else
-            local j = Drawing.insert_point(Lines.current.points, p1.x, my)
-            Lines.current.pending.p2 = j
+            local j = Drawing.insert_point(drawing.points, p1.x, my)
+            drawing.pending.p2 = j
           end
-          local p2 = Lines.current.points[Lines.current.pending.p2]
-          love.mouse.setPosition(16+Drawing.pixels(p2.x), Lines.current.y+Drawing.pixels(p2.y))
-          table.insert(Lines.current.shapes, Lines.current.pending)
+          local p2 = drawing.points[drawing.pending.p2]
+          love.mouse.setPosition(16+Drawing.pixels(p2.x), drawing.y+Drawing.pixels(p2.y))
+          table.insert(drawing.shapes, drawing.pending)
         end
-      elseif Lines.current.pending.mode == 'polygon' then
-        local mx,my = Drawing.coord(x-16), Drawing.coord(y-Lines.current.y)
-        if mx >= 0 and mx < 256 and my >= 0 and my < Lines.current.h then
-          table.insert(Lines.current.pending.vertices, Drawing.insert_point(Lines.current.points, mx,my))
-          table.insert(Lines.current.shapes, Lines.current.pending)
+      elseif drawing.pending.mode == 'polygon' then
+        local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
+        if mx >= 0 and mx < 256 and my >= 0 and my < drawing.h then
+          table.insert(drawing.pending.vertices, Drawing.insert_point(drawing.points, mx,my))
+          table.insert(drawing.shapes, drawing.pending)
         end
-      elseif Lines.current.pending.mode == 'rectangle' then
-        assert(#Lines.current.pending.vertices <= 2)
-        if #Lines.current.pending.vertices == 2 then
-          local mx,my = Drawing.coord(x-16), Drawing.coord(y-Lines.current.y)
-          if mx >= 0 and mx < 256 and my >= 0 and my < Lines.current.h then
-            local first = Lines.current.points[Lines.current.pending.vertices[1]]
-            local second = Lines.current.points[Lines.current.pending.vertices[2]]
+      elseif drawing.pending.mode == 'rectangle' then
+        assert(#drawing.pending.vertices <= 2)
+        if #drawing.pending.vertices == 2 then
+          local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
+          if mx >= 0 and mx < 256 and my >= 0 and my < drawing.h then
+            local first = drawing.points[drawing.pending.vertices[1]]
+            local second = drawing.points[drawing.pending.vertices[2]]
             local thirdx,thirdy, fourthx,fourthy = Drawing.complete_rectangle(first.x,first.y, second.x,second.y, mx,my)
-            table.insert(Lines.current.pending.vertices, Drawing.insert_point(Lines.current.points, thirdx,thirdy))
-            table.insert(Lines.current.pending.vertices, Drawing.insert_point(Lines.current.points, fourthx,fourthy))
-            table.insert(Lines.current.shapes, Lines.current.pending)
+            table.insert(drawing.pending.vertices, Drawing.insert_point(drawing.points, thirdx,thirdy))
+            table.insert(drawing.pending.vertices, Drawing.insert_point(drawing.points, fourthx,fourthy))
+            table.insert(drawing.shapes, drawing.pending)
           end
         else
           -- too few points; draw nothing
         end
-      elseif Lines.current.pending.mode == 'square' then
-        assert(#Lines.current.pending.vertices <= 2)
-        if #Lines.current.pending.vertices == 2 then
-          local mx,my = Drawing.coord(x-16), Drawing.coord(y-Lines.current.y)
-          if mx >= 0 and mx < 256 and my >= 0 and my < Lines.current.h then
-            local first = Lines.current.points[Lines.current.pending.vertices[1]]
-            local second = Lines.current.points[Lines.current.pending.vertices[2]]
+      elseif drawing.pending.mode == 'square' then
+        assert(#drawing.pending.vertices <= 2)
+        if #drawing.pending.vertices == 2 then
+          local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
+          if mx >= 0 and mx < 256 and my >= 0 and my < drawing.h then
+            local first = drawing.points[drawing.pending.vertices[1]]
+            local second = drawing.points[drawing.pending.vertices[2]]
             local thirdx,thirdy, fourthx,fourthy = Drawing.complete_square(first.x,first.y, second.x,second.y, mx,my)
-            table.insert(Lines.current.pending.vertices, Drawing.insert_point(Lines.current.points, thirdx,thirdy))
-            table.insert(Lines.current.pending.vertices, Drawing.insert_point(Lines.current.points, fourthx,fourthy))
-            table.insert(Lines.current.shapes, Lines.current.pending)
+            table.insert(drawing.pending.vertices, Drawing.insert_point(drawing.points, thirdx,thirdy))
+            table.insert(drawing.pending.vertices, Drawing.insert_point(drawing.points, fourthx,fourthy))
+            table.insert(drawing.shapes, drawing.pending)
           end
         end
-      elseif Lines.current.pending.mode == 'circle' then
-        local mx,my = Drawing.coord(x-16), Drawing.coord(y-Lines.current.y)
-        if mx >= 0 and mx < 256 and my >= 0 and my < Lines.current.h then
-          local center = Lines.current.points[Lines.current.pending.center]
-          Lines.current.pending.radius = geom.dist(center.x,center.y, mx,my)
-          table.insert(Lines.current.shapes, Lines.current.pending)
+      elseif drawing.pending.mode == 'circle' then
+        local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
+        if mx >= 0 and mx < 256 and my >= 0 and my < drawing.h then
+          local center = drawing.points[drawing.pending.center]
+          drawing.pending.radius = geom.dist(center.x,center.y, mx,my)
+          table.insert(drawing.shapes, drawing.pending)
         end
-      elseif Lines.current.pending.mode == 'arc' then
-        local mx,my = Drawing.coord(x-16), Drawing.coord(y-Lines.current.y)
-        if mx >= 0 and mx < 256 and my >= 0 and my < Lines.current.h then
-          local center = Lines.current.points[Lines.current.pending.center]
-          Lines.current.pending.end_angle = geom.angle_with_hint(center.x,center.y, mx,my, Lines.current.pending.end_angle)
-          table.insert(Lines.current.shapes, Lines.current.pending)
+      elseif drawing.pending.mode == 'arc' then
+        local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
+        if mx >= 0 and mx < 256 and my >= 0 and my < drawing.h then
+          local center = drawing.points[drawing.pending.center]
+          drawing.pending.end_angle = geom.angle_with_hint(center.x,center.y, mx,my, drawing.pending.end_angle)
+          table.insert(drawing.shapes, drawing.pending)
         end
-      elseif Lines.current.pending.mode == 'move' then
+      elseif drawing.pending.mode == 'move' then
         -- drop it
-      elseif Lines.current.pending.mode == 'name' then
+      elseif drawing.pending.mode == 'name' then
         -- drop it
       else
-        print(Lines.current.pending.mode)
+        print(drawing.pending.mode)
         assert(false)
       end
       Lines.current.pending = {}