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)) {