Woopsi 1.0 GUI Framework for Nintendo DS Homebrew

- Main Page
- Classes
- Files

- File List

# document.h

    00001 #ifndef _TEXT_H_
    00002 #define _TEXT_H_
    00003
    00004 #include <nds.h>
    00005 #include "fontbase.h"
    00006 #include "woopsiarray.h"
    00007 #include "woopsistring.h"
    00008
    00009 namespace WoopsiUI {
    00010
    00015         class Document {
    00016
    00017         public:
    00018
    00025                 Document(FontBase* font, const WoopsiString& text, u16 width);
    00026
    00030                 virtual ~Document() { };
    00031
    00036                 virtual void setText(const WoopsiString& text);
    00037
    00042                 virtual void setText(const char* text);
    00043
    00048                 virtual void setText(const u32 text);
    00049
    00054                 virtual void append(const WoopsiString& text);
    00055
    00061                 virtual void insert(const WoopsiString& text, const s32 index);
    00062
    00067                 virtual void remove(const s32 startIndex);
    00068
    00074                 virtual void remove(const s32 startIndex, const s32 count);
    00075
    00080                 void setLineSpacing(u8 lineSpacing);
    00081
    00087                 void setWidth(u16 width);
    00088
    00093                 void setFont(FontBase* font);
    00094
    00100                 const u8 getLineLength(const s32 lineNumber) const;
    00101
    00108                 const s16 getLineTrimmedLength(const s32 lineNumber) const;
    00109
    00115                 const s16 getLinePixelLength(const s32 lineNumber) const;
    00116
    00123                 const s16 getLineTrimmedPixelLength(const s32 lineNumber) const;
    00124
    00129                 inline const s32 getPixelHeight() const { return _textPixelHeight; };
    00130
    00135                 inline const u8 getPixelWidth() const { return _textPixelWidth; };
    00136
    00141                 inline const u8 getLineSpacing() const { return _lineSpacing; };
    00142
    00148                 inline const u8 getLineHeight() const { return _font->getHeight() + _lineSpacing; };
    00149
    00154                 inline const s32 getLineCount() const { return _linePositions.size() - 1; };
    00155
    00160                 FontBase* getFont() const;
    00161
    00166                 void stripTopLines(const s32 lines);
    00167
    00171                 void wrap();
    00172
    00179                 void wrap(s32 charIndex);
    00180
    00188                 const s32 getLineContainingCharIndex(const s32 index) const;
    00189
    00197                 const s32 getLineStartIndex(const s32 line) const { return _linePositions[line]; };
    00198
    00205                 const WoopsiString& getText() const { return _text; };
    00206
    00207         private:
    00212                 typedef struct {
    00213                         s32 index;
    00214                         u8 width;
    00215                 } LongestLine;
    00216
    00217                 FontBase* _font;
    00218                 WoopsiArray<s32> _linePositions;
    00219                 WoopsiArray<LongestLine> _longestLines;
    00220                 u8 _lineSpacing;
    00221                 s32 _textPixelHeight;
    00222                 u8 _textPixelWidth;
    00223                 u16 _width;
    00224                 WoopsiString _text;
    00225         };
    00226 }
    00227
    00228 #endif