If you have comments or questions concerning this source file, discuss them in the forum.
/*
Copyright (c) 2002 Nicolai Haehnle

See the license.txt for details. If that file was not included in the
source distributions, please email <prefect@rtts.org>
*/
// gui_label.h

#ifndef GUI_LABEL_H
#define GUI_LABEL_H

#include "gui_panel.h"

/*
A Label is a simple panel that holds some text or an unscaled picture
*/


class GLabel : public GPanel {
public:
    char        *m_pszText;
    HPicture    *m_pPic;
    sprite_t    *m_pSprite;

    HFont       *m_pFont;
    int         m_iAlign;       // halign / valign constants
    int         m_iYSpacing;
    int         m_iBorderX, m_iBorderY;
    int         m_iScrollX, m_iScrollY;

public:
    GLabel(GPanel *pParent, int x, int y, int w, int h, const char *szText = 0, int iAlign = 0);
    GLabel(GPanel *pParent, const char *szPic, int type, u32 colorkey,
                int x, int y, int w, int h);
    virtual ~GLabel();

    void Clear();

    void SetYSpacing(int y) { m_iYSpacing = y; }

    void SetText(const char *pszText);
    const char *GetText() { return m_pszText; }
    int GetInteger() { return m_pszText ? atoi(m_pszText) : 0; }
    int GetTextLength() { return m_pszText ? strlen(m_pszText) : 0; }
    void SetAlign(int iAlign);
    void SetBorder(int x, int y);

    void GetCharRect(int idx, LRect *rc);

    void SetPicture(const char *szPic, int type, u32 colorkey);
    void SetPicture(HPicture *pPic);
    void SetSprite(const char *szSprite);
    void SetSprite(sprite_t *sprite);

    void AdjustSize();
    void GetDrawPoint(int *x, int *y);
    virtual void Draw();

public:
    virtual void GetIconSize(int *pw, int *ph);
    virtual void DrawIcon(int x, int y, int r, int g, int b, int a);

protected:
    void doDraw(int r, int g, int b, int a);
};

#endif // GUI_LABEL_H