WOW

, now my head like was blown up with amazing ideas !

I love all of them.
I think I could start to imagine of how awesome if TUI could be to accommodate above ideas, that are very interesting.
but damn, how stupid I am, some stuff are beyond my knowledge. (I didn't try yet the SDL, HTML5, PuTTY, Font Management etc.)
--In fact, I just visit PuTTY at wikipedia today.
So currently I don't know how to hook TUI into that stuffs.
Nevertheless, summing up whole of you guys's ideas into consideration, Next TUI would be:
* Able to get out from console/text-mode,
by emulating text-mode within such a TForm as root component, or as whole desktop space + multi form emulated.
* Still support to run in text-mode by default, also for reason of being used by PuTTY
* Able to use UTF8/Unicode
* Still support ASCII/codepage by default. (I don't know how to deal with codepage yet)
* Able to work with more than 16 color
* Still support the classic 16 console colors
* Able to draw graphics, such as custom checkbox/radiobox in both emulated screen and console/text-mode
* Able to draw graphics, such as Linux/Brand logo in emulated screen only
* But, all coordinate used is in console world (80x25, 80x50)
* Wouldn't support multiple font size.
(At least for beta version)I think the key (most important) aspect of above features is in the implementation of various backend (TUI's buffer).
For example:
FV and current TUI only need one (plus one more for swap) buffer, this buffer has similar size of current screen mode (maybe 80x50).
each cell represent double byte : one byte for a char/text representation and another byte for both 2 colors of text color and background color.
So when we implement the use of 64colors + Unicode, we can't use that buffer type because of:
* 64 color of text + 64 color of background = 128bit wouldn't occupied in one byte.
* Unicode/ UTF8 has dynamic width of a character. sometime 8bit, 16bit, 24bit.
* Using unicode shall require to support RTL (right to left), like arabic, hebrew. (well maybe not in beta version)
That way, we should create a whole new buffer type to accommodate that.
No, not only the buffer type.
Actually the next TUI will need a new rendering system replacing the limited capacity of static -size console buffer.
So, rather than direct writing to buffer, let each buffer-backend to decide how to render the text, therefor how to do with colors.
Well, I have no problem to realizing that plan. as far as TUI characteristic doesn't be changed:
TUI = designing Text User Interface with Lazarus as UI Designer.
So, I think TUI will never be:
* multiple font-size.
Different font may need different coordinate for each other, that may drive to need of universal pixel coordinate,
which is out of TUI business.
(Well, At least, multiple font style may came to consideration to be supported in console-emulated mode.)
* Interaction with mouse in pixel.
TUI will always interact with mouse in character/console coordinate.
I have no plan to extend mouse interaction precision with TUI into pixel coordinate.
Although somebody can extend it into pixel precision, that would be as beyond my ability.
-----------------------------------------------
Anyway,
I have a question:
Do we still need a buffer for whole activity (like current FV),
or shall we use a buffer for each TWindow (like TForm has it's own canvas) ?
I think using a buffer for each TtuiWindow will make work easier, but it will consume more RAM. I don't know for sure. ?