Merge pull request #1802 from awesomeWM/move-widget-drawing
Move gears.surface.widget_to_svg to wibox.widget.draw_to_svg_file (and widget_to_surface to draw_to_image_surface)
This commit is contained in:
commit
5544d11405
|
@ -105,7 +105,6 @@ file = {
|
|||
'../lib/awful/startup_notification.lua',
|
||||
'../lib/gears/init.lua',
|
||||
'../lib/wibox/layout/init.lua',
|
||||
'../lib/wibox/widget/init.lua',
|
||||
'../lib/wibox/container/init.lua',
|
||||
|
||||
-- Ignore some parts of the widget library
|
||||
|
|
|
@ -218,6 +218,7 @@ end
|
|||
--- Create an SVG file with this widget content.
|
||||
-- This is dynamic, so the SVG will be updated along with the widget content.
|
||||
-- because of this, the painting may happen hover multiple event loop cycles.
|
||||
-- @deprecated wibox.widget.draw_to_svg_file
|
||||
-- @tparam widget widget A widget
|
||||
-- @tparam string path The output file path
|
||||
-- @tparam number width The surface width
|
||||
|
@ -225,6 +226,8 @@ end
|
|||
-- @return The cairo surface
|
||||
-- @return The hierarchy
|
||||
function surface.widget_to_svg(widget, path, width, height)
|
||||
gdebug.deprecate("Use wibox.widget.draw_to_svg_file instead of "..
|
||||
"gears.surface.render_to_svg", {deprecated_in=5})
|
||||
local img = cairo.SvgSurface.create(path, width, height)
|
||||
local cr = cairo.Context(img)
|
||||
|
||||
|
@ -234,6 +237,7 @@ end
|
|||
--- Create a cairo surface with this widget content.
|
||||
-- This is dynamic, so the SVG will be updated along with the widget content.
|
||||
-- because of this, the painting may happen hover multiple event loop cycles.
|
||||
-- @deprecated wibox.widget.draw_to_image_surface
|
||||
-- @tparam widget widget A widget
|
||||
-- @tparam number width The surface width
|
||||
-- @tparam number height The surface height
|
||||
|
@ -241,6 +245,8 @@ end
|
|||
-- @return The cairo surface
|
||||
-- @return The hierarchy
|
||||
function surface.widget_to_surface(widget, width, height, format)
|
||||
gdebug.deprecate("Use wibox.widget.draw_to_image_surface instead of "..
|
||||
"gears.surface.render_to_surface", {deprecated_in=5})
|
||||
local img = cairo.ImageSurface(format or cairo.Format.ARGB32, width, height)
|
||||
local cr = cairo.Context(img)
|
||||
|
||||
|
|
|
@ -3,10 +3,12 @@
|
|||
-- @copyright 2010 Uli Schlachter
|
||||
-- @classmod wibox.widget
|
||||
---------------------------------------------------------------------------
|
||||
local base = require("wibox.widget.base")
|
||||
|
||||
return setmetatable({
|
||||
base = base;
|
||||
local cairo = require("lgi").cairo
|
||||
local hierarchy = require("wibox.hierarchy")
|
||||
|
||||
local widget = {
|
||||
base = require("wibox.widget.base");
|
||||
textbox = require("wibox.widget.textbox");
|
||||
imagebox = require("wibox.widget.imagebox");
|
||||
background = require("wibox.widget.background");
|
||||
|
@ -17,6 +19,56 @@ return setmetatable({
|
|||
checkbox = require("wibox.widget.checkbox");
|
||||
piechart = require("wibox.widget.piechart");
|
||||
slider = require("wibox.widget.slider");
|
||||
}, {__call = function(_, args) return base.make_widget_declarative(args) end})
|
||||
}
|
||||
|
||||
setmetatable(widget, {
|
||||
__call = function(_, args)
|
||||
return widget.base.make_widget_declarative(args)
|
||||
end
|
||||
})
|
||||
|
||||
--- Draw a widget directly to a given cairo context.
|
||||
-- This function creates a temporary `wibox.hierarchy` instance and uses that to
|
||||
-- draw the given widget once to the given cairo context.
|
||||
-- @tparam widget wdg A widget to draw
|
||||
-- @tparam cairo_context cr The cairo context to draw the widget on
|
||||
-- @tparam number width The width of the widget
|
||||
-- @tparam number height The height of the widget
|
||||
-- @tparam[opt={dpi=96}] table context The context information to give to the widget.
|
||||
function widget.draw_to_cairo_context(wdg, cr, width, height, context)
|
||||
local function no_op() end
|
||||
context = context or {dpi=96}
|
||||
local h = hierarchy.new(context, wdg, width, height, no_op, no_op, {})
|
||||
h:draw(context, cr)
|
||||
end
|
||||
|
||||
--- Create an SVG file showing this widget.
|
||||
-- @tparam widget wdg A widget
|
||||
-- @tparam string path The output file path
|
||||
-- @tparam number width The surface width
|
||||
-- @tparam number height The surface height
|
||||
-- @tparam[opt={dpi=96}] table context The context information to give to the widget.
|
||||
function widget.draw_to_svg_file(wdg, path, width, height, context)
|
||||
local img = cairo.SvgSurface.create(path, width, height)
|
||||
local cr = cairo.Context(img)
|
||||
widget.draw_to_cairo_context(wdg, cr, width, height, context)
|
||||
img:finish()
|
||||
end
|
||||
|
||||
--- Create a cairo image surface showing this widget.
|
||||
-- @tparam widget wdg A widget
|
||||
-- @tparam number width The surface width
|
||||
-- @tparam number height The surface height
|
||||
-- @param[opt=cairo.Format.ARGB32] format The surface format
|
||||
-- @tparam[opt={dpi=96}] table context The context information to give to the widget.
|
||||
-- @return The cairo surface
|
||||
function widget.draw_to_image_surface(wdg, width, height, format, context)
|
||||
local img = cairo.ImageSurface(format or cairo.Format.ARGB32, width, height)
|
||||
local cr = cairo.Context(img)
|
||||
widget.draw_to_cairo_context(wdg, cr, width, height, context)
|
||||
return img
|
||||
end
|
||||
|
||||
return widget
|
||||
|
||||
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||
|
|
|
@ -3,7 +3,6 @@ require("_common_template")(...)
|
|||
|
||||
local beautiful = require( "beautiful" )
|
||||
local wibox = require( "wibox" )
|
||||
local surface = require( "gears.surface" )
|
||||
local shape = require( "gears.shape" )
|
||||
|
||||
-- Let the test request a size and file format
|
||||
|
@ -72,7 +71,6 @@ end
|
|||
local f_w, f_h = container:fit({dpi=96}, 9999, 9999)
|
||||
|
||||
-- Save to the output file
|
||||
local img = surface.widget_to_svg(container, image_path..".svg", f_w, f_h)
|
||||
img:finish()
|
||||
wibox.widget.draw_to_svg_file(container, image_path..".svg", f_w, f_h)
|
||||
|
||||
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||
|
|
|
@ -2,7 +2,6 @@ local file_path, image_path = ...
|
|||
require("_common_template")(...)
|
||||
|
||||
local wibox = require( "wibox" )
|
||||
local surface = require( "gears.surface" )
|
||||
local color = require( "gears.color" )
|
||||
local beautiful = require( "beautiful" )
|
||||
local unpack = unpack or table.unpack -- luacheck: globals unpack (compatibility with Lua 5.1)
|
||||
|
@ -99,7 +98,6 @@ for _ = 1, 10 do
|
|||
end
|
||||
|
||||
-- Save to the output file
|
||||
local img = surface["widget_to_svg"](widget, image_path..".svg", w or 200, h or 30)
|
||||
img:finish()
|
||||
wibox.widget.draw_to_svg_file(widget, image_path..".svg", w or 200, h or 30)
|
||||
|
||||
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||
|
|
Loading…
Reference in New Issue