Merge lines.love

This commit is contained in:
Kartik K. Agaram 2023-12-18 21:55:14 -08:00
commit 4b6a8aaba6
3 changed files with 14 additions and 13 deletions

View File

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

View File

@ -266,22 +266,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