Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File15.13.3.2 Ein einfacher Aufruf TOS Angesichts der Vielzahl der Parameter und Einstellmöglichkeiten er- scheint folgender Hinweis angebracht: Keine Panik! Ein xFSL-Aufruf ist einfacher als es zunächst scheint. Insbesondere kann hier die Strategie der "schrittweisen Verfeinerung" angewendet werden, da man (fast) alle Parameter zunächst einmal auf Null setzen kann. Ein möglichst einfacher xFSL-Aufruf kann z.B. so aussehen: #include <stdio.h> #include <aes.h> #include <vdi.h> #include <xfsl.h> void call_xfsl (void) { int xhandle, xret; xFSL_PAR xpar; PFONTINFO pfont; xFSL *xfsl; memset (&xpar, 0, sizeof (xFSL_PAR)); memset (&pfont, 0, sizeof (PFONTINFO)); xpar.par_size = sizeof (xFSL_PAR); xpar.pfi_size = sizeof (PFONTINFO); xpar.font = &pfont; xpar.font->fontcol = BLACK; if (get_cookie ('xFSL', &xfsl)) { xhandle = xfsl->xfsl_init (0, &xpar); if (xhandle >= 0) { do xret = xfsl->xfsl_event (xhandle, 0L); while (xret > xFS_OK); xfsl->xfsl_exit (xhandle); if (xret == xFS_STOP) printf ("Abbruch\n"); else if (xret == xFS_OK) printf ("Font mit ID %d ausgewählt\n", xpar.font->fontid); else if (xret < 0) printf ("Fehler %d\n", xret); } else printf ("Fehler %d\n", xhandle); } else printf ("Cookie nicht gefunden!\n"); } Mit den beiden memset-Aufrufen werden alle Elemente der Strukturen xFSL_PAR und PFONTINFO auf Null gesetzt. Anschließend werden einige unbedingt nötige Werte eingetragen: ∙ die Größen der beiden Strukturen xFSL_PAR und PFONTINFO ∙ die Adresse der PFONTINFO-Struktur wird in der xFSL_PAR-Struktur eingetragen ∙ die Schriftfarbe wird auf schwarz gesetzt (dies könnte man auch weglassen, aber normalerweise wird man ja in schwarzer Schrift auf weißem Grund schreiben wollen) Mehr ist an Vorbereitungen nicht nötig, es folgt nun der eigentliche Aufruf. Zunächst wird der xFSL-Cookie gesucht. Im Erfolgsfall wird nun der Fontselektor initialisiert, indem die xFSL_PAR-Struktur übergeben wird. War dieser Aufruf erfolgreich (`xhandle' ist größer oder gleich Null), so befindet sich der Fontselektor bereits auf dem Bildschirm. In der Hauptschleife wird nun gewartet, bis der Fontselektor entweder mit xFS_STOP oder xFS_OK vom Anwender beendet wird oder bis ein Fehler auftritt (andere positive Rückgabewerte werden hier einfach ignoriert). Mit dem Aufruf von xfsl_exit wird der Fontselektor wieder vom Bildschirm entfernt und anschließend der Rückgabewert ausgewertet. Das war doch gar nicht so kompliziert, oder? Von hier aus können Sie nun mit den diversen Parametern und Flags weiter experimentieren.