Die Idee ist, statt immer Zeile für Zeile Text auszugeben soll es dem Nutzer einfacher gemacht werden die Informationen überall über einfache Koordinaten zu ändern. Es kann entweder im 24 Farben Modus (normal) oder im 24 Bit Farbenmodus verwendet werden. Der 24 Bit Modus wird durch ein Define Col24 in den Projekteinstellungen (oder über den Compilerparameter -dCpu24) eingestellt. Allerdings unterstützt nicht jedes Terminal 24 Bit Farben (bzw. Ansi Escape strings), z.B. das Windows Konsolenfenster gehört dazu.
Im 24 Bit Modus ist es nicht möglich die Unit Crt zu verwenden, sobald diese in der Uses Klausel irgendwo auftaucht funktionier Textcanvas nicht mehr.
Der 16 Farben (default) Modus funktioniert hingegen verwendet intern die Unit Crt. Damit läuft dieser auch unter Windows, und sollte auch unter allen anderen Systemen problemlos laufen.
Zur Funktionsweise, man kann dem Canvas eine Größe Zuweisen, dann kann mit den Zeichenroutinen des Canvas auf diesem Bereich gezeichnet werden. Die Koordinaten bezeichnen dabei (0 basierend) die Zeichen auf dem Konsolenfenster beginnend in der oberen linken Ecke. Die darstellung wird mit der Methode Print dann ausgegeben. Wenn nicht anders angegeben (durch einen Parameter bei dem Aufruf von Print) werden nur die Zeilen neu gezeichnet welche geändert wurden, was das ganze selbst auf langsamen Ausgaben wie der Windows Konsole effizient gestaltet.
Neben der Klasse werden noch einige Funktionen gegeben wie MoveCursor, ClearScreen, GetWindowSize oder ReadChar, um von der Crt Unit unabhängig zu sein.
Dabei liegt auch ein Beispielprojekt welches 2 Formen und viele Buchstaben zeichnet.
Download link
Bild:
PS: Ich habe das ganze unter Windows nicht wirklich getestet, da ich es nur für Unix brauche. Außerdem gibt es ab und an Probleme mit ReadChar wenn dieses Non Blocking aufgerufen wird.