00001 #ifndef _LABEL_H_
00002 #define _LABEL_H_
00003
00004 #include <nds.h>
00005 #include "textwriter.h"
00006 #include "gadget.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
00045 Label(s16 x, s16 y, u16 width, u16 height, const char* text, FontBase* font = NULL);
00046
00056 Label(s16 x, s16 y, u16 width, u16 height, const char letter, FontBase* font = NULL);
00057
00063 virtual void draw(Rect clipRect);
00064
00069 virtual void setTextAlignmentHoriz(TextAlignmentHoriz alignment);
00070
00075 virtual void setTextAlignmentVert(TextAlignmentVert alignment);
00076
00081 virtual inline const char* getText() const { return _text->getCharArray(); };
00082
00087 virtual void setText(const char* text);
00088
00093 virtual void setText(const char text);
00094
00099 virtual void appendText(const char* text);
00100
00105 virtual void appendText(const char text);
00106
00112 virtual void insertText(const char* text, const u32 index);
00113
00119 virtual void insertText(const char text, const u32 index);
00120
00127 virtual bool resize(u16 width, u16 height);
00128
00135 virtual void getPreferredDimensions(Rect& rect) const;
00136
00137 protected:
00138 WoopsiString* _text;
00139 u16 _textX;
00140 u16 _textY;
00141 u8 _padding;
00142 TextAlignmentHoriz _hAlignment;
00143 TextAlignmentVert _vAlignment;
00148 virtual void calculateTextPosition();
00149
00153 virtual inline ~Label() {
00154 delete _text;
00155 _text = NULL;
00156 };
00157
00161 inline Label(const Label& label) : Gadget(label) { };
00162 };
00163 }
00164
00165 #endif