binary search to most natural up/down with proportional fonts
[?]
May 17, 2022, 3:55 AM
RJGZD4INLQ3IAWLCBYBZQDMP4ICSMZWJX2TRYODDYVUNMGPL6GYACDependencies
- [2]
JS6JSYOTonline contextual help - [3]
3CS5KKCIup/down cursor movement - [4]
IYW7X3WLleft/right cursor movement, deleting characters - [5]
XX7G2FFJintermingle freehand line drawings with text - [*]
OTIBCAUJlove2d scaffold - [*]
H7OEU6WPexperimental approach to combining keyboard and mouse while drawing
Change contents
- replacement in main.lua at line 160
local line_before_cursor = lines[cursor_line]:sub(1, cursor_pos-1)local text_before_cursor = love.graphics.newText(love.graphics.getFont(), line_before_cursor)love.graphics.print('_', 25+text_before_cursor:getWidth()*1.5, y+6) -- drop the cursor down a bit to account for the increased font sizelove.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 size - edit in main.lua at line 541
elseif chord == 'home' thencursor_pos = 1elseif chord == 'end' thencursor_pos = #lines[cursor_line]+1 - edit in main.lua at line 547
local old_x = cursor_x(lines[cursor_line], cursor_pos) - replacement in main.lua at line 549
if cursor_pos > #lines[cursor_line] thencursor_pos = #lines[cursor_line]+1endcursor_pos = nearest_cursor_pos(lines[cursor_line], old_x) - edit in main.lua at line 553
local old_x = cursor_x(lines[cursor_line], cursor_pos) - replacement in main.lua at line 555
if cursor_pos > #lines[cursor_line] thencursor_pos = #lines[cursor_line]+1endcursor_pos = nearest_cursor_pos(lines[cursor_line], old_x) - edit in main.lua at line 705
endendendfunction 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 text_before_cursor:getWidth()endfunction nearest_cursor_pos(line, x)if x == 0 thenreturn 1endlocal left, right = 1, #line+1while left < right-1 dolocal curr = math.floor((left+right)/2)local currx = cursor_x(line, curr)if currx > x-2 and currx < x+2 thenreturn curr - edit in main.lua at line 726[2.584][8.482]
if currx > x thenright = currelseleft = currend - edit in main.lua at line 732[8.488][8.488]
return right