diff --git a/README.md b/README.md new file mode 100644 index 00000000..a0dc751b --- /dev/null +++ b/README.md @@ -0,0 +1,163 @@ +The Final Cut +============= +The Final Cut is a programming library and widget toolkit that creates a text-based user interface with full mouse support. It supports the controlled handling of multiple simultaneous windows. +The C++ class design is inspired by the Qt framework. It offers common user interface elements like dialog windows, push buttons, check boxes, radio buttons, input lines, list boxes, status bars and so on. + +![](https://github.com/gansm/finalcut/blob/master/doc/fileopen-dialog.png) + +![](https://github.com/gansm/finalcut/blob/master/doc/progress-bar.png) + +![](https://github.com/gansm/finalcut/blob/master/doc/textview.png) + + +newfont +------- +A new text font for x11 and the linux console. +![](https://github.com/gansm/finalcut/blob/master/doc/newfont1.png) + +![](https://github.com/gansm/finalcut/blob/master/doc/newfont2.png) + + +Virtual terminal +---------------- +It uses a virtual terminal to print the character via a update method on the screen. +The virtual windows are an overlying layer to realizing window movements. +Only the changes are transmitted to the virtual terminal or the screen. + +
+ print(...)
+printf(...)
+  │
+  │           ╔═════════════════════════[ vterm ]═════════════════════════╗
+  │           ║createVTerm()                                              ║
+  │           ║                                 ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ║
+  │           ║                                                           ║
+  │           ║                                 │ restoreVTerm(x,y,w,h) │ ║
+  │           ║                                                           ║
+  │           ║                                 └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘ ║
+  │           ║                                                           ║
+  │   ┌───────╨─────[ vwin ]─────────────┐                                ║
+  │   │createArea(area)                  │                                ║
+  │   │                                  │                                ║
+  │   │                                  │                                ║
+  └───┼─────────────►     ──────► updateVTerm(area) ────►                 ║
+      │                                  │                                ║
+      │                           putArea(x,y,area)                       ║
+      │                         ────────────────────►                     ║
+      │                           getArea(x,y,area)                       ║
+      │                        ◄────────────────────                      ║
+      │                                  │                                ║
+      │                                  │                                ║
+      │                  resizeArea(area)│                                ║
+      └───────╥──────────────────────────┘                                ║
+              ║                                                           ║
+              ║                                                           ║
+              ║                                                           ║
+              ║   │                                          resizeVTerm()║
+              ╚═══▼═══════════════════════════════════════════════════════╝
+                  │
+                  │    putVTerm()      ┌───────────────┐
+                  └───────────────────►│ output_buffer │
+                    updateTerminal()   └───────┬───────┘
+                                               │
+                                               │ flush_out() 
+                                               │     +
+                                               │ Fputchar(char)
+                                               │
+                                               ▼
+                                       ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
+                                       ▌               ▐
+                                       ▌    screen     ▐
+                                       ▌ ───────────── ▐
+                                       ▌ real terminal ▐
+                                       ▌               ▐
+                                       ▀▀▀▀▀▀▀███▀▀▀▀▀▀▀
+                                              ███
+                                           ▀▀▀▀▀▀▀▀▀
+
+ + +Class digramm +------------- +
+                                 ┌───────────┐
+                            ┌────┤ FKeyEvent │
+                            │    └───────────┘
+                            │    ┌─────────────┐
+                            ├────┤ FMouseEvent │
+                            │    └─────────────┘
+                            │    ┌─────────────┐
+                            ├────┤ FWheelEvent │
+                            │    └─────────────┘
+                            │    ┌─────────────┐
+                            ├────┤ FFocusEvent │
+                            │    └─────────────┘
+                            │    ┌─────────────┐
+                ┌────────┐  ├────┤ FAccelEvent │
+                │ FEvent │◄─┤    └─────────────┘
+                └────┬───┘  │    ┌──────────────┐
+                     │1     ├────┤ FResizeEvent │
+                     │      │    └──────────────┘
+                     │      │    ┌────────────┐
+                     │      ├────┤ FShowEvent │
+                     │      │    └────────────┘
+                     │      │    ┌────────────┐
+                     │      ├────┤ FHideEvent │
+                     │      │    └────────────┘
+                     │      │    ┌─────────────┐
+                     │      ├────┤ FCloseEvent │
+                     │      │    └─────────────┘
+                     │      │    ┌─────────────┐
+                     │      └────┤ FTimerEvent │
+                     │           └─────────────┘
+                     │
+                     │           ┌──────────────┐
+                     │      ┌────┤ FApplication │
+                     │      │    └──────────────┘
+                     │      │    ┌─────────┐1
+                     │      ├────┤ FButton ├-----------------------------.
+                     │      │    └─────────┘                             │
+                     │      │    ┌────────┐1                             │
+                     │      ├────┤ FLabel ├------------------------------┤
+                     │      │    └────────┘                              │
+                     │      │    ┌───────────┐1                          │
+                     │      ├────┤ FLineEdit ├---------------------------┤
+                     │      │    └───────────┘         ┌──────────────┐1 │
+                     │      │    ┌───────────────┐  ┌──┤ FRadioButton ├--┤
+                     │1     ├────┤ FToggleButton │◄─┤  └──────────────┘  │
+ ┌─────────┐   ┌─────┴───┐  │    └───────────────┘  │  ┌───────────┐1    │
+ │ FObject │◄─┬┤ FWidget │◄─┤    ┌──────────────┐   └──┤ FCheckBox ├-----┤
+ └─────────┘  │└───┬─┬───┘  ├────┤ FButtonGroup │      └───────────┘     │
+              │    │1│1     │    └──────────────┘                        │
+   ┌───────┐  │    │ │      │    ┌──────────────┐                        │
+   │ FTerm │◄─┘    │ │      ├────┤ FProgressbar │                        │  *┌─────────┐
+   └──┬─┬──┘       │ │      │    └──────────────┘                        ├---┤ FString │
+      │1│1         │ │      │    ┌────────────┐                          │   └─────────┘
+      │ └----------┤ │      ├────┤ FScrollbar │                          │
+      │*           │ │      │    └────────────┘                          │
+ ┌────┴──────┐     │ │      │    ┌───────────┐1                          │
+ │ FOptiMove │     │ │      ├────┤ FTextView ├---------------------------┤
+ └───────────┘     │ │      │    └───────────┘                           │
+                   │ │      │    ┌──────────┐1     *┌──────────────┐1    │
+                   │ │      ├────┤ FListBox ├-------┤ FListBoxItem ├-----┤
+                   │ │      │    └──────────┘       └──────────────┘     │
+                   │ │      │    ┌────────────┐1   *┌────────────┐1      │
+                   │ │      ├────┤ FStatusBar ├-----┤ FStatusKey ├-------┤
+                   │ │      │    └────┬───────┘     └────────────┘       │
+                   │ │      │        1└----------------------------------┤
+                   │ │      │                         ┌─────────────┐1   │
+                   │ │  ┌───┴─────┐  ┌─────────┐   ┌──┤ FFileDialog ├----┤
+                   │ │  │ FWindow │◄─┤ FDialog │◄──┤  └─────────────┘    │
+                   │ │  └─────────┘  └────┬────┘   │  ┌─────────────┐1   │
+                   │ │                    │        └──┤ FMessageBox ├----┤
+                   │ │                    │           └─────────────┘    │
+                   │ │                   1└------------------------------┤
+                   │ │                                                   │
+                   │ └---------------------------------------------------'
+                   │  *┌────────┐
+                   ├---┤ FPoint │
+                   │   └────────┘
+                   │  *┌───────┐
+                   └---┤ FRect │
+                       └───────┘
+