/* @(#)xfsl.h, Dirk Haun/Stefan Rogel/Christoph Zwerschke, 21.07.1995 * @(#)Aufruf eines systemweiten Fontselektors ber den Cookie 'xFSL' * * Revision 4 vom 21.07.1995 * */ #if !defined(__xFSL__) #define __xFSL__ #if !defined(__AES__) # include #endif #if !defined(__VDI__) # include #endif #define xFSL_REVISION 4 /******** verwendete Strukturen ******************************************/ /* Neuer Typ fr Fontgr”že in 1/65536 Punkt, gltig ab Speedo 4.0 * * typedef long fix31; */ /* Angabe der Fontgr”že, * wird ber ein Kontrollflag (s.u.) unterschieden */ union fsize { int size; /* Fontgr”že in Punkt */ fix31 size31; /* Fontgr”že in 1/65536 Punkt */ }; /* allgemeine Fontinfo-Struktur */ typedef struct { int fontid; /* ID des Fonts */ int fonttype; /* Typ des Fonts, siehe vqt_info() */ char *fontname; /* Name des Fonts, siehe vqt_name() */ union fsize fontsize; /* Fontgr”že in pt oder fix31 */ union fsize fontwidth; /* Breite in pt oder fix31 */ char trackkern; /* Track-Kerning, siehe vst_kern() */ char pairkern; /* Paar-Kerning, siehe vst_kern() */ int fontattr; /* Attribute, siehe vst_attributes() */ int fontskew; /* Neigung, siehe vst_skew() */ int fontcol; /* Farbe, siehe vst_color() */ int backcol; /* Text-Hintergrundfarbe */ int halign; /* horizontale Textausrichtung */ int valign; /* vertikale Textausrichtung */ int rotation; /* Textrotation in 1/10 Grad */ int validtype; /* Typ (V_CHAR_...) oder Mapping (MAP_...) */ int *validchars; /* ben”tigte Zeichen oder 0L */ } PFONTINFO; /* ein Eintrag im Popup */ typedef struct { char *entry; /* Text des Popup-Eintrags */ PFONTINFO *fontinfo; /* Zeiger auf Fontinfo-Struktur */ unsigned int fontflags; /* erlaubte Fontarten */ long funcflags; /* Funktionsflags, nur fr HuGo! */ } xFSL_PENTRY; /* xFSL-Parameter */ typedef struct { int par_size; /* Gr”že der xFSL_PAR-Struktur selbst */ int pfi_size; /* Gr”že der PFONTINFO-Struktur */ unsigned long control; /* Kontroll-Flags, s.u. */ const char *headline; /* šberschrift oder 0L */ const char *example; /* Beispieltext oder 0L */ const char *helptext; /* Text fr den Hilfe-Button oder 0L */ PFONTINFO *font; /* Zeiger auf Fontinfo, s.o. */ unsigned int fontflags; /* erlaubte Fontarten */ const char *poptext; /* Text vor dem Popup (nur Calvino) oder 0L */ int num_entries; /* Anzahl der Eintr„ge (0..n) */ int sel_entry; /* Selektierter Eintrag (0..n-1) */ xFSL_PENTRY *popup; /* Zeiger auf ein Popup oder 0L */ char *helpinfo; /* Rckgabe: Zeiger auf Hilfedatei & -seite */ } xFSL_PAR; /******** Definition der Schnittstellen-Funktionen ***********************/ /* * xFSL_INPUT xfsl_input - vereinfachter Aufruf * xFSL_INIT xfsl_init - Init-Aufruf : Dialog darstellen * xFSL_EVENT xfsl_event - Event-Aufruf: Hauptschleife * xFSL_EXIT xfsl_exit - Exit-Aufruf : Dialog abmelden * */ typedef int cdecl (*xFSL_INPUT) ( int vdihandle, /* Handle einer ge”ffneten VDI-Workstation */ unsigned int fontflags, /* Flags, welche Fonts angeboten werden */ const char *headline, /* šberschrift oder 0L (Default-Text) */ int *id, /* Rckgabe: ID des gew„hlten Fonts */ int *size /* Rckgabe: Gr”že des gew„hlten Fonts */ ); typedef int cdecl (*xFSL_INIT) ( int vdihandle, /* Handle einer ge”ffneten VDI-Workstation */ xFSL_PAR *xpar /* Struktur mit weiteren Eingabeparametern */ ); typedef int cdecl (*xFSL_EVENT) ( int xfsl_handle, /* Handle von xfsl_init() */ EVENT *event /* Pure-C-Event-Struktur */ ); typedef void cdecl (*xFSL_EXIT) ( int xfsl_handle /* Handle von xfsl_init() */ ); typedef long cdecl (*xFSL_INFO) ( void /* keine Parameter */ ); /******** xFSL-Struktur **************************************************/ /* Der Cookie 'xFSL' zeigt auf die folgende Struktur */ typedef struct { unsigned long xfsl; /* Magic 'xFSL' */ unsigned int revision; /* Revisionsnummer der Schnittstelle */ unsigned long product; /* Kennung des Fontselektors, z.B. 'CLVN' */ unsigned int version; /* Version des Fontselektors als BCD */ xFSL_INPUT xfsl_input; /* einfacher Aufruf */ xFSL_INIT xfsl_init; /* Init-Aufruf */ xFSL_EVENT xfsl_event; /* Event-Aufruf */ xFSL_EXIT xfsl_exit; /* Exit-Aufruf */ xFSL_INFO xfsl_info; /* Info-Aufruf (Features abfragen) */ } xFSL; /******** Flags **********************************************************/ /* Fontflags */ #define FF_SYSTEM 0x0001 /* Systemfont (zus„tzlich) anzeigen */ #define FF_MONOSPACED 0x0002 /* monospaced Fonts anzeigen */ #define FF_PROPORTIONAL 0x0004 /* prop. Fonts anzeigen */ #define FF_BITMAP 0x0008 /* alle Bitmapfonts anzeigen */ #define FF_SPD 0x0010 /* Speedofonts */ #define FF_TTF 0x0020 /* TrueType-Fonts */ #define FF_PFB 0x0040 /* Type-1-Fonts */ #define FF_CFN 0x0080 /* Calamus-Fonts (nicht implementiert!) */ #define FF_VECTOR (FF_SPD|FF_TTF|FF_PFB|FF_CFN) /* Vektorfonts anz. */ #define FF_ALL (FF_MONOSPACED|FF_PROPORTIONAL|FF_VECTOR|FF_BITMAP) #define FF_CHANGED 0x8000 /* Žnderung erfolgt (im Popup) */ #define FF_VEKTOR FF_VECTOR #define FF_MONO FF_MONOSPACED #define FF_PROP FF_PROPORTIONAL /* Kontroll-Flags (werden nicht alle von allen Selektoren untersttzt) */ #define CC_WINDOW 0x0001 /* Fontselektor als Fenster */ #define CC_APPMODAL 0x0002 /* Fontselektor ist applikations-modal */ #define CC_FIX31 0x0004 /* alle Gr”ženangaben in 1/65536 Point */ #define CC_FAKESTYLE 0x0008 /* Schnitte simulieren (nur f. Bitmapfonts) */ #define CC_CLOSER 0x0010 /* Fenster mit Closer, kein OK-Button */ #define CC_NOSIZE 0x0100 /* Gr”že nicht „ndern */ #define CC_NOCOLOR 0x0200 /* Farbe nicht „ndern */ #define CC_NOATTR 0x0400 /* Attribute nicht „ndern */ #define CC_NOWIDTH 0x0800 /* Breite nicht „ndern */ #define CC_NOKERN 0x1000 /* Kerning nicht „ndern */ #define CC_NOSKEW 0x2000 /* Skewing nicht „ndern */ #define CC_NOALIGN 0x4000 /* Ausrichtung nicht „ndern */ #define CC_NOROTATION 0x8000 /* Textrotation nicht „ndern */ #define CC_DFLTSIZE 0x10000 /* Schriftgr”že "Default" */ #define CC_INVSTYLE 0x20000 /* Attribut "Invers" */ /* horizontale Textausrichtung (wie bei vst_alignment) */ #define THA_LEFT 0 /* linksbndig */ #define THA_CENTER 1 /* zentriert */ #define THA_RIGHT 2 /* rechtsbndig */ /* vertikale Textausrichtung (_nicht_ wie bei vst_alignment!) */ #define TVA_BOTTOM 0 /* an der Text-Unterkante */ #define TVA_CENTER 1 /* vertikal zentriert */ #define TVA_TOP 2 /* an der Text-Oberkante */ /* Gruppen von erwnschten Zeichen im Font ('validtype' in PFONTINFO) */ #define V_CHAR_IND -1 /* "egal" */ #define V_CHAR_ASC -2 /* alle druckbaren ASCII-Zeichen (32-126) */ #define V_CHAR_PRT -3 /* alle druckbaren Zeichen (32-255) */ #define V_CHAR_ALL -4 /* wirklich alle Zeichen (0-255) */ /* Mapping (ebenfalls fr 'validtype' in PFONTINFO) */ #define MAP_DIRECT 0 /* "direktes" Mapping (alle Zeichen) */ #define MAP_ASCII 1 /* ASCII-Mapping, Bereich 0..255 (Default) */ /* Fonttypen (erweitertes vqt_name ab SpeedoGDOS 5.0c/NVDI 3) */ #define UNKNOWN_FONT 0x0000 /* Fonttyp unbekannt */ #define BITMAP_FONT 0x0001 /* Bitmapfont */ #define SPEEDO_FONT 0x0002 /* Speedofont */ #define TT_FONT 0x0004 /* TrueType-Font */ #define PFB_FONT 0x0008 /* Type-1-Font (Postscript) */ #define CFN_FONT 0x0010 /* Calamus-Font (nicht implementiert!) */ #define ANY_FONT 0x00FF /* als Maske (Hibyte ausmaskieren) */ /* Featureflags fr xfsl_info */ #define XF_SIZE 0x0001 /* Gr”žen„nderung m”glich */ #define XF_COLOR 0x0002 /* Farb„nderung m”glich */ #define XF_ATTR 0x0004 /* Attribut„nderung m”glich */ #define XF_WIDTH 0x0008 /* Breiten„nderung m”glich */ #define XF_KERN 0x0010 /* Kerning„nderung m”glich */ #define XF_SKEW 0x0020 /* Neigungs„nderung m”glich */ #define XF_ALIGN 0x0040 /* Žnderung der Ausrichtung m”glich */ #define XF_ROTATION 0x0080 /* Textrotation m”glich */ #define XF_FIX31 0x0100 /* fix31-Untersttzung */ #define XF_POPUP 0x0200 /* Popup-Untersttzung */ #define XF_DRAGDROP 0x0400 /* Drag&Drop-Untersttzung */ #define XF_MAPPING 0x0800 /* beherrscht Mapping */ /* Returncodes der xfsl_xxx-Aufrufe * (aufw„rtskompatibel zu den UFSL-Rckgabewerten [markiert mit 'U']) */ #define xFS_PARERROR -9 /* Parameterfehler, z.B. Aufruf nach Rev. 3 */ #define xFS_LOADERROR -8 /* Fehler beim Nachladen des Overlays */ #define xFS_RES_ERROR -7 /* Aufl”sung kleiner als 640*400 Punkte */ #define xFS_NO_HANDLE -6 /* Kein Handle frei */ #define xFS_NO_WINDOW -5 /* Kein Fenster frei */ #define xFS_NO_FONTS -4 /* Keine Fonts geladen U */ #define xFS_NO_FONTSIZE -3 /* Fontgr”že nicht identifizierbar U */ #define xFS_ACTIVE -2 /* Fontselektor ist bereits aktiv U */ #define xFS_ERROR -1 /* allgemeiner Fehler (Speichermangel) U */ #define xFS_STOP 0 /* gew„hlt U */ #define xFS_OK 1 /* gew„hlt U */ #define xFS_HELP 2 /* Hilfe-Button angew„hlt */ #define xFS_EVENT 3 /* AES-Event aufgetreten */ #define xFS_POPUP 4 /* das User-Popup wurde angew„hlt */ /* Schriftbreiten-Informationsstruktur, * wird nur fr das Font-Protokoll (Nachricht XFONT_CHANGED) ben”tigt */ typedef struct { unsigned int pair : 1; /* Pair-Kerning (0=nein, 1=ja) */ unsigned int track : 2; /* Tr.-K. (0=ohne,1=norm.,2=eng,3=sehr eng) */ unsigned int width : 13; /* Schriftbreite in pt (0..8191) */ } FW_INFO; #endif