Compare commits

..

No commits in common. "07a1731419872dde74d1e1208c761210037289be" and "5b3dcdad9ce52e21c8b1c08ffda8ccca1ab5b60c" have entirely different histories.

3 changed files with 4 additions and 17 deletions

View file

@ -6,7 +6,6 @@ return function(core, text, ...)
local opt, x,y,w,h = core.getOptionsAndSize(...) local opt, x,y,w,h = core.getOptionsAndSize(...)
opt.id = opt.id or text opt.id = opt.id or text
opt.font = opt.font or love.graphics.getFont() opt.font = opt.font or love.graphics.getFont()
opt.color = opt.color or core.theme.color
w = w or opt.font:getWidth(text) + 4 w = w or opt.font:getWidth(text) + 4
h = h or opt.font:getHeight() + 4 h = h or opt.font:getHeight() + 4

View file

@ -6,7 +6,6 @@ return function(core, text, ...)
local opt, x,y,w,h = core.getOptionsAndSize(...) local opt, x,y,w,h = core.getOptionsAndSize(...)
opt.id = opt.id or text opt.id = opt.id or text
opt.font = opt.font or love.graphics.getFont() opt.font = opt.font or love.graphics.getFont()
opt.color = opt.color or core.theme.color
w = w or opt.font:getWidth(text) + 4 w = w or opt.font:getWidth(text) + 4
h = h or opt.font:getHeight() + 4 h = h or opt.font:getHeight() + 4

View file

@ -18,25 +18,14 @@ function theme.getColorForState(opt)
return (opt.color and opt.color[opt.state]) or theme.color[s] return (opt.color and opt.color[opt.state]) or theme.color[s]
end end
function theme.drawBox(x,y,w,h, colors, cornerRadius, outline, scale) function theme.drawBox(x,y,w,h, colors, cornerRadius, outline)
colors = colors or theme.getColorForState(opt) colors = colors or theme.getColorForState(opt)
cornerRadius = (cornerRadius or theme.cornerRadius) cornerRadius = cornerRadius or theme.cornerRadius
w = math.max(cornerRadius/2, w) w = math.max(cornerRadius/2, w)
if h < cornerRadius/2 then if h < cornerRadius/2 then
y,h = y - (cornerRadius - h), cornerRadius/2 y,h = y - (cornerRadius - h), cornerRadius/2
end end
-- by default, scale will operate about the center of the box. meaning it grows
-- out/in in all directions
if scale and scale ~= 1.0 then
local baseW, baseH = w, h
w = w * scale
h = h * scale
x = x - (w - baseW) / 2
y = y - (h - baseH) / 2
cornerRadius = cornerRadius * scale
end
love.graphics.setColor(colors.bg) love.graphics.setColor(colors.bg)
love.graphics.rectangle('fill', x,y, w,h, cornerRadius) love.graphics.rectangle('fill', x,y, w,h, cornerRadius)
if outline ~= nil then if outline ~= nil then
@ -67,13 +56,13 @@ end
function theme.Button(text, opt, x,y,w,h) function theme.Button(text, opt, x,y,w,h)
local c = theme.getColorForState(opt) local c = theme.getColorForState(opt)
local scale = opt.scale or 1.0
theme.drawBox(x,y,w,h, c, opt.cornerRadius, opt.outline, scale) theme.drawBox(x,y,w,h, c, opt.cornerRadius, opt.outline)
love.graphics.setColor(c.fg) love.graphics.setColor(c.fg)
love.graphics.setFont(opt.font) love.graphics.setFont(opt.font)
-- ensure text remains aligned regardless of scale -- ensure text remains aligned regardless of scale
local scale = opt.scale or 1.0
local align = opt.align or "center" local align = opt.align or "center"
local textX = x local textX = x
local textY = y local textY = y