Reduce duplicated code in CPDF_ImageRenderer::StartDIBBase().

The Skia and AGG implementations have very similar code. Combine them.

Change-Id: Ieefafe014c2dfc60bd865d7e5ae834618e115bda
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/96830
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Nigi <nigi@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp
index 11f7c56..c75c76b 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.cpp
+++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -388,30 +388,24 @@
       m_ResampleOptions.bInterpolateBilinear = true;
     }
   }
+  RetainPtr<CFX_DIBBase> bitmap;
 #if defined(_SKIA_SUPPORT_)
   RetainPtr<CFX_DIBitmap> premultiplied = m_pDIBBase->Realize();
   if (m_pDIBBase->IsAlphaFormat())
     CFX_SkiaDeviceDriver::PreMultiply(premultiplied);
-  if (m_pRenderStatus->GetRenderDevice()->StartDIBitsWithBlend(
-          premultiplied, m_BitmapAlpha, m_FillArgb, m_ImageMatrix,
-          m_ResampleOptions, &m_DeviceHandle, m_BlendType)) {
-    if (m_DeviceHandle) {
-      m_Mode = Mode::kBlend;
-      return true;
-    }
-    return false;
-  }
+  bitmap = std::move(premultiplied);
 #else
+  bitmap = m_pDIBBase;
+#endif  // defined(_SKIA_SUPPORT_)
   if (m_pRenderStatus->GetRenderDevice()->StartDIBitsWithBlend(
-          m_pDIBBase, m_BitmapAlpha, m_FillArgb, m_ImageMatrix,
-          m_ResampleOptions, &m_DeviceHandle, m_BlendType)) {
+          bitmap, m_BitmapAlpha, m_FillArgb, m_ImageMatrix, m_ResampleOptions,
+          &m_DeviceHandle, m_BlendType)) {
     if (m_DeviceHandle) {
       m_Mode = Mode::kBlend;
       return true;
     }
     return false;
   }
-#endif  // defined(_SKIA_SUPPORT_)
 
   if ((fabs(m_ImageMatrix.b) >= 0.5f || m_ImageMatrix.a == 0) ||
       (fabs(m_ImageMatrix.c) >= 0.5f || m_ImageMatrix.d == 0)) {