| Index: core/fpdfapi/fpdf_render/fpdf_render_image.cpp
|
| diff --git a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
|
| index c93600f2a13ab552a4d5cf4e48c02d4d2bbce065..8d638f62f8e552abef0794312a65df2ef77d32f1 100644
|
| --- a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
|
| +++ b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
|
| @@ -646,6 +646,7 @@ FX_BOOL CPDF_ImageRenderer::DrawPatternImage(const CFX_Matrix* pObj2Device) {
|
| bitmap_device1.GetBitmap(), rect.left, rect.top, m_BlendType);
|
| return FALSE;
|
| }
|
| +
|
| FX_BOOL CPDF_ImageRenderer::DrawMaskedImage() {
|
| if (m_pRenderStatus->m_bPrint &&
|
| !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) {
|
| @@ -665,7 +666,11 @@ FX_BOOL CPDF_ImageRenderer::DrawMaskedImage() {
|
| if (!bitmap_device1.Create(width, height, FXDIB_Rgb32, nullptr))
|
| return TRUE;
|
|
|
| +#if defined _SKIA_SUPPORT_
|
| + bitmap_device1.Clear(0xffffff);
|
| +#else
|
| bitmap_device1.GetBitmap()->Clear(0xffffff);
|
| +#endif
|
| {
|
| CPDF_RenderStatus bitmap_render;
|
| bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device1,
|
| @@ -682,7 +687,11 @@ FX_BOOL CPDF_ImageRenderer::DrawMaskedImage() {
|
| if (!bitmap_device2.Create(width, height, FXDIB_8bppRgb, nullptr))
|
| return TRUE;
|
|
|
| +#if defined _SKIA_SUPPORT_
|
| + bitmap_device2.Clear(0);
|
| +#else
|
| bitmap_device2.GetBitmap()->Clear(0);
|
| +#endif
|
| CPDF_RenderStatus bitmap_render;
|
| bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2,
|
| nullptr, nullptr, nullptr, nullptr, nullptr, 0,
|
| @@ -731,17 +740,21 @@ FX_BOOL CPDF_ImageRenderer::DrawMaskedImage() {
|
| }
|
| }
|
| }
|
| +#ifdef _SKIA_SUPPORT_
|
| + m_pRenderStatus->m_pDevice->SetBitsWithMask(
|
| + bitmap_device1.GetBitmap(), bitmap_device2.GetBitmap(), rect.left,
|
| + rect.top, m_BitmapAlpha, m_BlendType);
|
| + }
|
| +#else
|
| bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_8bppMask);
|
| bitmap_device1.GetBitmap()->MultiplyAlpha(bitmap_device2.GetBitmap());
|
| -#ifdef _SKIA_SUPPORT_
|
| - CFX_SkiaDeviceDriver::PreMultiply(bitmap_device1.GetBitmap());
|
| -#endif
|
| if (m_BitmapAlpha < 255) {
|
| bitmap_device1.GetBitmap()->MultiplyAlpha(m_BitmapAlpha);
|
| }
|
| }
|
| m_pRenderStatus->m_pDevice->SetDIBitsWithBlend(
|
| bitmap_device1.GetBitmap(), rect.left, rect.top, m_BlendType);
|
| +#endif // _SKIA_SUPPORT_
|
| return FALSE;
|
| }
|
|
|
| @@ -756,7 +769,8 @@ FX_BOOL CPDF_ImageRenderer::StartDIBSource() {
|
| }
|
| #ifdef _SKIA_SUPPORT_
|
| CFX_DIBitmap* premultiplied = m_pDIBSource->Clone();
|
| - CFX_SkiaDeviceDriver::PreMultiply(premultiplied);
|
| + if (m_pDIBSource->HasAlpha())
|
| + CFX_SkiaDeviceDriver::PreMultiply(premultiplied);
|
| if (m_pRenderStatus->m_pDevice->StartDIBitsWithBlend(
|
| premultiplied, m_BitmapAlpha, m_FillArgb, &m_ImageMatrix, m_Flags,
|
| m_DeviceHandle, m_BlendType)) {
|
|
|