From a58a91a47990c0e77faf7134ec6049f2a6423cd5 Mon Sep 17 00:00:00 2001 From: Olli Pettay Date: Mon, 24 Aug 2009 12:55:28 +0300 Subject: [PATCH] Bug 510465 - Initial zoom level of print preview depends on the zoom level of galley presentation, r=roc --- layout/base/nsDocumentViewer.cpp | 10 ++++++++-- layout/printing/nsPrintEngine.cpp | 11 ++++------- layout/printing/nsPrintEngine.h | 4 ++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/layout/base/nsDocumentViewer.cpp b/layout/base/nsDocumentViewer.cpp index 0df42b461b1..96cfb4808ca 100644 --- a/layout/base/nsDocumentViewer.cpp +++ b/layout/base/nsDocumentViewer.cpp @@ -3687,7 +3687,10 @@ DocumentViewerImpl::Print(nsIPrintSettings* aPrintSettings, NS_ENSURE_TRUE(mPrintEngine, NS_ERROR_OUT_OF_MEMORY); rv = mPrintEngine->Initialize(this, docShell, mDocument, - mDeviceContext, mParentWidget, + float(mDeviceContext->AppUnitsPerInch()) / + float(mDeviceContext->AppUnitsPerDevPixel()) / + mPageZoom, + mParentWidget, #ifdef NS_DEBUG mDebugFile #else @@ -3750,7 +3753,10 @@ DocumentViewerImpl::PrintPreview(nsIPrintSettings* aPrintSettings, NS_ENSURE_TRUE(mPrintEngine, NS_ERROR_OUT_OF_MEMORY); rv = mPrintEngine->Initialize(this, docShell, mDocument, - mDeviceContext, mParentWidget, + float(mDeviceContext->AppUnitsPerInch()) / + float(mDeviceContext->AppUnitsPerDevPixel()) / + mPageZoom, + mParentWidget, #ifdef NS_DEBUG mDebugFile #else diff --git a/layout/printing/nsPrintEngine.cpp b/layout/printing/nsPrintEngine.cpp index 571f01148ab..55754a05d9d 100644 --- a/layout/printing/nsPrintEngine.cpp +++ b/layout/printing/nsPrintEngine.cpp @@ -258,7 +258,7 @@ nsPrintEngine::nsPrintEngine() : mIsDoingPrintPreview(PR_FALSE), mProgressDialogIsShown(PR_FALSE), mContainer(nsnull), - mDeviceContext(nsnull), + mScreenDPI(115.0f), mPrt(nsnull), mPagePrintTimer(nsnull), mPageSeqFrame(nsnull), @@ -316,20 +316,19 @@ void nsPrintEngine::DestroyPrintingData() nsresult nsPrintEngine::Initialize(nsIDocumentViewerPrint* aDocViewerPrint, nsISupports* aContainer, nsIDocument* aDocument, - nsIDeviceContext* aDevContext, + float aScreenDPI, nsIWidget* aParentWidget, FILE* aDebugFile) { NS_ENSURE_ARG_POINTER(aDocViewerPrint); NS_ENSURE_ARG_POINTER(aContainer); NS_ENSURE_ARG_POINTER(aDocument); - NS_ENSURE_ARG_POINTER(aDevContext); NS_ENSURE_ARG_POINTER(aParentWidget); mDocViewerPrint = aDocViewerPrint; mContainer = aContainer; // weak reference mDocument = aDocument; - mDeviceContext = aDevContext; // weak reference + mScreenDPI = aScreenDPI; mParentWidget = aParentWidget; mDebugFile = aDebugFile; // ok to be NULL @@ -1991,9 +1990,7 @@ nsPrintEngine::ReflowPrintObject(nsPrintObject * aPO) // Calculate scale factor from printer to screen float printDPI = float(mPrt->mPrintDC->AppUnitsPerInch()) / float(mPrt->mPrintDC->AppUnitsPerDevPixel()); - float screenDPI = float(mDeviceContext->AppUnitsPerInch()) / - float(mDeviceContext->AppUnitsPerDevPixel()); - aPO->mPresContext->SetPrintPreviewScale(screenDPI / printDPI); + aPO->mPresContext->SetPrintPreviewScale(mScreenDPI / printDPI); rv = aPO->mPresShell->InitialReflow(adjSize.width, adjSize.height); diff --git a/layout/printing/nsPrintEngine.h b/layout/printing/nsPrintEngine.h index 82d344936bc..15a6435e998 100644 --- a/layout/printing/nsPrintEngine.h +++ b/layout/printing/nsPrintEngine.h @@ -104,7 +104,7 @@ public: nsresult Initialize(nsIDocumentViewerPrint* aDocViewerPrint, nsISupports* aContainer, nsIDocument* aDocument, - nsIDeviceContext* aDevContext, + float aScreenDPI, nsIWidget* aParentWidget, FILE* aDebugFile); @@ -282,7 +282,7 @@ protected: nsCOMPtr mDocViewerPrint; nsISupports* mContainer; // [WEAK] it owns me! - nsIDeviceContext* mDeviceContext; // not ref counted + float mScreenDPI; nsPrintData* mPrt; nsPagePrintTimer* mPagePrintTimer;