--DOC_GEN_IMAGE --DOC_HIDE
local parent = ... --DOC_HIDE
local wibox = require("wibox") --DOC_HIDE
local gears = { --DOC_HIDE
matrix = require("gears.matrix"), --DOC_HIDE
shape = require("gears.shape"), --DOC_HIDE
} --DOC_HIDE
local data = { --DOC_HIDE
-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, --DOC_HIDE
} --DOC_HIDE
-- For converting normally "horizontal" shapes into vertical ones
local function transpose(shape)
local swap_coords = gears.matrix.create(0, 1, 1, 0, 0, 0)
return function(cr, width, height, ...)
gears.shape.transform(shape):multiply(swap_coords) (cr, height, width, ...)
end
end
local shapes = {
gears.shape.rectangle,
-- DOC_HIDE rectangular_tag illustrates the mode differences the best
transpose(gears.shape.rectangular_tag),
gears.shape.squircle,
-- DOC_HIDE behaves badly: gears.shape.star,
-- DOC_HIDE looks without params like rounded_bar: gears.shape.rounded_rect,
gears.shape.rounded_bar,
gears.shape.arrow,
transpose(gears.shape.hexagon),
transpose(gears.shape.powerline),
gears.shape.isosceles_triangle,
gears.shape.cross,
gears.shape.octogon,
-- DOC_HIDE centers itself in the bar: gears.shape.circle,
gears.shape.losange,
}
-- When asked to draw the shape with negative height,
-- draw its counterpart with positive height and mirror it.
local function mirror_negative(shape)
local mirrored_shape = gears.shape.transform(shape):scale(1, -1)
return function(cr, width, height, ...)
if height < 0 then
mirrored_shape(cr, width, -height, ...)
else
shape(cr, width, height, ...)
end
end
end
-- When asked to draw the shape with negative height,
-- draw its counterpart with positive height and shift it down.
local function flip_negative(shape)
return function(cr, width, height, ...)
if height < 0 then
gears.shape.transform(shape):translate(0, height) (cr, width, -height, ...)
else
shape(cr, width, height, ...)
end
end
end
for _, shape in ipairs(shapes) do
local w_normal = --DOC_HIDE
wibox.widget {
step_width = 9,
step_spacing = 1,
step_shape = shape,
scale = true, --DOC_HIDE
border_width = 2, --DOC_HIDE
color = "#00ff00", --DOC_HIDE
background_color = "#000000", --DOC_HIDE
margins = 5, --DOC_HIDE
forced_height = 104, --DOC_HIDE
widget = wibox.widget.graph,
}
--DOC_NEWLINE
local w_mirror = --DOC_HIDE
wibox.widget {
step_width = 9,
step_spacing = 1,
step_shape = mirror_negative(shape),
scale = true, --DOC_HIDE
border_width = 2, --DOC_HIDE
color = "#00ff00", --DOC_HIDE
background_color = "#000000", --DOC_HIDE
margins = 5, --DOC_HIDE
forced_height = 104, --DOC_HIDE
widget = wibox.widget.graph,
}
--DOC_NEWLINE
local w_flip = --DOC_HIDE
wibox.widget {
step_width = 9,
step_spacing = 1,
step_shape = flip_negative(shape),
scale = true, --DOC_HIDE
border_width = 2, --DOC_HIDE
color = "#00ff00", --DOC_HIDE
background_color = "#000000", --DOC_HIDE
margins = 5, --DOC_HIDE
forced_height = 104, --DOC_HIDE
widget = wibox.widget.graph,
}
--DOC_NEWLINE
for _, v in ipairs(data) do --DOC_HIDE
w_normal:add_value(v) --DOC_HIDE
w_mirror:add_value(v) --DOC_HIDE
w_flip:add_value(v) --DOC_HIDE
end --DOC_HIDE
parent:add(wibox.layout {--DOC_HIDE
{--DOC_HIDE
{--DOC_HIDE
markup = "shape",--DOC_HIDE
widget = wibox.widget.textbox,--DOC_HIDE
},--DOC_HIDE
w_normal,--DOC_HIDE
layout = wibox.layout.fixed.vertical,--DOC_HIDE
},--DOC_HIDE
{--DOC_HIDE
{--DOC_HIDE
markup = "mirror(shape)",--DOC_HIDE
widget = wibox.widget.textbox,--DOC_HIDE
},--DOC_HIDE
w_mirror,--DOC_HIDE
layout = wibox.layout.fixed.vertical,--DOC_HIDE
},--DOC_HIDE
{--DOC_HIDE
{--DOC_HIDE
markup = "flip(shape)",--DOC_HIDE
widget = wibox.widget.textbox,--DOC_HIDE
},--DOC_HIDE
w_flip,--DOC_HIDE
layout = wibox.layout.fixed.vertical,--DOC_HIDE
},--DOC_HIDE
forced_width = 342, --DOC_HIDE
spacing = 5, --DOC_HIDE
layout = wibox.layout.flex.horizontal --DOC_HIDE
}) --DOC_HIDE
end
--DOC_HIDE vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80