home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / tex / tools / dvi / vdicp.c < prev   
Encoding:
C/C++ Source or Header  |  1994-09-22  |  2.1 KB  |  86 lines

  1. /*********************************************************************
  2. **** VDI-Treiber, gibt Seite über GDOS aus, sicher die langsamste ****
  3. **** Art, dafür gehts es mit jedem GDOS-Drucker, der Bitimages    ****
  4. **** ausgeben kann.                                                                                                ****
  5. *********************************************************************/
  6.  
  7.  
  8. #include <portab.h>
  9. #include <atarierr.h>
  10.  
  11. #include <vdi.h>
  12. #include <stdlib.h>
  13. #include <string.h>
  14.  
  15. #include "mintbind.h"
  16. #include "treiber.h"
  17.  
  18.  
  19. /* Schreibe in DVI-Datei */
  20. WORD    drucke( UBYTE *p, LONG weite, LONG hoehe, LONG h_dpi, LONG v_dpi )
  21. {
  22.     WORD            i, work_in[12], work[56];
  23.     LONG            addr;
  24.     MFDB            bitmap, drucker;
  25.  
  26.     bitmap.fd_addr = p;
  27.     bitmap.fd_w = (int)weite;
  28.     bitmap.fd_h = (int)hoehe;
  29.     bitmap.fd_wdwidth = (int)(weite+15)>>4;
  30.     bitmap.fd_stand = 1;
  31.     bitmap.fd_nplanes = 1;
  32.  
  33.     if(  vq_gdos()==0  )
  34.     {
  35.         Cconws( "\007\033HKein GDOS!" );
  36.         return -1;
  37.     }
  38.     /* Und nun die Ausgabe auf Gerät 21 */
  39.   for(  i=1;  i<10;  i++  )
  40.     work_in[i] = 1;
  41.   work_in[10] = 2; /* Raster-Koordinaten! */
  42.   work_in[0] = i = 21;
  43.     v_opnwk( work_in, &i, work );
  44.     addr = _VDIParBlk.contrl[0];
  45.     addr = (addr<<16)|_VDIParBlk.contrl[1];
  46.     drucker.fd_addr = (char *)addr;
  47.     drucker.fd_w = work[0];
  48.     drucker.fd_h = work[1];
  49.     drucker.fd_wdwidth = (work[0]+15)>>4;
  50.     drucker.fd_stand = 1;
  51.     drucker.fd_nplanes = 1;
  52.  
  53.     if(  i>0  )
  54.     {
  55.         if(  addr!=0x00010000L  &&  addr>2048  )
  56.         {
  57.             Cconws( "\033H*" );
  58.             work_in[0] = work_in[1] = 0;
  59.             work_in[4] = work_in[5] = 0;
  60.             work_in[2] = work_in[6] = (short)weite;
  61.             if(  weite>drucker.fd_w  )
  62.                 work_in[2] = work_in[6] = drucker.fd_w;
  63.             work_in[3] = work_in[7] = (short)hoehe;
  64.             if(  hoehe>drucker.fd_h  )
  65.                 work_in[3] = work_in[7] = drucker.fd_h;
  66.             work[0] = 0;    /* Farben */
  67.             work[1] = 1;
  68.             Cconws( "\033H+" );
  69.             vrt_cpyfm( i, MD_REPLACE, work_in, &bitmap, &drucker, work );
  70.             Cconws( "\033H*" );
  71.             v_updwk( i );
  72.         }
  73.         else
  74.             Cconws( "\007\033HZu altes GDOS!" );
  75.         v_clswk( i );
  76.     }
  77.     else
  78.         Cconws( "\007\033HGDOS-Fehler!" );
  79.  
  80.     /* Sollte immer gut gehen! (d.h. kein File zum Drucken!) */
  81.     return 0;
  82. }
  83. /* 22.1.93 */
  84.  
  85.  
  86.