change data model; text can now have metadata
[?]
May 17, 2022, 5:20 AM
VVXVV2D2F5Y6D6N5VVPUPK3N6GMDTG2YCYPQDYTYEKVKBYHRRYEACDependencies
- [2]
GVOFXXITdelete drawing using backspace - [3]
3SYFA5JQshow cursor even on empty lines - [4]
KHFU5NFDbugfix: up/down across drawings - [5]
HJ3PM2VT. - [6]
TEIKBO2Tdon't try to append text to drawings - [7]
OTIBCAUJlove2d scaffold - [8]
7RN3AETYbugfix: text sometimes getting colored like drawing borders - [9]
KCIM5UTVrevert: back to freehand - [10]
Z4KNS42Nto open a file without a terminal, drag it on! - [11]
ZD63LJ2Tbugfix: keep the click to create a new drawing from creating a new shape in the drawing - [12]
EDY3RQULgracefully handle a non-existent filename at the commandline - [13]
G77XIN7Mselecting a stroke - [14]
QU7NHFOVshow cursor - [15]
Z2CJVAPVlighter border for figures - [16]
MNWHXPBLmore lightweight; select just the stroke at the mouse - [17]
H7OEU6WPexperimental approach to combining keyboard and mouse while drawing - [18]
IYW7X3WLleft/right cursor movement, deleting characters - [19]
TNTYISW6rename - [20]
R3WSFYGYspacing - [21]
NL5J7Z5Hnew mode: polygon - [22]
QW5KQQTDfix a comment - [23]
XX7G2FFJintermingle freehand line drawings with text - [24]
JS6JSYOTonline contextual help - [25]
YKRF5V3Zstarting to load/save - [26]
RJGZD4INbinary search to most natural up/down with proportional fonts - [27]
FBDRL6LHdelete points or shapes - [28]
JCSLDGAHbeginnings of support for multiple shapes - [29]
ZOOY3ME4new mode: circle arc - [30]
6PUNJS5Bbackspace - [31]
TRCAEE2Aclip drawings inside the border - [32]
K6HMLFLZcolor close to drawing - [33]
LBQAAJN4load/save freehand strokes - [34]
3CS5KKCIup/down cursor movement - [35]
6LJZN727handle chords - [36]
JVRL5TWLstore device-independent coordinates inside drawings - [37]
WDWXNW7Vslightly strange way to move points - [38]
OFA3PRBSautosave on keystrokes - [39]
PRPPZGDYspeed up some obvious common cases - [40]
EFMLTMZGbugfix: restrict strokes to the drawing they started in - [41]
HWPK4SMPnew mode: manhattan - [42]
3XD6M3CFrefactor - [43]
6F6DF5T3. - [44]
IFGAJAF7add a level of indirection to vertices of shapes
Change contents
- replacement in main.lua at line 5
-- lines is an array of lines-- a line is either:-- a string containing text-- or a drawing-- a line is either text or a drawing-- a text is a table with:-- mode = 'text'-- string data - replacement in main.lua at line 10
-- a (y) coord in pixels,-- mode = 'drawing'-- a (y) coord in pixels (updated while painting screen), - replacement in main.lua at line 32
lines = {''}lines = {{mode='text', data=''}} - replacement in main.lua at line 39
cursor_pos = #lines[cursor_line]+1cursor_pos = #lines[cursor_line].data+1 - replacement in main.lua at line 92
if line == '' thenif line.mode == 'text' and line.data == '' then - replacement in main.lua at line 102
table.insert(lines, i, {y=y, h=256/2, points={}, shapes={}, pending={}})table.insert(lines, i, {mode='drawing', y=y, h=256/2, points={}, shapes={}, pending={}}) - replacement in main.lua at line 108
elseif type(line) == 'table' thenelseif line.mode == 'drawing' then - replacement in main.lua at line 159
local text = love.graphics.newText(love.graphics.getFont(), line)local text = love.graphics.newText(love.graphics.getFont(), line.data) - replacement in main.lua at line 163
love.graphics.print('_', 25+cursor_x(lines[cursor_line], cursor_pos)*1.5, y+6) -- drop the cursor down a bit to account for the increased font sizelove.graphics.print('_', 25+cursor_x(line.data, cursor_pos)*1.5, y+6) -- drop the cursor down a bit to account for the increased font size - replacement in main.lua at line 172
local drawing = lines.currentif type(drawing) == 'table' thenif lines.current.mode == 'drawing' thenlocal drawing = lines.current - replacement in main.lua at line 266
if type(drawing) == 'table' thenif drawing.mode == 'drawing' then - edit in main.lua at line 478
--? print(s,e, angle-math.pi*2, angle, angle+math.pi*2) - replacement in main.lua at line 497
if type(lines[cursor_line]) == 'table' then return endif lines[cursor_line].mode == 'drawing' then return end - replacement in main.lua at line 500
byteoffset = utf8.offset(lines[cursor_line], cursor_pos-1)byteoffset = utf8.offset(lines[cursor_line].data, cursor_pos-1) - replacement in main.lua at line 504
lines[cursor_line] = string.sub(lines[cursor_line], 1, byteoffset)..t..string.sub(lines[cursor_line], byteoffset+1)lines[cursor_line].data = string.sub(lines[cursor_line].data, 1, byteoffset)..t..string.sub(lines[cursor_line].data, byteoffset+1) - replacement in main.lua at line 514
table.insert(lines, cursor_line+1, '')table.insert(lines, cursor_line+1, {mode='text', data=''}) - replacement in main.lua at line 518
if #lines > 1 and lines[#lines] == '' thentable.remove(lines)elseif type(lines[#lines]) == 'table' thentable.remove(lines) -- we'll add undo soonif cursor_line > 1 and lines[cursor_line].data == '' thentable.remove(lines, cursor_line)cursor_line = cursor_line-1if lines[cursor_line].mode == 'text' thencursor_pos = #lines[cursor_line].data+1elsecursor_pos = 1endelseif lines[cursor_line].mode == 'drawing' thentable.remove(lines, cursor_line) -- we'll add undo sooncursor_line = cursor_line-1if lines[cursor_line].mode == 'text' thencursor_pos = #lines[cursor_line].data+1elsecursor_pos = 1end - replacement in main.lua at line 536
local byte_start = utf8.offset(lines[cursor_line], cursor_pos-1)local byte_end = utf8.offset(lines[cursor_line], cursor_pos)local byte_start = utf8.offset(lines[cursor_line].data, cursor_pos-1)local byte_end = utf8.offset(lines[cursor_line].data, cursor_pos) - replacement in main.lua at line 540
lines[cursor_line] = string.sub(lines[cursor_line], 1, byte_start-1)..string.sub(lines[cursor_line], byte_end)lines[cursor_line].data = string.sub(lines[cursor_line].data, 1, byte_start-1)..string.sub(lines[cursor_line].data, byte_end) - replacement in main.lua at line 542
lines[cursor_line] = string.sub(lines[cursor_line], 1, byte_start-1)lines[cursor_line].data = string.sub(lines[cursor_line].data, 1, byte_start-1) - replacement in main.lua at line 553
if cursor_pos <= #lines[cursor_line] thenif cursor_pos <= #lines[cursor_line].data then - replacement in main.lua at line 559
cursor_pos = #lines[cursor_line]+1cursor_pos = #lines[cursor_line].data+1 - replacement in main.lua at line 562
local old_x = cursor_x(lines[cursor_line], cursor_pos)local old_x = cursor_x(lines[cursor_line].data, cursor_pos) - replacement in main.lua at line 564
cursor_pos = nearest_cursor_pos(lines[cursor_line], old_x, cursor_pos)cursor_pos = nearest_cursor_pos(lines[cursor_line].data, old_x, cursor_pos) - replacement in main.lua at line 568
local old_x = cursor_x(lines[cursor_line], cursor_pos)local old_x = cursor_x(lines[cursor_line].data, cursor_pos) - replacement in main.lua at line 570
cursor_pos = nearest_cursor_pos(lines[cursor_line], old_x, cursor_pos)cursor_pos = nearest_cursor_pos(lines[cursor_line].data, old_x, cursor_pos) - replacement in main.lua at line 573
if cursor_pos <= #lines[cursor_line] thenlocal byte_start = utf8.offset(lines[cursor_line], cursor_pos)local byte_end = utf8.offset(lines[cursor_line], cursor_pos+1)if cursor_pos <= #lines[cursor_line].data thenlocal byte_start = utf8.offset(lines[cursor_line].data, cursor_pos)local byte_end = utf8.offset(lines[cursor_line].data, cursor_pos+1) - replacement in main.lua at line 578
lines[cursor_line] = string.sub(lines[cursor_line], 1, byte_start-1)..string.sub(lines[cursor_line], byte_end)lines[cursor_line].data = string.sub(lines[cursor_line].data, 1, byte_start-1)..string.sub(lines[cursor_line].data, byte_end) - replacement in main.lua at line 580
lines[cursor_line] = string.sub(lines[cursor_line], 1, byte_start-1)lines[cursor_line].data = string.sub(lines[cursor_line].data, 1, byte_start-1) - replacement in main.lua at line 725
if type(line) == 'table' then return 0 endif line.mode == 'drawing' then return 0 end - replacement in main.lua at line 732
if type(line) == 'table' then return hint endif line.mode == 'drawing' then return hint end - replacement in main.lua at line 768
if type(drawing) == 'table' thenif drawing.mode == 'drawing' then - replacement in main.lua at line 780
if type(drawing) == 'table' thenif drawing.mode == 'drawing' then - replacement in main.lua at line 791
if type(drawing) == 'table' thenif drawing.mode == 'drawing' then - replacement in main.lua at line 808
if type(drawing) == 'table' thenif drawing.mode == 'drawing' then - replacement in main.lua at line 825
if type(drawing) == 'table' thenif drawing.mode == 'drawing' then - replacement in main.lua at line 949
table.insert(result, line)table.insert(result, {mode='text', data=line}) - replacement in main.lua at line 954
table.insert(result, '')table.insert(result, {mode='text', data=''}) - replacement in main.lua at line 962
if type(line) == 'table' thenif line.mode == 'drawing' then - replacement in main.lua at line 965
outfile:write(line..'\n')outfile:write(line.data..'\n') - replacement in main.lua at line 973
local drawing = {h=256/2, points={}, shapes={}, pending={}}local drawing = {mode='drawing', h=256/2, points={}, shapes={}, pending={}}