[Skia] Fix the issue that unwanted black borders are rendered.
Revert CL [1] since the linear SkMipmapMode wasn't the actual root
cause for images/masks being rendered with black borders. The
unwanted borders were caused by using `kOpaque_SkAlphaType` for
initiating Skia rendering device, which will enforce the new CPU
backend to be opaque if SkMipmapMode::kLinear is in use.
Since `kOpaque_SkAlphaType` may cause unwanted opaque layers, this CL
switched to use the SkAlphaType::kPremul_SkAlphaType (which is more
reliable than SkAlphaType::kOpaque_SkAlphaType) so that an image's
(whether it's a mask or not) transparency can be respected.
[1] https://pdfium-review.googlesource.com/100174
Bug: pdfium:1818,pdfium:1896
Change-Id: Icfbbdeb4830467f829b49719ccb825d726b3549a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/100930
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Nigi <nigi@chromium.org>
diff --git a/DEPS b/DEPS
index 45495f5..23e3390 100644
--- a/DEPS
+++ b/DEPS
@@ -130,7 +130,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': 'd9ef4ae67c89af1de020f0a4b5b16718a5b6ba88',
+ 'pdfium_tests_revision': 'b05000cdfc72f339b6e0215f362f1456fa3278de',
# 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/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index b51526a..63e2536 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -720,8 +720,7 @@
SkColorType colorType = forceAlpha || pSource->IsMaskFormat()
? SkColorType::kAlpha_8_SkColorType
: SkColorType::kGray_8_SkColorType;
- SkAlphaType alphaType =
- pSource->IsMaskFormat() ? kPremul_SkAlphaType : kOpaque_SkAlphaType;
+ SkAlphaType alphaType = kPremul_SkAlphaType;
int width = pSource->GetWidth();
int height = pSource->GetHeight();
int rowBytes = pSource->GetPitch();
@@ -808,7 +807,6 @@
}
case 32:
colorType = Get32BitSkColorType(bRgbByteOrder);
- alphaType = kPremul_SkAlphaType;
pSource->DebugVerifyBufferIsPreMultiplied(buffer);
break;
default:
@@ -1734,7 +1732,7 @@
SkImageInfo imageInfo =
SkImageInfo::Make(pBitmap->GetWidth(), pBitmap->GetHeight(), color_type,
- kOpaque_SkAlphaType);
+ kPremul_SkAlphaType);
skBitmap.installPixels(imageInfo, pBitmap->GetBuffer().data(),
pBitmap->GetPitch());
m_pCanvas = new SkCanvas(skBitmap);
@@ -2852,7 +2850,7 @@
CStretchEngine::UseInterpolateBilinear(options, dest_width,
dest_height, width, height)) {
sampling_options =
- SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kNearest);
+ SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kLinear);
}
m_pCanvas->drawImageRect(skBitmap.asImage(),
SkRect::MakeWH(width, height), sampling_options,
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index 3ba7e5d..bc78619 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -3856,7 +3856,7 @@
EXPECT_EQ(FPDFBitmap_BGRA, FPDFBitmap_GetFormat(bitmap.get()));
const char* checksum = []() {
if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "404d679bd7e735543b001565cdbe3bf2";
+ return "3b51fc066ee18efbf70bab0501763603";
return "582ca300e003f512d7b552c7b5b45d2e";
}();
CompareBitmap(bitmap.get(), 53, 43, checksum);
@@ -3893,7 +3893,7 @@
EXPECT_EQ(FPDFBitmap_BGRA, FPDFBitmap_GetFormat(bitmap.get()));
const char* checksum = []() {
if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "2aec37e653af0780bc5903c34781588c";
+ return "74081c2a48c2fd4f1fde544f056e956b";
return "0824c16dcf2dfcef44b45d88db1fddce";
}();
CompareBitmap(bitmap.get(), 120, 43, checksum);
diff --git a/testing/resources/pixel/bug_1015233_expected_skia.pdf.0.png b/testing/resources/pixel/bug_1015233_expected_skia.pdf.0.png
index 8e1a456..1a2a736 100644
--- a/testing/resources/pixel/bug_1015233_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_1015233_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 c5fa501..e454dfd 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/xfa/fwl/cfwl_edit_embeddertest.cpp b/xfa/fwl/cfwl_edit_embeddertest.cpp
index 8d90ec1..11797fa 100644
--- a/xfa/fwl/cfwl_edit_embeddertest.cpp
+++ b/xfa/fwl/cfwl_edit_embeddertest.cpp
@@ -255,7 +255,7 @@
FORM_OnLButtonDown(form_handle(), page(), 0, 115, 58);
const char* filled_checksum = []() {
if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
- return "40c1877a7ac5d71e61cc5dbc567576f6";
+ return "062ad65614888e4f114b99f3396be3e8";
return "101cf6223fa2403fba4c413a8310ab02";
}();
ScopedFPDFBitmap page_bitmap = RenderLoadedPageWithFlags(page(), FPDF_ANNOT);