diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2022-05-17 23:10:58 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2022-05-17 23:10:58 -0700 |
commit | 10bc32e2f002d67a8b336b58cebeae5ce2b6e9a5 (patch) | |
tree | de2eafc32cdd42f0995a9e0d198a4fbff2f69167 | |
parent | 4818672c1116ee0cebcdd3bbeca969b7b07adaf4 (diff) | |
download | view.love-10bc32e2f002d67a8b336b58cebeae5ce2b6e9a5.tar.gz |
DRY some code
-rw-r--r-- | drawing.lua | 12 | ||||
-rw-r--r-- | main.lua | 28 |
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 |