Modify the ftxui::Pixel. Instead of storing a wchar, store a
std::wstring. Now a single pixel can store multiple codepoints.
If a codepoint is of size <=0, it will be appended to the previous
pixel.
Only ftxui::text() is supported. ftxui::vtext support still needs to be
added.
This causes the following CPU and memory regression:
- Memory: Pixel size increases by 200% (16 byte => 48byte).
- CPU: Draw/Second decrease by 62.5% (16k draw/s => 6k draw/s on 80x80)
Both regressions are acceptable. There are still two orders of magnitude
(100x) before the levels where performance/memory concerns begins.
This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/109
Most CJK users use IME (input method) to type CJK characters. They need
the cursor to be at the correct location, not in the bottom right
corner.
This CL does:
* Move the cursor the focus() element.
* Hide the cursor (and show it at exit)
* Intercept SIGINT to guarantee proper cleanup all the time.
This should fix the second issue mentionned on:
https://github.com/ArthurSonzogni/FTXUI/issues/2