#pragma once #include #include class GraphicsBitmap; class GLabel final : public GFrame { public: explicit GLabel(GWidget* parent = nullptr); GLabel(const String& text, GWidget* parent = nullptr); virtual ~GLabel() override; String text() const { return m_text; } void set_text(const String&); void set_icon(RetainPtr&&); const GraphicsBitmap* icon() const { return m_icon.ptr(); } GraphicsBitmap* icon() { return m_icon.ptr(); } TextAlignment text_alignment() const { return m_text_alignment; } void set_text_alignment(TextAlignment text_alignment) { m_text_alignment = text_alignment; } bool should_stretch_icon() const { return m_should_stretch_icon; } void set_should_stretch_icon(bool b) { m_should_stretch_icon = b; } void size_to_fit(); virtual const char* class_name() const override { return "GLabel"; } private: virtual void paint_event(GPaintEvent&) override; String m_text; RetainPtr m_icon; TextAlignment m_text_alignment { TextAlignment::Center }; bool m_should_stretch_icon { false }; };