|##########| |#MAGIC #|CLABLMID |#PROJECT #|"" |#PATHS #|"StdProject" |#FLAGS #|xx---x--x---xxx----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|xx---xxxxx------ |##########| DEFINITION MODULE GfxText; FROM GfxScreen IMPORT Screen; TYPE (*----------------------------------------------------------------------------* * Font : Zugriff auf einen Systemzeichensatz * * * * Styles : Stilrichtungen eines Fonts * * - underlined : Die Zeichen werden unterstrichen * * - bold : Die Zeichen werden fett dargestellt * * - italic : Die Zeichen werden kursiv * * - extended : ??? * * StyleSet: Menge der möglichen Stilarten * *----------------------------------------------------------------------------*) Font = HIDDEN; Styles = (underlined,bold,italic,extended); StyleSet = SET OF Styles; CharPtr = POINTER TO CHAR; (*----------------------------------------------------------------------------* * AUFGABE : Öffnet einen Font zur Benutzung * * PARAMETER : font => Zugriff auf Font * * name <= Namen des Fonts * * height<= gewünschte Höhe * * BEMERKUNGEN : Falls der gewünschte Font nicht geladen werden konnte, * * wird ein Laufzeitfehler erzeugt * *----------------------------------------------------------------------------*) PROCEDURE OpenFont(VAR font : Font;REF name : STRING;height : INTEGER); (*----------------------------------------------------------------------------* * AUFGABE : Schliest einen Font wieder * * PARAMETER : font <> Zugriff auf Font * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE CloseFont(VAR font : Font); (*----------------------------------------------------------------------------* * AUFGABE : Setzt den Font für die angegeben Screen * * PARAMETER : s <= Zugriff auf Screen * * font <= Zugriff auf Font * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE SetFont(s : Screen;font : Font); (*----------------------------------------------------------------------------* * AUFGABE : Holt den aktuellen Font eines Screens * * PARAMETER : s <= Zugriff auf Screen * * => Zugriff auf Font * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE GetFont(s : Screen):Font; (*----------------------------------------------------------------------------* * AUFGABE : Ermittelt die Höhe eines Fonts in Pixel * * PARAMETER : font <= Zugriff auf Zeichensatz * * => Höhe in Pixel * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE FontHeight(font : Font):INTEGER; (*----------------------------------------------------------------------------* * AUFGABE : Ermittelt die Breite eines Fonts in Pixel * * PARAMETER : font <= Zugriff auf Font * * => Breite in Pixel * * BEMERKUNGEN : Funktioniert nur bei nicht proportionalen Fonts * *----------------------------------------------------------------------------*) PROCEDURE FontWidht(font : Font):INTEGER; (*----------------------------------------------------------------------------* * AUFGABE : Liefert die Breite eines Zeichens in diesem Font * * PARAMETER : font <= Zugriff auf Font * * c <= Zeichen, dessen Breite ermittelt werden soll * * => Breite in Pixeln * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE CharWidth(font : Font;c : CHAR):INTEGER; (*----------------------------------------------------------------------------* * AUFGABE : Stellt fest, ob ein Font proportional ist * * PARAMETER : font <= Zugriff auf Font * * => TRUE, wenn Font proportional ist * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE IsProportional(font : Font):BOOLEAN; (*----------------------------------------------------------------------------* * AUFGABE : Setzt die Stilart des Font für die Ausgabe * * PARAMETER : s <= Zugriff auf den Screen * * style <= Stile, die ab jetzt gelten sollen * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) GROUP FontGrp = Screen,Font,OpenFont,CloseFont,SetFont,GetFont,FontHeight, FontWidht,CharWidth,IsProportional; PROCEDURE SetStyle(s : Screen;style : StyleSet); (*----------------------------------------------------------------------------* * AUFGABE : Löscht eine Stilart * * PARAMETER : s <= Zugriff auf den Screen * * style <= Stil, der gelöscht werden soll * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE SubStyle(s : Screen;style : Styles); (*----------------------------------------------------------------------------* * AUFGABE : Setzt eine Stilart * * PARAMETER : s <= Zugriff auf den Screen * * style <= Stil, der gesetzt werden soll * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE AddStyle(s : Screen;style : Styles); (*----------------------------------------------------------------------------* * AUFGABE : Schreibt ein Zeichen an eine Bildschirmposition * * PARAMETER : s <= Zugriff auf Screen * * x,y <= Koordinaten * * c <= auszugebendes Zeichen * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) GROUP StyleGrp = Styles,StyleSet,SetStyle,SubStyle,AddStyle; PROCEDURE WriteAt(s : Screen;x,y : INTEGER;c : CHAR); (*----------------------------------------------------------------------------* * AUFGABE : Schreibt eine Zeichenkette an eine Bildschirmposition * * PARAMETER : s <= Zugriff auf den Screen * * x,y <= Koordinaten * * str <= auszugebende Zeichenkette * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE WriteStringAt(s : Screen;x,y : INTEGER;REF str : STRING); (*----------------------------------------------------------------------------* * AUFGABE : Schreibt eine Zeichenkette an eine Bildschirmposition * * PARAMETER : s <= Zugriff auf den Screen * * x,y <= Koordinaten * * len <= Länge der Zeichenkette * * pos <= Startposition im Speicher * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE WriteCharsAt(s : Screen;x,y,len : INTEGER;pos : CharPtr); GROUP WriteGrp = WriteAt,WriteStringAt,WriteCharsAt,CharPtr; GROUP All = FontGrp,StyleGrp,WriteGrp; END GfxText.