home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / QPROC.ZIP / QPSTD.C < prev    next >
C/C++ Source or Header  |  1990-11-19  |  5KB  |  142 lines

  1. /*****************************************************************/
  2. /**             Microsoft LAN Manager            **/
  3. /**           Copyright(c) Microsoft Corp., 1985-1990        **/
  4. /*****************************************************************/
  5. /****************************** Module Header ******************************\
  6.  
  7. Module Name: QPSTD.C
  8.  
  9. This module contains the code for printing a PM_Q_STD format spooler file
  10. (i.e. a GPI Metafile).
  11.  
  12. History:
  13.  07-Sep-88 [stevewo]  Created.
  14.  
  15. \***************************************************************************/
  16.  
  17. #define INCL_GPICONTROL
  18. #define INCL_GPITRANSFORMS
  19. #define INCL_GPIMETAFILES
  20. #define INCL_GPIREGIONS
  21. #define INCL_DEV
  22. #include "pmprint.h"
  23.  
  24. BOOL PASCAL SplQpStdPrintFile( pQProc, pszFileName )
  25. register PQPROCINST pQProc;
  26. PSZ pszFileName;
  27. {
  28.     BOOL result = FALSE;
  29.     HDC  hdcDisplay;
  30.     PSZ  devOpenData[ DRIVER_NAME+1 ];
  31.     LONG pmfOptions[ PMF_COLORREALIZABLE+1 ];
  32.     SIZEL ptSize;
  33.     HRGN Region;
  34.  
  35.     SplOutSem();
  36.     pQProc->hmf = NULL;
  37.     hdcDisplay = NULL;
  38.     if (OpenQPInputFile( pQProc, pszFileName, FALSE ) &&
  39.        (pQProc->hmf = (HMF)GpiLoadMetaFile( HABX, pszFileName ))) {
  40.         devOpenData[ ADDRESS ] = pQProc->pszPortName;
  41.         devOpenData[ DRIVER_NAME ] = pQProc->pszDriverName;
  42.         devOpenData[ DRIVER_DATA ] = (PSZ)pQProc->pDriverData;
  43.         pQProc->hInfodc = DevOpenDC( HABX, OD_INFO, "*", (LONG)DRIVER_DATA+1,
  44.                                 devOpenData, pQProc->hInfodc );
  45.  
  46.         ptSize.cx = 0;
  47.         ptSize.cy = 0;
  48.         if (pQProc->hps = GpiCreatePS( HABX, pQProc->hInfodc,
  49.                                          (PSIZEL)&ptSize,
  50.                                          PU_PELS | GPIA_ASSOC )) {
  51.             pmfOptions[ PMF_SEGBASE         ] = 0L;
  52.             pmfOptions[ PMF_LOADTYPE        ] = LT_ORIGINALVIEW;
  53.             pmfOptions[ PMF_RESOLVE         ] = RS_DEFAULT;
  54.             pmfOptions[ PMF_LCIDS           ] = LC_LOADDISC;
  55.             pmfOptions[ PMF_RESET           ] = RES_RESET;
  56.             pmfOptions[ PMF_SUPPRESS        ] = SUP_SUPPRESS;
  57.             pmfOptions[ PMF_COLORTABLES     ] = 0;
  58.             pmfOptions[ PMF_COLORREALIZABLE ] = 0;
  59.             GpiPlayMetaFile( pQProc->hps, pQProc->hmf,
  60.                              (LONG)PMF_SUPPRESS+1, pmfOptions,
  61.                              NULL, 0L, NULL );
  62.  
  63.             GpiAssociate( pQProc->hps, NULL );
  64.  
  65.             DevCloseDC( pQProc->hInfodc );        /* If any of this fails you
  66.                                                      are in deep shit. */
  67.  
  68.             OpenQPOutputDC(pQProc, ASSOCIATE);
  69.  
  70.             result = !pQProc->qparms.fTransform || SetViewMatrix( pQProc );
  71.  
  72.             }
  73.  
  74.         pmfOptions[ PMF_SEGBASE         ] = 0L;
  75.         pmfOptions[ PMF_LOADTYPE        ] = LT_ORIGINALVIEW;
  76.         pmfOptions[ PMF_RESOLVE         ] = RS_DEFAULT;
  77.         pmfOptions[ PMF_LCIDS           ] = LC_LOADDISC;
  78.         pmfOptions[ PMF_RESET           ] = RES_NORESET;
  79.         pmfOptions[ PMF_SUPPRESS        ] = SUP_NOSUPPRESS;
  80.         pmfOptions[ PMF_COLORTABLES     ] = CTAB_REPLACE;
  81.         pmfOptions[ PMF_COLORREALIZABLE ] = CREA_NOREALIZE;
  82.         pmfOptions[ PMF_DEFAULTS        ] = DDEF_LOADDISC;
  83.  
  84.         if (GpiPlayMetaFile( pQProc->hps, pQProc->hmf,
  85.                              (LONG)PMF_DEFAULTS+1, pmfOptions,
  86.                              NULL, 0L, NULL ) != GPI_OK)
  87.             if (pQProc->fsStatus & QP_ABORTED)
  88.                 result = FALSE;
  89.  
  90.         /* clear STOP_DRAW condition if job got aborted via other thread */
  91.         GpiSetStopDraw( pQProc->hps, SDW_OFF );
  92.  
  93.         DevEscape(pQProc->hdc, DEVESC_ENDDOC, 0L, (PBYTE)NULL,
  94.                   (PLONG)NULL, (PBYTE)NULL);
  95.  
  96.          if (pQProc->region) {
  97.             GpiSetClipRegion(pQProc->hps, pQProc->region, &Region);
  98.             GpiDestroyRegion(pQProc->hps,Region);
  99.          }
  100.         GpiAssociate( pQProc->hps, (HDC)0 );
  101.         }
  102.  
  103.     if (pQProc->hmf) {
  104.         GpiDeleteMetaFile( pQProc->hmf );
  105.         pQProc->hmf = NULL;
  106.         }
  107.  
  108.     if (pQProc->hps) {
  109.         GpiDestroyPS( pQProc->hps );
  110.         pQProc->hps = NULL;
  111.         }
  112.  
  113.     CloseQPOutputDC( pQProc, FALSE);
  114.     CloseQPInputFile( pQProc );
  115.  
  116.     if (!result)
  117.         SplPanic( "SplQpStdPrintFile failed for %0s", pszFileName, 0 );
  118.  
  119.     return( result );
  120. }
  121.  
  122.  
  123. /* SetViewMatrix
  124.  *
  125.  * in:  pQProc - -> qproc instance struct
  126.  * out: ok?
  127.  */
  128. BOOL SetViewMatrix( pQProc )
  129. register PQPROCINST pQProc;
  130. {
  131.     SIZEL ptSize;
  132.     RECTL ClipRectl, PageView;
  133.     POINTL  Centre,l_t_in_pels,shift_value;
  134.     BOOL Clip=FALSE;
  135.  
  136.     /*
  137.       Not Implemented
  138.     */
  139.  
  140.     return TRUE;
  141. }
  142.