Tombstone
GGplus
Feb 2002 – May 2002 · age 20
What it was
"GUI Graph +", an in-engine user interface toolkit built on OpenSceneGraph. Its premise was that a user interface is itself a scene graph: a screen is a transform node, a widget context is a geode carrying texture and material state, and a widget is a drawable. Visitor objects walk the tree, and the event walker carries the mouse through the inverse of each screen's transform so every widget tests hits in its own space. Widgets included nine-quad beveled frames, buttons, labels, text input, scrollbars and text areas. A small curly-brace script language described whole interfaces, with a copy: property that let one widget inherit another's font and colour. The proof was an SDL demo: a spinning textured Earth under a working calculator laid out in 384 lines of script, fully documented with Doxygen.
Wins, for the age
- At twenty, Jeff designed a declarative interface language, a recursive-descent loader and a compile step into live widgets, and the calculator was built without a line of C++. It found on its own the declarative-GUI idea Mozilla's XUL had shipped three years earlier.
- Worked out hierarchical hit testing with inverted transforms, so a nested screen could be dragged by changing one matrix.
- Solved properties arriving in any order with three readiness bits on a font, a small and lovely answer.
- Documented every class with a version tag. At twenty the primate was already writing for a reader.
What it taught
- How retained-mode UI toolkits are structured, learned by building one.
- Build the demo first, then the framework, and document as you go.
- Designing a small language and its loader, and how much one inheritance property saves.
- Build on a young API and it can leave you behind: the OpenSceneGraph classes this targeted were replaced within a year. And honest bugs: screen properties always reported failure, so no script could set one, and a missing
breakrendered every groove as a ridge.
Genealogy
Ancestors: Z3D Warp Engine SDK: the engine work that wanted a real interface layer on top. Descendants: Rage: the GUI library came along into the graduate engine. HUROX: nine-sliced frame chrome and a window manager, now in a browser. Lamancha I: a declarative scene graph with visitor passes and hit testing, again.
Epitaph
Here lies GGplus, which turned a user interface into a scene graph and a calculator into a text file, on an API that vanished before the version number reached one.