#ifndef __HTMLPARSER_H__ #define __HTMLPARSER_H__ #include "cocos2d.h" #include "FairyGUIMacros.h" #include "display/TextFormat.h" NS_FGUI_BEGIN class HtmlElement; class HtmlParseOptions { public: static bool defaultLinkUnderline; static ax::Color3B defaultLinkColor; HtmlParseOptions(); bool linkUnderline; ax::Color3B linkColor; }; class HtmlParser : public ax::SAXDelegator { public: static HtmlParser defaultParser; HtmlParser(); virtual ~HtmlParser(); void parse(const std::string& source, const TextFormat& format, std::vector& elements, const HtmlParseOptions& parseOptions); void startElement(void *ctx, const char *name, const char **atts) override; void endElement(void *ctx, const char *name) override; void textHandler(void *ctx, const char *s, size_t len) override; private: ax::ValueMap parseAttrs(const char ** attrs); int attributeInt(const ax::ValueMap& vm, const std::string& key, int defaultValue); void pushTextFormat(); void popTextFormat(); void addNewLine(bool check); void finishTextBlock(); std::vector* _elements; std::vector _textFormatStack; std::vector _linkStack; HtmlElement* _currentSelect; TextFormat _format; size_t _textFormatStackTop; int _skipText; bool _ignoreWhiteSpace; std::string _textBlock; HtmlParseOptions _parseOptions; }; NS_FGUI_END #endif