•  Back 
  •  xFSL-Schnittstelle 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
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.