make button backgrounds optional

This commit is contained in:
Kartik K. Agaram 2023-12-18 21:33:59 -08:00
parent 445ce2d220
commit 0c4730dffc
3 changed files with 13 additions and 12 deletions

View File

@ -9,7 +9,9 @@
-- draw button and queue up event handlers
function button(State, name, params)
if params.bg then
love.graphics.setColor(params.bg.r, params.bg.g, params.bg.b, params.bg.a)
end
love.graphics.rectangle('fill', params.x,params.y, params.w,params.h, 5,5)
if params.icon then params.icon(params) end
table.insert(State.button_handlers, params)

View File

@ -277,22 +277,21 @@ The following facilities help set these things up:
* `button` creates a single button. The syntax is:
```
button(state, name, {x=..., y=..., w=..., h=..., color={r,g,b},
button(state, name, {x=..., y=..., w=..., h=..., bg={r,g,b},
icon = function({x=..., y=..., w=..., h=...}) ... end,
onpress1 = ...
})
```
Call this either directly or indirectly from `App.draw`. It will paint a
rectangle to the screen with top-left at (x,y), dimensions w×h pixels in the
specified `color`. It will then overlay any drawing instructions within
`icon` atop it. The `icon` callback will receive a table containing the same
x/y/w/h.
Call this either directly or indirectly from `App.draw`. It will assign a
rectangle with the given dimensions and trigger the provided (zero-arg)
`onpress1` callback when the primary mouse button is clicked within.
It will also optionally paint the rectangle with the specified background
color `bg` and a foreground described by the `icon` callback (which will
receive the same dimensions).
The rectangle also registers within `state` the `onpress1` callback (without
any arguments) when mouse button 1 is clicked on it. This way you can see
everything about a button in one place. Create as many buttons as you like
within a single shared `state`.
This way you can see everything about a button in one place. Create as many
buttons as you like within a single shared `state`.
* `mouse_press_consumed_by_any_button(state, x,y, mouse_button)`

View File

@ -34,7 +34,7 @@ function Text.draw(State, line_index, y, startpos, hide_cursor, show_line_number
local s,e,filename = unpack(link_offsets)
local lo, hi = Text.clip_wikiword_with_screen_line(line, line_cache, i, s, e)
if lo then
button(State, 'link', {x=State.left+lo, y=y, w=hi-lo, h=State.line_height, bg={r=1,g=1,b=1},
button(State, 'link', {x=State.left+lo, y=y, w=hi-lo, h=State.line_height,
icon = icon.hyperlink_decoration,
onpress1 = function()
if file_exists(filename) then