rip out most support for polygons
[?]
Jun 15, 2022, 3:56 PM
W7JMT5V2ELDFZG354LUL5AR6IQLIYQUDXBEPDNZ2BEBXDCZLQJTACDependencies
- [2]
KAUD3YIKtests: deleting points/shapes - [3]
WDMPH4ANdrop support for squares - [4]
CRYGI3LRmore drawing tests - [5]
YCDYGEZUinclude drawing index in a few places - [6]
DRFE3B3Zmouse buttons are integers, not strings - [7]
JFFUF5ALoverride mouse state lookups in tests - [8]
L6XA5EY2test: moving a point - [9]
H4K2GFILexperiment: give up on changing shape mode - [10]
T7SJSJIHtest: undo naming a point - [11]
HYEAFRZ2split mouse_pressed events between Text and Drawing - [12]
HOSPP2ANcrisp font rendering - [13]
3RGHOJ25DRY some code - [14]
E6TMJY2Tlighter color for in-progress strokes - [15]
42LVB4DEtest: naming a point - [16]
6DE7RBZ6move mouse_released events to Drawing - [17]
Y4VYNEGFtest: autosave after name/move/delete of point - [18]
XRLJDW3Wcasting about for more helpers to extract.. - [19]
7OUJM7DLone missing transition between shape modes - [20]
QYIFOHW3first test! - [21]
OWK3U6VDtests for drawing polygons - [22]
2MA33THZfew more transitions between shapes - [23]
2WGRQI5Emissing shape modes in a couple more places - [24]
XNFTJHC4split keyboard handling between Text and Drawing - [25]
NYQ7HD4Dmove - [26]
LAW2O3NWextract variable Margin_left - [27]
BYG5CEMVsupport for naming points - [28]
VHQCNMARseveral more modules - [29]
YTSPVDZHfirst successful pagedown test, first bug found by test - [30]
F3OOGMMEswitch freehand hotkey to eliminate conflict with search - [31]
UN7L3DNNavoid some string concatenations - [32]
2XLZCWZCbugfix: rectangles and squares are now saved - [33]
SRVDX4I5local var - [34]
B4YZWV6Sbugfix: checking if a point is on a manhattan line - [35]
WTDKUACNrectangle and square shapes - [*]
K2X6G75Zstart writing some tests for drawings - [*]
BLWAYPKVextract a module
Change contents
- replacement in geom.lua at line 28
elseif shape.mode == 'polygon' or shape.mode == 'rectangle' thenelseif shape.mode == 'rectangle' then - replacement in file.lua at line 60
elseif shape.mode == 'polygon' or shape.mode == 'rectangle' thenelseif shape.mode == 'rectangle' then - replacement in file.lua at line 89
elseif shape.mode == 'polygon' or shape.mode == 'rectangle' thenelseif shape.mode == 'rectangle' then - replacement in file.lua at line 153
elseif shape.mode == 'polygon' or shape.mode == 'rectangle' thenelseif shape.mode == 'rectangle' then - edit in drawing_tests.lua at line 188
endfunction test_draw_polygon()io.write('\ntest_draw_polygon')-- display a drawing followed by a line of text (you shouldn't ever have a drawing right at the end)App.screen.init{width=Margin_left+300, height=300}Lines = load_array{'```lines', '```', ''}Line_width = 256 -- drawing coordinates 1:1 with pixelsApp.draw()check_eq(Current_drawing_mode, 'line', 'F - test_draw_polygon/baseline/drawing_mode')check_eq(#Lines, 2, 'F - test_draw_polygon/baseline/#lines')check_eq(Lines[1].mode, 'drawing', 'F - test_draw_polygon/baseline/mode')check_eq(Lines[1].y, Margin_top+Drawing_padding_top, 'F - test_draw_polygon/baseline/y')check_eq(Lines[1].h, 128, 'F - test_draw_polygon/baseline/y')check_eq(#Lines[1].shapes, 0, 'F - test_draw_polygon/baseline/#shapes')-- first pointApp.run_after_mouse_press(Margin_left+5, Margin_top+Drawing_padding_top+6, 1)App.run_after_keychord('g') -- polygon mode-- second pointApp.mouse_move(Margin_left+65, Margin_top+Drawing_padding_top+36)App.run_after_keychord('p') -- add point-- final pointApp.run_after_mouse_release(Margin_left+35, Margin_top+Drawing_padding_top+26, 1)local drawing = Lines[1]check_eq(#drawing.shapes, 1, 'F - test_draw_polygon/#shapes')check_eq(#drawing.points, 3, 'F - test_draw_polygon/vertices')local shape = drawing.shapes[1]check_eq(shape.mode, 'polygon', 'F - test_draw_polygon/shape_mode')check_eq(#shape.vertices, 3, 'F - test_draw_polygon/vertices')local p = drawing.points[shape.vertices[1]]check_eq(p.x, 5, 'F - test_draw_polygon/p1:x')check_eq(p.y, 6, 'F - test_draw_polygon/p1:y')local p = drawing.points[shape.vertices[2]]check_eq(p.x, 65, 'F - test_draw_polygon/p2:x')check_eq(p.y, 36, 'F - test_draw_polygon/p2:y')local p = drawing.points[shape.vertices[3]]check_eq(p.x, 35, 'F - test_draw_polygon/p3:x')check_eq(p.y, 26, 'F - test_draw_polygon/p3:y') - edit in drawing_tests.lua at line 411[2.2692]→[2.2692:4208](∅→∅),[4.1938]→[4.1770:1774](∅→∅),[2.4208]→[4.1770:1774](∅→∅),[4.1770]→[4.1770:1774](∅→∅),[4.1774]→[2.4209:5522](∅→∅)
endfunction test_delete_point_from_polygon()io.write('\ntest_delete_point_from_polygon')-- create a drawing with two lines connected at a pointApp.screen.init{width=Margin_left+300, height=300}Lines = load_array{'```lines', '```', ''}Line_width = 256 -- drawing coordinates 1:1 with pixelsCurrent_drawing_mode = 'line'App.draw()-- first pointApp.run_after_mouse_press(Margin_left+5, Margin_top+Drawing_padding_top+6, 1)App.run_after_keychord('g') -- polygon mode-- second pointApp.mouse_move(Margin_left+65, Margin_top+Drawing_padding_top+36)App.run_after_keychord('p') -- add point-- third pointApp.mouse_move(Margin_left+35, Margin_top+Drawing_padding_top+26)App.run_after_keychord('p') -- add point-- fourth pointApp.run_after_mouse_release(Margin_left+14, Margin_top+Drawing_padding_top+16, 1)local drawing = Lines[1]check_eq(#drawing.shapes, 1, 'F - test_delete_point_from_polygon/baseline/#shapes')check_eq(drawing.shapes[1].mode, 'polygon', 'F - test_delete_point_from_polygon/baseline/mode')check_eq(#drawing.shapes[1].vertices, 4, 'F - test_delete_point_from_polygon/baseline/vertices')-- hover on a point and deleteApp.mouse_move(Margin_left+35, Margin_top+Drawing_padding_top+26)App.run_after_keychord('C-d')-- just the one point is deletedcheck_eq(drawing.shapes[1].mode, 'polygon', 'F - test_delete_point_from_polygon/shape')check_eq(#drawing.shapes[1].vertices, 3, 'F - test_delete_point_from_polygon/vertices')endfunction test_delete_point_from_polygon()io.write('\ntest_delete_point_from_polygon')-- create a drawing with two lines connected at a pointApp.screen.init{width=Margin_left+300, height=300}Lines = load_array{'```lines', '```', ''}Line_width = 256 -- drawing coordinates 1:1 with pixelsCurrent_drawing_mode = 'line'App.draw()-- first pointApp.run_after_mouse_press(Margin_left+5, Margin_top+Drawing_padding_top+6, 1)App.run_after_keychord('g') -- polygon mode-- second pointApp.mouse_move(Margin_left+65, Margin_top+Drawing_padding_top+36)App.run_after_keychord('p') -- add point-- third pointApp.run_after_mouse_release(Margin_left+14, Margin_top+Drawing_padding_top+16, 1)local drawing = Lines[1]check_eq(#drawing.shapes, 1, 'F - test_delete_point_from_polygon/baseline/#shapes')check_eq(drawing.shapes[1].mode, 'polygon', 'F - test_delete_point_from_polygon/baseline/mode')check_eq(#drawing.shapes[1].vertices, 3, 'F - test_delete_point_from_polygon/baseline/vertices')-- hover on a point and deleteApp.mouse_move(Margin_left+65, Margin_top+Drawing_padding_top+36)App.run_after_keychord('C-d')-- there's < 3 points left, so the whole polygon is deletedcheck_eq(drawing.shapes[1].mode, 'deleted', 'F - test_delete_point_from_polygon') - replacement in drawing.lua at line 87
elseif shape.mode == 'polygon' or shape.mode == 'rectangle' thenelseif shape.mode == 'rectangle' then - replacement in drawing.lua at line 139
-- don't close the loop on a pending polygonlocal prev = nilfor _,point in ipairs(shape.vertices) dolocal curr = drawing.points[point]if prev thenlove.graphics.line(Drawing.pixels(prev.x)+left,Drawing.pixels(prev.y)+top, Drawing.pixels(curr.x)+left,Drawing.pixels(curr.y)+top)endprev = currendlove.graphics.line(Drawing.pixels(prev.x)+left,Drawing.pixels(prev.y)+top, App.mouse_x(),App.mouse_y())-- TODO - replacement in drawing.lua at line 193
elseif Current_drawing_mode == 'polygon' or Current_drawing_mode == 'rectangle' thenelseif Current_drawing_mode == 'rectangle' then - replacement in drawing.lua at line 273[4.1231]→[4.4473:4552](∅→∅),[4.4552]→[4.1301:1519](∅→∅),[4.1301]→[4.1301:1519](∅→∅),[4.1519]→[4.2042:2054](∅→∅),[4.2042]→[4.2042:2054](∅→∅)
local mx,my = Drawing.coord(x-Margin_left), Drawing.coord(y-drawing.y)if mx >= 0 and mx < 256 and my >= 0 and my < drawing.h thentable.insert(drawing.pending.vertices, Drawing.insert_point(drawing.points, mx,my))table.insert(drawing.shapes, drawing.pending)end-- TODO - edit in drawing.lua at line 318[4.5858]→[4.1666:1721](∅→∅),[4.1721]→[4.5918:5955](∅→∅),[4.2683]→[4.5918:5955](∅→∅),[4.5918]→[4.5918:5955](∅→∅),[4.5955]→[4.1722:1771](∅→∅),[4.1771]→[4.6009:6046](∅→∅),[4.2735]→[4.6009:6046](∅→∅),[4.6009]→[4.6009:6046](∅→∅),[4.6046]→[4.16:64](∅→∅),[4.64]→[4.6092:6467](∅→∅),[4.6092]→[4.6092:6467](∅→∅),[4.6467]→[3.546:598](∅→∅),[3.598]→[4.98:131](∅→∅),[4.98]→[4.98:131](∅→∅),[4.131]→[4.6467:6652](∅→∅),[4.6467]→[4.6467:6652](∅→∅)
elseif chord == 'C-g' and not App.mouse_down(1) thenCurrent_drawing_mode = 'polygon'elseif App.mouse_down(1) and chord == 'g' thenCurrent_drawing_mode = 'polygon'local _,drawing = Drawing.current_drawing()if drawing.pending.mode == 'freehand' thendrawing.pending.vertices = {Drawing.insert_point(drawing.points, drawing.pending.points[1].x, drawing.pending.points[1].y)}elseif drawing.pending.mode == 'line' or drawing.pending.mode == 'manhattan' thenif drawing.pending.vertices == nil thendrawing.pending.vertices = {drawing.pending.p1}endelseif drawing.pending.mode == 'rectangle' then-- reuse existing verticeselseif drawing.pending.mode == 'circle' or drawing.pending.mode == 'arc' thendrawing.pending.vertices = {drawing.pending.center}enddrawing.pending.mode = 'polygon' - replacement in drawing.lua at line 329
elseif drawing.pending.mode == 'circle' or drawing.pending.mode == 'arc' thenelseif drawing.pending.mode == 'polygon' or drawing.pending.mode == 'circle' or drawing.pending.mode == 'arc' then - edit in drawing.lua at line 331
elseif drawing.pending.mode == 'polygon' then-- reuse existing (1-2) vertices - edit in drawing.lua at line 333
elseif App.mouse_down(1) and chord == 'p' and Current_drawing_mode == 'polygon' thenlocal _,drawing = Drawing.current_drawing()local mx,my = Drawing.coord(App.mouse_x()-Margin_left), Drawing.coord(App.mouse_y()-drawing.y)local j = Drawing.insert_point(drawing.points, mx,my)table.insert(drawing.pending.vertices, j) - replacement in drawing.lua at line 358
elseif drawing.pending.mode == 'polygon' or drawing.pending.mode == 'rectangle' thenelseif drawing.pending.mode == 'polygon' then-- reuse centerelseif drawing.pending.mode == 'rectangle' then - replacement in drawing.lua at line 369
elseif drawing.pending.mode == 'circle' or drawing.pending.mode == 'arc' thenelseif drawing.pending.mode == 'rectangle' thendrawing.pending.p1 = drawing.pending.vertices[1]elseif drawing.pending.mode == 'polygon' or drawing.pending.mode == 'circle' or drawing.pending.mode == 'arc' then - edit in drawing.lua at line 373[4.8641]→[3.830:919](∅→∅),[4.257]→[4.8691:8746](∅→∅),[3.919]→[4.8691:8746](∅→∅),[4.8691]→[4.8691:8746](∅→∅)
elseif drawing.pending.mode == 'polygon' or drawing.pending.mode == 'rectangle' thendrawing.pending.p1 = drawing.pending.vertices[1] - replacement in drawing.lua at line 384
elseif drawing.pending.mode == 'polygon' or drawing.pending.mode == 'rectangle' thenelseif drawing.pending.mode == 'rectangle' then - replacement in drawing.lua at line 386
elseif drawing.pending.mode == 'circle' or drawing.pending.mode == 'arc' thenelseif drawing.pending.mode == 'polygon' or drawing.pending.mode == 'circle' or drawing.pending.mode == 'arc' then - replacement in drawing.lua at line 426
if shape.mode == 'polygon' thenlocal idx = table.find(shape.vertices, i)assert(idx)table.remove(shape.vertices, idx)if #shape.vertices < 3 thenshape.mode = 'deleted'endelseshape.mode = 'deleted'endshape.mode = 'deleted' - replacement in drawing.lua at line 536
elseif shape.mode == 'polygon' or shape.mode == 'rectangle' thenelseif shape.mode == 'rectangle' then