Remove a pango hack
Instead of creating unused cairo image surfaces, we create our temporary layouts now via the (PangoCairo) font map. Way less ugly. Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
parent
4f30dfd198
commit
68d630c32a
|
@ -44,9 +44,8 @@ local function load_font(name)
|
||||||
-- load new font
|
-- load new font
|
||||||
local desc = Pango.FontDescription.from_string(name)
|
local desc = Pango.FontDescription.from_string(name)
|
||||||
|
|
||||||
-- Create a temporary surface that we need for computing the size :(
|
local ctx = PangoCairo.font_map_get_default():create_context()
|
||||||
local surface = cairo.ImageSurface(cairo.Format.ARGB32, 1, 1)
|
local layout = Pango.Layout.new(ctx)
|
||||||
local layout = PangoCairo.create_layout(cairo.Context(surface))
|
|
||||||
layout:set_font_description(desc)
|
layout:set_font_description(desc)
|
||||||
|
|
||||||
local width, height = layout:get_pixel_size()
|
local width, height = layout:get_pixel_size()
|
||||||
|
|
|
@ -48,13 +48,6 @@ function fit(box, width, height)
|
||||||
return logical.width, logical.height
|
return logical.width, logical.height
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Return a pango layout which can be used if no cairo context is available
|
|
||||||
local function get_temp_layout()
|
|
||||||
local surface = cairo.ImageSurface(cairo.Format.ARGB32, 0, 0)
|
|
||||||
local cr = cairo.Context(surface)
|
|
||||||
return PangoCairo.create_layout(cr)
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Set a textbox' text.
|
--- Set a textbox' text.
|
||||||
-- @param text The text to set. This can contain pango markup (e.g. <b>bold</b>)
|
-- @param text The text to set. This can contain pango markup (e.g. <b>bold</b>)
|
||||||
function set_markup(box, text)
|
function set_markup(box, text)
|
||||||
|
@ -131,8 +124,9 @@ local function new()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Spot the hack: Temporary surface to make pango happy
|
local ctx = PangoCairo.font_map_get_default():create_context()
|
||||||
ret._layout = get_temp_layout()
|
ret._layout = Pango.Layout.new(ctx)
|
||||||
|
|
||||||
ret:set_ellipsize("end")
|
ret:set_ellipsize("end")
|
||||||
ret:set_wrap("word_char")
|
ret:set_wrap("word_char")
|
||||||
ret:set_valign("center")
|
ret:set_valign("center")
|
||||||
|
|
Loading…
Reference in New Issue