aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-05-17 23:10:58 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-05-17 23:10:58 -0700
commit10bc32e2f002d67a8b336b58cebeae5ce2b6e9a5 (patch)
treede2eafc32cdd42f0995a9e0d198a4fbff2f69167
parent4818672c1116ee0cebcdd3bbeca969b7b07adaf4 (diff)
downloadtext.love-10bc32e2f002d67a8b336b58cebeae5ce2b6e9a5.tar.gz
DRY some code
-rw-r--r--drawing.lua12
-rw-r--r--main.lua28
2 files changed, 18 insertions, 22 deletions
diff --git a/drawing.lua b/drawing.lua
index 02dd909..5ea47f9 100644
--- a/drawing.lua
+++ b/drawing.lua
@@ -286,7 +286,7 @@ function Drawing.current_drawing()
local x, y = love.mouse.getX(), love.mouse.getY()
for _,drawing in ipairs(Lines) do
if drawing.mode == 'drawing' then
- if y >= drawing.y and y < drawing.y + Drawing.pixels(drawing.h) and x >= 16 and x < 16+Drawing_width then
+ if Drawing.in_drawing(drawing, x,y) then
return drawing
end
end
@@ -298,8 +298,8 @@ function Drawing.select_shape_at_mouse()
for _,drawing in ipairs(Lines) do
if drawing.mode == 'drawing' then
local x, y = love.mouse.getX(), love.mouse.getY()
- if y >= drawing.y and y < drawing.y + Drawing.pixels(drawing.h) and x >= 16 and x < 16+Drawing_width then
- local mx,my = Drawing.coord(love.mouse.getX()-16), Drawing.coord(love.mouse.getY()-drawing.y)
+ if Drawing.in_drawing(drawing, x,y) then
+ local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
for i,shape in ipairs(drawing.shapes) do
assert(shape)
if geom.on_shape(mx,my, drawing, shape) then
@@ -315,8 +315,8 @@ function Drawing.select_point_at_mouse()
for _,drawing in ipairs(Lines) do
if drawing.mode == 'drawing' then
local x, y = love.mouse.getX(), love.mouse.getY()
- if y >= drawing.y and y < drawing.y + Drawing.pixels(drawing.h) and x >= 16 and x < 16+Drawing_width then
- local mx,my = Drawing.coord(love.mouse.getX()-16), Drawing.coord(love.mouse.getY()-drawing.y)
+ if Drawing.in_drawing(drawing, x,y) then
+ local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y)
for i,point in ipairs(drawing.points) do
assert(point)
if Drawing.near(point, mx,my) then
@@ -332,7 +332,7 @@ function Drawing.select_drawing_at_mouse()
for _,drawing in ipairs(Lines) do
if drawing.mode == 'drawing' then
local x, y = love.mouse.getX(), love.mouse.getY()
- if y >= drawing.y and y < drawing.y + Drawing.pixels(drawing.h) and x >= 16 and x < 16+Drawing_width then
+ if Drawing.in_drawing(drawing, x,y) then
return drawing
end
end
diff --git a/main.lua b/main.lua
index ea3c132..4ee4b5c 100644
--- a/main.lua
+++ b/main.lua
@@ -126,26 +126,22 @@ 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 Lines.current then
- if Lines.current.mode == 'drawing' then
- local drawing = Lines.current
- local x, y = love.mouse.getX(), love.mouse.getY()
- if y >= drawing.y and y < drawing.y + Drawing.pixels(drawing.h) and x >= 16 and x < 16+Drawing_width 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
+ 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
- local drawing = Lines.current
- local x, y = love.mouse.getX(), love.mouse.getY()
- if y >= drawing.y and y < drawing.y + Drawing.pixels(drawing.h) and x >= 16 and x < 16+Drawing_width 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