aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/skinelem.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/skin/skinelem.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/skin/skinelem.h')
-rw-r--r--Src/Wasabi/api/skin/skinelem.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/skinelem.h b/Src/Wasabi/api/skin/skinelem.h
new file mode 100644
index 00000000..bc4f8185
--- /dev/null
+++ b/Src/Wasabi/api/skin/skinelem.h
@@ -0,0 +1,106 @@
+#ifndef _SKINELEM_H
+#define _SKINELEM_H
+
+#include <api/xml/xmlreader.h>
+#include <tataki/region/region.h>
+
+#include <api/skin/skinitem.h>
+#include <api/xml/xmlparamsi.h>
+
+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<StringW> rootpathstack;
+
+ static PtrListQuickSorted<xml_elementtag, XmlElementTagComp> quickxmltaglist;
+};
+
+
+
+#endif