diff --git a/ChangeLog b/ChangeLog index 47221742..eb67b3a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2020-02-08 Markus Gans + * An application structure diagram was added to the document + of the first steps + 2020-02-04 Markus Gans * Fix in FListViewIterator * Add screenshorts to the first steps document diff --git a/README.md b/README.md index 8674d8c9..ba88d07b 100644 --- a/README.md +++ b/README.md @@ -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 LGPLv3 + diff --git a/doc/final-cut-application-structure.svg b/doc/final-cut-application-structure.svg new file mode 100644 index 00000000..e1cec8b7 --- /dev/null +++ b/doc/final-cut-application-structure.svg @@ -0,0 +1,220 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + Application + + + Standard C/C++ Library + + + Operating System + + + Widgets + + + Virtual Terminal + + + Termcap + + + Terminal + + + FINAL CUT + + + + + + diff --git a/doc/first-steps.md b/doc/first-steps.md index 46ed141a..96414e24 100644 --- a/doc/first-steps.md +++ b/doc/first-steps.md @@ -6,6 +6,7 @@ Table of Contents ----------------- +- [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 +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. + +
+ application structure +
Figure 1. Structure of a FINAL CUT application
+
+ + How to use the library ---------------------- @@ -52,7 +66,7 @@ int main (int argc, char* argv[]) ```
dialog.cpp -
Figure 1. A blank dialog
+
Figure 2. A blank dialog


@@ -199,7 +213,7 @@ int main (int argc, char* argv[]) ```
memory.cpp -
Figure 2. FObject manages its child objects
+
Figure 3. FObject manages its child objects


@@ -333,7 +347,7 @@ int main (int argc, char* argv[]) ```
timer.cpp -
Figure 3. FObject::onTimer event handler
+
Figure 4. FObject::onTimer event handler


@@ -497,7 +511,7 @@ int main (int argc, char* argv[]) ```
callback-function.cpp -
Figure 4. Button with a callback function
+
Figure 5. Button with a callback function


@@ -561,7 +575,7 @@ int main (int argc, char* argv[]) ```
callback-lambda.cpp -
Figure 5. Button with lambda expression callback.
+
Figure 6. Button with lambda expression callback.


@@ -619,7 +633,7 @@ int main (int argc, char* argv[]) ```
callback-method.cpp -
Figure 6. Button with a callback method
+
Figure 7. Button with a callback method


@@ -763,7 +777,7 @@ int main (int argc, char* argv[]) ```
emit-signal.cpp -
Figure 7. Callbacks with custom signals
+
Figure 8. Callbacks with custom signals


@@ -803,8 +817,8 @@ If you want to ignore padding spaces, you must force this with the `ignorePadding()` method.
- widget-coordinates -
Figure 8. Widget coordinates
+ widget coordinates +
Figure 9. Widget coordinates


@@ -853,8 +867,8 @@ methods.         widget height = top padding + client height + bottom padding
- widget-lengths -
Figure 9. Width and height of a widget
+ widget lengths +
Figure 10. Width and height of a widget


@@ -906,8 +920,8 @@ absolute geometry values as a `FRect` object, you can call the method `getTermGeometryWithShadow()`.
- widget-geometry -
Figure 10. Geometry of widgets
+ widget geometry +
Figure 11. Geometry of widgets


@@ -1040,7 +1054,7 @@ int main (int argc, char* argv[]) ```
size-adjustment.cpp -
Figure 11. Dynamic layout
+
Figure 12. Dynamic layout


@@ -1168,7 +1182,7 @@ int main (int argc, char* argv[]) ```
scrollview.cpp -
Figure 12. Dialog with a scrolling viewport
+
Figure 13. Dialog with a scrolling viewport