home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0400 / CCE_0406.ZIP / CCE_0406.PD / FAX_DEV.KIT / FAX_OUTP.DOC < prev    next >
Text File  |  1992-04-04  |  5KB  |  144 lines

  1.  
  2.  
  3.         Dokumentation des TeleOffice Output-Cookies
  4.         ===========================================
  5.             Stand 4.4.1992        Version 1.0
  6.             
  7. !    Änderungen genüber der Vorversion sind durch "!" gekennzeichnet            
  8.             
  9.     1. Konzept:
  10.     
  11.         Über den Output-Cookie von TeleOffice erhalten Applikationsprogramme
  12.         Zugriff eine Reihe von Funktionen, die eine bequeme und flexible
  13.         Ausgabe von Grafik und Text per Faxmodem erlauben.
  14.         Der Benutzer muß hierzu nur zu Beginn mit der TeleOffice Software die
  15.         Empfänger des Telefaxes angeben und kann dann mit seiner
  16.         Textverarbeitung oder einem DTP-Programm, sein Telefax erstellen. Dabei
  17.         kann ein Telefax aus dem Output beliebig vieler Programme bestehen, und
  18.         Text und Grafik gleichzeitig enthalten.
  19.         Wenn das Fax auf diese Weise fertiggestellt ist, wählt der Anwender den
  20.         Sendezeitpunkt für das Telfax aus, und der Vorgang ist abgeschlossen.
  21.         
  22.     2.     Output-Cookie + Output-Struktur
  23.         
  24.         Cookie-Name:    "FxOP"
  25.         Cookie-Value:    FAX_OUTPUT *fop;
  26.         
  27.  
  28.  
  29. typedef struct {
  30.                 int        version;        /* Version 1.00 -> 0x0100 */
  31.                 int        fax_ready;
  32.                 int        x_dpi;            /* X-Auflösung des Faxes    */
  33.                 int        y_dpi;            /* Y-Auflösung des Faxes    */
  34.                 long    page_height;    /* in mm */
  35.                 long    page_width;        /* in mm */
  36.                 int        tot_txtlines;    /* Seitenhöhe in Textzeilen */
  37.                 int        tot_pixlines;    /* Seitenhöhe in pixelzeilen */
  38.                 int        act_page;        /* aktuelle Seitennummer */
  39.                 int        (*init_app)(int new_page, int xres, int yres,
  40.                                     int page_len);
  41.                 void    (*exit_app)( void );
  42.                 int        (*bit_out)( void *bit_map,int width,int    height,
  43.                                     int word_width);
  44.                 int        (*txt_out)( char *string );
  45.                 int        (*lf)( void );
  46.                 int        (*ff)( void );
  47.                 int        (*page_break)( void );
  48.  
  49. !                int        cdecl (*Cinit_app)(int new_page, int xres, int yres,
  50. !                                           int page_len);
  51. !                int        cdecl (*Cbit_out)( void *bit_map,int width,int    height,
  52. !                                           int word_width);
  53. !                int        cdecl (*Ctxt_out)( char *string );
  54. !                int        cdecl (*Clf)( void );
  55. !                int        cdecl (*Cff)( void );
  56. !                int        cdecl (*Cpage_break)( void );
  57. !                                
  58. !                int        rsvd[20];
  59.                 /*
  60.                 *        die folgenden Daten sind zur internen Verwendung
  61.                 */
  62.                 void    (*init_syns)( char *syn_file );
  63.                 char    file_name[128];    /* Ausgabedatei */
  64.                 int        fh;                /* file handle */
  65.                 char    sig_string[128];
  66.                 int        page_empty;
  67.                 int        pix_line;
  68.                 int        txt_line;
  69.                 int        pages;
  70.                 long    max_bytes;
  71.             } FAX_OUTPUT;
  72.             
  73.              
  74.             
  75. !        Die Parameterübergabe und das Funktionsergebniss der über diese Struktur
  76. !        zur Verfügung gestellten Unterprogramme geschieht über Register, wie bei
  77. !        Pure C bzw. Turbo C. ( Interger D0..D2, Pointer A0..A1,Rest Stack )
  78. !!
  79. !!        Es sind sämliche Funktionen nun Ausserden mit Standard-C Stackübergabe
  80. !!        vorhanden.
  81. !!
  82. !!        Die Rückgabewerte befinden sich in Register D0, bei den cdecl Funktionen
  83. !!        dagegen auf dem Stack.
  84.  
  85.     3. Ausgabe als Telefax
  86.     
  87.         a.    wenn <fax_ready> == 0 hat der Benutzer noch keinen Empfänger
  88.             angeben. Weisen Sie ihn bitte darauf hin und brechen Sie den
  89.             Druckvorgang hier ab.
  90.             
  91.         b.    Entnehmen Sie aus den Elementen x_dpi und y_dpi die Auflösung des zu
  92.             erstellenden Telefaxes.
  93.             x_dpi ist bei den momentan gebräuchlichen Faxgeräten immer 196 Dpi.
  94. !            y_dpi ist entweder 196 dpi, wenn das Fax in Fein erstellt wird, oder
  95. !            98 dpi, wenn das Fax in Normaler Auflösung erstellt wird. Denken Sie
  96. !            bitte unbedingt, bei init_app die Y-Auflösung Ihrer Bitmap korrekt  
  97. !            zu übergeben, da Sie ansonsten u.U. verzerrte Telefaxe erzeugen.
  98.             
  99.         c.    Aufruf von init_app( ... ), wobei die Parameter folgende Bedeutung
  100.             haben:
  101.                 new_page==1:     Wenn die aktuelle Seite schon benutzt ist,
  102.                                 benutze die nächste.
  103.                 new_page==0:    Ausgabe auf aktueller Seite fortsetzen.
  104.                 xres:            Auflösung Ihrer Bitmap in x-Richtung (in dpi)
  105.                                 wenn xres==0 oder xres==x_dpi wird nicht
  106.                                 skaliert.
  107.                 yres:            wie xres.
  108.                 page_len:        hier kann die Seitenlänge eingestellt werden,
  109.                                 oder page_len==0 für keine Änderung.
  110.                                 (in Textzeilen a 32 pix_lines)
  111.                                 
  112.         d.    Aufruf von txt_out( ... )    
  113.                  string:            wird auf nächster Textposition ausgegeben.
  114.                     Bemerkung:    txt_out    führt keinen Papiervorschub aus, sondern
  115.                                 positioniert den Text auf die aktuelle
  116.                                 Grafikposition. Wenn nur Text ausgegeben werden
  117.                                 soll, muß nach jeder Textzeile ein lf( )
  118.                                 aufgerufen werden. 
  119.                                 Der interne Textbuffer wird ausgegeben, wenn 
  120.                                 (pixline % 32)==0.
  121.              
  122.         e.    Aufruf von bit_out( ... )
  123.         
  124.                 bit_map:        Zeiger auf die monochrome Bitmap (Word-aligned)
  125.                 width:            Breite der Bitmap in Pixeln
  126.                 height:            Höhe der Bitmap in Pixeln
  127.                 word_width:        offset von Zeile <n> zu <n+1> in 16-Bit Worten.
  128.                 
  129.  
  130.         f.    lf( )        
  131.                 führt einen Vorschub von einer Textzeile aus.
  132.         
  133.         g.    ff( )
  134.                 führt einen FormFeed aus. Die Seite ist damit abgeschlossen.                    
  135.                 
  136.         h.    page_break( )
  137.                 erzeugt einen Seitenumbruch ohne die Seite auf die angegebene
  138.                 Seitenlänge aufzufüllen.
  139.                 
  140.     4.    Return values
  141.     
  142.           0:    kein Fehler
  143.         <>0        Fehler aufgetreten
  144.