diff --git a/edit.lua b/edit.lua index 7b913fc..7f8a379 100644 --- a/edit.lua +++ b/edit.lua @@ -23,7 +23,7 @@ Same_point_distance = 4 -- pixel distance at which two points are considered th edit = {} -- run in both tests and a real run -function edit.initialize_state(top, left, right, font_height, line_height) -- currently always draws to bottom of screen +function edit.initialize_state(top, left, right, font, line_height) -- currently always draws to bottom of screen local result = { -- a line is either text or a drawing -- a text is a table with: @@ -83,7 +83,8 @@ function edit.initialize_state(top, left, right, font_height, line_height) -- c current_drawing_mode = 'line', -- one of the available shape modes previous_drawing_mode = nil, -- extra state for some ephemeral modes like moving/deleting/naming points - font_height = font_height, + font = font, + font_height = font:getHeight(), line_height = line_height, top = top, @@ -103,7 +104,7 @@ function edit.initialize_state(top, left, right, font_height, line_height) -- c search_backup = nil, -- stuff to restore when cancelling search } return result -end -- App.initialize_state +end -- edit.initialize_state function edit.check_locs(State) -- if State is inconsistent (i.e. file changed by some other program), @@ -156,6 +157,7 @@ end -- return y drawn until function edit.draw(State) State.button_handlers = {} + love.graphics.setFont(State.font) App.color(Text_color) assert(#State.lines == #State.line_cache, ('line_cache is out of date; %d elements when it should be %d'):format(#State.line_cache, #State.lines)) assert(Text.le1(State.screen_top1, State.cursor1), ('screen_top (line=%d,pos=%d) is below cursor (line=%d,pos=%d)'):format(State.screen_top1.line, State.screen_top1.pos, State.cursor1.line, State.cursor1.pos)) @@ -548,7 +550,7 @@ end function edit.update_font_settings(State, font_height) State.font_height = font_height - love.graphics.setFont(love.graphics.newFont(State.font_height)) + State.font = love.graphics.newFont(State.font_height) State.line_height = math.floor(font_height*1.3) end @@ -565,7 +567,7 @@ function edit.initialize_test_state() 15, -- top margin Test_margin_left, App.screen.width - Test_margin_right, - 14, -- font height assuming default LÖVE font + love.graphics.getFont(), 15) -- line height end diff --git a/log_browser.lua b/log_browser.lua index b6195b9..3a42394 100644 --- a/log_browser.lua +++ b/log_browser.lua @@ -6,7 +6,7 @@ -- functions to render them into the log_render namespace. function source.initialize_log_browser_side() - Log_browser_state = edit.initialize_state(Margin_top, Editor_state.right + Margin_right + Margin_left, (Editor_state.right+Margin_right)*2, Editor_state.font_height, Editor_state.line_height) + Log_browser_state = edit.initialize_state(Margin_top, Editor_state.right + Margin_right + Margin_left, (Editor_state.right+Margin_right)*2, Editor_state.font, Editor_state.line_height) Log_browser_state.filename = 'log' load_from_disk(Log_browser_state) -- TODO: pay no attention to Fold log_browser.parse(Log_browser_state) diff --git a/run.lua b/run.lua index 98a8345..fd01f46 100644 --- a/run.lua +++ b/run.lua @@ -54,14 +54,14 @@ function print_and_log(s) end function run.load_settings() - love.graphics.setFont(love.graphics.newFont(Settings.font_height)) + local font = love.graphics.newFont(Settings.font_height) -- set up desired window dimensions and make window resizable _, _, App.screen.flags = App.screen.size() App.screen.flags.resizable = true App.screen.width, App.screen.height = Settings.width, Settings.height App.screen.resize(App.screen.width, App.screen.height, App.screen.flags) run.set_window_position_from_settings(Settings) - Editor_state = edit.initialize_state(Margin_top, Margin_left, App.screen.width-Margin_right, Settings.font_height, math.floor(Settings.font_height*1.3)) + Editor_state = edit.initialize_state(Margin_top, Margin_left, App.screen.width-Margin_right, font, math.floor(Settings.font_height*1.3)) Editor_state.filename = Settings.filename Editor_state.screen_top1 = Settings.screen_top Editor_state.cursor1 = Settings.cursor @@ -79,11 +79,9 @@ end function run.initialize_default_settings() local font_height = 20 - love.graphics.setFont(love.graphics.newFont(font_height)) + local font = love.graphics.newFont(font_height) run.initialize_window_geometry() - Editor_state = edit.initialize_state(Margin_top, Margin_left, App.screen.width-Margin_right) - Editor_state.font_height = font_height - Editor_state.line_height = math.floor(font_height*1.3) + Editor_state = edit.initialize_state(Margin_top, Margin_left, App.screen.width-Margin_right, font, math.floor(font_height*1.3)) Settings = run.settings() end diff --git a/source.lua b/source.lua index dafb1a7..d6ea40f 100644 --- a/source.lua +++ b/source.lua @@ -114,7 +114,7 @@ end function source.load_settings() local settings = Settings.source - love.graphics.setFont(love.graphics.newFont(settings.font_height)) + local font = love.graphics.newFont(settings.font_height) -- set up desired window dimensions and make window resizable _, _, App.screen.flags = App.screen.size() App.screen.flags.resizable = true @@ -126,7 +126,7 @@ function source.load_settings() if Show_log_browser_side then right = App.screen.width/2 - Margin_right end - Editor_state = edit.initialize_state(Margin_top, Margin_left + Line_number_width*App.width('m'), right, settings.font_height, math.floor(settings.font_height*1.3)) + Editor_state = edit.initialize_state(Margin_top, Margin_left + Line_number_width*App.width('m'), right, font, math.floor(settings.font_height*1.3)) Editor_state.filename = settings.filename Editor_state.filename = basename(Editor_state.filename) -- migrate settings that used full paths; we now support only relative paths within the app if settings.cursors then @@ -152,12 +152,10 @@ end function source.initialize_default_settings() local font_height = 20 - love.graphics.setFont(love.graphics.newFont(font_height)) + local font = love.graphics.newFont(font_height) source.initialize_window_geometry() - Editor_state = edit.initialize_state(Margin_top, Margin_left + Line_number_width*App.width('m'), App.screen.width-Margin_right) + Editor_state = edit.initialize_state(Margin_top, Margin_left + Line_number_width*App.width('m'), App.screen.width-Margin_right, font, math.floor(font_height*1.3)) Editor_state.filename = 'run.lua' - Editor_state.font_height = font_height - Editor_state.line_height = math.floor(font_height*1.3) end function source.initialize_window_geometry() diff --git a/source_edit.lua b/source_edit.lua index 0af9949..9414ee4 100644 --- a/source_edit.lua +++ b/source_edit.lua @@ -25,7 +25,7 @@ Same_point_distance = 4 -- pixel distance at which two points are considered th edit = {} -- run in both tests and a real run -function edit.initialize_state(top, left, right, font_height, line_height) -- currently always draws to bottom of screen +function edit.initialize_state(top, left, right, font, line_height) -- currently always draws to bottom of screen local result = { -- a line is either text or a drawing -- a text is a table with: @@ -85,7 +85,8 @@ function edit.initialize_state(top, left, right, font_height, line_height) -- c current_drawing_mode = 'line', previous_drawing_mode = nil, -- extra state for some ephemeral modes like moving/deleting/naming points - font_height = font_height, + font = font, + font_height = font:getHeight(), line_height = line_height, top = top, @@ -105,7 +106,7 @@ function edit.initialize_state(top, left, right, font_height, line_height) -- c search_backup = nil, -- stuff to restore when cancelling search } return result -end -- App.initialize_state +end -- edit.initialize_state function edit.check_locs(State) -- if State is inconsistent (i.e. file changed by some other program), @@ -157,6 +158,7 @@ end function edit.draw(State, hide_cursor, show_line_numbers) State.button_handlers = {} + love.graphics.setFont(State.font) App.color(Text_color) assert(#State.lines == #State.line_cache, ('line_cache is out of date; %d elements when it should be %d'):format(#State.line_cache, #State.lines)) assert(Text.le1(State.screen_top1, State.cursor1), ('screen_top (line=%d,pos=%d) is below cursor (line=%d,pos=%d)'):format(State.screen_top1.line, State.screen_top1.pos, State.cursor1.line, State.cursor1.pos)) @@ -552,7 +554,7 @@ end function edit.update_font_settings(State, font_height) State.font_height = font_height - love.graphics.setFont(love.graphics.newFont(State.font_height)) + State.font = love.graphics.newFont(State.font_height) State.line_height = math.floor(font_height*1.3) end @@ -569,7 +571,7 @@ function edit.initialize_test_state() 15, -- top margin Test_margin_left, App.screen.width - Test_margin_right, - 14, -- font height assuming default LÖVE font + love.graphics.getFont(), 15) -- line height end