chaos.formattext: Functions Modinfo Source  

Erweiterte Textformatierung

Todo:
Weitere Formatierung wie Durchstreichen, Unterstreichen, Hintergrundfarbe ...

Known Bugs:
<AJ> berechnet falsche Koordinaten, wenn es Leerzeilen im Text gibt (~n~n)

Benötigte Module:
brl.pixmap
chaos.color
chaos.functions

Empfohlenene Module:
bah.fontconfig (für besseres Verhalten von BMax im Umgang mit Truetype Fonts)
chaos.bmpfont (für besseres Verhalten von BMax im Umgang mit Bitmap Fonts)

Functions Summary

FormatText Text formatieren.
FormatTextHeight Höhe des formatierten Textes ermitteln.
FormatTextWidth Breite des formatierten Textes ermitteln.

Functions

Function FormatText (Text:String Var, Font:TImageFont Var)
ReturnsText ohne Tags als String und passenden Font.
DescriptionText formatieren.
InformationDiese Funktion wertet einen Text aus und füllt einen TImagefont mit dessen Daten.
Dies hat den Vorteil, dass nicht jedes Zeichen des Textes einzeln mit DrawText gezeichnet
werden muss, nur um ihn mit verschiedenen Farben und Fonts zu versehen, was natürlich stark
auf die Performance gehen würde.

Man kann nach dem Formatieren des Textes einfach mit SetImageFont(Rückgabefont) und
DrawText(Rückgabetext) den Text darstellen. Weiterhin kann so auch ohne großen Aufwand
der formatierte Text mit SetScale, SetRotation, Sethandle usw. dargestellt werden.

Gültige Formatierungen:
FormatierungBeschreibung
~nZeilenumbruch
<AR>Text wird rechtsbündig dargestellt
<AC>Text wird horizontal zentriert dargestellt
<AJ>Text wird im Blocksatz dargestellt
<ALPHA=a>Transparenz des folgenden Textes setzen (zwischen 0.0 und 1.0)
</ALPHA>Transparenz zurücksetzen
<COLOR=rrr,ggg,bbb>Farbe des folgenden Textes setzen
</COLOR>Farbe zurücksetzen
<FONT=handle>Font für folgenden Text setzen (mit HandleFromObject ermittelt)
</FONT>Font zurücksetzen
<IMG=handle>Image als Zeichen einfügen (mit HandleFromObject ermittelt)
Farbe und Transparenz werden mit der aktuellen Zeichenfarbe, bzw. Zeichentransparenz gemischt.

Natürlich hat das ganze auch Nachteile.
Da TextWidth() nicht in der Lage ist Zeichenbreiten in verschiedenen Zeilen vernünftig zu berechnen,
musste leider eine eigene Funktion her (siehe FormatTextWidth()).

Das gleiche gilt für Mark Sibleys geniale Verarsche namens TextHeight() die nichts anderes macht als
die Höhe des aktuell gesetzten Fonts zurückzugeben. Diese hab ich auch durch eine neue Funktion
ersetzen müssen (siehe FormatTextHeight()).

Außerdem ist das ganze nicht unbedingt für Realtime Textänderungen geeignet und war dafür auch nicht gedacht.

Function FormatTextHeight:Int (Source:Object)
ReturnsHöhe als Integer.
DescriptionHöhe des formatierten Textes ermitteln.
InformationAlso übergabeobject kann sowohl der mit FormatText() zurückgegebne Text, als auch der dazu gehörende Font angegeben werden.

Function FormatTextWidth:Int (Source:Object)
ReturnsBreite als Integer.
DescriptionBreite des formatierten Textes ermitteln.
InformationAlso übergabeobject kann sowohl der mit FormatText() zurückgegebne Text, als auch der dazu gehörende Font angegeben werden.

Module Information

Version1.00
ModserverBtbN
OnAllOsYes
Authord-bug
LicensePublic Domain
Contactd-bug@chaos-interactive.de
Homepagewww.chaos-interactive.de
History1.00 Erster Release