Development

A detailed changelog can be found here: changelog.txt

A roadmap 'working draft' can be found here: roadmap.txt

Structure Synth Architecture

Structure Synth is written in C++ using Qt 4.3 and OpenGL

The main application consists of a GUI with a small embedded editor with syntax highlighting and an integrated 3D viewer (using the Mini OpenGL Engine in the Syntopia Core).

diagram

This Eisenstein Engine takes the input script and converts it into a model: this includes preprocessing (stripping comments and including other files), parsing (a simple recursive descent parser), rule name resolving and rule model construction.

The builder executes the rules defined in the model and calls the renderer as needed. The rendering uses an abstract interface, which should make it easy to extend with new renderers (e.g. PovRay output)

The rule model is an object-oriented representation of the rule set: i.e. classes for rules (primitive, custom, and ambiguous rules), transformations, and transformation loops.

Syntopia Core

diagram

Syntopia Core set of reusable building blocks.

Qt provides a lot of nice functionality (GUI Widgets, nice strings with regular expressions, XML, HTTP, …), but a few other standard classes are almost always needed when building new applications.

This small application framework consists of:

GLEngine
a small 3D engine (with mouse zoom/translation/rotation)
Logging
a mini framework for simple logging/timing/user feedback
Exceptions
a set of standard exceptions (not much here… )
Math
Various mathematical utilities
Vector3
3-component vector manipulation (dot product, cross product, …)
Matrix4
4×4 matrix manipulation (we use homogenous coordinates in the 3D engine) (rotations, multiplication, …)
Random
cross-platform random numbers + normal distributed random numbers.
Version
utils for mainting a version number and checking for updates on the net.

Possible extensions could be modules like Serialization, Persistence and a Help Browser.

Links

SourceForge.net Logo