2018-01-05 00:49:00 +01:00
|
|
|
The virtual terminal (vterm)
|
|
|
|
----------------------------
|
2015-05-23 13:35:12 +02:00
|
|
|
|
2019-10-08 04:37:19 +02:00
|
|
|
FINAL CUT uses a virtual terminal to print character via an update method
|
|
|
|
on the screen. It provides (as an overlying layer) virtual windows for
|
|
|
|
the realization of window movements. The update methods only transfer
|
2019-10-01 23:14:00 +02:00
|
|
|
differences to the virtual terminal or physical screen.
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-05-23 13:35:12 +02:00
|
|
|
print(...)
|
|
|
|
printf(...)
|
|
|
|
│
|
2019-10-08 04:37:19 +02:00
|
|
|
│ ╔════════════════════════[ vterm ]════════════════════════╗
|
|
|
|
│ ║createVTerm() ║
|
|
|
|
│ ║ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ║
|
|
|
|
│ ║ ║
|
|
|
|
│ ║ │ restoreVTerm(x,y,w,h) │ ║
|
|
|
|
│ ┌───────╨────[ vwin ]────────────┐ ║
|
|
|
|
│ │createArea(area) │ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘ ║
|
|
|
|
│ │ │ ║
|
|
|
|
│ │ │ ║
|
|
|
|
└──┼────────► putArea(area) ────► ║
|
|
|
|
│ │ ║
|
|
|
|
│ putArea(x,y,area) ────► ║
|
|
|
|
│ │ ║
|
|
|
|
│ ◄──── getArea(x,y,area) ║
|
|
|
|
│ │ ║
|
|
|
|
│ │ ║
|
|
|
|
│ │ ║
|
|
|
|
│ resizeArea(area)│ ║
|
|
|
|
└───────╥────────────────────────┘ ║
|
|
|
|
║ ║
|
|
|
|
║ │ resizeVTerm()║
|
|
|
|
╚═══════▼═════════════════════════════════════════════════╝
|
|
|
|
│
|
|
|
|
│ putVTerm()
|
|
|
|
└──────────────────► updateTerminalLine(y)
|
|
|
|
updateTerminal() │
|
|
|
|
▼
|
|
|
|
┌───────────────┐
|
|
|
|
│ output_buffer │
|
|
|
|
└───────────────┘
|
|
|
|
│
|
|
|
|
│ flushOutputBuffer()
|
|
|
|
│ and putchar(char)
|
|
|
|
▼
|
|
|
|
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
|
|
|
▌ ▐
|
|
|
|
▌ screen ▐
|
|
|
|
▌ ───────────── ▐
|
|
|
|
▌ real terminal ▐
|
|
|
|
▌ ▐
|
|
|
|
▀▀▀▀▀▀▀███▀▀▀▀▀▀▀
|
|
|
|
███
|
|
|
|
▀▀▀▀▀▀▀▀▀
|