Move alpha type conversion into RealizeSkImage()
Moves alpha type conversion into RealizeSkImage(), which eliminates the
need to actually perform premultiplication before drawing the SkImage.
This causes minor changes due to rounding differences.
Bug: pdfium:2011, pdfium:2017
Change-Id: I6f9c70f956eb0ff1a61856dffa6dcc8ee313d911
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/108651
Commit-Queue: K. Moon <kmoon@chromium.org>
Reviewed-by: Nigi <nigi@chromium.org>
diff --git a/DEPS b/DEPS
index dcd05c2..6cc4f7b 100644
--- a/DEPS
+++ b/DEPS
@@ -144,7 +144,7 @@
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling pdfium_tests
# and whatever else without interference from each other.
- 'pdfium_tests_revision': 'd1386521f5d606b9110143aa40b23651b17aded2',
+ 'pdfium_tests_revision': 'c65dfc18bba504535db9ba07b99de7e35f481016',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling resultdb
# and whatever else without interference from each other.
diff --git a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
index f2c5ac1..da95606 100644
--- a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
+++ b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
@@ -136,8 +136,9 @@
TEST_F(CPDFSecurityHandlerEmbedderTest, PasswordAfterGenerateSave) {
const char* checksum = []() {
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "df9fe67555b7ceb59c99036e8d2c1c76";
+ if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
+ return "1747079dc1429aa5a025084fa3f8be31";
+ }
#if BUILDFLAG(IS_APPLE)
return "2a308e8cc20a6221112c387d122075a8";
#else
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp
index 3a758dd..9a94a59 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.cpp
+++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -63,19 +63,6 @@
bitmap_device.GetBitmap()->Clear(color);
}
-RetainPtr<CFX_DIBBase> PreMultiplyBitmapIfAlpha(
- RetainPtr<CFX_DIBBase> base_bitmap) {
-#if defined(_SKIA_SUPPORT_)
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
- RetainPtr<CFX_DIBitmap> premultiplied = base_bitmap->Realize();
- if (base_bitmap->IsAlphaFormat())
- premultiplied->PreMultiply();
- return premultiplied;
- }
-#endif // defined(_SKIA_SUPPORT_)
- return base_bitmap;
-}
-
} // namespace
CPDF_ImageRenderer::CPDF_ImageRenderer(CPDF_RenderStatus* pStatus)
@@ -408,10 +395,9 @@
m_ResampleOptions.bInterpolateBilinear = true;
}
}
- RetainPtr<CFX_DIBBase> bitmap = PreMultiplyBitmapIfAlpha(m_pDIBBase);
if (m_pRenderStatus->GetRenderDevice()->StartDIBitsWithBlend(
- bitmap, m_BitmapAlpha, m_FillArgb, m_ImageMatrix, m_ResampleOptions,
- &m_DeviceHandle, m_BlendType)) {
+ m_pDIBBase, m_BitmapAlpha, m_FillArgb, m_ImageMatrix,
+ m_ResampleOptions, &m_DeviceHandle, m_BlendType)) {
if (m_DeviceHandle) {
m_Mode = Mode::kBlend;
return true;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 39d8d6e..7e8581c 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1209,10 +1209,6 @@
}
pDIBitmap->MultiplyAlpha(bitmap_alpha);
}
-#if defined(_SKIA_SUPPORT_)
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- pDIBitmap->PreMultiply();
-#endif
if (m_pDevice->SetDIBits(pDIBitmap, left, top)) {
return;
}
diff --git a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
index a51e16e..603736d 100644
--- a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
+++ b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
@@ -415,8 +415,9 @@
TEST_F(FPDFProgressiveRenderEmbedderTest, RenderInkWithColorScheme) {
// Test rendering of multiple ink with forced color scheme on.
const char* content_with_ink_checksum = []() {
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "ebc57721e4c8da34156e09b9b2e62fb0";
+ if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
+ return "5108aa537b6ecc37b3f0a35b76c1b379";
+ }
return "797bce7dc6c50ee86b095405df9fe5aa";
}();
diff --git a/core/fxge/cfx_renderdevice.cpp b/core/fxge/cfx_renderdevice.cpp
index 936e605..ef404a9 100644
--- a/core/fxge/cfx_renderdevice.cpp
+++ b/core/fxge/cfx_renderdevice.cpp
@@ -1186,14 +1186,6 @@
end_col, normalize, x_subpixel, a, r, g, b);
}
-#if defined(_SKIA_SUPPORT_)
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
- // DrawNormalTextHelper() can result in unpremultiplied bitmaps for
- // rendering glyphs. Make sure `bitmap` is premultiplied before proceeding.
- bitmap->PreMultiply();
- }
-#endif
-
if (bitmap->IsMaskFormat())
SetBitMask(bitmap, bmp_rect.left, bmp_rect.top, fill_color);
else
diff --git a/core/fxge/dib/cfx_dibbase.h b/core/fxge/dib/cfx_dibbase.h
index 8d2cfa5..4b8724d 100644
--- a/core/fxge/dib/cfx_dibbase.h
+++ b/core/fxge/dib/cfx_dibbase.h
@@ -90,8 +90,11 @@
const CFX_ClipRgn* pClipRgn) const;
#if defined(_SKIA_SUPPORT_)
- // Realizes an `SkImage` from this DIB. Changes to the DIB do not affect the
- // `SkImage`. `force_alpha` forces gray images to be treated as 8-bit alpha.
+ // Realizes an `SkImage` from this DIB. `force_alpha` forces gray images to be
+ // treated as 8-bit alpha.
+ //
+ // This may share the underlying pixels, in which case, this DIB should not be
+ // modified during the lifetime of the `SkImage`.
virtual sk_sp<SkImage> RealizeSkImage(bool force_alpha) const;
#endif // defined(_SKIA_SUPPORT_)
@@ -109,6 +112,11 @@
int src_top,
DataVector<uint32_t>* pal);
+#if defined(_SKIA_SUPPORT_)
+ // Whether alpha is premultiplied (if `IsAlphaFormat()`).
+ virtual bool IsPremultiplied() const;
+#endif // defined(_SKIA_SUPPORT_)
+
RetainPtr<CFX_DIBitmap> ClipToInternal(const FX_RECT* pClip) const;
void BuildPalette();
int FindPalette(uint32_t color) const;
diff --git a/core/fxge/dib/cfx_dibitmap.h b/core/fxge/dib/cfx_dibitmap.h
index 206ebcc..04b496d 100644
--- a/core/fxge/dib/cfx_dibitmap.h
+++ b/core/fxge/dib/cfx_dibitmap.h
@@ -125,21 +125,19 @@
uint32_t pitch);
#if defined(_SKIA_SUPPORT_)
- // Converts to pre-multiplied alpha if necessary.
- void PreMultiply();
-
// Converts to un-pre-multiplied alpha if necessary.
void UnPreMultiply();
// Forces pre-multiplied alpha without conversion.
// TODO(crbug.com/pdfium/2011): Remove the need for this.
void ForcePreMultiply();
-
- // Forces un-pre-multiplied alpha without conversion.
- // TODO(crbug.com/pdfium/2011): Remove the need for this.
- void ForceUnPreMultiply();
#endif
+ protected:
+#if defined(_SKIA_SUPPORT_)
+ bool IsPremultiplied() const override;
+#endif // defined(_SKIA_SUPPORT_)
+
private:
enum class Channel : uint8_t { kRed, kAlpha };
diff --git a/core/fxge/dib/cfx_dibitmap_unittest.cpp b/core/fxge/dib/cfx_dibitmap_unittest.cpp
index ce79a01..e4c9c8c 100644
--- a/core/fxge/dib/cfx_dibitmap_unittest.cpp
+++ b/core/fxge/dib/cfx_dibitmap_unittest.cpp
@@ -114,16 +114,6 @@
}
#if defined(_SKIA_SUPPORT_)
-TEST(CFX_DIBitmap, PreMultiply_FromCleared) {
- auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
- ASSERT_TRUE(bitmap->Create(1, 1, FXDIB_Format::kArgb));
- FXARGB_SETDIB(bitmap->GetBuffer().data(), 0x7f'ff'ff'ff);
-
- bitmap->PreMultiply();
-
- EXPECT_THAT(bitmap->GetBuffer(), ElementsAre(0x7f, 0x7f, 0x7f, 0x7f));
-}
-
TEST(CFX_DIBitmap, UnPreMultiply_FromCleared) {
auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
ASSERT_TRUE(bitmap->Create(1, 1, FXDIB_Format::kArgb));
@@ -134,21 +124,10 @@
EXPECT_THAT(bitmap->GetBuffer(), ElementsAre(0xff, 0xff, 0xff, 0x7f));
}
-TEST(CFX_DIBitmap, PreMultiply_FromPreMultiplied) {
- auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
- ASSERT_TRUE(bitmap->Create(1, 1, FXDIB_Format::kArgb));
- bitmap->PreMultiply();
- FXARGB_SETDIB(bitmap->GetBuffer().data(), 0x7f'7f'7f'7f);
-
- bitmap->PreMultiply();
-
- EXPECT_THAT(bitmap->GetBuffer(), ElementsAre(0x7f, 0x7f, 0x7f, 0x7f));
-}
-
TEST(CFX_DIBitmap, UnPreMultiply_FromPreMultiplied) {
auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
ASSERT_TRUE(bitmap->Create(1, 1, FXDIB_Format::kArgb));
- bitmap->PreMultiply();
+ bitmap->ForcePreMultiply();
FXARGB_SETDIB(bitmap->GetBuffer().data(), 0x7f'7f'7f'7f);
bitmap->UnPreMultiply();
@@ -156,17 +135,6 @@
EXPECT_THAT(bitmap->GetBuffer(), ElementsAre(0xff, 0xff, 0xff, 0x7f));
}
-TEST(CFX_DIBitmap, PreMultiply_FromUnPreMultiplied) {
- auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
- ASSERT_TRUE(bitmap->Create(1, 1, FXDIB_Format::kArgb));
- bitmap->UnPreMultiply();
- FXARGB_SETDIB(bitmap->GetBuffer().data(), 0x7f'ff'ff'ff);
-
- bitmap->PreMultiply();
-
- EXPECT_THAT(bitmap->GetBuffer(), ElementsAre(0x7f, 0x7f, 0x7f, 0x7f));
-}
-
TEST(CFX_DIBitmap, UnPreMultiply_FromUnPreMultiplied) {
auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
ASSERT_TRUE(bitmap->Create(1, 1, FXDIB_Format::kArgb));
@@ -177,26 +145,4 @@
EXPECT_THAT(bitmap->GetBuffer(), ElementsAre(0xff, 0xff, 0xff, 0x7f));
}
-
-TEST(CFX_DIBitmap, ForcePreMultiply) {
- auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
- ASSERT_TRUE(bitmap->Create(1, 1, FXDIB_Format::kArgb));
- FXARGB_SETDIB(bitmap->GetBuffer().data(), 0x7f'7f'7f'7f);
-
- bitmap->ForcePreMultiply();
-
- bitmap->PreMultiply();
- EXPECT_THAT(bitmap->GetBuffer(), ElementsAre(0x7f, 0x7f, 0x7f, 0x7f));
-}
-
-TEST(CFX_DIBitmap, ForceUnPreMultiply) {
- auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
- ASSERT_TRUE(bitmap->Create(1, 1, FXDIB_Format::kArgb));
- FXARGB_SETDIB(bitmap->GetBuffer().data(), 0x7f'ff'ff'ff);
-
- bitmap->ForceUnPreMultiply();
-
- bitmap->UnPreMultiply();
- EXPECT_THAT(bitmap->GetBuffer(), ElementsAre(0xff, 0xff, 0xff, 0x7f));
-}
#endif // defined(_SKIA_SUPPORT_)
diff --git a/core/fxge/skia/cfx_dibbase_skia.cpp b/core/fxge/skia/cfx_dibbase_skia.cpp
index 89ae4c4..73179ef 100644
--- a/core/fxge/skia/cfx_dibbase_skia.cpp
+++ b/core/fxge/skia/cfx_dibbase_skia.cpp
@@ -46,7 +46,8 @@
// Note that an `SkImage` must be immutable, so if sharing pixels, they must not
// be modified during the lifetime of the `SkImage`.
sk_sp<SkImage> CreateSkiaImageFromDib(const CFX_DIBBase* source,
- SkColorType color_type) {
+ SkColorType color_type,
+ SkAlphaType alpha_type) {
// Make sure the DIB is backed by a buffer.
RetainPtr<const CFX_DIBBase> retained;
if (source->GetBuffer().empty()) {
@@ -54,7 +55,7 @@
if (!retained) {
return nullptr;
}
- DCHECK(!source->GetBuffer().empty());
+ DCHECK(!retained->GetBuffer().empty());
} else {
retained.Reset(source);
}
@@ -62,7 +63,7 @@
// Convert unowned pointer to a retained pointer, then "leak" to `SkImage`.
source = retained.Leak();
SkImageInfo info = SkImageInfo::Make(source->GetWidth(), source->GetHeight(),
- color_type, kPremul_SkAlphaType);
+ color_type, alpha_type);
return SkImages::RasterFromPixmap(
SkPixmap(info, source->GetBuffer().data(), source->GetPitch()),
/*rasterReleaseProc=*/ReleaseRetainedHeldBySkImage,
@@ -142,6 +143,8 @@
// Creates an `SkImage` from a `CFX_DIBBase`, transforming the source pixels
// using `pixel_transform`.
+//
+// TODO(crbug.com/pdfium/2048): Consolidate with `CFX_DIBBase::ConvertBuffer()`.
template <size_t source_bits_per_pixel, typename PixelTransform>
sk_sp<SkImage> CreateSkiaImageFromTransformedDib(
const CFX_DIBBase& source,
@@ -261,7 +264,7 @@
return palette[index];
});
}
- return CreateSkiaImageFromDib(this, color_type);
+ return CreateSkiaImageFromDib(this, color_type, kPremul_SkAlphaType);
case 24:
return CreateSkiaImageFromTransformedDib</*source_bits_per_pixel=*/24>(
@@ -271,9 +274,15 @@
});
case 32:
- return CreateSkiaImageFromDib(this, kBGRA_8888_SkColorType);
+ return CreateSkiaImageFromDib(
+ this, kBGRA_8888_SkColorType,
+ IsPremultiplied() ? kPremul_SkAlphaType : kUnpremul_SkAlphaType);
default:
NOTREACHED_NORETURN();
}
}
+
+bool CFX_DIBBase::IsPremultiplied() const {
+ return false;
+}
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index e78b91e..2bd14e1 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -1451,31 +1451,6 @@
return false;
}
-void CFX_DIBitmap::PreMultiply() {
- if (GetBPP() != 32)
- return;
-
- void* buffer = GetWritableBuffer().data();
- if (!buffer)
- return;
-
- Format prior_format = m_nFormat;
- ForcePreMultiply();
- if (prior_format == Format::kPreMultiplied)
- return;
-
- int height = GetHeight();
- int width = GetWidth();
- int row_bytes = GetPitch();
- SkImageInfo unpremultiplied_info =
- SkImageInfo::Make(width, height, kN32_SkColorType, kUnpremul_SkAlphaType);
- SkPixmap unpremultiplied(unpremultiplied_info, buffer, row_bytes);
- SkImageInfo premultiplied_info =
- SkImageInfo::Make(width, height, kN32_SkColorType, kPremul_SkAlphaType);
- SkPixmap premultiplied(premultiplied_info, buffer, row_bytes);
- unpremultiplied.readPixels(premultiplied);
-}
-
void CFX_DIBitmap::UnPreMultiply() {
if (GetBPP() != 32)
return;
@@ -1485,7 +1460,7 @@
return;
Format prior_format = m_nFormat;
- ForceUnPreMultiply();
+ m_nFormat = Format::kUnPreMultiplied;
if (prior_format == Format::kUnPreMultiplied)
return;
@@ -1505,8 +1480,8 @@
m_nFormat = Format::kPreMultiplied;
}
-void CFX_DIBitmap::ForceUnPreMultiply() {
- m_nFormat = Format::kUnPreMultiplied;
+bool CFX_DIBitmap::IsPremultiplied() const {
+ return m_nFormat == Format::kPreMultiplied;
}
bool CFX_SkiaDeviceDriver::DrawBitsWithMask(
diff --git a/fpdfsdk/fpdf_annot_embeddertest.cpp b/fpdfsdk/fpdf_annot_embeddertest.cpp
index 06da6a8..2dd8190 100644
--- a/fpdfsdk/fpdf_annot_embeddertest.cpp
+++ b/fpdfsdk/fpdf_annot_embeddertest.cpp
@@ -547,8 +547,9 @@
}
{
const char* expected_hash = []() {
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "fad91b9c968fe8019a774f5e2419b8fc";
+ if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
+ return "6e00cc75639c5314c8273072915d8f92";
+ }
return "354002e1c4386d38fdde29ef8d61074a";
}();
ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
@@ -768,8 +769,9 @@
// Open the saved document.
const char* checksum = []() {
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "899387ae792390cd0d83cf7e2bbebfb5";
+ if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
+ return "24994ad69aa612a66d183eaf9a92aa06";
+ }
return "dba153419f67b7c0c0e3d22d3e8910d5";
}();
@@ -1417,8 +1419,9 @@
TEST_F(FPDFAnnotEmbedderTest, AddAndModifyText) {
const char* md5_new_text = []() {
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "63b931799a9ba21c36d9d4f9711f252b";
+ if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
+ return "8a8ebe4bc9d310aec363fec72143c7c7";
+ }
#if BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_ARM64)
return "0c3448974a4e8da2395da917935e5de1";
#elif BUILDFLAG(IS_APPLE) && !defined(ARCH_CPU_ARM64)
@@ -1428,8 +1431,9 @@
#endif
}();
const char* md5_modified_text = []() {
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "e29ddba6a49d5c9c5cdde7d1693a251c";
+ if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
+ return "87dd70d562ba23d8d44e61668de3c4f1";
+ }
#if BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_ARM64)
return "9cf1c024a9d2d356bcdd14cb71a32324";
#elif BUILDFLAG(IS_APPLE) && !defined(ARCH_CPU_ARM64)
diff --git a/testing/resources/pixel/bug_1372651_expected_skia.pdf.0.png b/testing/resources/pixel/bug_1372651_expected_skia.pdf.0.png
index f1823f3..6ac995f 100644
--- a/testing/resources/pixel/bug_1372651_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_1372651_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_632_expected_skia.pdf.1.png b/testing/resources/pixel/bug_632_expected_skia.pdf.1.png
index 002dcba..3e66da2 100644
--- a/testing/resources/pixel/bug_632_expected_skia.pdf.1.png
+++ b/testing/resources/pixel/bug_632_expected_skia.pdf.1.png
Binary files differ
diff --git a/testing/resources/pixel/bug_736695_2_expected_skia.pdf.0.png b/testing/resources/pixel/bug_736695_2_expected_skia.pdf.0.png
index 801b157..f6eeeff 100644
--- a/testing/resources/pixel/bug_736695_2_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_736695_2_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_736695_3_expected_skia.pdf.0.png b/testing/resources/pixel/bug_736695_3_expected_skia.pdf.0.png
index 1b02f1b..9618507 100644
--- a/testing/resources/pixel/bug_736695_3_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_736695_3_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/scrollable_widgets1_expected_skia.pdf.0.png b/testing/resources/pixel/scrollable_widgets1_expected_skia.pdf.0.png
index d4c1f9d..36f9674 100644
--- a/testing/resources/pixel/scrollable_widgets1_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/scrollable_widgets1_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/scrollable_widgets2_expected_skia.pdf.0.png b/testing/resources/pixel/scrollable_widgets2_expected_skia.pdf.0.png
index dd9f6a1..919a2de 100644
--- a/testing/resources/pixel/scrollable_widgets2_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/scrollable_widgets2_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/barcode_test_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/barcode_test_expected_skia.pdf.0.png
index 3716b9c..9b3f18c 100644
--- a/testing/resources/pixel/xfa_specific/barcode_test_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/barcode_test_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia.pdf.0.png
index 3ccc1a2..fa0be3b 100644
--- a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia_mac.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia_mac.pdf.0.png
index eb303b2..66dbce3 100644
--- a/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia_mac.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/dynamic_list_box_allow_multiple_selection_expected_skia_mac.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skia.pdf.0.png
index 072a537..6b25767 100644
--- a/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/dynamic_password_field_background_fill_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skia.pdf.0.png
index 884a23f..008f192 100644
--- a/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/resolve_nodes_0_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/static_password_field_rotate_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/static_password_field_rotate_expected_skia.pdf.0.png
index 4b35140..46880c5 100644
--- a/testing/resources/pixel/xfa_specific/static_password_field_rotate_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/static_password_field_rotate_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/static_password_field_rotate_expected_skia.pdf.1.png b/testing/resources/pixel/xfa_specific/static_password_field_rotate_expected_skia.pdf.1.png
index fd88db2..2fc3677 100644
--- a/testing/resources/pixel/xfa_specific/static_password_field_rotate_expected_skia.pdf.1.png
+++ b/testing/resources/pixel/xfa_specific/static_password_field_rotate_expected_skia.pdf.1.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/use_ahem/xfa_textfield_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/use_ahem/xfa_textfield_expected_skia.pdf.0.png
index ad18d26..00bad26 100644
--- a/testing/resources/pixel/xfa_specific/use_ahem/xfa_textfield_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/use_ahem/xfa_textfield_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.0.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.0.png
index fe509a8..74bcc2a 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.1.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.1.png
index e720b9b..3cfdf49 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.1.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia.pdf.1.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_mac.pdf.0.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_mac.pdf.0.png
index 384294c..3a88b28 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_mac.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_mac.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_mac.pdf.1.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_mac.pdf.1.png
index 3366bc0..4ca363b 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_mac.pdf.1.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_mac.pdf.1.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.0.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.0.png
index 54f04d8..0f09ccf 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.0.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.1.png b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.1.png
index 7691fb1..5c292be 100644
--- a/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.1.png
+++ b/testing/resources/pixel/xfa_specific/xfa_node_caption_expected_skia_win.pdf.1.png
Binary files differ
diff --git a/xfa/fde/cfde_textout_unittest.cpp b/xfa/fde/cfde_textout_unittest.cpp
index fe078b0..8babdfd 100644
--- a/xfa/fde/cfde_textout_unittest.cpp
+++ b/xfa/fde/cfde_textout_unittest.cpp
@@ -117,8 +117,9 @@
}
const char* GetLargeTextBlobChecksum() {
- if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "6181929583fd7651169306852397806f";
+ if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
+ return "cd357c6afbf17bb2ac48817df5d9eaad";
+ }
return "268b71a8660b51e31c6bf30fc7ff1e08";
}
};