bool wxMacCarbonPrinterDC::StartDoc( wxPrinterDC* dc , const wxString& WXUNUSED(message) ) { if ( m_err ) return false ; wxMacCarbonPrintData *native = (wxMacCarbonPrintData*) dc->GetPrintData().GetNativeData() ; #if wxMAC_USE_CORE_GRAPHICS { CFStringRef s[1] = { kPMGraphicsContextCoreGraphics }; CFArrayRef graphicsContextsArray = CFArrayCreate(NULL, (const void**)s, 1, &kCFTypeArrayCallBacks); PMSessionSetDocumentFormatGeneration(native->m_macPrintSession, kPMDocumentFormatPDF, graphicsContextsArray, NULL); CFRelease(graphicsContextsArray); } #endif m_err = PMSessionBeginDocument(native->m_macPrintSession, native->m_macPrintSettings, native->m_macPageFormat); if ( m_err != noErr ) return false; PMRect rPage; m_err = PMGetAdjustedPageRect(native->m_macPageFormat, &rPage); if ( m_err != noErr ) return false; m_maxX = (wxCoord)(rPage.right - rPage.left); m_maxY = (wxCoord)(rPage.bottom - rPage.top); return true ; }
wxMacCarbonPrinterDC::wxMacCarbonPrinterDC( wxPrintData* data ) { #if !wxMAC_USE_CORE_GRAPHICS ::GetPort( & m_macPrintFormerPort ) ; #endif m_err = noErr ; wxMacCarbonPrintData *native = (wxMacCarbonPrintData*) data->GetNativeData() ; PMRect rPage; m_err = PMGetAdjustedPageRect(native->m_macPageFormat, &rPage); if ( m_err != noErr ) return; m_maxX = wxCoord(rPage.right - rPage.left) ; m_maxY = wxCoord(rPage.bottom - rPage.top); PMResolution res; #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 PMPrinter printer; PMSessionGetCurrentPrinter(native->m_macPrintSession, &printer); PMPrinterGetOutputResolution( printer, native->m_macPrintSettings, &res) ; #else m_err = PMGetResolution((PMPageFormat) (native->m_macPageFormat), &res); #endif m_ppi = wxSize(int(res.hRes), int(res.vRes)); }
wxMacCarbonPrinterDC::wxMacCarbonPrinterDC( wxPrintData* data ) { m_err = noErr ; wxOSXPrintData *native = (wxOSXPrintData*) data->GetNativeData() ; PMRect rPage; m_err = PMGetAdjustedPageRect(native->GetPageFormat(), &rPage); if ( m_err != noErr ) return; m_maxX = wxCoord(rPage.right - rPage.left) ; m_maxY = wxCoord(rPage.bottom - rPage.top); PMResolution res; PMPrinter printer; m_err = PMSessionGetCurrentPrinter(native->GetPrintSession(), &printer); if ( m_err == noErr ) { m_err = PMPrinterGetOutputResolution( printer, native->GetPrintSettings(), &res) ; if ( m_err == -9589 /* kPMKeyNotFound */ ) { m_err = noErr ; res.hRes = res.vRes = 300; } } else { res.hRes = res.vRes = 300; } m_maxX = wxCoord((double)m_maxX * res.hRes / 72.0); m_maxY = wxCoord((double)m_maxY * res.vRes / 72.0); m_ppi = wxSize(int(res.hRes), int(res.vRes)); }
bool wxMacCarbonPrinterDC::StartDoc( wxPrinterDC* dc , const wxString& message ) { if ( m_err ) return false ; wxPrinterDCImpl *impl = (wxPrinterDCImpl*) dc->GetImpl(); wxOSXPrintData *native = (wxOSXPrintData*) impl->GetPrintData().GetNativeData() ; PMPrintSettingsSetJobName(native->GetPrintSettings(), wxCFStringRef(message)); m_err = PMSessionBeginCGDocumentNoDialog(native->GetPrintSession(), native->GetPrintSettings(), native->GetPageFormat()); if ( m_err != noErr ) return false; PMRect rPage; m_err = PMGetAdjustedPageRect(native->GetPageFormat(), &rPage); if ( m_err != noErr ) return false ; m_maxX = wxCoord(rPage.right - rPage.left) ; m_maxY = wxCoord(rPage.bottom - rPage.top); PMResolution res; PMPrinter printer; m_err = PMSessionGetCurrentPrinter(native->GetPrintSession(), &printer); if (m_err == noErr) { #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 if ( PMPrinterGetOutputResolution != NULL ) { m_err = PMPrinterGetOutputResolution( printer, native->GetPrintSettings(), &res) ; if ( m_err == -9589 /* kPMKeyNotFound */ ) { m_err = noErr ; res.hRes = res.vRes = 300; } } else #endif { #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 if ( PMPrinterGetPrinterResolution(printer, kPMCurrentValue, &res) != noErr ) { res.hRes = res.vRes = 300; } #endif } } m_maxX = wxCoord((double)m_maxX * res.hRes / 72.0); m_maxY = wxCoord((double)m_maxY * res.vRes / 72.0); m_ppi = wxSize(int(res.hRes), int(res.vRes)); return true ; }
void wxMacCarbonPrinterDC::StartPage( wxPrinterDC* dc ) { if ( m_err ) return ; wxMacCarbonPrintData *native = (wxMacCarbonPrintData*) dc->GetPrintData().GetNativeData() ; m_err = PMSessionBeginPage(native->m_macPrintSession, native->m_macPageFormat, nil); #if wxMAC_USE_CORE_GRAPHICS CGContextRef pageContext; #endif if ( m_err == noErr ) { #if wxMAC_USE_CORE_GRAPHICS m_err = PMSessionGetGraphicsContext(native->m_macPrintSession, kPMGraphicsContextCoreGraphics, (void**) &pageContext ); dc->MacSetCGContext(pageContext) ; #else m_err = PMSessionGetGraphicsContext(native->m_macPrintSession, kPMGraphicsContextQuickdraw, (void**) &dc->m_macPort ); #endif } if ( m_err != noErr ) { PMSessionEndPage(native->m_macPrintSession); PMSessionEndDocument(native->m_macPrintSession); } else { PMRect rPage; m_err = PMGetAdjustedPageRect(native->m_macPageFormat, &rPage); if ( !m_err ) { #if wxMAC_USE_CORE_GRAPHICS PMRect paperRect ; PMGetAdjustedPaperRect( native->m_macPageFormat , &paperRect ) ; CGContextTranslateCTM( pageContext , -paperRect.left , -paperRect.top + ( rPage.bottom - rPage.top ) ) ; CGContextScaleCTM( pageContext , 1 , -1 ) ; CGContextSaveGState( pageContext ) ; #else dc->m_macLocalOrigin.x = (int) rPage.left; dc->m_macLocalOrigin.y = (int) rPage.top; #endif } // since this is a non-critical error, we set the flag back m_err = noErr ; } }
//----------------------------------------------------------------------------------------------------------------------- static OSStatus DetermineNumberOfPagesInDoc(PMPageFormat pageFormat, UInt32* numPages) { PMRect pageRect; OSStatus status = PMGetAdjustedPageRect(pageFormat, &pageRect); check(status == noErr); *numPages = 1; // will do better some time in the future ... return status; } // DetermineNumberOfPagesinDoc
wxMacCarbonPrinterDC::wxMacCarbonPrinterDC( wxPrintData* data ) { m_err = noErr ; wxOSXPrintData *native = (wxOSXPrintData*) data->GetNativeData() ; PMRect rPage; m_err = PMGetAdjustedPageRect(native->GetPageFormat(), &rPage); if ( m_err != noErr ) return; m_maxX = wxCoord(rPage.right - rPage.left) ; m_maxY = wxCoord(rPage.bottom - rPage.top); PMResolution res; PMPrinter printer; m_err = PMSessionGetCurrentPrinter(native->GetPrintSession(), &printer); if ( m_err == noErr ) { #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 if ( PMPrinterGetOutputResolution != NULL ) { { m_err = PMPrinterGetOutputResolution( printer, native->GetPrintSettings(), &res) ; if ( m_err == -9589 /* kPMKeyNotFound */ ) { m_err = noErr ; res.hRes = res.vRes = 300; } } } else #endif { #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 m_err = PMPrinterGetPrinterResolution(printer, kPMCurrentValue, &res); if ( m_err != noErr ) { m_err = PMGetResolution((PMPageFormat) (native->GetPageFormat()), &res); } #endif } } else { res.hRes = res.vRes = 300; } m_maxX = wxCoord((double)m_maxX * res.hRes / 72.0); m_maxY = wxCoord((double)m_maxY * res.vRes / 72.0); m_ppi = wxSize(int(res.hRes), int(res.vRes)); }
static inline int qt_get_PDMWidth(PMPageFormat pformat, bool fullPage) { int val = 0; PMRect r; if (fullPage) { if (PMGetAdjustedPaperRect(pformat, &r) == noErr) val = (int)(r.right - r.left); } else { if (PMGetAdjustedPageRect(pformat, &r) == noErr) val = (int)(r.right - r.left); } return val; }
static inline int qt_get_PDMHeight(PMPageFormat pformat, bool fullPage) { int val = 0; PMRect r; if (fullPage) { if (PMGetAdjustedPaperRect(pformat, &r) == noErr) val = (int)(r.bottom - r.top); } else { if (PMGetAdjustedPageRect(pformat, &r) == noErr) val = (int)(r.bottom - r.top); } return val; }
static inline int qt_get_PDMHeight(PMPageFormat pformat, bool fullPage, const PMResolution &resolution) { int val = 0; PMRect r; qreal vRatio = resolution.vRes / 72; if (fullPage) { if (PMGetAdjustedPaperRect(pformat, &r) == noErr) val = qRound((r.bottom - r.top) * vRatio); } else { if (PMGetAdjustedPageRect(pformat, &r) == noErr) val = qRound((r.bottom - r.top) * vRatio); } return val; }
static inline int qt_get_PDMWidth(PMPageFormat pformat, bool fullPage, const PMResolution &resolution) { int val = 0; PMRect r; qreal hRatio = resolution.hRes / 72; if (fullPage) { if (PMGetAdjustedPaperRect(pformat, &r) == noErr) val = qRound((r.right - r.left) * hRatio); } else { if (PMGetAdjustedPageRect(pformat, &r) == noErr) val = qRound((r.right - r.left) * hRatio); } return val; }
Rect GetPrinterPageRect(void) { OSStatus err = 0; PMRect pmPageRect; Rect pageRect = {0,0,0,0}; err = PMGetAdjustedPageRect (gPageFormat,&pmPageRect); pageRect.top = pmPageRect.top; pageRect.bottom = pmPageRect.bottom; pageRect.left = pmPageRect.left; pageRect.right = pmPageRect.right; return pageRect; }
wxMacCarbonPrinterDC::wxMacCarbonPrinterDC( wxPrintData* data ) { ::GetPort( & m_macPrintFormerPort ) ; m_err = noErr ; wxMacCarbonPrintData *native = (wxMacCarbonPrintData*) data->m_nativePrintData ; PMRect rPage; m_err = PMGetAdjustedPageRect(native->m_macPageFormat, &rPage); if ( m_err != noErr ) return; m_maxX = wxCoord(rPage.right - rPage.left) ; m_maxY = wxCoord(rPage.bottom - rPage.top); }
bool wxMacCarbonPrinterDC::StartDoc( wxPrinterDC* dc , const wxString& WXUNUSED(message) ) { if ( m_err ) return false ; wxMacCarbonPrintData *native = (wxMacCarbonPrintData*) dc->GetPrintData().GetNativeData() ; #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_4 && wxMAC_USE_CORE_GRAPHICS { CFStringRef s[1] = { kPMGraphicsContextCoreGraphics }; CFArrayRef graphicsContextsArray = CFArrayCreate(NULL, (const void**)s, 1, &kCFTypeArrayCallBacks); PMSessionSetDocumentFormatGeneration(native->m_macPrintSession, kPMDocumentFormatPDF, graphicsContextsArray, NULL); CFRelease(graphicsContextsArray); } #endif #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4 && wxMAC_USE_CORE_GRAPHICS m_err = PMSessionBeginCGDocument(native->m_macPrintSession, native->m_macPrintSettings, native->m_macPageFormat); #else m_err = PMSessionBeginDocument(native->m_macPrintSession, native->m_macPrintSettings, native->m_macPageFormat); #endif if ( m_err != noErr ) return false; PMRect rPage; m_err = PMGetAdjustedPageRect(native->m_macPageFormat, &rPage); if ( m_err != noErr ) return false ; m_maxX = wxCoord(rPage.right - rPage.left) ; m_maxY = wxCoord(rPage.bottom - rPage.top); PMResolution res; #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 PMPrinter printer; PMSessionGetCurrentPrinter(native->m_macPrintSession, &printer); PMPrinterGetOutputResolution( printer, native->m_macPrintSettings, &res) ; #else m_err = PMGetResolution((PMPageFormat) (native->m_macPageFormat), &res); #endif m_ppi = wxSize(int(res.hRes), int(res.vRes)); return true ; }
/*------------------------------------------------------------------------------ Function: DetermineNumberOfPagesInDoc Parameters: pageFormat - a PageFormat object addr numPages - on return, the size of the document in pages Description: Calculates the number of pages needed to print the entire document. ------------------------------------------------------------------------------*/ OSStatus DetermineNumberOfPagesInDoc(UInt32 *numPages,PrintingLogicPtr printJob) { OSStatus status; // PMGetAdjustedPageRect returns the page size taking into account rotation, // resolution and scaling settings. status = PMGetAdjustedPageRect(printJob->pageFormat, &printJob->pageRect); status = PMGetAdjustedPaperRect(printJob->pageFormat, &printJob->paperRect); // In this sample code we simply return a hard coded number. In your application, // you will need to figure out how many page rects are needed to image the // current document. *numPages = printJob->numberOfPages; return status; } // DetermineNumberOfPagesinDoc
static inline void qt_get_margins(PMPageFormat pformat, uint *top, uint *left, uint *bottom, uint *right) { PMRect paperr, pager; if (PMGetAdjustedPaperRect(pformat, &paperr) != noErr) { qWarning("Qt: QPrinter: Unexpected condition reached %s:%d", __FILE__, __LINE__); return; } if (PMGetAdjustedPageRect(pformat, &pager) != noErr) { qWarning("Qt: QPrinter: Unexpected condition reached %s:%d", __FILE__, __LINE__); return; } if (top) *top = (uint)(pager.top - paperr.top); if (left) *left = (uint)(pager.left - paperr.left); if (bottom) *bottom = (uint)(paperr.bottom - pager.bottom); if (right) *right = (uint)(paperr.right - pager.right); }
bool wxMacCarbonPrinterDC::StartDoc( wxPrinterDC* dc , const wxString& WXUNUSED(message) ) { if ( m_err ) return false ; wxMacCarbonPrintData *native = (wxMacCarbonPrintData*) dc->GetPrintData().m_nativePrintData ; m_err = PMSessionBeginDocument(native->m_macPrintSession, native->m_macPrintSettings, native->m_macPageFormat); if ( m_err != noErr ) return false; PMRect rPage; m_err = PMGetAdjustedPageRect(native->m_macPageFormat, &rPage); if ( m_err != noErr ) return false; m_maxX = (wxCoord)(rPage.right - rPage.left); m_maxY = (wxCoord)(rPage.bottom - rPage.top); return true ; }
void wxMacCarbonPrinterDC::StartPage( wxPrinterDC* dc ) { if ( m_err ) return ; wxMacCarbonPrintData *native = (wxMacCarbonPrintData*) dc->GetPrintData().m_nativePrintData ; m_err = PMSessionBeginPage(native->m_macPrintSession, native->m_macPageFormat, nil); if ( m_err == noErr ) { m_err = PMSessionGetGraphicsContext(native->m_macPrintSession, nil, (void**) &dc->m_macPort ); } if ( m_err != noErr ) { PMSessionEndPage(native->m_macPrintSession); PMSessionEndDocument(native->m_macPrintSession); } else { PMRect rPage; m_err = PMGetAdjustedPageRect(native->m_macPageFormat, &rPage); if ( !m_err ) { dc->m_macLocalOrigin.x = (int) rPage.left; dc->m_macLocalOrigin.y = (int) rPage.top; } // since this is a non-critical error, we set the flag back m_err = noErr ; } }
void wxMacCarbonPrinterDC::StartPage( wxPrinterDC* dc ) { if ( m_err ) return ; wxMacCarbonPrintData *native = (wxMacCarbonPrintData*) dc->GetPrintData().GetNativeData() ; m_err = PMSessionBeginPage(native->m_macPrintSession, native->m_macPageFormat, nil); #if wxMAC_USE_CORE_GRAPHICS CGContextRef pageContext; #endif if ( m_err == noErr ) { #if wxMAC_USE_CORE_GRAPHICS #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4 m_err = PMSessionGetCGGraphicsContext(native->m_macPrintSession, &pageContext ); #else m_err = PMSessionGetGraphicsContext(native->m_macPrintSession, kPMGraphicsContextCoreGraphics, (void**) &pageContext ); #endif #else m_err = PMSessionGetGraphicsContext(native->m_macPrintSession, kPMGraphicsContextQuickdraw, (void**) &dc->m_macPort ); #endif } if ( m_err != noErr ) { PMSessionEndPage(native->m_macPrintSession); PMSessionEndDocument(native->m_macPrintSession); } else { PMRect rPage; m_err = PMGetAdjustedPageRect(native->m_macPageFormat, &rPage); if ( !m_err ) { #if wxMAC_USE_CORE_GRAPHICS PMRect paperRect ; PMGetAdjustedPaperRect( native->m_macPageFormat , &paperRect ) ; // make sure (0,0) is at the upper left of the printable area (wx conventions) // Core Graphics initially has the lower left of the paper as 0,0 CGContextTranslateCTM( pageContext , -paperRect.left , paperRect.bottom ) ; CGContextScaleCTM( pageContext , 1 , -1 ) ; #else dc->m_macLocalOrigin.x = (int) rPage.left; dc->m_macLocalOrigin.y = (int) rPage.top; #endif } // since this is a non-critical error, we set the flag back m_err = noErr ; } #if wxMAC_USE_CORE_GRAPHICS dc->SetGraphicsContext( wxGraphicsContext::CreateFromNative( pageContext ) ); #endif }
QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const { Q_D(const QMacPrintEngine); QVariant ret; if (!d->session && d->valueCache.contains(key)) return *d->valueCache.find(key); switch (key) { case PPK_CollateCopies: ret = false; break; case PPK_ColorMode: ret = QPrinter::Color; break; case PPK_Creator: break; case PPK_DocumentName: break; case PPK_FullPage: ret = d->fullPage; break; case PPK_NumberOfCopies: ret = 1; break; case PPK_Orientation: PMOrientation orientation; PMGetOrientation(d->format, &orientation); ret = orientation == kPMPortrait ? QPrinter::Portrait : QPrinter::Landscape; break; case PPK_OutputFileName: ret = d->outputFilename; break; case PPK_PageOrder: break; case PPK_PaperSource: break; case PPK_PageRect: { // PageRect is returned in device pixels QRect r; PMRect macrect, macpaper; qreal hRatio = d->resolution.hRes / 72; qreal vRatio = d->resolution.vRes / 72; if (d->hasCustomPaperSize) { r = QRect(0, 0, qRound(d->customSize.width() * hRatio), qRound(d->customSize.height() * vRatio)); if (d->hasCustomPageMargins) { r.adjust(qRound(d->leftMargin * hRatio), qRound(d->topMargin * vRatio), -qRound(d->rightMargin * hRatio), -qRound(d->bottomMargin * vRatio)); } else { QList<QVariant> margins = property(QPrintEngine::PPK_PageMargins).toList(); r.adjust(qRound(margins.at(0).toDouble() * hRatio), qRound(margins.at(1).toDouble() * vRatio), -qRound(margins.at(2).toDouble() * hRatio), -qRound(margins.at(3).toDouble()) * vRatio); } } else if (PMGetAdjustedPageRect(d->format, ¯ect) == noErr && PMGetAdjustedPaperRect(d->format, &macpaper) == noErr) { if (d->fullPage || d->hasCustomPageMargins) { r.setCoords(int(macpaper.left * hRatio), int(macpaper.top * vRatio), int(macpaper.right * hRatio), int(macpaper.bottom * vRatio)); r.translate(-r.x(), -r.y()); if (d->hasCustomPageMargins) { r.adjust(qRound(d->leftMargin * hRatio), qRound(d->topMargin * vRatio), -qRound(d->rightMargin * hRatio), -qRound(d->bottomMargin * vRatio)); } } else { r.setCoords(int(macrect.left * hRatio), int(macrect.top * vRatio), int(macrect.right * hRatio), int(macrect.bottom * vRatio)); r.translate(int(-macpaper.left * hRatio), int(-macpaper.top * vRatio)); } } ret = r; break; } case PPK_PaperSize: ret = d->paperSize(); break; case PPK_PaperRect: { QRect r; PMRect macrect; if (d->hasCustomPaperSize) { r = QRect(0, 0, qRound(d->customSize.width()), qRound(d->customSize.height())); } else if (PMGetAdjustedPaperRect(d->format, ¯ect) == noErr) { qreal hRatio = d->resolution.hRes / 72; qreal vRatio = d->resolution.vRes / 72; r.setCoords(int(macrect.left * hRatio), int(macrect.top * vRatio), int(macrect.right * hRatio), int(macrect.bottom * vRatio)); r.translate(-r.x(), -r.y()); } ret = r; break; } case PPK_PrinterName: { CFIndex currIndex; PMPrinter unused; QCFType<CFArrayRef> printerList; OSStatus status = PMSessionCreatePrinterList(d->session, &printerList, &currIndex, &unused); if (status != noErr) qWarning("QMacPrintEngine::printerName: Problem getting list of printers: %ld", long(status)); if (currIndex != -1 && printerList && currIndex < CFArrayGetCount(printerList)) { const CFStringRef name = static_cast<CFStringRef>(CFArrayGetValueAtIndex(printerList, currIndex)); if (name) ret = QCFString::toQString(name); } break; } case PPK_Resolution: { ret = d->resolution.hRes; break; } case PPK_SupportedResolutions: ret = d->supportedResolutions(); break; case PPK_CustomPaperSize: ret = d->customSize; break; case PPK_PageMargins: { QList<QVariant> margins; if (d->hasCustomPageMargins) { margins << d->leftMargin << d->topMargin << d->rightMargin << d->bottomMargin; } else { PMPaperMargins paperMargins; PMPaper paper; PMGetPageFormatPaper(d->format, &paper); PMPaperGetMargins(paper, &paperMargins); margins << paperMargins.left << paperMargins.top << paperMargins.right << paperMargins.bottom; } ret = margins; break; } default: break; } return ret; }
static void shellcopyprintinfo (void) { /* set up our printing rect according to the print manager's rects. we'll use the smaller of the printable area (rPage) and the physical paper (rPaper) with 1/2 inch margins 5.0.1 dmb: measure in pixels (1/72 inch) for Win */ Rect rpage, rpaper; //typrintinfo *dbgprintinfo = &shellprintinfo; #ifdef MACVERSION # if TARGET_API_MAC_CARBON == 1 static int firstTime = 1; OSErr theErr; boolean fl; PMRect dRect; if (1 == firstTime) { carbonSessionPrintSession(); carbonCreateFormatAndSetting(); carbonSessionDefaultPageAndSettingValidate(); } theErr = PMSessionValidatePageFormat( shellprintinfo.printhandle, shellprintinfo.pageformat, &fl); if(theErr != noErr) // || !fl) // why should i kill this if nothing has changed??? oserror(theErr); theErr = PMGetAdjustedPageRect(shellprintinfo.pageformat, &dRect); shellprintinfo.pagerect = dRect; theErr = PMGetAdjustedPaperRect(shellprintinfo.pageformat, &dRect); rect2rect(dRect, shellprintinfo.paperrect); rect2rect(shellprintinfo.pagerect, rpage); rpaper = shellprintinfo.paperrect; # else rpage = (**shellprintinfo.printhandle).prInfo.rPage; rpaper = (**shellprintinfo.printhandle).rPaper; # endif #endif #ifdef WIN95VERSION long res = 72L; pushport (hwndMDIClient); res = GetDeviceCaps(getcurrentDC (), LOGPIXELSX); popport (); rpaper.left = 0; rpaper.top = 0; rpaper.right = shellprintinfo.pagesetupinfo.ptPaperSize.x * res / 1000L; rpaper.bottom = shellprintinfo.pagesetupinfo.ptPaperSize.y * res / 1000L; rpage.left = rpaper.left + (shellprintinfo.pagesetupinfo.rtMinMargin.left * res / 1000L); rpage.top = rpaper.top + (shellprintinfo.pagesetupinfo.rtMinMargin.top * res / 1000L); rpage.right = rpaper.right - (shellprintinfo.pagesetupinfo.rtMinMargin.right * res / 1000L); rpage.bottom = rpaper.bottom - (shellprintinfo.pagesetupinfo.rtMinMargin.bottom * res / 1000L); shellprintinfo.margins.left = shellprintinfo.pagesetupinfo.rtMargin.left * res / 1000L; shellprintinfo.margins.top = shellprintinfo.pagesetupinfo.rtMargin.top * res / 1000L; shellprintinfo.margins.right = shellprintinfo.pagesetupinfo.rtMargin.right * res / 1000L; shellprintinfo.margins.bottom = shellprintinfo.pagesetupinfo.rtMargin.bottom * res / 1000L; #endif shellprintinfo.paperrect.top = max (rpage.top, rpaper.top + shellprintinfo.margins.top); shellprintinfo.paperrect.left = max (rpage.left, rpaper.left + shellprintinfo.margins.left); shellprintinfo.paperrect.bottom = min (rpage.bottom, rpaper.bottom - shellprintinfo.margins.bottom); shellprintinfo.paperrect.right = min (rpage.right, rpaper.right - shellprintinfo.margins.right); } /*shellcopyprintinfo*/