home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0657.ZIP / CCE_0657.PD / TREIBER.H < prev    next >
Text File  |  1993-08-10  |  7KB  |  126 lines

  1. /*******************************************************************
  2.  *******************************************************************
  3.  ** Routinen aus Treiber.c (c)'93 m.pristovsek                    **
  4.  ** Diese Routinen sind in TREIBER.C und FAST_DVI.S definiert     **
  5.  *******************************************************************
  6.  *******************************************************************/
  7.  
  8.  
  9. /*******************************************************************
  10.  * DIE Arbeitsroutine im eigentlichen Modul (als Parametercheck!)  *
  11.  * Diese Routine ist druckerspezifisch                             *
  12.  *******************************************************************
  13.  * Sie gibt das Handle der Zwischendatei zurück, oder -1, wenn sie *
  14.  * selber für den Druck sorgt (wie beim SLM804 und JP350ws)        *
  15.  * Ist der Rückgabewert >0, dann wird diese Datei an die parallele *
  16.  * Schnittstelle geschickt.                                        *
  17.  *******************************************************************
  18.  * Man sollte immer testen, ob es u.U. mit Zwischendatei nicht     *
  19.  * schneller oder genauso schnell ist, denn dann kann man viel     *
  20.  * Arbeit sparen, man muß sich nicht mehr um die Ausgabe kümmern   *
  21.  * Die Breite einer Bitmap in Bytes erhält man durch:              *
  22.  *                    ((weite+15)/16)*2                            *
  23.  *******************************************************************
  24.  * GROSSE VARIABLEN AUSSERHALB ALLER FUNKTIONEN UND STATISCH       *
  25.  * DEKLARIEREN, SONST GIBT ES U.U. STACKÜBERLAUF!                  *
  26.  *******************************************************************/
  27. int    drucke( char *bitmap, long weite, long hoehe, long h_dpi, long v_dpi );
  28.  
  29.  
  30. /*******************************************************************
  31.  * Öffnet eine temporäre Datei mit der Endung "drucker_ext" zum    *
  32.  * Zwischenspeichern und liefert Handle zurück. (Fehler <0)        *
  33.  * Dieses Handle sollte die Funktion "drucke" (s.o.) zurückgeben.  *
  34.  *******************************************************************
  35.  * "drucker_ext": String mit druckerspezifische Endung             *
  36.  * Bei Epson9 z.B. "n9"                                            *
  37.  *******************************************************************
  38.  * Wird der Treiber zum Drucken in Datei aufgerufen, wird das      *
  39.  * Handle der angesprochenen Datei zurückgeliefert und die Daten   *
  40.  * an diese angehängt                                              *
  41.  *******************************************************************/
  42. int        get_tempfile( char *drucker_ext );
  43. /* 6.2.93 */
  44.  
  45.  
  46.  
  47. /*==================================================================*
  48.  " Folgende Routinen sind allgemein zur Eingrenzung des Bereiches,  "
  49.  " der gedruckt werden soll, interessant                            "
  50.  *==================================================================*/
  51.  
  52. /*******************************************************************
  53.  * Ist diese Zeile Leerzeile? (d.h. sind "offset" Bytes==0?)       *
  54.  *******************************************************************
  55.  * "ptr": Zeiger auf Bitmap            "offset":  Breite in Bytes  *
  56.  *******************************************************************/
  57. int    ist_leerzeile( char *ptr, long offset );
  58. /* 16.1.93 */
  59.  
  60.  
  61. /*******************************************************************
  62.  * Sind in den nächsten #next-Zeilen keine Zeichen? D.h. damit kann*
  63.  * man z.B den linken Rand bestimmen.                              *
  64.  *******************************************************************
  65.  * "ptr":  Zeiger auf Bitmap           "offset":  Breite in Bytes  *
  66.  * "next":  Anzahl zu testender Zeilen                             *
  67.  *******************************************************************/
  68. int    ist_next_leer( char *ptr, long offset, long next );
  69. /* 16.1.93 */
  70.  
  71.  
  72. /*******************************************************************
  73.  * Bitmap zeilenweise um 90 Grad drehen (in DREHE_90)              *
  74.  *******************************************************************
  75.  * Dabei ist "qweite" die Breite der Bitmap                        *
  76.  * und "zweite" die Höhe der (Bitmap+7)/8                          *
  77.  * ==> "ziel" muß mindestens "zweite"-Bytes groß sein!             *
  78.  *******************************************************************/
  79. void drehe_90( char *quelle, char *ziel, long qweite, long zweite, long x );
  80.  
  81.  
  82. /*******************************************************************
  83.  * Bitmap für Nadeln drehen (in BLOCK_BY)                          *
  84.  *******************************************************************
  85.  * ende:   Breite des Bereiches IN BYTES                           *
  86.  * offset: Weite einer Bitmapzeile                                 *
  87.  * modus:  Wieviel Bytes pro Zeile (9:1, 24:3, Jet:1-6)            *
  88.  *******************************************************************/
  89. void block_it( char *dest, char *src, short ende, long offset, short mode );
  90. /* 10.8.93 */
  91.  
  92.  
  93. /*==================================================================*
  94.  " Folgende Routinen sind nur bei eigener Druckausgabe interressant "
  95.  " Als Beispiel siehe HP.C, denn dort wird für das Drucken in eine  "
  96.  " Datei extra eine andere Routine aufgerufen: Nur geht es so halt  "
  97.  " VIEL schneller                                                   "
  98.  *==================================================================*/
  99.  
  100. /*******************************************************************
  101.  * Versucht Drucker zu Öffnen und die Semaphore 'PRN:' zu bekommen *
  102.  * Leider kann man die Datei "U:\dev\prn" nicht verriegeln; deshalb*
  103.  * wurde die Semaphore eingeführt.                                 *
  104.  *******************************************************************
  105.  * Der Rückgabewert ist >0 (das Handle der Druckerdatei) oder im   *
  106.  * Fehlerfall negativ                                              *
  107.  *******************************************************************/
  108. int    open_printer( void );
  109. /* 6.2.93 */
  110.  
  111.  
  112. /*******************************************************************
  113.  * Gibt die "len" Daten ab "blk" an Spooler weiter (umgeht GEMDOS) *
  114.  * Gleichzeitig sorgt diese Funktion für das Blinken *+*+*+ ...    *
  115.  *******************************************************************/
  116. long    print_block( long len, char *blk );
  117. /* 22.1.93 */
  118.  
  119.  
  120. /*******************************************************************
  121.  * Leert Spoolerspeicher, MUSS vor dem Druckende aufgerufen werden!*
  122.  *******************************************************************/
  123. void    flush_block( void );
  124. /* 23.1.93 */
  125.  
  126.