#ifndef LABEL_H_INCLUDED
#define LABEL_H_INCLUDED

#include "widget.h"

/// Statikus szöveg megjelenítésére szolgáló osztály

enum textAlign { align_left = 1, align_right = 2, align_center = 3 };

class label : public widget
{
private:
    static int cnt; // Objektumszámláló

protected:
    std::string Text;
    std::string dispText; // A label szövegének képernyőn megjelenő része

    void labelInit(); // Konstuktorok közös parancsai (mezők inicializása)
    void labelDraw() const; // Öröklődés miatti overloading miatt szükség volt a draw függvény törzsének kiemelésére

public:
    /// ---- Mezők ----
    Color fontColor;
    Color backgroundColor;
    int marginSide, marginTop;
    bool background; // van-e háttér
    textAlign align; // szöveg igazítása
    bool autoSize;   // igazítsa-e a cimke méretét a szöveg hosszához
    bool trimEnd;    // Ha nincs autoSize, akkor elejéről vagy végéről vágjon le karaktereket

    /// ---- Konstruktorok ----
    label(int x0, int y0, unsigned int width0, unsigned int height0);
    label(int x0, int y0, unsigned int width0, unsigned int height0, std::string txt);

    /// ---- Események ----
    virtual void onClick(int posX, int posY, char button) {}
    virtual void onMouseUp(int posX, int posY, char button) {}
    virtual void onMouseMove(int posX, int posY) {}
    virtual void onKeyPress(char keyCode) {}
    virtual void onKeyUp(char keyCode) {}
    virtual void onTick() {}

    /// --- Get/Set ----
    void setText(std::string txt);
    std::string getText() const;

    void setMargin(int mS, int mT);

    /// ---- Kirajzolás ----
    virtual void draw() const;
};

#endif // LABEL_H_INCLUDED
