Change CFX_RenderDevice::StartDIBitsWithBlend() to take a float alpha

Use float alpha values in another part of the graphics stack. Also
change StartDIBits(), which passes through to StartDIBitsWithBlend(),
to have identical parameter names and types.

Change-Id: Ieecf5b48accbcc2dcda8113927ed4d23b392ce4f
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/115419
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp
index ef33f9f..9f38f01 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.cpp
+++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -386,7 +386,7 @@
     }
   }
   if (m_pRenderStatus->GetRenderDevice()->StartDIBitsWithBlend(
-          m_pDIBBase, m_BitmapAlpha, m_FillArgb, m_ImageMatrix,
+          m_pDIBBase, m_BitmapAlpha / 255.0f, m_FillArgb, m_ImageMatrix,
           m_ResampleOptions, &m_DeviceHandle, m_BlendType)) {
     if (m_DeviceHandle) {
       m_Mode = Mode::kBlend;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 0ba2913..1be4068 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1215,8 +1215,7 @@
           std::unique_ptr<CFX_ImageRenderer> dummy;
           CFX_Matrix matrix = CFX_RenderDevice::GetFlipMatrix(
               pDIBitmap->GetWidth(), pDIBitmap->GetHeight(), left, top);
-          const int bitmap_alpha = FXSYS_roundf(alpha * 255);
-          m_pDevice->StartDIBits(pDIBitmap, bitmap_alpha, /*color=*/0, matrix,
+          m_pDevice->StartDIBits(pDIBitmap, alpha, /*argb=*/0, matrix,
                                  FXDIB_ResampleOptions(), &dummy);
           return;
         }
diff --git a/core/fxge/cfx_renderdevice.cpp b/core/fxge/cfx_renderdevice.cpp
index a5fb5e1..3ed5de2 100644
--- a/core/fxge/cfx_renderdevice.cpp
+++ b/core/fxge/cfx_renderdevice.cpp
@@ -984,14 +984,14 @@
 
 bool CFX_RenderDevice::StartDIBitsWithBlend(
     const RetainPtr<CFX_DIBBase>& pBitmap,
-    int bitmap_alpha,
+    float alpha,
     uint32_t argb,
     const CFX_Matrix& matrix,
     const FXDIB_ResampleOptions& options,
     std::unique_ptr<CFX_ImageRenderer>* handle,
     BlendMode blend_mode) {
-  return m_pDeviceDriver->StartDIBits(pBitmap, bitmap_alpha / 255.0f, argb,
-                                      matrix, options, handle, blend_mode);
+  return m_pDeviceDriver->StartDIBits(pBitmap, alpha, argb, matrix, options,
+                                      handle, blend_mode);
 }
 
 bool CFX_RenderDevice::ContinueDIBits(CFX_ImageRenderer* handle,
diff --git a/core/fxge/cfx_renderdevice.h b/core/fxge/cfx_renderdevice.h
index d67cb06..e3c9f4f 100644
--- a/core/fxge/cfx_renderdevice.h
+++ b/core/fxge/cfx_renderdevice.h
@@ -139,16 +139,16 @@
                                uint32_t argb,
                                const FXDIB_ResampleOptions& options);
   bool StartDIBits(const RetainPtr<CFX_DIBBase>& pBitmap,
-                   int bitmap_alpha,
-                   uint32_t color,
+                   float alpha,
+                   uint32_t argb,
                    const CFX_Matrix& matrix,
                    const FXDIB_ResampleOptions& options,
                    std::unique_ptr<CFX_ImageRenderer>* handle) {
-    return StartDIBitsWithBlend(pBitmap, bitmap_alpha, color, matrix, options,
-                                handle, BlendMode::kNormal);
+    return StartDIBitsWithBlend(pBitmap, alpha, argb, matrix, options, handle,
+                                BlendMode::kNormal);
   }
   bool StartDIBitsWithBlend(const RetainPtr<CFX_DIBBase>& pBitmap,
-                            int bitmap_alpha,
+                            float alpha,
                             uint32_t argb,
                             const CFX_Matrix& matrix,
                             const FXDIB_ResampleOptions& options,
diff --git a/xfa/fxfa/cxfa_imagerenderer.cpp b/xfa/fxfa/cxfa_imagerenderer.cpp
index 3b9ecc2..6c0cda6 100644
--- a/xfa/fxfa/cxfa_imagerenderer.cpp
+++ b/xfa/fxfa/cxfa_imagerenderer.cpp
@@ -24,8 +24,8 @@
 bool CXFA_ImageRenderer::Start() {
   FXDIB_ResampleOptions options;
   options.bInterpolateBilinear = true;
-  if (m_pDevice->StartDIBits(m_pDIBBase, 255, 0, m_ImageMatrix, options,
-                             &m_DeviceHandle)) {
+  if (m_pDevice->StartDIBits(m_pDIBBase, /*alpha=*/1.0f, /*argb=*/0,
+                             m_ImageMatrix, options, &m_DeviceHandle)) {
     if (m_DeviceHandle) {
       m_State = State::kStarted;
       return true;