awesome/tests/examples/naughty/template.lua

65 lines
2.0 KiB
Lua

--DOC_GEN_IMAGE
local file_path, image_path = ...
require("_common_template")(...)
local wibox = require("wibox")
-- For the connections
require("naughty")
-- Create a screen
screen[1]._resize {x = 0, width = 800, height = 600}
-- Let the test request a size and file format
loadfile(file_path)()
-- Emulate the event loop for 10 iterations
for _ = 1, 10 do
awesome:emit_signal("refresh")
end
local rect = {x1 = math.huge ,y1 = math.huge , x2 = -math.huge , y2 = -math.huge}
if #drawin.get() == 0 then
-- The code below would calculate -math.huge - math.huge and end up trying
-- to draw something of size -math.huge times -math.huge. Turn this weird
-- error into a better error message.
error("Got no drawins to draw. "
.. "That's not good and would cause errors later on.")
end
-- Get the region with wiboxes
for _, d in ipairs(drawin.get()) do
local w = d.get_wibox and d:get_wibox() or nil
if w then
local geo = w:geometry()
rect.x1 = math.min(rect.x1, geo.x )
rect.y1 = math.min(rect.y1, geo.y )
rect.x2 = math.max(rect.x2, geo.x + geo.width + 2*w.border_width)
rect.y2 = math.max(rect.y2, geo.y + geo.height + 2*w.border_width)
end
end
-- Get rid of invalid drawins. The shims are very permissive and wont deny this.
if rect.x1 == rect.x2 or rect.y1 == rect.y2 then return end
local multi = wibox.layout {
forced_width = rect.x2 - rect.x1,
forced_height = rect.y2 - rect.y1,
layout = wibox.layout.manual
}
-- Draw all normal wiboxes
for _, d in ipairs(drawin.get()) do
local w = d.get_wibox and d:get_wibox() or nil
if w then
local geo = w:geometry()
multi:add_at(w:to_widget(), {x = geo.x - rect.x1, y = geo.y - rect.y1})
end
end
wibox.widget.draw_to_svg_file(
multi, image_path..".svg", multi.forced_width, multi.forced_height
)
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80