Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(463)

Unified Diff: fpdfsdk/fpdfview.cpp

Issue 2369323004: Simplify FPDF_RenderPage(). (Closed)
Patch Set: More unique_ptr Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: fpdfsdk/fpdfview.cpp
diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
index c5b13f850d42e343342c1de9ae495de1af523122..62cafa0781cea2e59ffbcc404142df503cac9a30 100644
--- a/fpdfsdk/fpdfview.cpp
+++ b/fpdfsdk/fpdfview.cpp
@@ -575,43 +575,37 @@ DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc,
CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext;
pPage->SetRenderContext(WrapUnique(pContext));
- CFX_DIBitmap* pBitmap = nullptr;
- FX_BOOL bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded();
- FX_BOOL bHasImageMask = pPage->HasImageMask();
- if (bBackgroundAlphaNeeded || bHasImageMask) {
- pBitmap = new CFX_DIBitmap;
+ std::unique_ptr<CFX_DIBitmap> pBitmap;
+ const bool bNewBitmap =
+ pPage->BackgroundAlphaNeeded() || pPage->HasImageMask();
+ if (bNewBitmap) {
+ pBitmap = WrapUnique(new CFX_DIBitmap);
pBitmap->Create(size_x, size_y, FXDIB_Argb);
pBitmap->Clear(0x00ffffff);
CFX_FxgeDevice* pDevice = new CFX_FxgeDevice;
- pContext->m_pDevice.reset(pDevice);
- pDevice->Attach(pBitmap, false, nullptr, false);
+ pContext->m_pDevice = WrapUnique(pDevice);
+ pDevice->Attach(pBitmap.get(), false, nullptr, false);
} else {
- pContext->m_pDevice.reset(new CFX_WindowsDevice(dc));
+ pContext->m_pDevice = WrapUnique(new CFX_WindowsDevice(dc));
}
FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
rotate, flags, TRUE, nullptr);
- if (bBackgroundAlphaNeeded || bHasImageMask) {
- if (pBitmap) {
- CFX_WindowsDevice WinDC(dc);
-
- if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINTER) {
- CFX_DIBitmap* pDst = new CFX_DIBitmap;
- int pitch = pBitmap->GetPitch();
- pDst->Create(size_x, size_y, FXDIB_Rgb32);
- FXSYS_memset(pDst->GetBuffer(), -1, pitch * size_y);
- pDst->CompositeBitmap(0, 0, size_x, size_y, pBitmap, 0, 0,
- FXDIB_BLEND_NORMAL, nullptr, FALSE, nullptr);
- WinDC.StretchDIBits(pDst, 0, 0, size_x, size_y);
- delete pDst;
- } else {
- WinDC.SetDIBits(pBitmap, 0, 0);
- }
+ if (bNewBitmap) {
+ CFX_WindowsDevice WinDC(dc);
+ if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINTER) {
+ std::unique_ptr<CFX_DIBitmap> pDst = WrapUnique(new CFX_DIBitmap);
+ int pitch = pBitmap->GetPitch();
+ pDst->Create(size_x, size_y, FXDIB_Rgb32);
+ FXSYS_memset(pDst->GetBuffer(), -1, pitch * size_y);
+ pDst->CompositeBitmap(0, 0, size_x, size_y, pBitmap.get(), 0, 0,
+ FXDIB_BLEND_NORMAL, nullptr, FALSE, nullptr);
+ WinDC.StretchDIBits(pDst.get(), 0, 0, size_x, size_y);
+ } else {
+ WinDC.SetDIBits(pBitmap.get(), 0, 0);
}
}
- if (bBackgroundAlphaNeeded || bHasImageMask)
- delete pBitmap;
pPage->SetRenderContext(std::unique_ptr<CPDF_PageRenderContext>());
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698