about summary refs log tree commit diff stats
path: root/text.lua
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-05-21 20:52:44 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-05-21 20:52:44 -0700
commit1e63bf0e0a58860bbdf9fce02f551c2d00fa2c0f (patch)
tree63a88d01376106a0fc62e5f5647528a516f94ba5 /text.lua
parent6550a4c6d7d23d7769142b3d86eaa8f70f216970 (diff)
downloadview.love-1e63bf0e0a58860bbdf9fce02f551c2d00fa2c0f.tar.gz
I feel confident now that page-down is working.
Diffstat (limited to 'text.lua')
-rw-r--r--text.lua10
1 files changed, 9 insertions, 1 deletions
diff --git a/text.lua b/text.lua
index 83e185b..e45d174 100644
--- a/text.lua
+++ b/text.lua
@@ -5,12 +5,16 @@ local utf8 = require 'utf8'
 
 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)
   love.graphics.setColor(0,0,0)
   -- wrap long lines
   local x = 25
   local y = line.y
   local pos = 1
+  local screen_line_starting_pos = 1
   if line.fragments == nil then
     Text.compute_fragments(line, line_width)
   end
@@ -24,6 +28,10 @@ function Text.draw(line, line_width, line_index)
       assert(x > 25)  -- no overfull lines
       if line_index > Screen_top1.line or pos > Screen_top1.pos then
         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
       end
       x = 25
@@ -52,7 +60,7 @@ function Text.draw(line, line_width, line_index)
     Text.draw_cursor(x, y)
   end
   Debug_new_render = false
-  return y
+  return y, screen_line_starting_pos
 end
 -- manual tests:
 --  draw with small line_width of 100