I feel confident now that page-down is working.
This commit is contained in:
parent
6550a4c6d7
commit
1e63bf0e0a
5
main.lua
5
main.lua
|
@ -141,11 +141,12 @@ function love.draw()
|
||||||
y = y + Drawing.pixels(line.h) + 10 -- padding
|
y = y + Drawing.pixels(line.h) + 10 -- padding
|
||||||
else
|
else
|
||||||
line.y = y
|
line.y = y
|
||||||
y = Text.draw(line, Line_width, line_index)
|
y, Screen_bottom1.pos = Text.draw(line, Line_width, line_index)
|
||||||
y = y + math.floor(15*Zoom) -- text height
|
y = y + math.floor(15*Zoom) -- text height
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
--? print('screen bottom: '..tostring(Screen_bottom1.pos)..' in '..tostring(Lines[Screen_bottom1.line].data))
|
||||||
--? os.exit(1)
|
--? os.exit(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -216,7 +217,7 @@ function keychord_pressed(chord)
|
||||||
save_to_disk(Lines, Filename)
|
save_to_disk(Lines, Filename)
|
||||||
elseif chord == 'pagedown' then
|
elseif chord == 'pagedown' then
|
||||||
Screen_top1.line = Screen_bottom1.line
|
Screen_top1.line = Screen_bottom1.line
|
||||||
Screen_top1.pos = 1
|
Screen_top1.pos = Screen_bottom1.pos
|
||||||
Cursor1.line = Screen_top1.line
|
Cursor1.line = Screen_top1.line
|
||||||
Cursor1.pos = Screen_top1.pos
|
Cursor1.pos = Screen_top1.pos
|
||||||
Text.move_cursor_down_to_next_text_line_while_scrolling_again_if_necessary()
|
Text.move_cursor_down_to_next_text_line_while_scrolling_again_if_necessary()
|
||||||
|
|
10
text.lua
10
text.lua
|
@ -5,12 +5,16 @@ local utf8 = require 'utf8'
|
||||||
|
|
||||||
local Debug_new_render = false
|
local Debug_new_render = false
|
||||||
|
|
||||||
|
-- return values:
|
||||||
|
-- y coordinate drawn until in px
|
||||||
|
-- position of start of final screen line drawn
|
||||||
function Text.draw(line, line_width, line_index)
|
function Text.draw(line, line_width, line_index)
|
||||||
love.graphics.setColor(0,0,0)
|
love.graphics.setColor(0,0,0)
|
||||||
-- wrap long lines
|
-- wrap long lines
|
||||||
local x = 25
|
local x = 25
|
||||||
local y = line.y
|
local y = line.y
|
||||||
local pos = 1
|
local pos = 1
|
||||||
|
local screen_line_starting_pos = 1
|
||||||
if line.fragments == nil then
|
if line.fragments == nil then
|
||||||
Text.compute_fragments(line, line_width)
|
Text.compute_fragments(line, line_width)
|
||||||
end
|
end
|
||||||
|
@ -24,6 +28,10 @@ function Text.draw(line, line_width, line_index)
|
||||||
assert(x > 25) -- no overfull lines
|
assert(x > 25) -- no overfull lines
|
||||||
if line_index > Screen_top1.line or pos > Screen_top1.pos then
|
if line_index > Screen_top1.line or pos > Screen_top1.pos then
|
||||||
y = y + math.floor(15*Zoom)
|
y = y + math.floor(15*Zoom)
|
||||||
|
if y + math.floor(15*Zoom) > Screen_height then
|
||||||
|
return y, screen_line_starting_pos
|
||||||
|
end
|
||||||
|
screen_line_starting_pos = pos
|
||||||
if Debug_new_render then print('y', y) end
|
if Debug_new_render then print('y', y) end
|
||||||
end
|
end
|
||||||
x = 25
|
x = 25
|
||||||
|
@ -52,7 +60,7 @@ function Text.draw(line, line_width, line_index)
|
||||||
Text.draw_cursor(x, y)
|
Text.draw_cursor(x, y)
|
||||||
end
|
end
|
||||||
Debug_new_render = false
|
Debug_new_render = false
|
||||||
return y
|
return y, screen_line_starting_pos
|
||||||
end
|
end
|
||||||
-- manual tests:
|
-- manual tests:
|
||||||
-- draw with small line_width of 100
|
-- draw with small line_width of 100
|
||||||
|
|
Loading…
Reference in New Issue