home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / mac / 1000 / CCE_1044.ZIP / CCE_1044 / XUFSL105.LZH / xufsl.105 / xufsl.h < prev    next >
Text File  |  1994-10-02  |  13KB  |  198 lines

  1. /**************************************************************************/
  2. /* Definitionen für den xUFSL                                             */
  3. /*                                                                        */
  4. /* 10.09.94 Version 1.00                                                  */
  5. /* 14.09.94 Erweitert um Definitionen des UFSL Version 0.91-0.97          */
  6. /*          Event-Funktion aus dem xUFSL-Aufruf entfernt                  */
  7. /*          Rückgabewerte an UFSL angepaßt. Die Wert UFS_NO_FONTS und     */
  8. /*          UFS_NO_FONTSIZE sind nur aus Kompatibilitätsgründen defi-     */
  9. /*          niert. Solche Fehler werden intern vom xUFSL abfangen (hof-   */
  10. /*          fentlich...).                                                 */
  11. /* 18.09.94 Neue Flags UFS_AUTO_UPDATE und UFS_ERROR_MSG.                 */
  12. /* 28.09.94 Neue Flags UFS_BITMAP_FONTS und UFS_KERNING_INFO.             */
  13. /*          Schriftbreite erweitert: Struktur FW_INFO. In der Struktur    */
  14. /*          wird neben der Zeichenbreite die Weite des Track-Kernings     */
  15. /*          und die Aktivierung des Paar-Kernings zurückgegeben.          */
  16. /*          Definition der max. Zeichenbreite MAX_CHAR_WIDTH.             */
  17. /* 01.10.94 UFS_AUTO_UPDATE wieder abgeschafft.                           */
  18. /*          Neues Flag UFS_INDIRECT und Struktur XUFSL_LIST.              */
  19. /*          Wenn UFS_INDIRECT gesetzt ist, wird der Parameter info beim   */
  20. /*          beim xUFSL-Aufruf als Zeiger auf eine XUFSL_LIST interpre-    */
  21. /*          tiert. Die Anzahl der Einträge in dieser Liste muß im Parame- */
  22. /*          ter fontid, der erste selektierte Eintrag in fontsize überge- */
  23. /*          ben werden. Über ein Popup können dann die in der Liste ange- */
  24. /*          gebenen Sets in EINEM xUFSL-Dialog geändert werden! Von den   */
  25. /*          weiteren Parametern werden in diesem Fall nur noch die Dia-   */
  26. /*          logfont-IDs beachtet. Der xUFSL versorgt die Einträge in der  */
  27. /*          XUFSL_LIST.                                                   */
  28. /*          Verwendungsbeispiel: Siehe CALLUFSL.C!                        */
  29. /* 02.10.94 Neues Flag UFS_VECTOR_FONTS.                                  */
  30. /**************************************************************************/
  31.  
  32. #if !defined( __XUFSL__)
  33.  
  34. #define __XUFSL__
  35.  
  36. /**************************************************************************/
  37. /* Kennung des xUfsl                                                      */
  38. /**************************************************************************/
  39. #define xUFS_ID           'xUFS'
  40.  
  41. /**************************************************************************/
  42. /* Rückgabewerte des xUfsl                                                */
  43. /**************************************************************************/
  44. #define UFS_RES_ERROR    -7       /* Auflösung kleiner als 640*400 Punkte */
  45. #define UFS_NO_HANDLE    -6       /* Kein Handle frei                     */
  46. #define UFS_NO_WINDOW    -5       /* Kein Fenster frei                    */
  47. #define UFS_NO_FONTS     -4       /* Keine Fonts geladen                  */
  48. #define UFS_NO_FONTSIZE  -3       /* Fontgröße nicht identifizierbar      */
  49. #define UFS_ACTIVE       -2       /* Fontselektor ist bereits aktiv       */
  50. #define UFS_ERROR        -1       /* Speichermangel o.ä.                  */
  51. #define UFS_STOP          0       /* <Abbruch> gewählt                    */
  52. #define UFS_OK            1       /* <Ok> gewählt                         */
  53.  
  54. /**************************************************************************/
  55. /* Dialogtypen --> dialtyp, s.u.                                          */
  56. /**************************************************************************/
  57. #define UFS_DIALOG        0       /* Modaler Dialog                       */
  58. #define UFS_WINDOW        1       /* Unmodaler Dialog                     */
  59.  
  60. /**************************************************************************/
  61. /* Flags für xUFSL --> flags, s.u.                                        */
  62. /**************************************************************************/
  63. #define UFS_SIZE_CHANGE   0x00000001  /* Schriftgröße änderbar?           */
  64. #define UFS_WIDTH_CHANGE  0x00000002  /* Schriftbreite änderbar?          */
  65. #define UFS_ATTR_CHANGE   0x00000004  /* Schriftattribute wählbar?        */
  66. #define UFS_SKEW_CHANGE   0x00000008  /* Schriftneigung änderbar?         */
  67. #define UFS_COLOR_CHANGE  0x00000010  /* Schriftfarbe änderbar?           */
  68. #define UFS_SIZE_DEFAULT  0x00000020  /* Schriftgröße "DEFAULT" erlaubt?  */
  69. #define UFS_ATTR_INVERS   0x00000040  /* Sonderattribut "invers" wählbar? */
  70. #define UFS_KERNING_INFO  0x00000080  /* Kerning-Informationen änderbar?  */
  71. #define UFS_GDOS_FONTS    0x00000100  /* GDOS-Fonts erlaubt?              */
  72. #define UFS_PROP_FONTS    0x00000200  /* Proportionalfonts erlaubt?       */
  73. #define UFS_BITMAP_FONTS  0x00000400  /* Nur Bitmap-Fonts erlaubt?        */
  74. #define UFS_VECTOR_FONTS  0x00000800  /* Nur Vektor-Fonts erlaubt?        */
  75. #define UFS_WIND_DIALOG   0x00001000  /* Dialog im Fenster?               */
  76. #define UFS_ERROR_MSG     0x00008000  /* Fehler als Alertbox anzeigen?    */
  77. #define UFS_INDIRECT      0x80000000L /* Wird eine XUFSL_LIST verwendet?  */
  78.  
  79. /**************************************************************************/
  80. /* UFSL-Initialisierungsfunktion, nur aus Kompatibilitätsgründen imple-   */
  81. /* mentiert. Liefert immer SUCCESS.                                       */
  82. /**************************************************************************/
  83. typedef int cdecl (*UFSL_INIT)(void);
  84.  
  85. /**************************************************************************/
  86. /* Standard-Fontselektor                                                  */
  87. /**************************************************************************/
  88. typedef int cdecl (*UFSL)(
  89.   int   handle,   /* Handle der VDI-Workstation                           */
  90.   int   fonts,    /* Gesamtzahl der geladenen Fonts                       */
  91.   int   flag,     /* 0=Alle Fonts, 1=Nur unproportionale Fonts            */
  92.   char  *info,    /* Infotext                                             */
  93.   int   *fontid,  /* Gewählte Font-ID                                     */
  94.   int   *fontsize /* Gewählte Font-Größe                                  */
  95. );
  96.  
  97. /**************************************************************************/
  98. /* Neuer Standard-Fontselektor ab UFSL 0.97                               */
  99. /**************************************************************************/
  100. typedef int cdecl (*NUFSL)(
  101.   int   handle,   /* Handle der VDI-Workstation                           */
  102.   int   flag,     /* 0=Alle Fonts, 1=Nur unproportionale Fonts            */
  103.   char  *info,    /* Infotext                                             */
  104.   int   *fontid,  /* Gewählte Font-ID                                     */
  105.   int   *fontsize /* Gewählte Font-Größe                                  */
  106. );
  107.  
  108. /**************************************************************************/
  109. /* Benutzerdefinierte Hilfefunktion, sofern gewünscht. Nur wenn diese     */
  110. /* ungleich NULL ist, wird der Hilfe-Knopf überhaupt aktiviert.           */
  111. /**************************************************************************/
  112. typedef int cdecl (*UFSL_HELP)(void);
  113.  
  114. /**************************************************************************/
  115. /* Redraw-Funktion                                                        */
  116. /* Die Redraw-Funktion wird NICHT bei folgenden Ereignissen aufgerufen:   */
  117. /* WM_TOPPED, WM_NEWTOP, WM_CLOSED.                                       */
  118. /**************************************************************************/
  119. typedef void cdecl (*MSGFUNC)(
  120.   int event,    /* Event                                                  */
  121.   int *msgbuff  /* Message-Puffer                                         */
  122. );
  123.  
  124. /**************************************************************************/
  125. /* Schriftbreiten-Informationsstruktur ('FontWidthInfo')                  */
  126. /* pair   Pair-Kerning (0=nein, 1=ja): "Zusammenschieben" bestimmter      */
  127. /*        Buchstabenpaare (z.B. "Fa", "Ve").                              */
  128. /* track  Art des Track-Kernings (0=ohne, 1=normal, 2=eng, 3=sehr eng):   */
  129. /*        Hiermit wird der generelle Abstand zwischen den Buchstaben be-  */
  130. /*        stimmt.                                                         */
  131. /* width  Schriftbreite (0..MAX_CHAR_WIDTH Punkte)                        */
  132. /**************************************************************************/
  133. #define MAX_CHAR_WIDTH  8191
  134.  
  135. typedef struct {
  136.   unsigned int  pair  : 1;
  137.   unsigned int  track : 2;
  138.   unsigned int  width : 13;
  139. } FW_INFO;
  140.  
  141. /**************************************************************************/
  142. /* Bei gesetztem UFS_INDIRECT-Bit wird statt in info ein Zeiger auf eine  */
  143. /* XUFSL_LIST übergeben. Die Anzahl der Einträge dieser Liste muß im Pa-  */
  144. /* rameter fontid übergeben werden.                                       */
  145. /**************************************************************************/
  146. typedef struct {
  147.   unsigned long flags;        /* Flags zur Funktionsüberwachung           */
  148.   char          *entry;       /* Popup-Eintrag, muß eindeutig sein!       */
  149.   int           fontid;       /* Voreingestellte/gewählte ID              */
  150.   int           fontsize;     /* Voreingestellte/gewählte Größe           */
  151.   FW_INFO       fontwidth;    /* Voreingestellte/gewählte Breite+Kerning  */
  152.   int           fontattr;     /* Voreingestellte/gewählte Attribute       */
  153.   int           fontcol;      /* Voreingestellte/gewählte Farbe           */
  154.   int           fontskew;     /* Voreingestellte/gewählte Neigung         */
  155. } XUFSL_LIST;
  156.  
  157. /**************************************************************************/
  158. /* Extended-Fontselektor                                                  */
  159. /**************************************************************************/
  160. typedef int cdecl (*XUFSL)(
  161.   int           handle,       /* Handle der VDI-Workstation               */
  162.   unsigned long flags,        /* Flags zur Funktionsüberwachung           */
  163.   char          *title,       /* Fenstertitel, Default: Copyright-Info    */
  164.   char          *info,        /* Fensterinfo, Default: 'Schriftauswahl'   */
  165.                               /* bzw. Zeiger auf eine XUFSL_LIST          */
  166.   int           smallid,      /* ID SMALL-Zeichensatz im xUFSL-Dialog     */
  167.   int           ibmid,        /* ID IBM-Zeichensatz im xUFSL-Dialog       */
  168.   int           *fontid,      /* Voreingestellte/gewählte ID              */
  169.                               /* bzw. Anzahl der Einträge der XUFSL_LIST  */
  170.   int           *fontsize,    /* Voreingestellte/gewählte Größe           */
  171.                               /* bzw. Aufsatzpunkt in der XUFSL_LIST      */
  172.   FW_INFO       *fontwidth,   /* Voreingestellte/gewählte Breite und      */
  173.                               /* Kerning-Informationen                    */
  174.   int           *fontattr,    /* Voreingestellte/gewählte Attribute       */
  175.   int           *fontcol,     /* Voreingestellte/gewählte Farbe           */
  176.   int           *fontskew     /* Voreingestellte/gewählte Neigung         */
  177. );
  178.  
  179. /**************************************************************************/
  180. /* Eigentliche xUFSL-Struktur                                             */
  181. /**************************************************************************/
  182. typedef struct {
  183.   unsigned long id;               /* Kennung des xUFSL (xUFS)             */
  184.   unsigned int  version;          /* Version (BCD-Format)                 */
  185.   unsigned int  dialtyp;          /* Dialogtyp                            */
  186.   UFSL_INIT     fontsel_init;     /* Initialisierungsfunktion (Dummy)     */
  187.   UFSL          fontsel_input;    /* Standard-Selektorfunktion            */
  188.   OBJECT        *helpbutton;      /* Hilfe-Knopf (BOXTEXT), maximale      */
  189.                                   /* Textlänge 9 Zeichen (OHNE Prüfung!). */
  190.   UFSL_HELP     helpfunc;         /* Eigene Hilfefunktion                 */
  191.   char          *examplestr;      /* Beispieltext für Fontdarstellung     */
  192.   MSGFUNC       msgfunc;          /* Redrawfunktion                       */
  193.   NUFSL         fontsel_exinput;  /* Neuer Standard-Selektor              */
  194.   XUFSL         font_selexinput;  /* Extended-Selektorfunktion            */
  195. } xUFSL_struct;
  196.  
  197. #endif
  198.