mirror of https://github.com/axmolengine/axmol.git
49 lines
1.7 KiB
C
49 lines
1.7 KiB
C
|
#ifndef __UBBPARSER_H__
|
||
|
#define __UBBPARSER_H__
|
||
|
|
||
|
#include "cocos2d.h"
|
||
|
#include "FairyGUIMacros.h"
|
||
|
|
||
|
NS_FGUI_BEGIN
|
||
|
|
||
|
#define UBB_TAG_HANDLER(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, ##__VA_ARGS__)
|
||
|
|
||
|
class UBBParser
|
||
|
{
|
||
|
public:
|
||
|
UBBParser();
|
||
|
virtual ~UBBParser();
|
||
|
|
||
|
static UBBParser* getInstance();
|
||
|
|
||
|
std::string parse(const char *text, bool remove = false);
|
||
|
|
||
|
int defaultImgWidth;
|
||
|
int defaultImgHeight;
|
||
|
std::string lastColor;
|
||
|
std::string lastFontSize;
|
||
|
|
||
|
protected:
|
||
|
virtual void onTag_URL(const std::string& tagName, bool end, const std::string& attr, std::string& replacement);
|
||
|
virtual void onTag_IMG(const std::string& tagName, bool end, const std::string& attr, std::string& replacement);
|
||
|
virtual void onTag_Simple(const std::string& tagName, bool end, const std::string& attr, std::string& replacement);
|
||
|
virtual void onTag_COLOR(const std::string& tagName, bool end, const std::string& attr, std::string& replacement);
|
||
|
virtual void onTag_FONT(const std::string& tagName, bool end, const std::string& attr, std::string& replacement);
|
||
|
virtual void onTag_SIZE(const std::string& tagName, bool end, const std::string& attr, std::string& replacement);
|
||
|
virtual void onTag_ALIGN(const std::string& tagName, bool end, const std::string& attr, std::string& replacement);
|
||
|
|
||
|
void getTagText(std::string& out, bool remove);
|
||
|
|
||
|
typedef std::function<void(const std::string& tagName, bool end, const std::string& attr, std::string& replacement)> TagHandler;
|
||
|
std::unordered_map<std::string, TagHandler> _handlers;
|
||
|
|
||
|
const char* _pString;
|
||
|
ssize_t _readPos;
|
||
|
|
||
|
private:
|
||
|
static UBBParser* _inst;
|
||
|
};
|
||
|
|
||
|
NS_FGUI_END
|
||
|
|
||
|
#endif
|