#ifndef TOOL_TIP_HPP_
#define TOOL_TIP_HPP_

#include <string>
#include <vector>
#include <GraphicsContext/GraphicsContext.hpp>

/**
 * @brief Class for displaying tooltips.
 */
class ToolTip
{
private:
    struct Line
    {
        glm::vec4 color;
        std::string text;

        Line(glm::vec4 color, std::string text);
    };

    std::vector<Line> m_lines;

public:
    /**
     * @brief Add a line of text to the tooltip.
     * 
     * @param color The color of this line.
     * @param text The text.
     */
    void addLine(glm::vec4 color, std::string text);

    /**
     * @brief Add a line of text to the tooltip.
     * 
     * This adds it with the default 'washed out' color.
     * 
     * @param text The text.
     */
    void addLine(std::string text);
    
    /**
     * @brief Draw this tooltip at the specified position.
     * 
     * Call this in GUI mode.
     * 
     * @param context The graphics context.
     * @param x X base.
     * @param y Y base.
     */
    void draw(GraphicsContext &context, int x, int y);
};

#endif