gears.surface: Add an helper to set a shape to drawable
This commit is contained in:
parent
fb0c82a798
commit
dd93418afb
|
@ -152,6 +152,32 @@ function surface.duplicate_surface(s)
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Apply a shape to a client or a wibox.
|
||||||
|
--
|
||||||
|
-- If the wibox or client size change, this function need to be called
|
||||||
|
-- again.
|
||||||
|
-- @param draw A wibox or a client
|
||||||
|
-- @param shape or gears.shape function or a custom function with a context,
|
||||||
|
-- width and height as parameter.
|
||||||
|
-- @param[opt] Any additional parameters will be passed to the shape function
|
||||||
|
function surface.apply_shape_bounding(draw, shape, ...)
|
||||||
|
local geo = draw:geometry()
|
||||||
|
|
||||||
|
local img = cairo.ImageSurface(cairo.Format.A1, geo.width, geo.height)
|
||||||
|
local cr = cairo.Context(img)
|
||||||
|
|
||||||
|
cr:set_operator(cairo.Operator.CLEAR)
|
||||||
|
cr:set_source_rgba(0,0,0,1)
|
||||||
|
cr:paint()
|
||||||
|
cr:set_operator(cairo.Operator.SOURCE)
|
||||||
|
cr:set_source_rgba(1,1,1,1)
|
||||||
|
|
||||||
|
shape(cr, geo.width, geo.height, ...)
|
||||||
|
|
||||||
|
cr:fill()
|
||||||
|
|
||||||
|
draw.shape_bounding = img._native
|
||||||
|
end
|
||||||
|
|
||||||
return setmetatable(surface, surface.mt)
|
return setmetatable(surface, surface.mt)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue