For PP cache the zoom and zoomtext scale factors and reset then back into the DC when leaving PP.

Bug 136785 r=dcone sr=attinasi
This commit is contained in:
rods@netscape.com
2002-04-15 13:22:05 +00:00
parent 970bdeac30
commit 064fbd66c9
2 changed files with 62 additions and 18 deletions

View File

@@ -439,6 +439,8 @@ public:
PRInt32 mNumPagesPrinted; PRInt32 mNumPagesPrinted;
float mShrinkRatio; float mShrinkRatio;
float mOrigDCScale; float mOrigDCScale;
float mOrigTextZoom;
float mOrigZoom;
nsCOMPtr<nsIPrintSettings> mPrintSettings; nsCOMPtr<nsIPrintSettings> mPrintSettings;
nsCOMPtr<nsIPrintOptions> mPrintOptions; nsCOMPtr<nsIPrintOptions> mPrintOptions;
@@ -852,7 +854,7 @@ PrintData::PrintData() :
mIsAborted(PR_FALSE), mPreparingForPrint(PR_FALSE), mDocWasToBeDestroyed(PR_FALSE), mIsAborted(PR_FALSE), mPreparingForPrint(PR_FALSE), mDocWasToBeDestroyed(PR_FALSE),
mShrinkToFit(PR_FALSE), mPrintFrameType(nsIPrintSettings::kFramesAsIs), mShrinkToFit(PR_FALSE), mPrintFrameType(nsIPrintSettings::kFramesAsIs),
mNumPrintableDocs(0), mNumDocsPrinted(0), mNumPrintablePages(0), mNumPagesPrinted(0), mNumPrintableDocs(0), mNumDocsPrinted(0), mNumPrintablePages(0), mNumPagesPrinted(0),
mShrinkRatio(1.0), mOrigDCScale(1.0), mPPEventListeners(NULL), mShrinkRatio(1.0), mOrigDCScale(1.0), mOrigTextZoom(1.0), mOrigZoom(1.0), mPPEventListeners(NULL),
mIsCachingPresentation(PR_FALSE), mCachedPresObj(nsnull), mBrandName(nsnull) mIsCachingPresentation(PR_FALSE), mCachedPresObj(nsnull), mBrandName(nsnull)
{ {
#ifdef DEBUG_PRINTING #ifdef DEBUG_PRINTING
@@ -876,6 +878,13 @@ PrintData::PrintData() :
PrintData::~PrintData() PrintData::~PrintData()
{ {
// Set the cached Zoom value back into the DC
if (mPrintDC) {
mPrintDC->SetTextZoom(mOrigTextZoom);
mPrintDC->SetZoom(mOrigZoom);
}
// removed any cached // removed any cached
if (mCachedPresObj) { if (mCachedPresObj) {
delete mCachedPresObj; delete mCachedPresObj;
@@ -5930,14 +5939,21 @@ DocumentViewerImpl::PrintPreview(nsIPrintSettings* aPrintSettings)
return NS_ERROR_OUT_OF_MEMORY; return NS_ERROR_OUT_OF_MEMORY;
} }
// maintain the the original presentation if it is there // Check to see if we need to transfer any of our old values
// by transfering it over to the new PrintData object // over to the new PrintData object
if (mOldPrtPreview && mOldPrtPreview->HasCachedPres()) { if (mOldPrtPreview) {
mPrt->mIsCachingPresentation = mOldPrtPreview->mIsCachingPresentation; mPrt->mOrigZoom = mOldPrtPreview->mOrigZoom;
mPrt->mCachedPresObj = mOldPrtPreview->mCachedPresObj; mPrt->mOrigTextZoom = mOldPrtPreview->mOrigTextZoom;
// don't want it to get deleted when the mOldPrtPreview is deleted
mOldPrtPreview->mIsCachingPresentation = PR_FALSE; // maintain the the original presentation if it is there
mOldPrtPreview->mCachedPresObj = nsnull; // by transfering it over to the new PrintData object
if (mOldPrtPreview->HasCachedPres()) {
mPrt->mIsCachingPresentation = mOldPrtPreview->mIsCachingPresentation;
mPrt->mCachedPresObj = mOldPrtPreview->mCachedPresObj;
// don't want it to get deleted when the mOldPrtPreview is deleted
mOldPrtPreview->mIsCachingPresentation = PR_FALSE;
mOldPrtPreview->mCachedPresObj = nsnull;
}
} }
// You have to have both a PrintOptions and a PrintSetting to call CheckForPrinters. // You have to have both a PrintOptions and a PrintSetting to call CheckForPrinters.
@@ -6097,6 +6113,12 @@ DocumentViewerImpl::PrintPreview(nsIPrintSettings* aPrintSettings)
// Get the Original PixelScale incase we need to start changing it // Get the Original PixelScale incase we need to start changing it
mPrt->mPrintDC->GetCanonicalPixelScale(mPrt->mOrigDCScale); mPrt->mPrintDC->GetCanonicalPixelScale(mPrt->mOrigDCScale);
// Cache original Zoom value and then set it to 1.0
mPrt->mPrintDC->GetTextZoom(mPrt->mOrigTextZoom);
mPrt->mPrintDC->GetZoom(mPrt->mOrigZoom);
mPrt->mPrintDC->SetTextZoom(1.0f);
mPrt->mPrintDC->SetZoom(1.0f);
if (mDeviceContext) { if (mDeviceContext) {
mDeviceContext->SetUseAltDC(kUseAltDCFor_FONTMETRICS, PR_TRUE); mDeviceContext->SetUseAltDC(kUseAltDCFor_FONTMETRICS, PR_TRUE);
mDeviceContext->SetUseAltDC(kUseAltDCFor_CREATERC_REFLOW, PR_TRUE); mDeviceContext->SetUseAltDC(kUseAltDCFor_CREATERC_REFLOW, PR_TRUE);

View File

@@ -439,6 +439,8 @@ public:
PRInt32 mNumPagesPrinted; PRInt32 mNumPagesPrinted;
float mShrinkRatio; float mShrinkRatio;
float mOrigDCScale; float mOrigDCScale;
float mOrigTextZoom;
float mOrigZoom;
nsCOMPtr<nsIPrintSettings> mPrintSettings; nsCOMPtr<nsIPrintSettings> mPrintSettings;
nsCOMPtr<nsIPrintOptions> mPrintOptions; nsCOMPtr<nsIPrintOptions> mPrintOptions;
@@ -852,7 +854,7 @@ PrintData::PrintData() :
mIsAborted(PR_FALSE), mPreparingForPrint(PR_FALSE), mDocWasToBeDestroyed(PR_FALSE), mIsAborted(PR_FALSE), mPreparingForPrint(PR_FALSE), mDocWasToBeDestroyed(PR_FALSE),
mShrinkToFit(PR_FALSE), mPrintFrameType(nsIPrintSettings::kFramesAsIs), mShrinkToFit(PR_FALSE), mPrintFrameType(nsIPrintSettings::kFramesAsIs),
mNumPrintableDocs(0), mNumDocsPrinted(0), mNumPrintablePages(0), mNumPagesPrinted(0), mNumPrintableDocs(0), mNumDocsPrinted(0), mNumPrintablePages(0), mNumPagesPrinted(0),
mShrinkRatio(1.0), mOrigDCScale(1.0), mPPEventListeners(NULL), mShrinkRatio(1.0), mOrigDCScale(1.0), mOrigTextZoom(1.0), mOrigZoom(1.0), mPPEventListeners(NULL),
mIsCachingPresentation(PR_FALSE), mCachedPresObj(nsnull), mBrandName(nsnull) mIsCachingPresentation(PR_FALSE), mCachedPresObj(nsnull), mBrandName(nsnull)
{ {
#ifdef DEBUG_PRINTING #ifdef DEBUG_PRINTING
@@ -876,6 +878,13 @@ PrintData::PrintData() :
PrintData::~PrintData() PrintData::~PrintData()
{ {
// Set the cached Zoom value back into the DC
if (mPrintDC) {
mPrintDC->SetTextZoom(mOrigTextZoom);
mPrintDC->SetZoom(mOrigZoom);
}
// removed any cached // removed any cached
if (mCachedPresObj) { if (mCachedPresObj) {
delete mCachedPresObj; delete mCachedPresObj;
@@ -5930,14 +5939,21 @@ DocumentViewerImpl::PrintPreview(nsIPrintSettings* aPrintSettings)
return NS_ERROR_OUT_OF_MEMORY; return NS_ERROR_OUT_OF_MEMORY;
} }
// maintain the the original presentation if it is there // Check to see if we need to transfer any of our old values
// by transfering it over to the new PrintData object // over to the new PrintData object
if (mOldPrtPreview && mOldPrtPreview->HasCachedPres()) { if (mOldPrtPreview) {
mPrt->mIsCachingPresentation = mOldPrtPreview->mIsCachingPresentation; mPrt->mOrigZoom = mOldPrtPreview->mOrigZoom;
mPrt->mCachedPresObj = mOldPrtPreview->mCachedPresObj; mPrt->mOrigTextZoom = mOldPrtPreview->mOrigTextZoom;
// don't want it to get deleted when the mOldPrtPreview is deleted
mOldPrtPreview->mIsCachingPresentation = PR_FALSE; // maintain the the original presentation if it is there
mOldPrtPreview->mCachedPresObj = nsnull; // by transfering it over to the new PrintData object
if (mOldPrtPreview->HasCachedPres()) {
mPrt->mIsCachingPresentation = mOldPrtPreview->mIsCachingPresentation;
mPrt->mCachedPresObj = mOldPrtPreview->mCachedPresObj;
// don't want it to get deleted when the mOldPrtPreview is deleted
mOldPrtPreview->mIsCachingPresentation = PR_FALSE;
mOldPrtPreview->mCachedPresObj = nsnull;
}
} }
// You have to have both a PrintOptions and a PrintSetting to call CheckForPrinters. // You have to have both a PrintOptions and a PrintSetting to call CheckForPrinters.
@@ -6097,6 +6113,12 @@ DocumentViewerImpl::PrintPreview(nsIPrintSettings* aPrintSettings)
// Get the Original PixelScale incase we need to start changing it // Get the Original PixelScale incase we need to start changing it
mPrt->mPrintDC->GetCanonicalPixelScale(mPrt->mOrigDCScale); mPrt->mPrintDC->GetCanonicalPixelScale(mPrt->mOrigDCScale);
// Cache original Zoom value and then set it to 1.0
mPrt->mPrintDC->GetTextZoom(mPrt->mOrigTextZoom);
mPrt->mPrintDC->GetZoom(mPrt->mOrigZoom);
mPrt->mPrintDC->SetTextZoom(1.0f);
mPrt->mPrintDC->SetZoom(1.0f);
if (mDeviceContext) { if (mDeviceContext) {
mDeviceContext->SetUseAltDC(kUseAltDCFor_FONTMETRICS, PR_TRUE); mDeviceContext->SetUseAltDC(kUseAltDCFor_FONTMETRICS, PR_TRUE);
mDeviceContext->SetUseAltDC(kUseAltDCFor_CREATERC_REFLOW, PR_TRUE); mDeviceContext->SetUseAltDC(kUseAltDCFor_CREATERC_REFLOW, PR_TRUE);