Simplified StatusView item drawing

This commit is contained in:
rxi 2020-05-03 18:42:52 +01:00
parent d859ce5fcd
commit 844dced7cd

View file

@ -42,38 +42,39 @@ function StatusView:update()
end end
function StatusView:draw_items(items, right_align, yoffset) local function draw_items(self, items, x, y, draw_fn)
local font = style.font local font = style.font
local color = style.text local color = style.text
local x, y = self:get_content_offset()
y = y + (yoffset or 0)
local i
if right_align then
x = x + self.size.x - style.padding.x
i = #items
else
x = x + style.padding.x
i = 1
end
while items[i] do
local item = items[i]
for _, item in ipairs(items) do
if type(item) == "userdata" then if type(item) == "userdata" then
font = item font = item
elseif type(item) == "table" then elseif type(item) == "table" then
color = item color = item
else else
if right_align then x = draw_fn(font, color, item, nil, x, y, 0, self.size.y)
x = x - font:get_width(item)
common.draw_text(font, color, item, nil, x, y, 0, self.size.y)
else
x = common.draw_text(font, color, item, nil, x, y, 0, self.size.y)
end
end end
end
i = i + (right_align and -1 or 1) return x
end
local function text_width(font, _, text, _, x)
return x + font:get_width(text)
end
function StatusView:draw_items(items, right_align, yoffset)
local x, y = self:get_content_offset()
y = y + (yoffset or 0)
if right_align then
local w = draw_items(self, items, 0, 0, text_width)
x = x + self.size.x - w - style.padding.x
draw_items(self, items, x, y, common.draw_text)
else
x = x + style.padding.x
draw_items(self, items, x, y, common.draw_text)
end end
end end
@ -98,8 +99,8 @@ local function draw_for_doc_view(self, x, y)
} }
self:draw_items({ self:draw_items({
"g", style.icon_font, style.icon_font, "g",
style.text, separator2, style.dim, style.font, style.font, style.dim, separator2, style.text,
#dv.doc.lines, " lines", #dv.doc.lines, " lines",
separator, separator,
dv.doc.crlf and "CRLF" or "LF" dv.doc.crlf and "CRLF" or "LF"
@ -118,9 +119,9 @@ function StatusView:draw()
draw_for_doc_view(self) draw_for_doc_view(self)
else else
self:draw_items({ self:draw_items({
"g", style.icon_font, style.icon_font, "g",
style.text, separator2, style.dim, style.font, style.font, style.dim, separator2,
#core.docs, " / ", style.dim, #core.docs, style.text, " / ",
#core.project_files, " files" #core.project_files, " files"
}, true) }, true)
end end