gears.surface: Add a method to create a surface from a shape
Useful for icons
This commit is contained in:
parent
1d1e487d19
commit
704c028621
|
@ -9,6 +9,7 @@ local setmetatable = setmetatable
|
||||||
local type = type
|
local type = type
|
||||||
local capi = { awesome = awesome }
|
local capi = { awesome = awesome }
|
||||||
local cairo = require("lgi").cairo
|
local cairo = require("lgi").cairo
|
||||||
|
local color = nil
|
||||||
local gdebug = require("gears.debug")
|
local gdebug = require("gears.debug")
|
||||||
|
|
||||||
-- Keep this in sync with build-utils/lgi-check.sh!
|
-- Keep this in sync with build-utils/lgi-check.sh!
|
||||||
|
@ -152,6 +153,32 @@ function surface.duplicate_surface(s)
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Create a surface from a `gears.shape`
|
||||||
|
-- Any additional parameters will be passed to the shape function
|
||||||
|
-- @tparam number width The surface width
|
||||||
|
-- @tparam number height The surface height
|
||||||
|
-- @param shape A `gears.shape` compatible function
|
||||||
|
-- @param[opt=white] shape_color The shape color or pattern
|
||||||
|
-- @param[opt=transparent] bg_color The surface background color
|
||||||
|
-- @treturn cairo.surface the new surface
|
||||||
|
function surface.load_from_shape(width, height, shape, shape_color, bg_color, ...)
|
||||||
|
color = color or require("gears.color")
|
||||||
|
|
||||||
|
local img = cairo.ImageSurface(cairo.Format.ARGB32, width, height)
|
||||||
|
local cr = cairo.Context(img)
|
||||||
|
|
||||||
|
cr:set_source(color(bg_color or "#00000000"))
|
||||||
|
cr:paint()
|
||||||
|
|
||||||
|
cr:set_source(color(shape_color or "#000000"))
|
||||||
|
|
||||||
|
shape(cr, width, height, ...)
|
||||||
|
|
||||||
|
cr:fill()
|
||||||
|
|
||||||
|
return img
|
||||||
|
end
|
||||||
|
|
||||||
--- Apply a shape to a client or a wibox.
|
--- Apply a shape to a client or a wibox.
|
||||||
--
|
--
|
||||||
-- If the wibox or client size change, this function need to be called
|
-- If the wibox or client size change, this function need to be called
|
||||||
|
|
Loading…
Reference in New Issue