Mike:
* Break the library into loosely coupled pieces that can be
used individually or aggregated by other projects to build
things that we haven't even thought of
* Geometric primitives should be their own library/package
* Vector graphics (paths, line caps, etc...) should be their
own library/package
* Raster graphics should be their own library/package
* Window management should be its own library/package
* Font's are just data. Don't couple them to the rendering
engine. (e.g Convert them to a vector/raster representation
and then let those libraries handle the rest.
* The rendering engine should be its own library/package,
that should be easily replaced with whatever is suitable for
the given platform.
An independent color system module could be useful, even in
Phobos.
Part of the Geometric primitives (2D/3D vectors, rotation
matrices, the most commonly useful geometry algorithms and
formulas) could go in a Phobos module. And the graphics library
could import and use this standard module.
Something like the simpledisplay module (that the graphics
library will not import) could be useful in Phobos:
https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff
Bye,
bearophile