Rework all nodes displaying text according to new font_api

This commit is contained in:
Pierre-Yves Rollo 2018-07-13 20:41:53 +02:00
parent 825557ff31
commit 80b616ab97
2 changed files with 15 additions and 13 deletions

@ -17,11 +17,6 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
--]]
--[[
Margins, spacings, can be negative numbers
]]--
-- Local functions
------------------
@ -146,10 +141,10 @@ function font_api.Font:get_height(nb_of_lines)
return
(
(self.height or 0) +
(self.margin_top or 0) +
(self.margin_bottom or 0)
(self.margintop or 0) +
(self.marginbottom or 0)
) * nb_of_lines +
(self.line_spacing or 0) * (nb_of_lines -1)
(self.linespacing or 0) * (nb_of_lines -1)
else
return nb_of_lines == 0 and 0 or nil
end
@ -192,6 +187,7 @@ function font_api.Font:make_line_texture(line, texturew, x, y)
-- Replace chars with no texture by the NULL(0) char
if self.widths[char] == nil
or char == 88
then
print(string.format("["..font_api.name
.."] Missing char %d (%04x)",char,char))
@ -243,6 +239,8 @@ function font_api.Font:make_text_texture(text, texturew, textureh, maxlines,
y = (textureh - textheight) / 2
end
end
y = y + (self.margintop or 0)
for _, line in pairs(lines) do
if halign == "left" then
@ -259,7 +257,7 @@ function font_api.Font:make_text_texture(text, texturew, textureh, maxlines,
(texturew - line.width) / 2, y)
end
y = y + self:get_height() + (self.line_spacing or 0)
y = y + self:get_height() + (self.linespacing or 0)
end
texture = string.format("[combine:%dx%d", texturew, textureh)..texture

@ -45,10 +45,14 @@ function font_api.on_display_update(pos, objref)
if entity and ndef.display_entities[entity.name] then
local def = ndef.display_entities[entity.name]
local font = font_api.get_font(meta:get_string("font") or def.font_name)
objref:set_properties({
textures={font:make_text_texture(text,
def.size.x * def.resolution.x * font.height,
def.size.y * def.resolution.y * font.height,
local maxlines = def.maxlines or 1 -- TODO:How to do w/o maxlines ?
objref:set_properties({
textures={font:make_text_texture(text,
font:get_height(maxlines) * def.size.x / def.size.y
/ (def.aspect_ratio or 1),
font:get_height(maxlines),
def.maxlines, def.halign, def.valign, def.color)},
visual_size = def.size
})