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;