home *** CD-ROM | disk | FTP | other *** search
-
-
- Dokumentation des TeleOffice Output-Cookies
- ===========================================
- Stand 4.4.1992 Version 1.0
-
- ! Änderungen genüber der Vorversion sind durch "!" gekennzeichnet
-
- 1. Konzept:
-
- Über den Output-Cookie von TeleOffice erhalten Applikationsprogramme
- Zugriff eine Reihe von Funktionen, die eine bequeme und flexible
- Ausgabe von Grafik und Text per Faxmodem erlauben.
- Der Benutzer muß hierzu nur zu Beginn mit der TeleOffice Software die
- Empfänger des Telefaxes angeben und kann dann mit seiner
- Textverarbeitung oder einem DTP-Programm, sein Telefax erstellen. Dabei
- kann ein Telefax aus dem Output beliebig vieler Programme bestehen, und
- Text und Grafik gleichzeitig enthalten.
- Wenn das Fax auf diese Weise fertiggestellt ist, wählt der Anwender den
- Sendezeitpunkt für das Telfax aus, und der Vorgang ist abgeschlossen.
-
- 2. Output-Cookie + Output-Struktur
-
- Cookie-Name: "FxOP"
- Cookie-Value: FAX_OUTPUT *fop;
-
-
-
- typedef struct {
- int version; /* Version 1.00 -> 0x0100 */
- int fax_ready;
- int x_dpi; /* X-Auflösung des Faxes */
- int y_dpi; /* Y-Auflösung des Faxes */
- long page_height; /* in mm */
- long page_width; /* in mm */
- int tot_txtlines; /* Seitenhöhe in Textzeilen */
- int tot_pixlines; /* Seitenhöhe in pixelzeilen */
- int act_page; /* aktuelle Seitennummer */
- int (*init_app)(int new_page, int xres, int yres,
- int page_len);
- void (*exit_app)( void );
- int (*bit_out)( void *bit_map,int width,int height,
- int word_width);
- int (*txt_out)( char *string );
- int (*lf)( void );
- int (*ff)( void );
- int (*page_break)( void );
-
- ! int cdecl (*Cinit_app)(int new_page, int xres, int yres,
- ! int page_len);
- ! int cdecl (*Cbit_out)( void *bit_map,int width,int height,
- ! int word_width);
- ! int cdecl (*Ctxt_out)( char *string );
- ! int cdecl (*Clf)( void );
- ! int cdecl (*Cff)( void );
- ! int cdecl (*Cpage_break)( void );
- !
- ! int rsvd[20];
- /*
- * die folgenden Daten sind zur internen Verwendung
- */
- void (*init_syns)( char *syn_file );
- char file_name[128]; /* Ausgabedatei */
- int fh; /* file handle */
- char sig_string[128];
- int page_empty;
- int pix_line;
- int txt_line;
- int pages;
- long max_bytes;
- } FAX_OUTPUT;
-
-
-
- ! Die Parameterübergabe und das Funktionsergebniss der über diese Struktur
- ! zur Verfügung gestellten Unterprogramme geschieht über Register, wie bei
- ! Pure C bzw. Turbo C. ( Interger D0..D2, Pointer A0..A1,Rest Stack )
- !!
- !! Es sind sämliche Funktionen nun Ausserden mit Standard-C Stackübergabe
- !! vorhanden.
- !!
- !! Die Rückgabewerte befinden sich in Register D0, bei den cdecl Funktionen
- !! dagegen auf dem Stack.
-
- 3. Ausgabe als Telefax
-
- a. wenn <fax_ready> == 0 hat der Benutzer noch keinen Empfänger
- angeben. Weisen Sie ihn bitte darauf hin und brechen Sie den
- Druckvorgang hier ab.
-
- b. Entnehmen Sie aus den Elementen x_dpi und y_dpi die Auflösung des zu
- erstellenden Telefaxes.
- x_dpi ist bei den momentan gebräuchlichen Faxgeräten immer 196 Dpi.
- ! y_dpi ist entweder 196 dpi, wenn das Fax in Fein erstellt wird, oder
- ! 98 dpi, wenn das Fax in Normaler Auflösung erstellt wird. Denken Sie
- ! bitte unbedingt, bei init_app die Y-Auflösung Ihrer Bitmap korrekt
- ! zu übergeben, da Sie ansonsten u.U. verzerrte Telefaxe erzeugen.
-
- c. Aufruf von init_app( ... ), wobei die Parameter folgende Bedeutung
- haben:
- new_page==1: Wenn die aktuelle Seite schon benutzt ist,
- benutze die nächste.
- new_page==0: Ausgabe auf aktueller Seite fortsetzen.
- xres: Auflösung Ihrer Bitmap in x-Richtung (in dpi)
- wenn xres==0 oder xres==x_dpi wird nicht
- skaliert.
- yres: wie xres.
- page_len: hier kann die Seitenlänge eingestellt werden,
- oder page_len==0 für keine Änderung.
- (in Textzeilen a 32 pix_lines)
-
- d. Aufruf von txt_out( ... )
- string: wird auf nächster Textposition ausgegeben.
- Bemerkung: txt_out führt keinen Papiervorschub aus, sondern
- positioniert den Text auf die aktuelle
- Grafikposition. Wenn nur Text ausgegeben werden
- soll, muß nach jeder Textzeile ein lf( )
- aufgerufen werden.
- Der interne Textbuffer wird ausgegeben, wenn
- (pixline % 32)==0.
-
- e. Aufruf von bit_out( ... )
-
- bit_map: Zeiger auf die monochrome Bitmap (Word-aligned)
- width: Breite der Bitmap in Pixeln
- height: Höhe der Bitmap in Pixeln
- word_width: offset von Zeile <n> zu <n+1> in 16-Bit Worten.
-
-
- f. lf( )
- führt einen Vorschub von einer Textzeile aus.
-
- g. ff( )
- führt einen FormFeed aus. Die Seite ist damit abgeschlossen.
-
- h. page_break( )
- erzeugt einen Seitenumbruch ohne die Seite auf die angegebene
- Seitenlänge aufzufüllen.
-
- 4. Return values
-
- 0: kein Fehler
- <>0 Fehler aufgetreten
-