| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #ifndef LABEL_H_
- #define LABEL_H_
- #include "Control.h"
- #include "Theme.h"
- namespace gameplay
- {
- /**
- * A label is the most basic type of control, capable only of rendering text within its border.
- *
- * The following properties are available for labels:
- @verbatim
- label <labelID>
- {
- style = <styleID>
- alignment = <Control::Alignment constant> // Note: 'position' will be ignored.
- position = <x, y>
- autoWidth = <bool>
- autoHeight = <bool>
- size = <width, height>
- width = <width> // Can be used in place of 'size', e.g. with 'autoHeight = true'
- height = <height> // Can be used in place of 'size', e.g. with 'autoWidth = true'
- text = <string>
- consumeEvents = <bool> // Whether the label propagates input events to the Game's input event handler. Default is true.
- }
- @endverbatim
- */
- class Label : public Control
- {
- friend class Container;
- public:
- /**
- * Create a new label control.
- *
- * @param id The control's ID.
- * @param style The control's style.
- *
- * @return The new label.
- * @script{create}
- */
- static Label* create(const char*id, Theme::Style* style);
- /**
- * Set the text for this label to display.
- *
- * @param text The text to display.
- */
- void setText(const char* text);
- /**
- * Get the text displayed by this label.
- *
- * @return The text displayed by this label.
- */
- const char* getText();
- /**
- * @see Control::getType
- */
- const char* getType() const;
- /**
- * Add a listener to be notified of specific events affecting
- * this control. Event types can be OR'ed together.
- * E.g. To listen to touch-press and touch-release events,
- * pass <code>Control::Listener::TOUCH | Control::Listener::RELEASE</code>
- * as the second parameter.
- *
- * @param listener The listener to add.
- * @param eventFlags The events to listen for.
- */
- virtual void addListener(Control::Listener* listener, int eventFlags);
- protected:
- /**
- * Constructor.
- */
- Label();
- /**
- * Destructor.
- */
- virtual ~Label();
- /**
- * Create a label with a given style and properties.
- *
- * @param style The style to apply to this label.
- * @param properties The properties to set on this label.
- *
- * @return The new label.
- */
- static Label* create(Theme::Style* style, Properties* properties);
- /**
- * Initialize this label.
- */
- virtual void initialize(Theme::Style* style, Properties* properties);
- /**
- * Called when a label's properties change. Updates this label's internal rendering
- * properties, such as its text viewport.
- *
- * @param container This label's parent container.
- * @param offset The scroll offset of this label's parent container.
- */
- void update(const Control* container, const Vector2& offset);
- /**
- * Draw this label's text.
- *
- * @param clip The clipping rectangle of this label's parent container.
- */
- void drawText(const Rectangle& clip);
- /**
- * The text displayed by this label.
- */
- std::string _text;
- /**
- * The font being used to display the label.
- */
- Font* _font;
-
- /**
- * The text color being used to display the label.
- */
- Vector4 _textColor;
- /**
- * The position and size of this control's text area, before clipping. Used for text alignment.
- */
- Rectangle _textBounds;
- private:
- /**
- * Constructor.
- */
- Label(const Label& copy);
- };
- }
- #endif
|