Ignore:
Timestamp:
Aug 6, 2006, 5:11:51 PM (15 years ago)
Author:
Eugene Romanenko
Message:

basic printing, postscript and bitmap

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/SOURCE/gui/print.cpp

    r92 r93  
    6161}
    6262
     63#ifndef DEVESC_ERROR
     64#define DEVESC_ERROR        (-1L)
     65#endif
     66
    6367#define UNITS_MULTIPLIER    100
    6468#define STD_IMAGE_ZOOM      2.0
     
    267271
    268272
    269 
    270273bool LucidePrinting::doPsPrint( HAB lhab )
    271274{
     
    301304    strcat( tmpps, "TMPLUCID.PS" );
    302305
    303     BOOL rc = doc->exportToPostScript( ev, tmpps, psetup->pgfrom-1, psetup->pgto-1,
    304                                        pwidth, pheight, false, &abortPrinting );
     306    boolean rcexp = doc->exportToPostScript( ev, tmpps, psetup->pgfrom-1, psetup->pgto-1,
     307                                             pwidth, pheight, false, &abortPrinting );
    305308
    306309    if ( abortPrinting ) {
     
    308311        return true;
    309312    }
    310     if ( !rc ) {
     313    if ( !rcexp ) {
    311314        unlink( tmpps );
    312315        return false;
     
    317320    delete spooling_ps;
    318321
    319     // build a devopenstruct for the call to SplQmOpen
     322    // build a devopenstruct for the call to DevOpenDC
    320323    dos.pszLogAddress = psetup->QueueInfo.pszName;              // 1
    321324    strcpy( achDriverName, psetup->QueueInfo.pszDriverName );
     
    325328    dos.pszDataType   = "PM_Q_RAW";                             // 4
    326329
    327     HSPL hspl = SplQmOpen( "*", 4L, (PQMOPENDATA)&dos );
    328     if ( hspl == SPL_ERROR ) {
     330    HDC hdcPrinter = DevOpenDC( lhab, OD_QUEUED, "*", 4L, (PDEVOPENDATA)&dos, NULLHANDLE );
     331    if ( hdcPrinter == DEV_ERROR ) {
    329332        unlink( tmpps );
    330333        return false;
    331334    }
    332335
    333     rc = SplQmStartDoc( hspl, title );
    334     if ( !rc ) {
    335         SplQmAbort( hspl );
     336    // Issue STARTDOC to begin printing
     337    LONG rc = DevEscape( hdcPrinter, DEVESC_STARTDOC, strlen(title), (PBYTE)title, NULL, NULL );
     338    if ( rc == DEVESC_ERROR ) {
     339        DevCloseDC( hdcPrinter );
    336340        unlink( tmpps );
    337341        return false;
     
    340344    FILE *f = fopen( tmpps, "rb" );
    341345    if ( f == NULL ) {
    342         SplQmAbort( hspl );
     346        DevEscape( hdcPrinter, DEVESC_ABORTDOC, 0L, NULL, NULL, NULL );
     347        DevCloseDC( hdcPrinter );
    343348        unlink( tmpps );
    344349        return false;
     
    346351
    347352    bool splerr = false;
    348     char *pcl_prolog = "\x1b%-12345X@PJL JOB\n@PJL ENTER LANGUAGE = POSTSCRIPT \n";
    349     char *pcl_epilog = "\x1b%-12345X@PJL EOJ\n";
    350 
    351     if ( !( rc = SplQmWrite( hspl, strlen( pcl_prolog ), pcl_prolog ) ) ) {
    352         splerr = true;
    353     }
    354 
    355353    void *buf = malloc( PS_PRINT_BUF_SIZE );
    356354    int rd = 0;
    357     while ( rc && ( rd = fread( buf, 1, PS_PRINT_BUF_SIZE, f ) ) != 0 ) {
    358         rc = SplQmWrite( hspl, rd, buf );
    359         if ( !rc || abortPrinting ) {
     355    while ( ( rc != DEVESC_ERROR ) && ( rd = fread( buf, 1, PS_PRINT_BUF_SIZE, f ) ) != 0 )
     356    {
     357        rc = DevEscape( hdcPrinter, DEVESC_RAWDATA, rd, (char *)buf, NULL, NULL );
     358        if ( ( rc == DEVESC_ERROR ) || abortPrinting ) {
    360359            splerr = true;
    361360            break;
     
    366365    unlink( tmpps );
    367366
    368     if ( !splerr ) {
    369         if ( !( rc = SplQmWrite( hspl, strlen( pcl_epilog ), pcl_epilog ) ) ) {
    370             splerr = true;
    371         }
    372     }
    373 
    374     if ( splerr ) {
    375         SplQmAbort( hspl );
    376         if ( !abortPrinting ) {
    377             return false;
    378         }
    379     }
    380     else {
    381         SplQmEndDoc( hspl );
    382         SplQmClose( hspl );
     367    DevEscape( hdcPrinter, splerr ? DEVESC_ABORTDOC : DEVESC_ENDDOC,
     368               0L, NULL, NULL, NULL );
     369    DevCloseDC( hdcPrinter );
     370
     371    if ( splerr && !abortPrinting ) {
     372        return false;
    383373    }
    384374
    385375    return true;
    386376}
     377
    387378
    388379bool LucidePrinting::queryCurrentForm( HAB lhab, PHCINFO pcurForm )
Note: See TracChangeset for help on using the changeset viewer.