Add application structure diagram
This commit is contained in:
parent
b810b51e65
commit
07a29910b7
|
@ -1,3 +1,7 @@
|
|||
2020-02-08 Markus Gans <guru.mail@muenster.de>
|
||||
* An application structure diagram was added to the document
|
||||
of the first steps
|
||||
|
||||
2020-02-04 Markus Gans <guru.mail@muenster.de>
|
||||
* Fix in FListViewIterator
|
||||
* Add screenshorts to the first steps document
|
||||
|
|
|
@ -258,5 +258,6 @@ For general questions about FINAL CUT, likely the answer is already included in
|
|||
|
||||
Please send bug reports to
|
||||
--------------------------
|
||||
https://github.com/gansm/finalcut/issues
|
||||
https://github.com/gansm/finalcut/issues <a href="https://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img width="200" align="right" src="https://camo.githubusercontent.com/726b87cc2ebaf8c40716842ff509c5f874381c8e/68747470733a2f2f75706c6f61642e77696b696d656469612e6f72672f77696b6970656469612f636f6d6d6f6e732f332f33622f4c47504c76335f4c6f676f2e737667" alt="LGPLv3" data-canonical-src="https://upload.wikimedia.org/wikipedia/commons/3/3b/LGPLv3_Logo.svg"></a>
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,220 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="74.630997mm"
|
||||
viewBox="0 0 101.5 74.630997"
|
||||
width="101.5mm"
|
||||
version="1.1"
|
||||
id="svg61"
|
||||
sodipodi:docname="application-structure.svg"
|
||||
inkscape:version="0.92.1 r15371">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1984"
|
||||
id="namedview35"
|
||||
showgrid="false"
|
||||
inkscape:zoom="4.0861905"
|
||||
inkscape:cx="81.193565"
|
||||
inkscape:cy="171.2161"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="55"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g59" />
|
||||
<metadata
|
||||
id="metadata67">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs65" />
|
||||
<linearGradient
|
||||
id="a"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="33.698196"
|
||||
x2="34.111275"
|
||||
y1="296.49637"
|
||||
y2="222.78156">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#dbdbdc"
|
||||
id="stop2"
|
||||
style="stop-color:#e8a7a7;stop-opacity:1" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#fff"
|
||||
id="stop4" />
|
||||
</linearGradient>
|
||||
<g
|
||||
transform="translate(0,-222.36897)"
|
||||
id="g59">
|
||||
<g
|
||||
id="g23"
|
||||
style="stroke:#000000"
|
||||
transform="translate(-0.00447221)">
|
||||
<rect
|
||||
height="74.20752"
|
||||
ry="2.5604739"
|
||||
stroke-miterlimit="1.5"
|
||||
width="65.967117"
|
||||
x="0.2115"
|
||||
y="222.58098"
|
||||
id="rect7"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.42300001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" />
|
||||
<path
|
||||
d="M 7.8726193,233.11525 H 66.187848"
|
||||
id="path9"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001;stroke-linecap:square;stroke-linejoin:bevel" />
|
||||
<path
|
||||
d="M 7.8726193,243.73006 H 66.187848"
|
||||
id="path11"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 7.8726193,254.34488 H 66.187848"
|
||||
id="path13"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 7.8726193,264.95969 H 66.187848"
|
||||
id="path15"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 0.19656226,275.5745 H 66.187852"
|
||||
id="path17"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 0.19656226,286.18931 H 66.187852"
|
||||
id="path19"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 7.9427453,275.5745 V 233.11525"
|
||||
id="path21"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001;stroke-linecap:square;stroke-linejoin:bevel" />
|
||||
</g>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;stroke-width:0.26458299;stroke-opacity:0"
|
||||
x="33.420082"
|
||||
y="229.02936"
|
||||
id="text27">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;stroke-width:0.26458299;stroke-opacity:0"
|
||||
x="33.420082"
|
||||
y="229.02936"
|
||||
id="tspan25">Application</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#052867;fill-opacity:1;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="33.219879"
|
||||
y="282.35825"
|
||||
id="text31">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#052867;fill-opacity:1;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="33.219879"
|
||||
y="282.35825"
|
||||
id="tspan29">Standard C/C++ Library</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#052867;fill-opacity:1;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="33.220379"
|
||||
y="293.15323"
|
||||
id="text35">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#052867;fill-opacity:1;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="33.220379"
|
||||
y="293.15323"
|
||||
id="tspan33">Operating System</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#083c99;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113426"
|
||||
y="240.10773"
|
||||
id="text39">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#083c99;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113426"
|
||||
y="240.10773"
|
||||
id="tspan37">Widgets</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#083c99;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113487"
|
||||
y="250.53276"
|
||||
id="text43">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#083c99;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113487"
|
||||
y="250.53276"
|
||||
id="tspan41">Virtual Terminal</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113487"
|
||||
y="261.55215"
|
||||
id="text47">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113487"
|
||||
y="261.55215"
|
||||
id="tspan45">Termcap</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill-opacity:0.99858398;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.11351"
|
||||
y="271.62482"
|
||||
id="text51">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill-opacity:0.99858398;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.11351"
|
||||
y="271.62482"
|
||||
id="tspan49">Terminal</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#083c99;stroke-width:0.26458299;stroke-opacity:0"
|
||||
x="86.416771"
|
||||
y="245.48337"
|
||||
id="text55">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#083c99;stroke-width:0.26458299;stroke-opacity:0"
|
||||
x="86.416771"
|
||||
y="245.48337"
|
||||
id="tspan53">FINAL CUT</tspan>
|
||||
</text>
|
||||
<g
|
||||
aria-label="}"
|
||||
transform="scale(0.99731046,1.0026968)"
|
||||
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:condensed;font-size:22.67463493px;line-height:125%;font-family:'Fira Sans Condensed';-inkscape-font-specification:'Fira Sans Condensed, Ultra-Light Condensed';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458329px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="text4545">
|
||||
<path
|
||||
d="m 68.105817,232.32133 v 0.56687 c 1.22443,0 1.655248,0.61222 1.655248,1.90467 v 6.21285 c 0,1.4285 0.476168,1.83665 1.496526,2.06339 -1.020358,0.22675 -1.496526,0.63489 -1.496526,2.06339 v 6.21285 c 0,1.29246 -0.430818,1.90467 -1.655248,1.90467 v 0.56687 c 1.473851,0 2.312813,-0.74826 2.312813,-2.47154 v -6.30355 c 0,-1.20175 0.521516,-1.60989 1.541875,-1.60989 v -0.72559 c -1.020359,0 -1.541875,-0.40815 -1.541875,-1.6099 v -6.30355 c 0,-1.72327 -0.838962,-2.47154 -2.312813,-2.47154 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:condensed;font-size:22.67463493px;font-family:'Fira Sans Condensed';-inkscape-font-specification:'Fira Sans Condensed, Ultra-Light Condensed';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458329px"
|
||||
id="path4547"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 10 KiB |
|
@ -6,6 +6,7 @@ Table of Contents
|
|||
-----------------
|
||||
|
||||
<!-- TOC -->
|
||||
- [Basic functions](#basic-functions)
|
||||
- [How to use the library](#how-to-use-the-library)
|
||||
- [Memory Management](#memory-management)
|
||||
- [Event Processing](#event-processing)
|
||||
|
@ -25,6 +26,19 @@ Table of Contents
|
|||
<!-- /TOC -->
|
||||
|
||||
|
||||
Basic functions
|
||||
---------------
|
||||
|
||||
FINAL CUT is a library for creating text-based terminal applications. It runs on several Unix-like platforms. The release of FINAL CUT is licensed under the terms of the GNU Lesser General Public License v3.0 ([GNU LGPL v3](https://www.gnu.org/licenses/lgpl-3.0-standalone.html)), which allows flexible licensing of applications. FINAL CUT has a [C++](https://en.wikipedia.org/wiki/C%2B%2B)-based object-oriented architecture for creating fast and lean programs.
|
||||
|
||||
FINAL CUT is a [widget toolkit](http://en.wikipedia.org/wiki/Widget_toolkit). A user interface created consists of several widgets. FINAL CUT draws widgets on virtual windows and then mapped them on a virtual terminal. It uses the terminal capabilities from the [Termcap library](https://en.wikipedia.org/wiki/Termcap) to display the character matrix of the virtual terminal on the screen or a terminal emulator. It uses various optimization methods to improve the speed of the display.
|
||||
|
||||
<figure class="image">
|
||||
<img src="final-cut-application-structure.svg" alt="application structure">
|
||||
<figcaption>Figure 1. Structure of a FINAL CUT application</figcaption>
|
||||
</figure>
|
||||
|
||||
|
||||
How to use the library
|
||||
----------------------
|
||||
|
||||
|
@ -52,7 +66,7 @@ int main (int argc, char* argv[])
|
|||
```
|
||||
<figure class="image">
|
||||
<img src="first-steps_dialog.cpp.png" alt="dialog.cpp">
|
||||
<figcaption>Figure 1. A blank dialog</figcaption>
|
||||
<figcaption>Figure 2. A blank dialog</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -199,7 +213,7 @@ int main (int argc, char* argv[])
|
|||
```
|
||||
<figure class="image">
|
||||
<img src="first-steps_memory.cpp.png" alt="memory.cpp">
|
||||
<figcaption>Figure 2. FObject manages its child objects</figcaption>
|
||||
<figcaption>Figure 3. FObject manages its child objects</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -333,7 +347,7 @@ int main (int argc, char* argv[])
|
|||
```
|
||||
<figure class="image">
|
||||
<img src="first-steps_timer.cpp.png" alt="timer.cpp">
|
||||
<figcaption>Figure 3. FObject::onTimer event handler</figcaption>
|
||||
<figcaption>Figure 4. FObject::onTimer event handler</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -497,7 +511,7 @@ int main (int argc, char* argv[])
|
|||
```
|
||||
<figure class="image">
|
||||
<img src="first-steps_callback-function.cpp.png" alt="callback-function.cpp">
|
||||
<figcaption>Figure 4. Button with a callback function</figcaption>
|
||||
<figcaption>Figure 5. Button with a callback function</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -561,7 +575,7 @@ int main (int argc, char* argv[])
|
|||
```
|
||||
<figure class="image">
|
||||
<img src="first-steps_callback-lambda.cpp.png" alt="callback-lambda.cpp">
|
||||
<figcaption>Figure 5. Button with lambda expression callback.</figcaption>
|
||||
<figcaption>Figure 6. Button with lambda expression callback.</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -619,7 +633,7 @@ int main (int argc, char* argv[])
|
|||
```
|
||||
<figure class="image">
|
||||
<img src="first-steps_callback-method.cpp.png" alt="callback-method.cpp">
|
||||
<figcaption>Figure 6. Button with a callback method</figcaption>
|
||||
<figcaption>Figure 7. Button with a callback method</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -763,7 +777,7 @@ int main (int argc, char* argv[])
|
|||
```
|
||||
<figure class="image">
|
||||
<img src="first-steps_emit-signal.cpp.png" alt="emit-signal.cpp">
|
||||
<figcaption>Figure 7. Callbacks with custom signals</figcaption>
|
||||
<figcaption>Figure 8. Callbacks with custom signals</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -803,8 +817,8 @@ If you want to ignore padding spaces, you must force this with the
|
|||
`ignorePadding()` method.
|
||||
|
||||
<figure class="image">
|
||||
<img src="widget-coordinates.svg" alt="widget-coordinates">
|
||||
<figcaption>Figure 8. Widget coordinates</figcaption>
|
||||
<img src="widget-coordinates.svg" alt="widget coordinates">
|
||||
<figcaption>Figure 9. Widget coordinates</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -853,8 +867,8 @@ methods.
|
|||
        widget height = top padding + client height + bottom padding
|
||||
|
||||
<figure class="image">
|
||||
<img src="widget-lengths.svg" alt="widget-lengths">
|
||||
<figcaption>Figure 9. Width and height of a widget</figcaption>
|
||||
<img src="widget-lengths.svg" alt="widget lengths">
|
||||
<figcaption>Figure 10. Width and height of a widget</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -906,8 +920,8 @@ absolute geometry values as a `FRect` object, you can call the method
|
|||
`getTermGeometryWithShadow()`.
|
||||
|
||||
<figure class="image">
|
||||
<img src="widget-geometry.svg" alt="widget-geometry">
|
||||
<figcaption>Figure 10. Geometry of widgets</figcaption>
|
||||
<img src="widget-geometry.svg" alt="widget geometry">
|
||||
<figcaption>Figure 11. Geometry of widgets</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -1040,7 +1054,7 @@ int main (int argc, char* argv[])
|
|||
```
|
||||
<figure class="image">
|
||||
<img src="first-steps_size-adjustment.cpp.png" alt="size-adjustment.cpp">
|
||||
<figcaption>Figure 11. Dynamic layout</figcaption>
|
||||
<figcaption>Figure 12. Dynamic layout</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
@ -1168,7 +1182,7 @@ int main (int argc, char* argv[])
|
|||
```
|
||||
<figure class="image">
|
||||
<img src="first-steps_scrollview.cpp.png" alt="scrollview.cpp">
|
||||
<figcaption>Figure 12. Dialog with a scrolling viewport</figcaption>
|
||||
<figcaption>Figure 13. Dialog with a scrolling viewport</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
|
|
Loading…
Reference in New Issue