Martin wrote:
On 16/05/2012 14:13, Mark Morgan Lloyd wrote:
Martin wrote:

The normal way (see example):
// Line 0, from start of line to pos 3 (3 chars) highlighted as Attr1
     Highlighter.AddToken(0,3,Attr1);

but this will do a single char
     Highlighter.AddToken(0,3,Attr1);  // Attr1 from col 3
     Highlighter.AddToken(0,4,tkText);  // text from col 4


I don't think any sort of pre-existing custom highlighter will work. The requirement here is that anything- completely context-free- that the user enters is red, anything that the host supplies (over telnet, serial line etc.) is black. Either of those can be complete garbage, but should still show up in the correct colour (and should stay correct, irrespective of scrolling etc.).

The position highlighter refers to position in text. Scrolling via scrollbar is no problem.

But if you add/remove lines; or add/remove chars in a line, you must update the positions.

I assume you have a fixed amount of lines and columns? If so it should be very simple to write a pos-highlighter (part of your project, does not need to be registerred in IDE), that has

CharAttributes: Array[1..maxLine] of array [ 1..MaxColumn] of TAttribute

Of course that is not practical if you have thousands of lines, as it would require a lot of storage....

Since it's emulating a mechanical terminal that printed to roll paper, the number of lines is indeterminate and increasing. I suppose that I could limit it to (say) 1000, but if other people started using it there'd be bound to be somebody complain.

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to