Added button functions.
This commit is contained in:
parent
f4338f49cc
commit
576d760ed2
|
@ -80,11 +80,41 @@ function lib.drawButton(m, x, y, w, h, text, fg, bg)
|
||||||
local y1 = y
|
local y1 = y
|
||||||
local x2 = x+w-1
|
local x2 = x+w-1
|
||||||
local y2 = y+h-1
|
local y2 = y+h-1
|
||||||
local midX = x+math.floor(w/2)-1
|
local midX = x+math.floor(w/2)
|
||||||
local midY = y+math.floor(h/2)-1
|
local midY = y+math.floor(h/2)
|
||||||
lib.fillRect(m, x, y, w, h, bg)
|
lib.fillRect(m, x, y, w, h, bg)
|
||||||
lib.drawTextCenter(m, midX, midY, text, fg)
|
lib.drawTextCenter(m, midX, midY, text, fg)
|
||||||
return {x1=x1,y1=y1,x2=x2,y2=y2}
|
return {x1=x1,y1=y1,x2=x2,y2=y2}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Determines if a button is pressed, given the event x and y coordinates and
|
||||||
|
-- the button's coordinates.
|
||||||
|
function lib.isButtonPressed(x, y, buttonCoords)
|
||||||
|
return x >= buttonCoords.x1 and x <= buttonCoords.x2 and
|
||||||
|
y >= buttonCoords.y1 and y <= buttonCoords.y2
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Creates a new button registry table, which is used for registering button
|
||||||
|
-- positions and callbacks for event handling.
|
||||||
|
function lib.createButtonRegistry()
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Adds a new button to a registry, so that `handleButtonPress` can invoke the
|
||||||
|
-- callback if the button is pressed.
|
||||||
|
function lib.registerButton(registry, buttonPos, callback)
|
||||||
|
table.insert(registry, {pos=coords,callback=callback})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Handles a recent interaction on the screen that's interpreted as a button
|
||||||
|
-- press, by looking for registered buttons whose areas include the given X Y
|
||||||
|
-- coordinates.
|
||||||
|
function lib.handleButtonPress(registry, x, y)
|
||||||
|
for _, button in pairs(registry) do
|
||||||
|
if lib.isButtonPressed(x, y, button.pos) then
|
||||||
|
button.callback()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return lib
|
return lib
|
Loading…
Reference in New Issue