OpenMW
apps/openmw/mwgui/formatting.hpp
Go to the documentation of this file.
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