diff options
Diffstat (limited to 'src/libjin/Graphics/Font/Text.h')
-rw-r--r-- | src/libjin/Graphics/Font/Text.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/libjin/Graphics/Font/Text.h b/src/libjin/Graphics/Font/Text.h new file mode 100644 index 0000000..3faabc0 --- /dev/null +++ b/src/libjin/Graphics/Font/Text.h @@ -0,0 +1,74 @@ +#ifndef __LIBJIN_TEXT_H +#define __LIBJIN_TEXT_H + +#include <vector> + +namespace jin +{ +namespace graphics +{ + + typedef unsigned int Codepoint; + + typedef std::vector<Codepoint> Content; + + class Text; + class Decoder; + + enum Encode + { + UTF8, // utf-8 + //UTF16, // utf-16 + ASCII, // ASCII + }; + + /* raw encoded text */ + class Text + { + public: + Text(Encode encode, const void* data); + Text(Encode encode, const void* data, unsigned int length); + ~Text(); + + const Content& getContent() const; + const Content& operator*() const; + + private: + class Iterator + { + public: + Iterator(const Iterator& itor); + Iterator(const Encode& encode, const void* data, unsigned int length); + ~Iterator(); + + Codepoint get(); + Iterator begin(); + Iterator end(); + void toBegin(); + void toEnd(); + Codepoint operator *(); + /* prefix ++ */ + Iterator& operator ++(); + /* postfix ++ */ + Iterator operator ++(int); + bool operator !=(const Iterator& itor); + bool operator ==(const Iterator& itor); + + private: + void operator = (const Iterator&); + + const Encode encode; + const Decoder* decoder; + const void* p; + const void* const data; + unsigned int length; + }; + + Content content; + + }; + +} // graphics +} // jin + +#endif
\ No newline at end of file |