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-19 22:58:04 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-05-19 22:58:04 -0700
commite223182ad55ca79f864c93641664ce85b389582b (patch)
tree2816cb1d2ac2c44f4997299d3e58f51e5f30cd2e /text.lua
parentd6220432848f3ad9e1276cc9ccfdba0b113adaf7 (diff)
downloadlines.love-e223182ad55ca79f864c93641664ce85b389582b.tar.gz
move
Diffstat (limited to 'text.lua')
-rw-r--r--text.lua70
1 files changed, 35 insertions, 35 deletions
diff --git a/text.lua b/text.lua
index 07931ea..eac4818 100644
--- a/text.lua
+++ b/text.lua
@@ -3,41 +3,6 @@ Text = {}
 
 local utf8 = require 'utf8'
 
-function Text.compute_fragments(line, line_width)
-  line.fragments = {}
-  local x = 25
-  -- try to wrap at word boundaries
-  for frag in line.data:gmatch('%S*%s*') do
-    local frag_text = love.graphics.newText(love.graphics.getFont(), frag)
-    local frag_width = math.floor(frag_text:getWidth()*Zoom)
---?     print('x: '..tostring(x)..'; '..tostring(line_width-x)..'px to go')
---?     print('frag: ^'..frag..'$ is '..tostring(frag_width)..'px wide')
-    if x + frag_width > line_width then
-      while x + frag_width > line_width do
-        if x < 0.8*line_width then
-          -- long word; chop it at some letter
-          -- We're not going to reimplement TeX here.
-          local b = Text.nearest_cursor_pos(frag, line_width - x)
---?           print('space for '..tostring(b)..' graphemes')
-          local frag1 = string.sub(frag, 1, b)
-          local frag1_text = love.graphics.newText(love.graphics.getFont(), frag1)
-          local frag1_width = math.floor(frag1_text:getWidth()*Zoom)
---?           print('inserting '..frag1..' of width '..tostring(frag1_width)..'px')
-          table.insert(line.fragments, {data=frag1, text=frag1_text})
-          frag = string.sub(frag, b+1)
-          frag_text = love.graphics.newText(love.graphics.getFont(), frag)
-          frag_width = math.floor(frag_text:getWidth()*Zoom)
-        end
-        x = 25  -- new line
-      end
-    end
-    if #frag > 0 then
---?       print('inserting '..frag..' of width '..tostring(frag_width)..'px')
-      table.insert(line.fragments, {data=frag, text=frag_text})
-    end
-  end
-end
-
 function Text.draw(line, line_width, line_index, cursor_line, cursor_pos)
   love.graphics.setColor(0,0,0)
   -- wrap long lines
@@ -89,6 +54,41 @@ end
 --  short words break on spaces
 --  long words break when they must
 
+function Text.compute_fragments(line, line_width)
+  line.fragments = {}
+  local x = 25
+  -- try to wrap at word boundaries
+  for frag in line.data:gmatch('%S*%s*') do
+    local frag_text = love.graphics.newText(love.graphics.getFont(), frag)
+    local frag_width = math.floor(frag_text:getWidth()*Zoom)
+--?     print('x: '..tostring(x)..'; '..tostring(line_width-x)..'px to go')
+--?     print('frag: ^'..frag..'$ is '..tostring(frag_width)..'px wide')
+    if x + frag_width > line_width then
+      while x + frag_width > line_width do
+        if x < 0.8*line_width then
+          -- long word; chop it at some letter
+          -- We're not going to reimplement TeX here.
+          local b = Text.nearest_cursor_pos(frag, line_width - x)
+--?           print('space for '..tostring(b)..' graphemes')
+          local frag1 = string.sub(frag, 1, b)
+          local frag1_text = love.graphics.newText(love.graphics.getFont(), frag1)
+          local frag1_width = math.floor(frag1_text:getWidth()*Zoom)
+--?           print('inserting '..frag1..' of width '..tostring(frag1_width)..'px')
+          table.insert(line.fragments, {data=frag1, text=frag1_text})
+          frag = string.sub(frag, b+1)
+          frag_text = love.graphics.newText(love.graphics.getFont(), frag)
+          frag_width = math.floor(frag_text:getWidth()*Zoom)
+        end
+        x = 25  -- new line
+      end
+    end
+    if #frag > 0 then
+--?       print('inserting '..frag..' of width '..tostring(frag_width)..'px')
+      table.insert(line.fragments, {data=frag, text=frag_text})
+    end
+  end
+end
+
 function love.textinput(t)
   if love.mouse.isDown('1') then return end
   if Lines[Cursor_line].mode == 'drawing' then return end