#ifndef _SKINELEM_H #define _SKINELEM_H #include #include #include #include typedef struct { const wchar_t *tagname; int id; int needclosetag; } xml_elementtag; class XmlElementTagComp { public: static int compareItem(void *p1, void *p2) { return WCSICMP(((xml_elementtag *)p1)->tagname, ((xml_elementtag *)p2)->tagname); } static int compareAttrib(const wchar_t *attrib, void *item) { return WCSICMP(attrib, ((xml_elementtag *)item)->tagname); } }; enum { XML_ELEMENTTAG_UNKNOWN = 0, XML_ELEMENTTAG_ELEMENTS, XML_ELEMENTTAG_ELEMENTALIAS, XML_ELEMENTTAG_BITMAP, XML_ELEMENTTAG_COLOR, XML_ELEMENTTAG_BITMAPFONT, XML_ELEMENTTAG_TRUETYPEFONT, XML_ELEMENTTAG_CURSOR, }; class ElementRegionServer; /*typedef enum { SKIN_BITMAP_ELEMENT, SKIN_FONT_ELEMENT, SKIN_CURSOR_ELEMENT, SKIN_COLOR_ELEMENT } SkinElementType;*/ class SkinElementsXmlReader : public XmlReaderCallbackI { public: void xmlReaderOnStartElementCallback(const wchar_t *xmltag, skin_xmlreaderparams *params); void xmlReaderOnEndElementCallback(const wchar_t *xmltag); }; class SkinElementsMgr { public: static void init(); static void deinit(); static void onBeforeLoadingSkinElements(const wchar_t *rootpath); static void onAfterLoadingSkinElements(); static void onBeforeLoadingScriptElements(const wchar_t *name, int script_id); static void onAfterLoadingScriptElements(); static void resetSkinElements(); static void unloadScriptElements(int scriptid); static void xmlReaderOnStartElementCallback( const wchar_t *xmltag, skin_xmlreaderparams *params); static void _xmlReaderOnStartElementCallback( int tagid, const wchar_t *xmltag, skin_xmlreaderparams *params); static void xmlReaderOnEndElementCallback( const wchar_t *xmltag); static const wchar_t *getSkinRootpathFromIncludePath(const wchar_t *includepath, const wchar_t *def); static int elementEqual(const wchar_t *file1, const wchar_t *rootpath1, const wchar_t *file2, const wchar_t *rootpath2); private: static SkinElementsXmlReader xmlreader; static int inelements; static int elementScriptId; static int oldid, oldinel; static StringW rootpath; static StringW original_rootpath; static StringW t_rootpath; static StringW last_includepath; static PtrList rootpathstack; static PtrListQuickSorted quickxmltaglist; }; #endif