Zappy GUI
C++ graphic client: renderer, camera, network
Loading...
Searching...
No Matches
TooltipWidget.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <string>
7#include <vector>
8
9#include "IWidget.hpp"
10#include "raylib.h"
11
22class TooltipWidget : public IWidget {
23 public:
24 enum class Anchor {
25 None,
26 TopLeft,
30 Center,
35 };
36
37 TooltipWidget() = default;
38 ~TooltipWidget() override = default;
39
40 // ── Content ────────────────────────────────────────────────────────────
42 TooltipWidget& addLine(const std::string& text, Color color = WHITE);
43
45 TooltipWidget& addColoredLine(const std::vector<std::string>& segments,
46 const std::vector<Color>& colors);
47
50
51 // ── Geometry ───────────────────────────────────────────────────────────
53 TooltipWidget& setPosition(float x, float y);
54
57 TooltipWidget& setAnchor(Anchor anchor, float margin = 10.0f);
58
60 TooltipWidget& setMinWidth(float minWidth);
61
64
65 // ── Appearance ─────────────────────────────────────────────────────────
66 enum class TextAlign { Left, Center };
68
70 TooltipWidget& setBackgroundAlpha(unsigned char alpha);
71 TooltipWidget& setBorderColor(Color color);
72 TooltipWidget& setBorderThickness(int thickness);
73 TooltipWidget& setPadding(int padding);
74
75 // ── IWidget ────────────────────────────────────────────────────────────
76 void draw(int scaledFontSize) const override;
77
79 bool handleInput() override { return false; }
80
83 Rectangle getLastBounds() const { return _lastBounds; }
84
85 private:
86 struct Line {
87 std::vector<std::string> segments;
88 std::vector<Color> colors;
89 };
90
91 std::vector<Line> _lines;
92
93 float _x = 0.0f;
94 float _y = 0.0f;
96 float _margin = 10.0f;
97 float _minWidth = 0.0f;
98 float _extraBottomPadding = 0.0f;
99
100 Color _bgColor = {20, 25, 35, 220};
101 unsigned char _bgAlpha = 220;
102 Color _borderColor = {60, 70, 90, 200};
104 int _padding = 12;
106
107 mutable Rectangle _lastBounds = {};
108
109 Vector2 _resolvePosition(float boxWidth, float boxHeight) const;
110};
Interface for GUI widgets.
Interface for GUI widgets.
Definition IWidget.hpp:11
A configurable, stateful tooltip panel.
TooltipWidget & addLine(const std::string &text, Color color=WHITE)
Adds a single-color text line.
TooltipWidget & setExtraBottomPadding(float px)
Adds extra blank space at the bottom of the box (e.g. to reserve room for a button).
TooltipWidget & setPosition(float x, float y)
Absolute position. Sets anchor to None.
TooltipWidget & clearLines()
Removes all lines.
std::vector< Line > _lines
TooltipWidget()=default
TooltipWidget & setBorderColor(Color color)
TooltipWidget & setTextAlign(TextAlign align)
bool handleInput() override
Always returns false — tooltip panels are display-only.
float _extraBottomPadding
Rectangle _lastBounds
TooltipWidget & setAnchor(Anchor anchor, float margin=10.0f)
Auto-positioning relative to screen edges.
TooltipWidget & setMinWidth(float minWidth)
Override minimum panel width (0 = fit to content).
TooltipWidget & setBackgroundColor(Color color)
TooltipWidget & setPadding(int padding)
TooltipWidget & setBackgroundAlpha(unsigned char alpha)
TextAlign _textAlign
Vector2 _resolvePosition(float boxWidth, float boxHeight) const
void draw(int scaledFontSize) const override
Draws the widget.
TooltipWidget & addColoredLine(const std::vector< std::string > &segments, const std::vector< Color > &colors)
Adds a line with multiple colored segments (inline spans).
~TooltipWidget() override=default
TooltipWidget & setBorderThickness(int thickness)
Rectangle getLastBounds() const
Returns the bounding rectangle for the last drawn frame. Useful for positioning sibling widgets (e....
unsigned char _bgAlpha
std::vector< std::string > segments
std::vector< Color > colors