about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-05-17 23:16:08 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-05-17 23:16:08 -0700
commitc1ba40ac70a634d90ce7345cc5f8509116bd51ff (patch)
treeeb496ba85700e9036847067d0a40c107a65f803b
parent10bc32e2f002d67a8b336b58cebeae5ce2b6e9a5 (diff)
downloadview.love-c1ba40ac70a634d90ce7345cc5f8509116bd51ff.tar.gz
delegate update events to drawings
-rw-r--r--drawing.lua25
-rw-r--r--main.lua22
2 files changed, 26 insertions, 21 deletions
diff --git a/drawing.lua b/drawing.lua
index 5ea47f9..0b479fc 100644
--- a/drawing.lua
+++ b/drawing.lua
@@ -69,6 +69,31 @@ function Drawing.mouse_pressed(drawing, x,y, button)
   Lines.current = drawing
 end
 
+-- a couple of operations on drawings need to constantly check the state of the mouse
+function Drawing.update()
+  if Lines.current == nil then return end
+  local drawing = Lines.current
+  assert(drawing.mode == 'drawing')
+  local x, y = love.mouse.getX(), love.mouse.getY()
+  if love.mouse.isDown('1') then
+    if Drawing.in_drawing(drawing, x,y) then
+      if drawing.pending.mode == 'freehand' then
+        table.insert(drawing.pending.points, {x=Drawing.coord(love.mouse.getX()-16), y=Drawing.coord(love.mouse.getY()-drawing.y)})
+      elseif drawing.pending.mode == 'move' then
+        local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
+        drawing.pending.target_point.x = mx
+        drawing.pending.target_point.y = my
+      end
+    end
+  elseif Current_drawing_mode == 'move' then
+    if Drawing.in_drawing(drawing, x, y) then
+      local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
+      drawing.pending.target_point.x = mx
+      drawing.pending.target_point.y = my
+    end
+  end
+end
+
 function Drawing.mouse_released(x,y, button)
   if Current_drawing_mode == 'move' then
     Current_drawing_mode = Previous_drawing_mode
diff --git a/main.lua b/main.lua
index 4ee4b5c..95bdc50 100644
--- a/main.lua
+++ b/main.lua
@@ -126,27 +126,7 @@ function love.draw()
 end
 
 function love.update(dt)
-  if Lines.current == nil then return end
-  local drawing = Lines.current
-  assert(drawing.mode == 'drawing')
-  local x, y = love.mouse.getX(), love.mouse.getY()
-  if love.mouse.isDown('1') then
-    if Drawing.in_drawing(drawing, x,y) then
-      if drawing.pending.mode == 'freehand' then
-        table.insert(drawing.pending.points, {x=Drawing.coord(love.mouse.getX()-16), y=Drawing.coord(love.mouse.getY()-drawing.y)})
-      elseif drawing.pending.mode == 'move' then
-        local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
-        drawing.pending.target_point.x = mx
-        drawing.pending.target_point.y = my
-      end
-    end
-  elseif Current_drawing_mode == 'move' then
-    if Drawing.in_drawing(drawing, x, y) then
-      local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
-      drawing.pending.target_point.x = mx
-      drawing.pending.target_point.y = my
-    end
-  end
+  Drawing.update(dt)
 end
 
 function love.mousepressed(x,y, button)