diff options
author | rxi <rxi@users.noreply.github.com> | 2020-06-03 14:18:00 +0100 |
---|---|---|
committer | rxi <rxi@users.noreply.github.com> | 2020-06-03 14:25:49 +0100 |
commit | 18cee87818658c49167123677c978c16c9d7318c (patch) | |
tree | f5ec01c7ebbcd62c3e476748d0217bd79d931228 /plugins/scale.lua | |
parent | b812a82c8ff186076cf570e242214cf714d64e64 (diff) | |
download | lite-xl-plugins-18cee87818658c49167123677c978c16c9d7318c.tar.gz lite-xl-plugins-18cee87818658c49167123677c978c16c9d7318c.zip |
Added `scale` plugin
Diffstat (limited to 'plugins/scale.lua')
-rw-r--r-- | plugins/scale.lua | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/plugins/scale.lua b/plugins/scale.lua new file mode 100644 index 0000000..52ac73b --- /dev/null +++ b/plugins/scale.lua @@ -0,0 +1,62 @@ +local core = require "core" +local command = require "core.command" +local keymap = require "core.keymap" +local style = require "core.style" + + +local font_cache = setmetatable({}, { __mode = "k" }) + +-- the following should be kept in sync with core.style's default font settings +font_cache[style.font] = { EXEDIR .. "/data/fonts/font.ttf", 14 * SCALE } +font_cache[style.big_font] = { EXEDIR .. "/data/fonts/font.ttf", 34 * SCALE } +font_cache[style.icon_font] = { EXEDIR .. "/data/fonts/icons.ttf", 14 * SCALE } +font_cache[style.code_font] = { EXEDIR .. "/data/fonts/monospace.ttf", 13.5 * SCALE } + + +local load_font = renderer.font.load +function renderer.font.load(...) + local res = load_font(...) + font_cache[res] = { ... } + return res +end + + +local function scale_font(font, s) + local fc = font_cache[font] + return renderer.font.load(fc[1], fc[2] * s) +end + + +local function set_scale(scale) + local s = scale / SCALE + + style.padding.x = style.padding.x * s + style.padding.y = style.padding.y * s + style.divider_size = style.divider_size * s + style.scrollbar_size = style.scrollbar_size * s + style.caret_width = style.caret_width * s + style.tab_width = style.tab_width * s + + style.font = scale_font(style.font, s) + style.big_font = scale_font(style.big_font, s) + style.icon_font = scale_font(style.icon_font, s) + style.code_font = scale_font(style.code_font, s) + + SCALE = scale + core.redraw = true +end + + +command.add(nil, { + ["scale:reset" ] = function() set_scale(1) end, + ["scale:decrease"] = function() set_scale(SCALE * 0.9) end, + ["scale:increase"] = function() set_scale(SCALE * 1.1) end, +}) + +keymap.add { + ["ctrl+0"] = "scale:reset", + ["ctrl+-"] = "scale:decrease", + ["ctrl+="] = "scale:increase", +} + +return { set_scale = set_scale } |