about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--edit.lua1
-rw-r--r--main.lua11
2 files changed, 12 insertions, 0 deletions
diff --git a/edit.lua b/edit.lua
index 878ffb7..801a483 100644
--- a/edit.lua
+++ b/edit.lua
@@ -325,6 +325,7 @@ function edit.update_font_settings(State, font_height)
   love.graphics.setFont(love.graphics.newFont(Editor_state.font_height))
   State.line_height = math.floor(font_height*1.3)
   State.em = App.newText(love.graphics.getFont(), 'm')
+  Text_cache = {}
 end
 
 --== some methods for tests
diff --git a/main.lua b/main.lua
index f206dc0..86326df 100644
--- a/main.lua
+++ b/main.lua
@@ -17,6 +17,9 @@ Editor_state = {}
 function App.initialize_globals()
   -- tests currently mostly clear their own state
 
+  -- a few text objects we can avoid recomputing unless the font changes
+  Text_cache = {}
+
   -- blinking cursor
   Cursor_time = 0
 
@@ -200,3 +203,11 @@ function App.keyreleased(key, scancode)
   Cursor_time = 0  -- ensure cursor is visible immediately after it moves
   return edit.key_released(Editor_state, key, scancode)
 end
+
+-- use this sparingly
+function to_text(s)
+  if Text_cache[s] == nil then
+    Text_cache[s] = App.newText(love.graphics.getFont(), s)
+  end
+  return Text_cache[s]
+end