BULPIBEGL7TMK6CVIE7IS7WGAHGOSUJBGJSFQK542MOWGHP2ADQQC TRK4TSN73A2TELAAVLYO35RXMERDZH7HHZUWCLRXDBILLPGOVQ2AC BLWAYPKV3MLDZ4ALXLUJ25AIR6PCIL4RFYNRYLB26GFVC2KQBYBAC 7IKRRESBHMYHHKW4XHUEEKHKPOBLAGZ7A7FJMRU32MTRKIV6S7GQC R5QXEHUIZLELJGGCZAE7ATNS3CLRJ7JFRENMGH4XXH24C5WABZDQC XX7G2FFJ4QCGQGD4REAW5QFHVYAKCFUPGZCK7L6DFGS5ISVBYBQQC OTIBCAUJ3KDQJLVDN3A536DLZGNRYMGJLORZVR3WLCGXGO6UGO6AC 7RN3AETYFBZ3FC7L74S3JIM2KQV45VM3M2JAQAW3PHDHG47SUEBQC VVXVV2D2F5Y6D6N5VVPUPK3N6GMDTG2YCYPQDYTYEKVKBYHRRYEAC AVQ5MC5DWNLI6LUUIPGBLGP4LKRPGWBY4THNY25OBT2FAVHC6MCAC 3CS5KKCIZQ6J4SBILINYZSOM6V3U2LE7YIXOZVKXXNBROF6Z6JWAC 2INHXC3KRJVZTX2BQ63ZQLHIC5SWPUG4PQKCMLC7SQKN5R7LJZ6QC RJGZD4INLQ3IAWLCBYBZQDMP4ICSMZWJX2TRYODDYVUNMGPL6GYAC MGOQ5XAVFTWZPBG2O5ZTGSEKU6BRJKQZLDV6CM4737VD2FAEB5JQC BJ5X5O4ACBBJ56LRBBSTCW6IBQP4HAEOOOPNH3SKTA4F66YTOIDAC KHFU5NFDRMC6DUJSY2WB42OVNWZJMOF2JTMSSOBCKDITRN3XU2HAC V5TP27FPD6GPATHPABRW2FKP7BIKY53KL47UVEU5DF4WXEZF7CKAC PRPPZGDYFTLRYL4NHUXOXNQKF2LJ4XEOGJDN36DZWBQY6D3K3MGAC JS6JSYOTXVZRN4XN7TYDY4GCNCFQBSERBPXEJ2TR5A2ITA6JJT2QC H7OEU6WPOKOSKV5RNAM5W62V5SYOY7VEA5VOK6JD5UEBUBIMOKUQC WDWXNW7VH57W6KXBNXFV6NPIO5RUS7Q6QNGGI4R6HWIRXLYI5NSAC -- primitives for editing textText = {}function Text.draw(line, line_index, cursor_line, y, cursor_pos)love.graphics.setColor(0,0,0)local love_text = love.graphics.newText(love.graphics.getFont(), line.data)love.graphics.draw(love_text, 25,y, 0, Zoom)if line_index == cursor_line then-- cursorlove.graphics.print('_', Text.cursor_x(line.data, cursor_pos), y+6) -- drop the cursor down a bit to account for the increased font sizeendendfunction Text.nearest_cursor_pos(line, x, hint)if x == 0 thenreturn 1endlocal max_x = Text.cursor_x(line, #line+1)if x > max_x thenreturn #line+1endlocal currx = Text.cursor_x(line, hint)if currx > x-2 and currx < x+2 thenreturn hintendlocal left, right = 1, #line+1if currx > x thenright = hintelseleft = hintendwhile left < right-1 dolocal curr = math.floor((left+right)/2)local currxmin = Text.cursor_x(line, curr)local currxmax = Text.cursor_x(line, curr+1)if currxmin <= x and x < currxmax thenreturn currendif currxmin > x thenright = currelseleft = currendendreturn rightendfunction Text.cursor_x(line_data, cursor_pos)local line_before_cursor = line_data:sub(1, cursor_pos-1)local text_before_cursor = love.graphics.newText(love.graphics.getFont(), line_before_cursor)return 25+text_before_cursor:getWidth()*Zoomendreturn Text
love.graphics.setColor(0,0,0)local text = love.graphics.newText(love.graphics.getFont(), line.data)love.graphics.draw(text, 25,y, 0, Zoom)if line_index == Cursor_line then-- cursorlove.graphics.print('_', cursor_x(line.data, Cursor_pos), y+6) -- drop the cursor down a bit to account for the increased font sizeend
Text.draw(line, line_index, Cursor_line, y, Cursor_pos)
function cursor_x(line, cursor_pos)local line_before_cursor = line:sub(1, cursor_pos-1)local text_before_cursor = love.graphics.newText(love.graphics.getFont(), line_before_cursor)return 25+text_before_cursor:getWidth()*Zoomendfunction nearest_cursor_pos(line, x, hint)if x == 0 thenreturn 1endlocal max_x = cursor_x(line, #line+1)if x > max_x thenreturn #line+1endlocal currx = cursor_x(line, hint)if currx > x-2 and currx < x+2 thenreturn hintendlocal left, right = 1, #line+1if currx > x thenright = hintelseleft = hintendwhile left < right-1 dolocal curr = math.floor((left+right)/2)local currxmin = cursor_x(line, curr)local currxmax = cursor_x(line, curr+1)if currxmin <= x and x < currxmax thenreturn currendif currxmin > x thenright = currelseleft = currendendreturn rightend