Dashboard/README.md

78 lines
3.8 KiB
Markdown

Dashboard
=========
Dashboard is a modular immediate rendering and UI toolkit that is intended to
develop modular graphics applications in .NET. The library comes in layers,
with no tight coupling between each stage. It makes Dashboard an excellent
library to embed into your OpenGL, Vulkan or DirectX applications as a UI or
HUD rendering toolkit.
### Scope
Generally speaking, this library is not going to replace a professional UI
toolkit for most .NET programmers. The 1st and 3rd party frameworks available
are already excellent for most people. As such, the library does not follow
any UI development discipline, like MVVM. This is supposed to be easy to
integrate, customize and deliver. You are free to pick and choose which
components you like, hate, include and exclude.
### Availability
This library is currently under development and is not intended for end users
until further notice. Things are subject to change without notice, or
deprecation. You have been warned. And we do not talk about the original
QUIK/Dashboard code base. It's a mess.
Dashboard.Drawing - The Immediate Rendering System
----------------------------------------------------
The Dashboard immediate rendering system provides a framework for issuing
rendering commands independtly of the graphics backend present. In order
to draw anything, you must issue enqueue drawing commands into a queue.
This queue is later consumed by the graphics backend in order to reach a
final image.
The main benefit of the graphics queue is that you can write your graphics calls
once and expect the same results, at least approximately. As an advanced
example, you could write a DrawQueue to PostScript transpiler, which can be
consumed by a tool like ghostscript to conver it into a PDF file. And with the
same DrawQueue contents, you can also render the same thing with OpenGL, or your
custom software renderer.
Each draw queue is going to contain the following main components:
- The image bounding box.
- The list of extensions required to draw the image.
- The list of resources referenced by the draw queue.
- The list of commands that have been used in the draw queue.
- The stream of bytes that make up the draw queue.
This creates an extremely de/serializable command queue that can be generated
and interpreted with ease.
### Coordinate Systems and Measures.
The coordinate system is assumed to be left handed and with a top-left origin.
The length unit is device independent points (pt). Without accounting for high
pixel density displays, 1pt is 96/72 pixels (~1.3). The angle unit is degrees.
These set of conventions set herein follow the conventions set by traditional
computer aided graphics design. Following these conventions is entirely
optional, if and when you see fit.
### Extensions
A drawing extension defines a set of features and commands that need to be
understood to generate the image correctly. Extensions are simple strings that
are valid ISO C99 identifiers. This means that they must only contain
alphanumeric characters, or an underscore, and must not begin with a number.
The prefix `DB_` is reserved for the Dashboard library itself. Please refrain
from making an extension with this prefix. We recommend naming your extensions
with an underscore case name. Also please consider including a vendor prefix,
such as our own `DB_`. If you do not wish to do so, please consider your vendor
prefix as `X_`.
## Special Thanks
I would like to thank the following people, in no particular order, for their
contributions in this endevour:
- Callum McGing for BlurgText, the text rendering library.
- "BoyBayKiller", for providing valuable feedback for the libraries that spun off of Dashboard.
- "Froil" for coining the name Dashboard, fitting with the suite of ReFuel libraries, after the inevitable issues that the name QUIK has caused.