From 94305e5477e173d228144d98fe692acb3befa100 Mon Sep 17 00:00:00 2001 From: jill Date: Sun, 19 Sep 2021 13:56:48 +0300 Subject: [PATCH] add tooltip class --- button.lua | 3 +-- main.lua | 6 ++++++ tooltips.lua | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 tooltips.lua diff --git a/button.lua b/button.lua index 3597f3a..e154c88 100644 --- a/button.lua +++ b/button.lua @@ -24,7 +24,6 @@ function self.createButtons() local s = {} buttonId = 0 - --[[ insertButton(s, { x = outerpadding, y = love.graphics.getHeight() - outerpadding - fontHeight * 4 - padding * 2 - 32, @@ -32,7 +31,6 @@ function self.createButtons() name = 'clipboard', displayname = 'Copy to Clipboard' }) - ]] buttons = s end @@ -71,6 +69,7 @@ function self.render() love.graphics.setColor(0, 0, 0, 1) if hovering or dragging then love.graphics.setColor(0.2, 0.2, 0.3, 1) + tooltips.show('Copy to Clipboard') end love.graphics.rectangle('fill', x, y, w, h) love.graphics.setColor(1, 1, 1, 1) diff --git a/main.lua b/main.lua index fdbe5d7..d564e73 100644 --- a/main.lua +++ b/main.lua @@ -12,6 +12,7 @@ slider = require 'slider' dropdown = require 'dropdown' graph = require 'graph' button = require 'button' +tooltips = require 'tooltips' modes = { preview = 1, @@ -52,6 +53,7 @@ function love.update(dt) slider.update(dt) dropdown.update(dt) button.update(dt) + tooltips.update(dt) end function love.draw() @@ -68,6 +70,8 @@ function love.draw() love.graphics.setColor(0.2, 0.2, 0.3, 1) love.graphics.print('Box of Eases by oatmealine', outerpadding, sh - fontHeight - outerpadding) + tooltips.prerender() + button.render() slider.render() @@ -75,6 +79,8 @@ function love.draw() dropdown.render() graph.render() + + tooltips.render() end function love.mousepressed(x, y, m) diff --git a/tooltips.lua b/tooltips.lua new file mode 100644 index 0000000..09a5d72 --- /dev/null +++ b/tooltips.lua @@ -0,0 +1,58 @@ +local self = {} + +local tooltipwidth = 0 +local tooltipx = 0 +local tooltipy = 0 + +local tooltipopen = false +local tooltiptext = '' +local tooltiptargetwidth = 0 + +local tooltipframe = false + +function self.update(dt) + local mx, my = love.mouse.getPosition() + tooltipx = mix(tooltipx, mx, dt * 14) + tooltipy = mix(tooltipy, my, dt * 14) + + tooltipwidth = mix(tooltipwidth, tooltiptargetwidth, dt * 12) +end + +function self.prerender() + tooltipframe = false +end + +function self.show(text) + tooltipframe = true + tooltiptext = text + tooltiptargetwidth = love.graphics.newText(love.graphics.getFont(), text):getWidth() +end + +function self.render() + local mx, my = love.mouse.getPosition() + if not tooltipframe then + tooltiptargetwidth = 0 + end + + if tooltipwidth > 1 then + local a = math.min((tooltipwidth - 1) / 6, 1) + + love.graphics.push() + + love.graphics.translate(mx + 16, my + 16) + + love.graphics.setColor(0.2, 0.2, 0.3, a) + love.graphics.rectangle('fill', 0, 0, tooltipwidth + 4 + margin, fontHeight + margin) + + love.graphics.setScissor(0, 0, mx + tooltipwidth + 2 + margin/2 + 16, love.graphics.getHeight()) + + love.graphics.setColor(1, 1, 1, 1) + love.graphics.print(tooltiptext, 2 + margin/2, 2 + margin/2) + + love.graphics.setScissor() + + love.graphics.pop() + end +end + +return self \ No newline at end of file