00001 #ifndef _LABEL_H_
00002 #define _LABEL_H_
00003
00004 #include <nds.h>
00005 #include "gadget.h"
00006 #include "gadgetstyle.h"
00007 #include "woopsistring.h"
00008
00009 namespace WoopsiUI {
00010
00015 class Label : public Gadget {
00016 public:
00017
00021 enum TextAlignmentHoriz {
00022 TEXT_ALIGNMENT_HORIZ_CENTRE = 0,
00023 TEXT_ALIGNMENT_HORIZ_LEFT = 1,
00024 TEXT_ALIGNMENT_HORIZ_RIGHT = 2
00025 };
00026
00030 enum TextAlignmentVert {
00031 TEXT_ALIGNMENT_VERT_CENTRE = 0,
00032 TEXT_ALIGNMENT_VERT_TOP = 1,
00033 TEXT_ALIGNMENT_VERT_BOTTOM = 2
00034 };
00035
00048 Label(s16 x, s16 y, u16 width, u16 height, const WoopsiString& text, GadgetStyle* style = NULL);
00049
00054 virtual void setTextAlignmentHoriz(TextAlignmentHoriz alignment);
00055
00060 virtual void setTextAlignmentVert(TextAlignmentVert alignment);
00061
00066 virtual inline const WoopsiString& getText() const { return _text; };
00067
00072 virtual void setText(const WoopsiString& text);
00073
00079 virtual void appendText(const WoopsiString& text);
00080
00086 virtual void insertText(const WoopsiString& text, const u32 index);
00087
00094 virtual void getPreferredDimensions(Rect& rect) const;
00095
00100 virtual void setFont(FontBase* font);
00101
00102 protected:
00103 WoopsiString _text;
00104 s32 _textX;
00105 s32 _textY;
00106 TextAlignmentHoriz _hAlignment;
00107 TextAlignmentVert _vAlignment;
00115 virtual void drawContents(GraphicsPort* port);
00116
00123 virtual void drawBorder(GraphicsPort* port);
00124
00130 virtual void onResize(u16 width, u16 height);
00131
00136 virtual void calculateTextPositionVertical();
00137
00142 virtual void calculateTextPositionHorizontal();
00143
00147 virtual void onTextChange();
00148
00152 virtual inline ~Label() { };
00153
00157 inline Label(const Label& label) : Gadget(label) { };
00158 };
00159 }
00160
00161 #endif