├── .gitignore ├── images ├── demo.gif └── logo.png ├── DearImXML ├── src │ ├── XMLDynamicBind.h │ ├── ImGuiEnum.h │ ├── XMLEventHandler.h │ ├── XMLTree.h │ ├── main.cpp │ ├── XMLRenderer.h │ └── XMLReader.h └── Assets │ └── test.xml ├── tools └── flags_mapper.py ├── includes ├── ImGUI │ ├── imgui_stdlib.h │ ├── imgui_stdlib.cpp │ ├── imgui_impl_opengl3.h │ ├── imgui_impl_glfw.h │ ├── imconfig.h │ ├── imstb_rectpack.h │ └── imgui_impl_opengl3_loader.h ├── KHR │ └── khrplatform.h └── GL │ └── gl3w.c ├── CMakeLists.txt ├── README.md └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | libs/ 3 | .vscode/ 4 | 5 | *.raw 6 | -------------------------------------------------------------------------------- /images/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProtectedVariable/DearImXML/HEAD/images/demo.gif -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProtectedVariable/DearImXML/HEAD/images/logo.png -------------------------------------------------------------------------------- /DearImXML/src/XMLDynamicBind.h: -------------------------------------------------------------------------------- 1 | #ifndef DEARIMXML_XMLDYNAMICBIND_H 2 | #define DEARIMXML_XMLDYNAMICBIND_H 3 | 4 | namespace ImXML { 5 | 6 | enum XMLDynamicBindType { 7 | Float, Int, Chars, 8 | }; 9 | 10 | struct XMLDynamicBind 11 | { 12 | void* ptr; 13 | unsigned int size; 14 | XMLDynamicBindType type; 15 | }; 16 | 17 | 18 | } 19 | 20 | #endif /* DEARIMXML_XMLDYNAMICBIND_H */ 21 | -------------------------------------------------------------------------------- /DearImXML/src/ImGuiEnum.h: -------------------------------------------------------------------------------- 1 | #ifndef IMGUIENUM_H 2 | #define IMGUIENUM_H 3 | 4 | namespace ImXML { 5 | enum ImGuiEnum { 6 | BEGIN, PLACEHOLDER, BUTTON, TEXT, SAMELINE, MENUBAR, MENU, MENUITEM, SLIDERFLOAT, INPUTTEXT, 7 | TREENODE, TREE, COLUMNS, COLUMN, GROUP, COLORPICKER3, COLORPICKER4, COLOREDIT3, COLOREDIT4, 8 | POPUPCONTEXTWINDOW, SEPARATOR, 9 | }; 10 | } 11 | 12 | #endif /* IMGUIENUM_H */ 13 | -------------------------------------------------------------------------------- /tools/flags_mapper.py: -------------------------------------------------------------------------------- 1 | import fileinput 2 | import io 3 | 4 | if __name__ == "__main__": 5 | f = open("enum.raw") 6 | for line in f.readlines(): 7 | enum_entry = line.split("=")[0].strip() 8 | if not (enum_entry.startswith("//") or len(enum_entry) == 0 or enum_entry.startswith("{") or enum_entry.startswith("}")): 9 | if enum_entry.startswith("enum "): 10 | print("//"+enum_entry) 11 | else: 12 | print('{ "'+enum_entry+'", '+enum_entry+' },') 13 | -------------------------------------------------------------------------------- /DearImXML/src/XMLEventHandler.h: -------------------------------------------------------------------------------- 1 | #ifndef DEARIMXML_XMLEVENTHANDLER_H 2 | #define DEARIMXML_XMLEVENTHANDLER_H 3 | 4 | #include 5 | 6 | namespace ImXML { 7 | class XMLEventHandler 8 | { 9 | public: 10 | XMLEventHandler(/* args */); 11 | ~XMLEventHandler(); 12 | 13 | virtual void onNodeBegin(XMLNode& node) = 0; 14 | virtual void onNodeEnd(XMLNode& node) = 0; 15 | virtual void onEvent(XMLNode& node) = 0; 16 | 17 | }; 18 | 19 | XMLEventHandler::XMLEventHandler(/* args */) 20 | { 21 | } 22 | 23 | XMLEventHandler::~XMLEventHandler() 24 | { 25 | } 26 | 27 | } 28 | 29 | #endif /* DEARIMXML_XMLEVENTHANDLER_H */ 30 | -------------------------------------------------------------------------------- /DearImXML/src/XMLTree.h: -------------------------------------------------------------------------------- 1 | #ifndef DEARIMXML_XMLTREE_H 2 | #define DEARIMXML_XMLTREE_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | namespace ImXML { 10 | 11 | struct XMLNode 12 | { 13 | ImGuiEnum type; 14 | std::unordered_map args; 15 | int flags = 0; 16 | std::vector children; 17 | }; 18 | 19 | 20 | class XMLTree 21 | { 22 | private: 23 | XMLNode root; 24 | public: 25 | XMLTree(XMLNode root); 26 | ~XMLTree(); 27 | 28 | XMLNode& getRoot() { 29 | return root; 30 | } 31 | }; 32 | 33 | XMLTree::XMLTree(XMLNode root) : root(root) 34 | { 35 | } 36 | 37 | XMLTree::~XMLTree() 38 | { 39 | } 40 | 41 | } 42 | 43 | #endif /* DEARIMXML_XMLTREE_H */ 44 | -------------------------------------------------------------------------------- /DearImXML/Assets/test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |