libc3: remerged
[simavr] / examples / shared / libc3 / doc / libc3-flowchart.dot
1 digraph g {
2 //      label = "libc3\n - lightweight scene graph library - Data Structure Hierarchy";
3         label = <
4         <font point-size="18">libc3</font> - 
5         <font color="blue">http://github.com/buserror-uk/libc3</font>
6          - Lightweight C Scene Graph Library - Data Structure Flowchart
7         >;
8         node [fontsize=24,shape=box];
9         // concentrate=true;
10
11         c3context [shape=none, label=<
12                 <table border="1" cellborder="0" cellpadding="4">
13                 <tr><td>c3context</td></tr>
14                 <tr><td color="gray" border="1" align="center"><font point-size="10">
15                 Keeps track of a root c3object,<br/>
16                 possible multiple views, and also stores <br/>
17                 texture pixels and shader programs
18                 </font></td></tr>
19                 </table>
20         >];
21         c3context_view [shape=none, label=<
22                 <table border="1" cellborder="0" cellpadding="4">
23                 <tr><td>c3context_view</td></tr>
24                 <tr><td color="gray" border="1" align="center"><font point-size="10">
25                 Keep tracks of a scene point of view.<br/>
26                 used for the eye(s), and the light(s)
27                 </font></td></tr>
28                 </table>
29         >];
30         c3camera [shape=none, label=<
31                 <table border="1" cellborder="0" cellpadding="4">
32                 <tr><td>c3camera</td></tr>
33                 <tr><td color="gray" border="1" align="center"><font point-size="10">
34                 Keeps an 'eye' point, a 'lookat'<br/>
35                 point the related vectors, and a<br/>
36                 transform matrix
37                 </font></td></tr>
38                 </table>
39         >];
40         c3object [shape=none, label=<
41                 <table border="1" cellborder="0" cellpadding="4">
42                 <tr><td>c3object</td></tr>
43                 <tr><td color="gray" border="1" align="center"><font point-size="10">
44                 Anchor point that holds optional<br/>
45                 transform matrices, other sub-c3objects<br/>
46                 and c3geometries<br/>
47                 </font></td></tr>
48                 </table>
49         >];
50         c3transform [shape=none, label=<
51                 <table border="1" cellborder="0" cellpadding="4">
52                 <tr><td>c3transform</td></tr>
53                 <tr><td color="gray" border="1" align="center"><font point-size="10">
54                 Holds a matrix to be applies to<br/>
55                 a c3object and it's descendants
56                 </font></td></tr>
57                 </table>
58         >];
59         c3cairo [shape=none, label=<
60                 <table border="1" cellborder="0" cellpadding="4" color="gray">
61                 <tr><td>c3cairo</td></tr>
62                 <tr><td color="gray" border="1" align="center"><font point-size="10">
63                 Maps a Cairo image surface<br/>
64                 to a c3texture - Optional.
65                 </font></td></tr>
66                 </table>
67         >];
68         c3texture [shape=none, label=<
69                 <table border="1" cellborder="0" cellpadding="4">
70                 <tr><td>c3texture</td></tr>
71                 <tr><td color="gray" border="1" align="center"><font point-size="10">
72                 Provides a geometry to render a<br/>
73                 c3pixel (and anonymous texture)
74                 </font></td></tr>
75                 </table>
76         >];
77         c3geometry [shape=none, label=<
78                 <table border="1" cellborder="0" cellpadding="4">
79                 <tr><td>c3geometry</td></tr>
80                 <tr><td color="gray" border="1" align="center"><font point-size="10">
81                 Contains the real drawing data, vertices,<br/>
82                 tex coordinates, normals and a material.
83                 </font></td></tr>
84                 </table>
85         >];
86         c3pixels [shape=none, label=<
87                 <table border="1" cellborder="0" cellpadding="4">
88                 <tr><td>c3pixels</td></tr>
89                 <tr><td color="gray" border="1" align="center"><font point-size="10">
90                 Basic description of a pixmap<br/>
91                 to be loaded as a texture.
92                 </font></td></tr>
93                 </table>
94         >];
95         c3program [shape=none, label=<
96                 <table border="1" cellborder="0" cellpadding="4">
97                 <tr><td>c3program</td></tr>
98                 <tr><td color="gray" border="1" align="center"><font point-size="10">
99                 Holds a vertex/fragment/... program,<br/>
100                 also parses them for uniform/parameters
101                 </font></td></tr>
102                 </table>
103         >];
104         c3color [shape=none, label=<
105                 <table border="1" cellborder="0" cellpadding="4">
106                 <tr><td>c3color</td></tr>
107                 <tr><td color="gray" border="1" align="center"><font point-size="10">
108                 Base RGBA float color
109                 </font></td></tr>
110                 </table>
111         >];
112         c3vertex [shape=none, label=<
113                 <table border="1" cellborder="0" cellpadding="4">
114                 <tr><td>c3vertex</td></tr>
115                 <tr><td color="gray" border="1" align="center"><font point-size="10">
116                 Array of X,Y,Z coordinates,<br/>
117                 with associated buffer object
118                 </font></td></tr>
119                 </table>
120         >];
121         c3normal [shape=none, label=<
122                 <table border="1" cellborder="0" cellpadding="4">
123                 <tr><td>c3normal</td></tr>
124                 <tr><td color="gray" border="1" align="center"><font point-size="10">
125                 Array of normals with<br/>
126                 associated buffer object
127                 </font></td></tr>
128                 </table>
129         >];
130         c3tex [shape=none, label=<
131                 <table border="1" cellborder="0" cellpadding="4">
132                 <tr><td>c3tex</td></tr>
133                 <tr><td color="gray" border="1" align="center"><font point-size="10">
134                 Array of texture coordinates<br/>
135                 with associated buffer object
136                 </font></td></tr>
137                 </table>
138         >];
139         c3indice [shape=none, label=<
140                 <table border="1" cellborder="0" cellpadding="4">
141                 <tr><td>c3indice</td></tr>
142                 <tr><td color="gray" border="1" align="center"><font point-size="10">
143                 Array of indices into<br/>
144                 the other arrays
145                 </font></td></tr>
146                 </table>
147         >];
148         c3mat [shape=none, label=<
149                 <table border="1" cellborder="0" cellpadding="4">
150                 <tr><td>c3mat</td></tr>
151                 <tr><td color="gray" border="1" align="center"><font point-size="10">
152                 Geometry material related data<br/>
153                 ie color, texture, program.
154                 </font></td></tr>
155                 </table>
156         >];
157         c3stl [shape=none, label=<
158                 <table border="1" cellborder="0" cellpadding="4">
159                 <tr><td>c3stl</td></tr>
160                 <tr><td color="gray" border="1" align="center"><font point-size="10">
161                 Loads ASCII STL model files<br/>
162                 and generates corresponding c3object.
163                 </font></td></tr>
164                 </table>
165         >];
166         c3lines [shape=none, label=<
167                 <table border="1" cellborder="0" cellpadding="4">
168                 <tr><td>c3lines</td></tr>
169                 <tr><td color="gray" border="1" align="center"><font point-size="10">
170                 Converts segments into a textured<br/>
171                 triangle mesh for wide, <br/>
172                 antialiasied lines
173                 </font></td></tr>
174                 </table>
175         >];
176         c3sphere [shape=none, label=<
177                 <table border="1" cellborder="0" cellpadding="4">
178                 <tr><td>c3sphere</td></tr>
179                 <tr><td color="gray" border="1" align="center"><font point-size="10">
180                 Creares geometry for a sphere<br/>
181                 with texture coordinaes&amp;normals
182                 </font></td></tr>
183                 </table>
184         >];
185         c3context -> c3context_view;
186         c3context -> c3object [style=bold];
187         c3context -> c3pixels [style=dashed];
188         c3context -> c3program [style=dashed];
189         
190         c3context_view -> c3camera;
191         
192         { rank = same;  c3object; c3stl; }
193         { rank = same;  c3geometry; c3lines; c3sphere; }
194         c3stl -> c3object [ weight=0.1, color="gray" ];
195         c3lines -> c3geometry [ weight=0.1, color="gray" ];
196         c3sphere -> c3geometry [ weight=0.1, color="gray" ];
197         
198         c3texture -> c3geometry;
199         { node [style=dashed]; c3cairo; }
200         c3cairo -> c3texture;
201
202         c3object -> c3geometry [style=bold];
203         c3object -> c3texture;
204         c3object -> c3cairo;
205         c3object -> c3transform;
206         
207         c3object -> c3object;
208         
209         c3geometry -> c3vertex;
210         c3geometry -> c3normal  ;
211         c3geometry -> c3tex;
212         c3geometry -> c3mat;
213         c3geometry -> c3indice;
214         
215         c3mat -> c3pixels;
216         c3mat -> c3program;
217         c3mat -> c3color;
218         
219         c3texture -> c3pixels;
220 };