I made my first ever freestanding GUI constructor thing which I call FreeGUI, which I am making for my circuit simulator for my CPU, and possibly will use it in my OS
For now, it lets me just edit the binary tree of the GUI (the GUI is a binary tree basically), but there is some cool things I can do, like rotate binary tree nodes and their children as well, select which depth to edit of the binary tree, change the scaling of nodes, etc.
At the end I demonstrate the editing of the interpolation values (scaling).
The way it works: Every node in the GUI stores 1. the axis to split the node (horizontal or vertical) 2. the interpolation value along that axis to place the split. I can edit this interpolation value to change the scaling of children nodes, or change the axis to rotate the nodes, and easily create nodes.
Every node also stores a pointer to whatever attributes it has.