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

View File

@ -266,22 +266,21 @@ The following facilities help set these things up:
* `button` creates a single button. The syntax is: * `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, icon = function({x=..., y=..., w=..., h=...}) ... end,
onpress1 = ... onpress1 = ...
}) })
``` ```
Call this either directly or indirectly from `App.draw`. It will paint a Call this either directly or indirectly from `App.draw`. It will assign a
rectangle to the screen with top-left at (x,y), dimensions w×h pixels in the rectangle with the given dimensions and trigger the provided (zero-arg)
specified `color`. It will then overlay any drawing instructions within `onpress1` callback when the primary mouse button is clicked within.
`icon` atop it. The `icon` callback will receive a table containing the same It will also optionally paint the rectangle with the specified background
x/y/w/h. 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 This way you can see everything about a button in one place. Create as many
any arguments) when mouse button 1 is clicked on it. This way you can see buttons as you like within a single shared `state`.
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)` * `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 s,e,filename = unpack(link_offsets)
local lo, hi = Text.clip_wikiword_with_screen_line(line, line_cache, i, s, e) local lo, hi = Text.clip_wikiword_with_screen_line(line, line_cache, i, s, e)
if lo then 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, icon = icon.hyperlink_decoration,
onpress1 = function() onpress1 = function()
if file_exists(filename) then if file_exists(filename) then