Simplify FPDF_RenderPage().

Review-Url: https://codereview.chromium.org/2369323004
diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
index c5b13f8..62cafa0 100644
--- a/fpdfsdk/fpdfview.cpp
+++ b/fpdfsdk/fpdfview.cpp
@@ -575,43 +575,37 @@
   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>());
 }