NotificationMon.ƒ/Source/PrintLoop.c

#include "Printing.h"
 
void ShowPrintError(short err)
{
    asm
    {
        move.w err,d0
    }
    DebugStr("\pA printing error occured.");
    
    
}
 
void PrintDocument()
{
    THPrint     tpr;
    TPPrPort    printPort;
    short       err;
    TPrStatus   tprStat;
    
    tpr = NewHandle(sizeof(TPrint));
    if(!tpr)
        ShowPrintError(MemError());
    PrOpen();
    if(err = PrError())
    {
        ShowPrintError(err);
        goto exit;
    }
    if(!PrStlDialog(tpr))   goto exit;
    if(err = PrError())
    {
        ShowPrintError(err);
        goto exit;
    }
    if(!PrJobDialog(tpr))   goto exit;
    if(err = PrError())
    {
        ShowPrintError(err);
        goto exit;
    }
    printPort = PrOpenDoc(tpr, nil, nil);
    if(err = PrError())
    {
        ShowPrintError(err);
        goto exit;
    }
    PrOpenPage(printPort, nil);
    if(err = PrError())
    {
        ShowPrintError(err);
        goto exit;
    }
    DrawImage(printPort);
    PrClosePage(printPort);
    if(err = PrError())
    {
        ShowPrintError(err);
        goto exit;
    }
    PrCloseDoc(printPort);
    if(err = PrError())
    {
        ShowPrintError(err);
        goto exit;
    }
    if( ((**tpr).prJob.bJDocLoop == bSpoolLoop) && (!PrError()))
        PrPicFile( tpr, nil, nil, nil, &tprStat);
 
exit:
    PrClose();
    if(err = PrError())
    {
        ShowPrintError(err);
    }
}