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 / FDDKCOMP.C < prev    next >
C/C++ Source or Header  |  1992-03-03  |  3KB  |  167 lines

  1. /*
  2. *            FILE:    FDDKCOMP.C
  3. *
  4. *    Ein Source, der die Funktionen des FDDK von Tim Mehrvarz
  5. *    auf diejenigen des FAX_OUT Cookies von TeleOffice abbildet.
  6. *
  7. *    Wenn Sie bereits einen Treiber für QFax entwickelt haben,
  8. *    so compilieren Sie dieses File und linken es an Stelle von
  9. *    QFAXDRV.O mit Ihren Sourcen, fertig ist ein Treiber für
  10. *    TeleOffice (der allerdings nicht alle Features nutzt)
  11. *
  12. *    Version  1.0    vom        03.03.1992
  13. *
  14. * Copyright (C) 1992    Jens Briesofsky
  15. * All rights reserved.
  16. *
  17. * This software may be freely copied, modified, and redistributed
  18. * provided that this copyright notice is preserved on all copies.
  19. *
  20. * You may not distribute this software, in whole or in part, as part of
  21. * any commercial product without the express consent of 
  22. *
  23. *        TKR GmbH & Co. KG
  24. *        Stadtparkweg 2
  25. *      WD-2300 Kiel 1
  26. *
  27. * There is no warranty or other guarantee of fitness of this software
  28. * for any purpose.  It is provided solely "as is".
  29. *
  30. */
  31.  
  32. #include <tos.h>
  33. #include "fax_out.h"
  34.  
  35. #define NULL    (void *)0L
  36.  
  37. /*
  38. *    qfax_init
  39. *
  40. *    --> void
  41. *    <--  0:        Alles OK
  42. *        -1:        FAX_OUPUT-Cookie nicht gefunden
  43. *        -2:        Faxausgabe nicht initialisiert
  44. *    
  45. *    Im Fehlerfalle hat der Rückgabewert zwar eine andere Bedeutung
  46. *    als bei qfax, aber Ausgabe ist in jedem Fall nur bei retval==0
  47. *    möglich.
  48. */
  49.  
  50. static FAX_OUTPUT *fxout=NULL;
  51.  
  52. int qfax_init( void )
  53. {
  54.     long oldsp=0L;
  55.     struct cookie *cptr;
  56.  
  57.     if( Super((void *)1L)==0 ) oldsp = Super( NULL );
  58.     cptr = *(struct cookie **)0x5a0;
  59.     if( oldsp ) Super( (void *)oldsp );
  60.     fxout=NULL;
  61.     if( cptr == NULL ) return -1;    /* altes TOS ohne Cookie Jar! */
  62.     while( cptr->c ){
  63.         if( cptr->c == FAX_COOKIE ) {        /* gefunden */
  64.             fxout = (FAX_OUTPUT *)cptr->v;
  65.             if( fxout->fax_ready==1 ) return 0;
  66.             fxout=NULL;
  67.             return -2;
  68.         }
  69.         cptr++;
  70.     }
  71.     return -1;
  72. }
  73.  
  74. /*
  75. *    qfax_open
  76. *
  77. *    -->    Dateiname (wird bei TeleOffice ignoriert)
  78. *    <--        0:    Alles Ok
  79. *           -3:    Dateifehler ( QFax: ERR_CREATE )
  80. *
  81. *    diese Funktion initialisiert den Output-Driver
  82. */
  83.     
  84. #pragma warn-par
  85. int qfax_open( char *file_name )
  86. {
  87.     int rv;
  88.     if( fxout==NULL ) return -3;
  89.     rv = (*fxout->init_app)(1,196,196,0);    /* neue Seite,keine Skalierung,
  90.                                                Seitenlänge nicht ändern */
  91.     return rv?-3:0;
  92. }
  93. #pragma warn+par
  94.  
  95. /*
  96. *    qfax_pix
  97. *
  98. *    --> Bit-Buffer, Zeilenrepeat
  99. *    <--        0:    Alles OK
  100. *           -4:    Dateifehler (QFax: ERR_WRITE)
  101. */
  102.  
  103. int qfax_pix( unsigned char *pix, int repeat )
  104. {
  105.     int rv;
  106.     if( fxout==NULL ) return -4;
  107.     while( repeat-- ) {
  108.         rv = (*fxout->bit_out)((int *)pix,1728,1,108);
  109.         if( rv ) return -4;
  110.     }
  111.     return 0;
  112. }
  113.  
  114. /*
  115. *    qfax_text
  116. *
  117. *    --> Nullterminierter String
  118. *    <--        0:    Alles OK
  119. *           -4:    Dateifehler (QFax: ERR_WRITE)
  120. */
  121.  
  122. int qfax_text( char *string )
  123. {
  124.     int rv;
  125.  
  126.     if( fxout==NULL ) return -4;
  127.     rv = (*fxout->txt_out)( string );
  128.     /* 
  129.     *    Hier muß jetzt noch ein LineFeed aufgerufen werden,
  130.     *    da bei Teleoffice die Möglichkeit besteht, Text und Grafik zu
  131.     *    überlagern (siehe Doc.)
  132.     */
  133.     rv |= (*fxout->lf)( );
  134.     return rv ? -4 : 0;
  135. }
  136.  
  137. /*
  138. *    qfax_close
  139. *    
  140. *    --> nix
  141. *    <--     0:    Alles Ok
  142. *         <> 0:  Fehler
  143. */
  144.  
  145. int qfax_close( void )
  146. {
  147.     int rv;
  148.     if( fxout==NULL ) return -4;
  149.     rv = (*fxout->page_break)( );
  150.     (*fxout->exit_app)( );
  151.     return rv;
  152. }
  153.  
  154. /*
  155. *    qfax_clr
  156. *
  157. *    Gibts bei TeleOffice nicht.
  158. *    --> nix
  159. *    <-- 0 (OK)
  160. */
  161.  
  162. int qfax_clr( void )
  163. {
  164.     return 0;
  165. }
  166.  
  167.