├── .gitignore
├── LICENCE.txt
├── README.md
├── doc
├── doxyfile
└── theme
│ ├── DoxygenLayout.xml
│ ├── bootstrap_integration.js
│ ├── customdoxygen.css
│ ├── footer.html
│ └── header.html
├── screenshot
└── Screenshot1.png
└── src
├── Canvas.cpp
├── Canvas.h
├── Color.hpp
├── ColorConverter.h
├── Image.cpp
├── Image.h
├── NanoCanvas.h
├── Paint.hpp
├── Text.cpp
└── Text.h
/.gitignore:
--------------------------------------------------------------------------------
1 | # doc/html
2 | doc/html
3 |
4 | # Compiled Object files
5 | *.slo
6 | *.lo
7 | *.o
8 | *.obj
9 |
10 | # Precompiled Headers
11 | *.gch
12 | *.pch
13 |
14 | # Compiled Dynamic libraries
15 | *.so
16 | *.dylib
17 | *.dll
18 |
19 | # Fortran module files
20 | *.mod
21 |
22 | # Compiled Static libraries
23 | *.lai
24 | *.la
25 | *.a
26 | *.lib
27 |
28 | # Executables
29 | *.exe
30 | *.out
31 | *.app
32 |
--------------------------------------------------------------------------------
/LICENCE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Geequlim
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | NanoCanvas {#mainpage}
2 | ---
3 |
4 | NanoCanvas is the HTML5 Canvas liked antialiased vector graphics rendering library writing in C++11 based on [Mikko Mononen's NanoVG](https://github.com/memononen/nanovg) .
5 |
6 | ## Feartures
7 |
8 | * Easy to use , with HTML5 Canvas liked API
9 |
10 | ```c++
11 |
12 | canvas.clearColor(Colors::DarkOliveGreen); //Clear canvas with color
13 |
14 | // Draw a rounded rectangle
15 | canvas.beginPath()
16 | .roundedRect(50,50,100,100,10)
17 | .fillStyle(Colors::Salmon)
18 | .fill();
19 |
20 | // Draw styled text
21 | TextStyle textStyle;
22 | textStyle.size = 36.0f;
23 | textStyle.color = Colors::White;
24 | textStyle.face = font.face;
25 | canvas.fillStyle(textStyle)
26 | .beginPath()
27 | .fillText("Hello Canvas",30,190);
28 | ```
29 |
30 | 
31 |
32 | * Hardware accelerated so it's fast
33 |
34 | Thanks for backend ports of NanoVG , now we can use NanoCanvas with OpenGL, OpenGL ES, [BGFX](https://github.com/bkaradzic/bgfx) and [D3D](https://github.com/cmaughan/nanovg).
35 |
36 |
37 | ## Integrate to your projects
38 |
39 | 1. Add NanoVG code to your projects and add the folder where your nanovg.h file located to your include directory. Be sure `#included "nanovg.h"` works on your projects.
40 |
41 | 2. Add NanoCanvas code files under `src` folder in to your projects.
42 |
43 | 3. Create Canvas with NanoVG context
44 | For example,using OpenGL 3.x as the backend renderer.
45 | ```c++
46 | NVGcontext * nvgCtx = nvgCreateGL3(NVG_ANTIALIAS | NVG_DEBUG |NVG_STENCIL_STROKES);
47 | Canvas canvas(nvgCtx,wndWidth ,wndHeight);
48 | if(canvas.valid()) {
49 | // Everything is OK
50 | }
51 | ```
52 |
53 | 4 . Draw awesome graphics
54 | Draw graphics between `begineFrame()` and `endFrame` method.
55 |
56 | ```c++
57 | // main render loop
58 | while ( appRunning )
59 | {
60 | canvas.begineFrame(wndWidth,wndHeight);
61 | // Draw awesome graphics here
62 | canvas.endFrame();
63 | }
64 | ```
65 |
66 | ### Why not takes NanoVG itself ?
67 |
68 | You can use the backend renderer as your like. You have to do that by yourself. :)
69 |
70 | ---
71 |
72 | ## For more informations
73 |
74 | ### [Documemtations](https://geequlim.github.io/NanoCanvas/doc/html/index.html) is avaliable.
75 |
--------------------------------------------------------------------------------
/doc/theme/DoxygenLayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
--------------------------------------------------------------------------------
/doc/theme/bootstrap_integration.js:
--------------------------------------------------------------------------------
1 | $( document ).ready(function()
2 | {
3 | $("div.headertitle").addClass("page-header");
4 | $("div.title").addClass("h1");
5 |
6 | $(".dynheader").addClass("alert alert-info"); // expand button for class diagrams
7 | $(".dyncontent").addClass("panel panel-default");
8 |
9 | $(".fragment").addClass("well"); // panel containing blocks of code
10 |
11 | $(".memitem").addClass("panel panel-info"); // panel containing a member function
12 | $(".memitem").find(".deprecated").closest(".memitem").addClass("panel-danger"); // change the style of deprecated functions
13 | $(".deprecated").find(".el")
14 | .addClass("label label-danger")
15 | .css("margin-bottom", "5px");
16 | $(".memproto").addClass("panel-heading"); // panel containing a member function prototype
17 | $(".memdoc").addClass("panel-body"); // panel containing a member function description
18 |
19 | $("table.params").addClass("table");
20 | $("table.directory").addClass("table table-striped");
21 | $("table.fieldtable").addClass("table") // tables where elements like enumerations are shown
22 |
23 | $(".contents").addClass("panel panel-default");
24 |
25 | $("table.memberdecls").addClass("table"); // table listing all member functions
26 | $(".memberdecls").find(".memSeparator").remove();
27 |
28 | $("span.mlabel").addClass("label label-info"); // labels containing abstract/virtual info
29 |
30 | // navigation bar
31 | $('li > a[href="index.html"] > span').before(" ");
32 | $('li > a[href="modules.html"] > span').before(" ");
33 | $('li > a[href="namespaces.html"] > span').before(" ");
34 | $('li > a[href="annotated.html"] > span').before(" ");
35 | $('li > a[href="classes.html"] > span').before(" ");
36 | $('li > a[href="inherits.html"] > span').before(" ");
37 | $('li > a[href="functions.html"] > span').before(" ");
38 | $('li > a[href="functions_func.html"] > span').before(" ");
39 | $('li > a[href="functions_vars.html"] > span').before(" ");
40 | $('li > a[href="functions_enum.html"] > span').before(" ");
41 | $('li > a[href="functions_eval.html"] > span').before(" ");
42 | $("div.tabs").addClass("nav nav-tabs");
43 | $("div.tabs2").addClass("nav nav-tabs");
44 | $("ul.tablist").addClass("nav nav-pills nav-justified");
45 | $("ul.tablist").css("margin-top", "0.5em");
46 | $("ul.tablist").css("margin-bottom", "0.5em");
47 | $("ul.tablist").css("margin-left", "auto");
48 | $("ul.tablist").css("margin-right", "auto");
49 | $("ul.tablist").css("max-width", "600px");
50 | $("li.current").addClass("active");
51 | $("#nav-path > ul").addClass("breadcrumb");
52 | $("#nav-path > ul").css("margin-left", "auto");
53 | $("#nav-path > ul").css("margin-right", "auto");
54 | $("#nav-path > ul").css("max-width", "980px");
55 | $(".navpath").removeClass("navpath");
56 | $("li.navelem").removeClass("navelem");
57 | $("ul.tablist").removeClass("tablist");
58 | $("div.tabs").removeClass("tabs");
59 | $("div.tabs2").removeClass("tabs2");
60 |
61 | // search box
62 | $("#MSearchBox").css("position", "relative");
63 | $(".right").css("position", "relative");
64 | $(".right").css("right", "0px");
65 | $(".right").css("left", "141px");
66 | var results = $("#MSearchResultsWindow");
67 | $("#MSearchBox").parent().append(results)
68 | results
69 | .css("position", "absolute")
70 | .css("z-index", "500")
71 | .css("top", "initial")
72 | .css("margin-top", "8px");
73 |
74 | // detail level
75 | $("div.levels").css("margin", "0.5em");
76 | $("div.levels > span").addClass("btn btn-default btn-xs");
77 | $("div.levels > span").css("margin-right", "0.25em");
78 |
79 | });
80 |
--------------------------------------------------------------------------------
/doc/theme/customdoxygen.css:
--------------------------------------------------------------------------------
1 | /* The standard CSS for doxygen 1.8.7 */
2 |
3 | body, table, div, p, dl {
4 | font: 400 14px/22px "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
5 | }
6 |
7 | /* @group Heading Levels */
8 |
9 | h1.groupheader {
10 | font-size: 200%;
11 | }
12 |
13 | .title {
14 | margin: 10px 2px;
15 | }
16 |
17 | h2.groupheader {
18 | font-size: 200%;
19 | font-weight: normal;
20 | margin-top: 1.75em;
21 | padding-top: 8px;
22 | padding-bottom: 4px;
23 | width: 100%;
24 | }
25 |
26 | h3.groupheader {
27 | font-size: 150%;
28 | }
29 |
30 | h1, h2, h3, h4, h5, h6 {
31 | margin-right: 15px;
32 | }
33 |
34 | h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
35 | text-shadow: 0 0 15px cyan;
36 | }
37 |
38 | dt {
39 | font-weight: bold;
40 | }
41 |
42 | div.multicol {
43 | -moz-column-gap: 1em;
44 | -webkit-column-gap: 1em;
45 | -moz-column-count: 3;
46 | -webkit-column-count: 3;
47 | }
48 |
49 | p.startli, p.startdd {
50 | margin-top: 2px;
51 | }
52 |
53 | p.starttd {
54 | margin-top: 0px;
55 | }
56 |
57 | p.endli {
58 | margin-bottom: 0px;
59 | }
60 |
61 | p.enddd {
62 | margin-bottom: 4px;
63 | }
64 |
65 | p.endtd {
66 | margin-bottom: 2px;
67 | }
68 |
69 | /* @end */
70 |
71 | caption {
72 | font-weight: bold;
73 | }
74 |
75 | span.legend {
76 | font-size: 70%;
77 | text-align: center;
78 | }
79 |
80 | h3.version {
81 | font-size: 90%;
82 | text-align: center;
83 | }
84 |
85 | div.qindex, div.navtab{
86 | background-color: #EBEFF6;
87 | border: 1px solid #A3B4D7;
88 | text-align: center;
89 | }
90 |
91 | div.qindex, div.navpath {
92 | width: 100%;
93 | line-height: 140%;
94 | }
95 |
96 | div.navtab {
97 | margin-right: 15px;
98 | }
99 |
100 | /* @group Link Styling */
101 |
102 | a {
103 | color: #3D578C;
104 | font-weight: normal;
105 | text-decoration: none;
106 | }
107 |
108 | .contents a:visited {
109 | color: #4665A2;
110 | }
111 |
112 | a:hover {
113 | text-decoration: underline;
114 | }
115 |
116 | a.qindex {
117 | font-weight: bold;
118 | }
119 |
120 | a.qindexHL {
121 | font-weight: bold;
122 | background-color: #9CAFD4;
123 | color: #ffffff;
124 | border: 1px double #869DCA;
125 | }
126 |
127 | .contents a.qindexHL:visited {
128 | color: #ffffff;
129 | }
130 |
131 | a.el {
132 | font-weight: bold;
133 | }
134 |
135 | a.elRef {
136 | }
137 |
138 | a.code, a.code:visited, a.line, a.line:visited {
139 | color: #4665A2;
140 | }
141 |
142 | a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
143 | color: #4665A2;
144 | }
145 |
146 | /* @end */
147 |
148 | dl.el {
149 | margin-left: -1cm;
150 | }
151 |
152 | pre.fragment {
153 | word-wrap: break-word;
154 | font-size: 9pt;
155 | line-height: 125%;
156 | font-family: Consolas, monospace, fixed;
157 | font-size: 105%;
158 | }
159 |
160 | div.line {
161 | font-family: monospace, fixed;
162 | font-size: 13px;
163 | min-height: 13px;
164 | line-height: 1.0;
165 | text-wrap: unrestricted;
166 | white-space: -moz-pre-wrap; /* Moz */
167 | white-space: -pre-wrap; /* Opera 4-6 */
168 | white-space: -o-pre-wrap; /* Opera 7 */
169 | white-space: pre-wrap; /* CSS3 */
170 | word-wrap: break-word; /* IE 5.5+ */
171 | text-indent: -53px;
172 | padding-left: 53px;
173 | padding-bottom: 0px;
174 | margin: 0px;
175 | }
176 |
177 | div.line.glow {
178 | background-color: cyan;
179 | }
180 |
181 |
182 | span.lineno {
183 | padding-right: 4px;
184 | text-align: right;
185 | border-right: 2px solid #0F0;
186 | background-color: #E8E8E8;
187 | white-space: pre;
188 | }
189 | span.lineno a {
190 | background-color: #D8D8D8;
191 | }
192 |
193 | span.lineno a:hover {
194 | background-color: #C8C8C8;
195 | }
196 |
197 | div.ah {
198 | background-color: black;
199 | font-weight: bold;
200 | color: #ffffff;
201 | margin-bottom: 3px;
202 | margin-top: 3px;
203 | padding: 0.2em;
204 | border: solid thin #333;
205 | border-radius: 0.5em;
206 | -webkit-border-radius: .5em;
207 | -moz-border-radius: .5em;
208 | }
209 |
210 | div.groupHeader {
211 | margin-left: 16px;
212 | margin-top: 12px;
213 | font-weight: bold;
214 | }
215 |
216 | div.groupText {
217 | margin-left: 16px;
218 | font-style: italic;
219 | }
220 |
221 | body {
222 | background-color: white;
223 | color: black;
224 | margin: 0;
225 | }
226 |
227 | div.contents {
228 | margin-top: 10px;
229 | margin-left: auto;
230 | margin-right: auto;
231 | max-width: 980px;
232 | padding: 15px;
233 | }
234 |
235 | td.indexkey {
236 | background-color: #EBEFF6;
237 | font-weight: bold;
238 | border: 1px solid #C4CFE5;
239 | margin: 2px 0px 2px 0;
240 | padding: 2px 10px;
241 | white-space: nowrap;
242 | vertical-align: top;
243 | }
244 |
245 | td.indexvalue {
246 | background-color: #EBEFF6;
247 | border: 1px solid #C4CFE5;
248 | padding: 2px 10px;
249 | margin: 2px 0px;
250 | }
251 |
252 | p.formulaDsp {
253 | text-align: center;
254 | }
255 |
256 | img.formulaDsp {
257 |
258 | }
259 |
260 | img.formulaInl {
261 | vertical-align: middle;
262 | }
263 |
264 | div.center {
265 | text-align: center;
266 | margin-top: 0px;
267 | margin-bottom: 0px;
268 | padding: 0px;
269 | }
270 |
271 | div.center img {
272 | border: 0px;
273 | }
274 |
275 | address.footer {
276 | text-align: right;
277 | padding-right: 12px;
278 | }
279 |
280 | img.footer {
281 | border: 0px;
282 | vertical-align: middle;
283 | }
284 |
285 | /* @group Code Colorization */
286 |
287 | span.keyword {
288 | color: #008000
289 | }
290 |
291 | span.keywordtype {
292 | color: #604020
293 | }
294 |
295 | span.keywordflow {
296 | color: #e08000
297 | }
298 |
299 | span.comment {
300 | color: #800000
301 | }
302 |
303 | span.preprocessor {
304 | color: #806020
305 | }
306 |
307 | span.stringliteral {
308 | color: #002080
309 | }
310 |
311 | span.charliteral {
312 | color: #008080
313 | }
314 |
315 | span.vhdldigit {
316 | color: #ff00ff
317 | }
318 |
319 | span.vhdlchar {
320 | color: #000000
321 | }
322 |
323 | span.vhdlkeyword {
324 | color: #700070
325 | }
326 |
327 | span.vhdllogic {
328 | color: #ff0000
329 | }
330 |
331 | blockquote {
332 | background-color: #F7F8FB;
333 | border-left: 2px solid #9CAFD4;
334 | margin: 0 24px 0 4px;
335 | padding: 0 12px 0 16px;
336 | }
337 |
338 | /* @end */
339 |
340 |
341 | .search {
342 | color: #003399;
343 | font-weight: bold;
344 | }
345 |
346 | form.search {
347 | margin-bottom: 0px;
348 | margin-top: 0px;
349 | }
350 |
351 | input.search {
352 | font-size: 75%;
353 | color: #000080;
354 | font-weight: normal;
355 | background-color: #e8eef2;
356 | }
357 |
358 |
359 | td.tiny {
360 | font-size: 75%;
361 | }
362 |
363 | .dirtab {
364 | padding: 4px;
365 | border-collapse: collapse;
366 | border: 1px solid #A3B4D7;
367 | }
368 |
369 | th.dirtab {
370 | background: #EBEFF6;
371 | font-weight: bold;
372 | }
373 |
374 | hr {
375 | height: 0px;
376 | border: none;
377 | border-top: 1px solid #4A6AAA;
378 | }
379 |
380 | hr.footer {
381 | height: 1px;
382 | }
383 |
384 | /* @group Member Descriptions */
385 |
386 | table.memberdecls {
387 | border-spacing: 0px;
388 | padding: 0px;
389 | }
390 |
391 | .mdescLeft, .mdescRight,
392 | .memItemLeft, .memItemRight,
393 | .memTemplItemLeft, .memTemplItemRight, .memTemplParams {
394 | border: none;
395 | margin: 4px;
396 | padding: 1px 0 0 8px;
397 | }
398 |
399 | .mdescLeft, .mdescRight {
400 | padding: 0px 8px 4px 8px;
401 | color: #555;
402 | }
403 |
404 | .memItemLeft, .memTemplItemLeft {
405 | white-space: nowrap;
406 | }
407 |
408 | .memItemRight {
409 | width: 100%;
410 | }
411 |
412 | .memTemplParams {
413 | color: #4665A2;
414 | white-space: nowrap;
415 | font-size: 80%;
416 | }
417 |
418 | /* @end */
419 |
420 | /* @group Member Details */
421 |
422 | /* Styles for detailed member documentation */
423 |
424 | .memtemplate {
425 | font-size: 80%;
426 | color: #4665A2;
427 | font-weight: normal;
428 | margin-left: 9px;
429 | }
430 |
431 | .memnav {
432 | background-color: #EBEFF6;
433 | border: 1px solid #A3B4D7;
434 | text-align: center;
435 | margin: 2px;
436 | margin-right: 15px;
437 | padding: 2px;
438 | }
439 |
440 | .mempage {
441 | width: 100%;
442 | }
443 |
444 | .memitem {
445 | padding: 0;
446 | margin-bottom: 10px;
447 | margin-right: 5px;
448 | display: table !important;
449 | width: 100%;
450 | }
451 |
452 | .memname {
453 | font-weight: bold;
454 | margin-left: 6px;
455 | }
456 |
457 | .memname td {
458 | vertical-align: bottom;
459 | }
460 |
461 | .memproto, dl.reflist dt {
462 | padding: 6px 0px 6px 0px;
463 | font-weight: bold;
464 | }
465 |
466 | .memdoc, dl.reflist dd {
467 | padding: 6px 10px 2px 10px;
468 | }
469 |
470 | dl.reflist dt {
471 | padding: 5px;
472 | }
473 |
474 | dl.reflist dd {
475 | margin: 0px 0px 10px 0px;
476 | padding: 5px;
477 | }
478 |
479 | .paramkey {
480 | text-align: right;
481 | }
482 |
483 | .paramtype {
484 | color: #207ec3;
485 | white-space: nowrap;
486 | }
487 |
488 | .paramname {
489 | color: #20b086;
490 | white-space: nowrap;
491 | }
492 | .paramname em {
493 | font-style: normal;
494 | }
495 | .paramname code {
496 | line-height: 14px;
497 | }
498 |
499 | .params, .retval, .exception, .tparams {
500 | margin-left: 0px;
501 | padding-left: 0px;
502 | }
503 |
504 | .params .paramname, .retval .paramname {
505 | font-weight: bold;
506 | vertical-align: top;
507 | }
508 |
509 | .params .paramtype {
510 | font-style: italic;
511 | vertical-align: top;
512 | }
513 |
514 | .params .paramdir {
515 | font-family: Consolas,courier,monospace;
516 | vertical-align: top;
517 | }
518 |
519 | table.mlabels {
520 | border-spacing: 0px;
521 | }
522 |
523 | td.mlabels-left {
524 | width: 100%;
525 | padding: 0px;
526 | }
527 |
528 | td.mlabels-right {
529 | vertical-align: bottom;
530 | padding: 0px;
531 | white-space: nowrap;
532 | }
533 |
534 | span.mlabels {
535 | margin-left: 8px;
536 | }
537 |
538 | span.mlabel {
539 | margin-right: 4px;
540 | padding: 2px 3px;
541 | border-radius: 3px;
542 | font-size: 7pt;
543 | white-space: nowrap;
544 | vertical-align: middle;
545 | }
546 |
547 |
548 |
549 | /* @end */
550 |
551 | /* these are for tree view inside a (index) page */
552 |
553 | div.directory {
554 | margin: 10px 0px;
555 | border-top: 1px solid #9CAFD4;
556 | border-bottom: 1px solid #9CAFD4;
557 | width: 100%;
558 | }
559 |
560 | .directory table {
561 | border-collapse:collapse;
562 | }
563 |
564 | .directory td {
565 | margin: 0px;
566 | padding: 0px;
567 | vertical-align: top;
568 | }
569 |
570 | .directory td.entry {
571 | white-space: nowrap;
572 | padding-right: 6px;
573 | padding-top: 3px;
574 | }
575 |
576 | .directory td.entry a {
577 | outline:none;
578 | }
579 |
580 | .directory td.entry a img {
581 | border: none;
582 | }
583 |
584 | .directory td.desc {
585 | width: 100%;
586 | padding-left: 6px;
587 | padding-right: 6px;
588 | padding-top: 3px;
589 | border-left: 1px solid rgba(0,0,0,0.05);
590 | }
591 |
592 | .directory tr.even {
593 | padding-left: 6px;
594 | background-color: #F7F8FB;
595 | }
596 |
597 | .directory img {
598 | vertical-align: -30%;
599 | }
600 |
601 | .directory .levels {
602 | white-space: nowrap;
603 | width: 100%;
604 | text-align: right;
605 | font-size: 9pt;
606 | }
607 |
608 | .directory .levels span {
609 | cursor: pointer;
610 | padding-left: 2px;
611 | padding-right: 2px;
612 | color: #3D578C;
613 | }
614 |
615 | .arrow {
616 | color: #9CAFD4;
617 | -webkit-user-select: none;
618 | -khtml-user-select: none;
619 | -moz-user-select: none;
620 | -ms-user-select: none;
621 | user-select: none;
622 | cursor: pointer;
623 | font-size: 80%;
624 | display: inline-block;
625 | width: 16px;
626 | height: 22px;
627 | }
628 |
629 | .icon {
630 | font-weight: bold;
631 | font-size: 12px;
632 | height: 14px;
633 | width: 16px;
634 | display: inline-block;
635 | background-color: #728DC1;
636 | color: white;
637 | text-align: center;
638 | border-radius: 4px;
639 | margin-left: 2px;
640 | margin-right: 2px;
641 | }
642 |
643 | .icona {
644 | width: 24px;
645 | height: 22px;
646 | display: inline-block;
647 | }
648 |
649 | .iconfopen {
650 | width: 24px;
651 | height: 18px;
652 | margin-bottom: 4px;
653 | background-image:url('ftv2folderopen.png');
654 | background-position: 0px -4px;
655 | background-repeat: repeat-y;
656 | vertical-align:top;
657 | display: inline-block;
658 | }
659 |
660 | .iconfclosed {
661 | width: 24px;
662 | height: 18px;
663 | margin-bottom: 4px;
664 | background-image:url('ftv2folderclosed.png');
665 | background-position: 0px -4px;
666 | background-repeat: repeat-y;
667 | vertical-align:top;
668 | display: inline-block;
669 | }
670 |
671 | .icondoc {
672 | width: 24px;
673 | height: 18px;
674 | margin-bottom: 4px;
675 | background-image:url('ftv2doc.png');
676 | background-position: 0px -4px;
677 | background-repeat: repeat-y;
678 | vertical-align:top;
679 | display: inline-block;
680 | }
681 |
682 | table.directory {
683 | font: 400 14px Roboto,sans-serif;
684 | }
685 |
686 | /* @end */
687 |
688 | div.dynheader {
689 | margin-top: 8px;
690 | }
691 |
692 | address {
693 | font-style: normal;
694 | color: #2A3D61;
695 | }
696 |
697 | table.doxtable {
698 | border-collapse:collapse;
699 | margin-top: 4px;
700 | margin-bottom: 4px;
701 | }
702 |
703 | table.doxtable td, table.doxtable th {
704 | border: 1px solid #2D4068;
705 | padding: 3px 7px 2px;
706 | }
707 |
708 | table.doxtable th {
709 | background-color: #374F7F;
710 | color: #FFFFFF;
711 | font-size: 110%;
712 | padding-bottom: 4px;
713 | padding-top: 5px;
714 | }
715 |
716 | .fieldtable td, .fieldtable th {
717 | padding: 3px 7px 2px;
718 | }
719 |
720 | .fieldtable td.fieldtype, .fieldtable td.fieldname {
721 | white-space: nowrap;
722 | }
723 |
724 | .fieldtable td.fieldname {
725 | padding-top: 3px;
726 | }
727 |
728 | .fieldtable td.fielddoc p:first-child {
729 | margin-top: 0px;
730 | }
731 |
732 | .fieldtable td.fielddoc p:last-child {
733 | margin-bottom: 2px;
734 | }
735 |
736 | .fieldtable th {
737 | font-size: 90%;
738 | padding-bottom: 4px;
739 | padding-top: 5px;
740 | text-align:left;
741 | }
742 |
743 | .tabsearch {
744 | top: 0px;
745 | left: 10px;
746 | height: 42px;
747 | background-image: url('tab_b.png');
748 | z-index: 101;
749 | overflow: hidden;
750 | font-size: 13px;
751 | }
752 |
753 | .navpath ul
754 | {
755 | font-size: 11px;
756 | background-image:url('tab_b.png');
757 | background-repeat:repeat-x;
758 | background-position: 0 -5px;
759 | height:30px;
760 | line-height:30px;
761 | color:#8AA0CC;
762 | border:solid 1px #C2CDE4;
763 | overflow:hidden;
764 | margin:0px;
765 | padding:0px;
766 | }
767 |
768 | .navpath li
769 | {
770 | list-style-type:none;
771 | float:left;
772 | padding-left:10px;
773 | padding-right:15px;
774 | background-image:url('bc_s.png');
775 | background-repeat:no-repeat;
776 | background-position:right;
777 | color:#364D7C;
778 | }
779 |
780 | .navpath li.navelem a
781 | {
782 | height:32px;
783 | display:block;
784 | text-decoration: none;
785 | outline: none;
786 | color: #283A5D;
787 | text-decoration: none;
788 | }
789 |
790 | .navpath li.navelem a:hover
791 | {
792 | color:#6884BD;
793 | }
794 |
795 | .navpath li.footer
796 | {
797 | list-style-type:none;
798 | float:right;
799 | padding-left:10px;
800 | padding-right:15px;
801 | background-image:none;
802 | background-repeat:no-repeat;
803 | background-position:right;
804 | color:#364D7C;
805 | font-size: 8pt;
806 | }
807 |
808 |
809 | div.summary
810 | {
811 | visibility: hidden
812 | }
813 |
814 | div.ingroups
815 | {
816 | font-size: 8pt;
817 | width: 50%;
818 | text-align: left;
819 | }
820 |
821 | div.ingroups a
822 | {
823 | white-space: nowrap;
824 | }
825 |
826 | div.header
827 | {
828 | margin: 0px;
829 | max-width: 980px;
830 | margin-left: auto;
831 | margin-right: auto;
832 | }
833 |
834 | div.headertitle
835 | {
836 | padding: 5px 5px 5px 10px;
837 | max-width: 980px;
838 | margin-left: auto;
839 | margin-right: auto;
840 | }
841 |
842 | dl
843 | {
844 | padding: 0 0 0 10px;
845 | }
846 |
847 | /* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
848 | dl.section
849 | {
850 | margin-left: 0px;
851 | padding-left: 0px;
852 | }
853 |
854 | dl.note
855 | {
856 | margin-left:-7px;
857 | padding-left: 3px;
858 | border-left:4px solid;
859 | border-color: #7be554;
860 | }
861 |
862 | dl.warning, dl.attention
863 | {
864 | margin-left:-7px;
865 | padding-left: 3px;
866 | border-left:4px solid;
867 | border-color: #f2596c;
868 | }
869 |
870 | dl.pre, dl.post, dl.invariant
871 | {
872 | margin-left:-7px;
873 | padding-left: 3px;
874 | border-left:4px solid;
875 | border-color: #00D000;
876 | }
877 |
878 | dl.deprecated
879 | {
880 | margin-left:-7px;
881 | padding-left: 3px;
882 | }
883 |
884 | dl.todo
885 | {
886 | margin-left:-7px;
887 | padding-left: 3px;
888 | border-left:4px solid;
889 | border-color: #00C0E0;
890 | }
891 |
892 | dl.test
893 | {
894 | margin-left:-7px;
895 | padding-left: 3px;
896 | border-left:4px solid;
897 | border-color: #3030E0;
898 | }
899 |
900 | dl.bug
901 | {
902 | margin-left:-7px;
903 | padding-left: 3px;
904 | border-left:4px solid;
905 | border-color: #C08050;
906 | }
907 |
908 | dl.section dd {
909 | margin-bottom: 6px;
910 | }
911 |
912 |
913 | #projectlogo
914 | {
915 | text-align: center;
916 | vertical-align: bottom;
917 | border-collapse: separate;
918 | }
919 |
920 | #projectlogo img
921 | {
922 | border: 0px none;
923 | }
924 |
925 | #projectname
926 | {
927 | font: 300% Tahoma, Arial,sans-serif;
928 | margin: 0px;
929 | padding: 2px 0px;
930 | }
931 |
932 | #projectbrief
933 | {
934 | font: 120% Tahoma, Arial,sans-serif;
935 | margin: 0px;
936 | padding: 0px;
937 | }
938 |
939 | #projectnumber
940 | {
941 | font: 50% Tahoma, Arial,sans-serif;
942 | margin: 0px;
943 | padding: 0px;
944 | }
945 |
946 | #titlearea
947 | {
948 | padding: 0px;
949 | margin: 0px;
950 | width: 100%;
951 | border-bottom: 1px solid #5373B4;
952 | }
953 |
954 | .image
955 | {
956 | text-align: center;
957 | }
958 |
959 | .dotgraph
960 | {
961 | text-align: center;
962 | }
963 |
964 | .mscgraph
965 | {
966 | text-align: center;
967 | }
968 |
969 | .diagraph
970 | {
971 | text-align: center;
972 | }
973 |
974 | .caption
975 | {
976 | font-weight: bold;
977 | }
978 |
979 | div.zoom
980 | {
981 | border: 1px solid #90A5CE;
982 | }
983 |
984 | dl.citelist {
985 | margin-bottom:50px;
986 | }
987 |
988 | dl.citelist dt {
989 | color:#334975;
990 | float:left;
991 | font-weight:bold;
992 | margin-right:10px;
993 | padding:5px;
994 | }
995 |
996 | dl.citelist dd {
997 | margin:2px 0;
998 | padding:5px 0;
999 | }
1000 |
1001 | div.toc {
1002 | padding: 14px 25px;
1003 | background-color: #F4F6FA;
1004 | border: 1px solid #D8DFEE;
1005 | border-radius: 7px 7px 7px 7px;
1006 | float: right;
1007 | height: auto;
1008 | margin: 0 20px 10px 10px;
1009 | width: 200px;
1010 | }
1011 |
1012 | div.toc li {
1013 | background: url("bdwn.png") no-repeat scroll 0 5px transparent;
1014 | font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
1015 | margin-top: 5px;
1016 | padding-left: 10px;
1017 | padding-top: 2px;
1018 | }
1019 |
1020 | div.toc h3 {
1021 | font: bold 12px/1.2 Arial,FreeSans,sans-serif;
1022 | color: #4665A2;
1023 | border-bottom: 0 none;
1024 | margin: 0;
1025 | }
1026 |
1027 | div.toc ul {
1028 | list-style: none outside none;
1029 | border: medium none;
1030 | padding: 0px;
1031 | }
1032 |
1033 | div.toc li.level1 {
1034 | margin-left: 0px;
1035 | }
1036 |
1037 | div.toc li.level2 {
1038 | margin-left: 15px;
1039 | }
1040 |
1041 | div.toc li.level3 {
1042 | margin-left: 30px;
1043 | }
1044 |
1045 | div.toc li.level4 {
1046 | margin-left: 45px;
1047 | }
1048 |
1049 | .inherit_header {
1050 | font-weight: bold;
1051 | }
1052 |
1053 | .inherit_header td {
1054 | padding: 6px 0px 2px 5px;
1055 | }
1056 |
1057 | .inherit {
1058 | display: none;
1059 | }
1060 |
1061 | tr.heading h2 {
1062 | margin-top: 12px;
1063 | margin-bottom: 4px;
1064 | }
1065 |
1066 | /* tooltip related style info */
1067 |
1068 | .ttc {
1069 | position: absolute;
1070 | display: none;
1071 | }
1072 |
1073 | .footerStyle {
1074 | text-align: center;
1075 | padding: 10px;
1076 | padding-top: 20px;
1077 | vertical-align: bottom;
1078 | }
1079 |
1080 |
1081 | #powerTip {
1082 | cursor: default;
1083 | white-space: nowrap;
1084 | background-color: white;
1085 | border: 1px solid gray;
1086 | border-radius: 4px 4px 4px 4px;
1087 | display: none;
1088 | font-size: smaller;
1089 | max-width: 80%;
1090 | opacity: 0.9;
1091 | padding: 1ex 1em 1em;
1092 | position: absolute;
1093 | z-index: 2147483647;
1094 | }
1095 |
1096 | #powerTip div.ttdoc {
1097 | color: grey;
1098 | font-style: italic;
1099 | }
1100 |
1101 | #powerTip div.ttname a {
1102 | font-weight: bold;
1103 | }
1104 |
1105 | #powerTip div.ttname {
1106 | font-weight: bold;
1107 | }
1108 |
1109 | #powerTip div.ttdeci {
1110 | color: #006318;
1111 | }
1112 |
1113 | #powerTip div {
1114 | margin: 0px;
1115 | padding: 0px;
1116 | font: 12px/16px Roboto,sans-serif;
1117 | }
1118 |
1119 | #powerTip:before, #powerTip:after {
1120 | content: "";
1121 | position: absolute;
1122 | margin: 0px;
1123 | }
1124 |
1125 | #powerTip.n:after, #powerTip.n:before,
1126 | #powerTip.s:after, #powerTip.s:before,
1127 | #powerTip.w:after, #powerTip.w:before,
1128 | #powerTip.e:after, #powerTip.e:before,
1129 | #powerTip.ne:after, #powerTip.ne:before,
1130 | #powerTip.se:after, #powerTip.se:before,
1131 | #powerTip.nw:after, #powerTip.nw:before,
1132 | #powerTip.sw:after, #powerTip.sw:before {
1133 | border: solid transparent;
1134 | content: " ";
1135 | height: 0;
1136 | width: 0;
1137 | position: absolute;
1138 | }
1139 |
1140 | #powerTip.n:after, #powerTip.s:after,
1141 | #powerTip.w:after, #powerTip.e:after,
1142 | #powerTip.nw:after, #powerTip.ne:after,
1143 | #powerTip.sw:after, #powerTip.se:after {
1144 | border-color: rgba(255, 255, 255, 0);
1145 | }
1146 |
1147 | #powerTip.n:before, #powerTip.s:before,
1148 | #powerTip.w:before, #powerTip.e:before,
1149 | #powerTip.nw:before, #powerTip.ne:before,
1150 | #powerTip.sw:before, #powerTip.se:before {
1151 | border-color: rgba(128, 128, 128, 0);
1152 | }
1153 |
1154 | #powerTip.n:after, #powerTip.n:before,
1155 | #powerTip.ne:after, #powerTip.ne:before,
1156 | #powerTip.nw:after, #powerTip.nw:before {
1157 | top: 100%;
1158 | }
1159 |
1160 | #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
1161 | border-top-color: #ffffff;
1162 | border-width: 10px;
1163 | margin: 0px -10px;
1164 | }
1165 | #powerTip.n:before {
1166 | border-top-color: #808080;
1167 | border-width: 11px;
1168 | margin: 0px -11px;
1169 | }
1170 | #powerTip.n:after, #powerTip.n:before {
1171 | left: 50%;
1172 | }
1173 |
1174 | #powerTip.nw:after, #powerTip.nw:before {
1175 | right: 14px;
1176 | }
1177 |
1178 | #powerTip.ne:after, #powerTip.ne:before {
1179 | left: 14px;
1180 | }
1181 |
1182 | #powerTip.s:after, #powerTip.s:before,
1183 | #powerTip.se:after, #powerTip.se:before,
1184 | #powerTip.sw:after, #powerTip.sw:before {
1185 | bottom: 100%;
1186 | }
1187 |
1188 | #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
1189 | border-bottom-color: #ffffff;
1190 | border-width: 10px;
1191 | margin: 0px -10px;
1192 | }
1193 |
1194 | #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
1195 | border-bottom-color: #808080;
1196 | border-width: 11px;
1197 | margin: 0px -11px;
1198 | }
1199 |
1200 | #powerTip.s:after, #powerTip.s:before {
1201 | left: 50%;
1202 | }
1203 |
1204 | #powerTip.sw:after, #powerTip.sw:before {
1205 | right: 14px;
1206 | }
1207 |
1208 | #powerTip.se:after, #powerTip.se:before {
1209 | left: 14px;
1210 | }
1211 |
1212 | #powerTip.e:after, #powerTip.e:before {
1213 | left: 100%;
1214 | }
1215 | #powerTip.e:after {
1216 | border-left-color: #ffffff;
1217 | border-width: 10px;
1218 | top: 50%;
1219 | margin-top: -10px;
1220 | }
1221 | #powerTip.e:before {
1222 | border-left-color: #808080;
1223 | border-width: 11px;
1224 | top: 50%;
1225 | margin-top: -11px;
1226 | }
1227 |
1228 | #powerTip.w:after, #powerTip.w:before {
1229 | right: 100%;
1230 | }
1231 | #powerTip.w:after {
1232 | border-right-color: #ffffff;
1233 | border-width: 10px;
1234 | top: 50%;
1235 | margin-top: -10px;
1236 | }
1237 | #powerTip.w:before {
1238 | border-right-color: #808080;
1239 | border-width: 11px;
1240 | top: 50%;
1241 | margin-top: -11px;
1242 | }
1243 |
1244 | @media print
1245 | {
1246 | #top { display: none; }
1247 | #side-nav { display: none; }
1248 | #nav-path { display: none; }
1249 | body { overflow:visible; }
1250 | h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
1251 | .summary { display: none; }
1252 | .memitem { page-break-inside: avoid; }
1253 | #doc-content
1254 | {
1255 | margin-left:0 !important;
1256 | height:auto !important;
1257 | width:auto !important;
1258 | overflow:inherit;
1259 | display:inline;
1260 | }
1261 | }
1262 |
--------------------------------------------------------------------------------
/doc/theme/footer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
16 |