OpenMW
|
00001 #ifndef MWGUI_FORMATTING_H 00002 #define MWGUI_FORMATTING_H 00003 00004 #include <MyGUI.h> 00005 00006 namespace MWGui 00007 { 00008 struct TextStyle 00009 { 00010 TextStyle() : 00011 mColour(0,0,0) 00012 , mFont("Default") 00013 , mTextSize(16) 00014 , mTextAlign(MyGUI::Align::Left | MyGUI::Align::Top) 00015 { 00016 } 00017 00018 MyGUI::Colour mColour; 00019 std::string mFont; 00020 int mTextSize; 00021 MyGUI::Align mTextAlign; 00022 }; 00023 00025 class BookTextParser 00026 { 00027 public: 00035 MyGUI::IntSize parsePage(std::string text, MyGUI::Widget* parent, const int width); 00036 00044 MyGUI::IntSize parseScroll(std::string text, MyGUI::Widget* parent, const int width); 00045 00049 std::vector<std::string> split(std::string text, const int width, const int height); 00050 00051 protected: 00052 float widthForCharGlyph(unsigned unicodeChar) const; 00053 float currentFontHeight() const; 00054 void parseSubText(std::string text); 00055 00056 void parseImage(std::string tag, bool createWidget=true); 00057 void parseDiv(std::string tag); 00058 void parseFont(std::string tag); 00059 private: 00060 MyGUI::Widget* mParent; 00061 int mWidth; // maximum width 00062 int mHeight; // current height 00063 TextStyle mTextStyle; 00064 }; 00065 } 00066 00067 #endif