Revert recent C++20 usage in CFX_FillRenderOptions This effectively reverts https://pdfium-review.googlesource.com/112930 and https://pdfium-review.googlesource.com/112934, to unblock some embedders that are not ready for C++20 language features. Bug: pdfium:1932 Change-Id: Ia313b9040e2efa0c84aad2a8b56e9ce968df5256 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/113291 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 1efa7e9..a5a2652 100644 --- a/core/fpdfapi/render/cpdf_imagerenderer.cpp +++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -483,7 +483,7 @@ ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha); m_pRenderStatus->GetRenderDevice()->DrawPath( path, nullptr, nullptr, fill_color, 0, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}); + CFX_FillRenderOptions::WindingOptions()); return false; } RetainPtr<CFX_DIBBase> pAlphaMask;
diff --git a/core/fpdfapi/render/cpdf_rendershading.cpp b/core/fpdfapi/render/cpdf_rendershading.cpp index cf1ed01..4991d76 100644 --- a/core/fpdfapi/render/cpdf_rendershading.cpp +++ b/core/fpdfapi/render/cpdf_rendershading.cpp
@@ -710,11 +710,12 @@ D2.GetPoints(points.subspan(3, 4)); C2.GetPointsReverse(points.subspan(6, 4)); D1.GetPointsReverse(points.subspan(9, 4)); - const CFX_FillRenderOptions fill_options = { - .fill_type = CFX_FillRenderOptions::FillType::kWinding, - .aliased_path = bNoPathSmooth, - .full_cover = true, - }; + CFX_FillRenderOptions fill_options( + CFX_FillRenderOptions::WindingOptions()); + fill_options.full_cover = true; + if (bNoPathSmooth) { + fill_options.aliased_path = true; + } pDevice->DrawPath( path, nullptr, nullptr, ArgbEncode(alpha, div_colors[0].comp[0], div_colors[0].comp[1],
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp index d86c2f6..2da1ed2 100644 --- a/core/fpdfapi/render/cpdf_renderstatus.cpp +++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -83,16 +83,25 @@ CFX_FillRenderOptions::FillType fill_type, bool is_stroke, bool is_type3_char) { - const bool rect_aa = (fill_type != CFX_FillRenderOptions::FillType::kNoFill && - options.bRectAA); - return { - .fill_type = fill_type, - .adjust_stroke = path_obj->m_GeneralState.GetStrokeAdjust(), - .aliased_path = options.bNoPathSmooth, - .rect_aa = rect_aa, - .stroke = is_stroke, - .text_mode = is_type3_char, - }; + CFX_FillRenderOptions fill_options(fill_type); + if (fill_type != CFX_FillRenderOptions::FillType::kNoFill && + options.bRectAA) { + fill_options.rect_aa = true; + } + if (options.bNoPathSmooth) { + fill_options.aliased_path = true; + } + if (path_obj->m_GeneralState.GetStrokeAdjust()) { + fill_options.adjust_stroke = true; + } + if (is_stroke) { + fill_options.stroke = true; + } + if (is_type3_char) { + fill_options.text_mode = true; + } + + return fill_options; } CFX_FillRenderOptions GetFillOptionsForDrawTextPath( @@ -100,12 +109,19 @@ const CPDF_TextObject* text_obj, bool is_stroke, bool is_fill) { - return { - .adjust_stroke = text_obj->m_GeneralState.GetStrokeAdjust(), - .aliased_path = options.bNoTextSmooth, - .stroke = (is_stroke && is_fill), - .stroke_text_mode = (is_stroke && is_fill), - }; + CFX_FillRenderOptions fill_options; + if (is_stroke && is_fill) { + fill_options.stroke = true; + fill_options.stroke_text_mode = true; + } + if (text_obj->m_GeneralState.GetStrokeAdjust()) { + fill_options.adjust_stroke = true; + } + if (options.bNoTextSmooth) { + fill_options.aliased_path = true; + } + + return fill_options; } FXDIB_Format GetFormatForLuminosity(bool is_luminosity) { @@ -485,9 +501,8 @@ if (pPath->GetPoints().empty()) { CFX_Path empty_path; empty_path.AppendRect(-1, -1, 0, 0); - m_pDevice->SetClip_PathFill( - empty_path, nullptr, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}); + m_pDevice->SetClip_PathFill(empty_path, nullptr, + CFX_FillRenderOptions::WindingOptions()); } else { m_pDevice->SetClip_PathFill( *pPath, &mtObj2Device, @@ -512,13 +527,14 @@ ProcessText(pText, mtObj2Device, pTextClippingPath.get()); continue; } + if (!pTextClippingPath) continue; - const CFX_FillRenderOptions fill_options = { - .fill_type = CFX_FillRenderOptions::FillType::kWinding, - .aliased_path = m_Options.GetOptions().bNoTextSmooth, - }; + CFX_FillRenderOptions fill_options(CFX_FillRenderOptions::WindingOptions()); + if (m_Options.GetOptions().bNoTextSmooth) { + fill_options.aliased_path = true; + } m_pDevice->SetClip_PathFill(*pTextClippingPath, nullptr, fill_options); pTextClippingPath.reset(); } @@ -545,10 +561,10 @@ &path_matrix, path_obj->m_GraphState.GetObject()); } - const CFX_FillRenderOptions fill_options = { - .fill_type = path_obj->filltype(), - .aliased_path = m_Options.GetOptions().bNoPathSmooth, - }; + CFX_FillRenderOptions fill_options(path_obj->filltype()); + if (m_Options.GetOptions().bNoPathSmooth) { + fill_options.aliased_path = true; + } return m_pDevice->SetClip_PathFill(*path_obj->path().GetObject(), &path_matrix, fill_options); }
diff --git a/core/fxge/cfx_defaultrenderdevice_unittest.cpp b/core/fxge/cfx_defaultrenderdevice_unittest.cpp index 11ed6db..9304a8c 100644 --- a/core/fxge/cfx_defaultrenderdevice_unittest.cpp +++ b/core/fxge/cfx_defaultrenderdevice_unittest.cpp
@@ -25,15 +25,17 @@ // Matrix that transposes and translates by 1 unit on each axis. const CFX_Matrix object_to_device(0, 1, 1, 0, 1, -1); + // Fill type cannot be none. + const CFX_FillRenderOptions fill_options( + CFX_FillRenderOptions::FillType::kEvenOdd); + CFX_DefaultRenderDevice device; ASSERT_TRUE(device.Create(/*width=*/16, /*height=*/16, FXDIB_Format::kArgb, /*pBackdropBitmap=*/nullptr)); CFX_Path path; path.AppendRect(2, 4, 14, 12); - EXPECT_TRUE(device.SetClip_PathFill( - path, &object_to_device, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd})); + EXPECT_TRUE(device.SetClip_PathFill(path, &object_to_device, fill_options)); EXPECT_EQ(FX_RECT(5, 1, 13, 13), device.GetClipBox()); }
diff --git a/core/fxge/cfx_drawutils.cpp b/core/fxge/cfx_drawutils.cpp index 44d0db1..3591471 100644 --- a/core/fxge/cfx_drawutils.cpp +++ b/core/fxge/cfx_drawutils.cpp
@@ -35,7 +35,7 @@ graph_state_data.m_DashPhase = 0; graph_state_data.m_LineWidth = 1.0f; - render_device->DrawPath( - path, &user_to_device, &graph_state_data, 0, ArgbEncode(255, 0, 0, 0), - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + render_device->DrawPath(path, &user_to_device, &graph_state_data, 0, + ArgbEncode(255, 0, 0, 0), + CFX_FillRenderOptions::EvenOddOptions()); }
diff --git a/core/fxge/cfx_fillrenderoptions.h b/core/fxge/cfx_fillrenderoptions.h index 3c0a1ae..d123f72 100644 --- a/core/fxge/cfx_fillrenderoptions.h +++ b/core/fxge/cfx_fillrenderoptions.h
@@ -23,6 +23,29 @@ kWinding = 2, }; + static constexpr CFX_FillRenderOptions EvenOddOptions() { + return CFX_FillRenderOptions(FillType::kEvenOdd); + } + static constexpr CFX_FillRenderOptions WindingOptions() { + return CFX_FillRenderOptions(FillType::kWinding); + } + + constexpr CFX_FillRenderOptions() + : CFX_FillRenderOptions(FillType::kNoFill) {} + + // TODO(thestig): Switch to default member initializer for bit-fields when + // C++20 is available. + constexpr explicit CFX_FillRenderOptions(FillType fill_type) + : fill_type(fill_type), + adjust_stroke(false), + aliased_path(false), + full_cover(false), + rect_aa(false), + stroke(false), + stroke_text_mode(false), + text_mode(false), + zero_area(false) {} + bool operator==(const CFX_FillRenderOptions& other) const { return fill_type == other.fill_type && adjust_stroke == other.adjust_stroke && @@ -38,31 +61,31 @@ } // Fill type. - FillType fill_type = FillType::kNoFill; + FillType fill_type; // Adjusted stroke rendering is enabled. - bool adjust_stroke : 1 = false; + bool adjust_stroke : 1; // Whether anti aliasing is enabled for path rendering. - bool aliased_path : 1 = false; + bool aliased_path : 1; // Fills with the sum of colors from both cover and source. - bool full_cover : 1 = false; + bool full_cover : 1; // Rect paths use anti-aliasing. - bool rect_aa : 1 = false; + bool rect_aa : 1; // Path is stroke. - bool stroke : 1 = false; + bool stroke : 1; // Renders text by filling strokes. - bool stroke_text_mode : 1 = false; + bool stroke_text_mode : 1; // Path is text. - bool text_mode : 1 = false; + bool text_mode : 1; // Path encloses zero area. - bool zero_area : 1 = false; + bool zero_area : 1; }; #endif // CORE_FXGE_CFX_FILLRENDEROPTIONS_H_
diff --git a/core/fxge/cfx_renderdevice.cpp b/core/fxge/cfx_renderdevice.cpp index 0d5497f..ca2b08b 100644 --- a/core/fxge/cfx_renderdevice.cpp +++ b/core/fxge/cfx_renderdevice.cpp
@@ -578,11 +578,11 @@ bool CFX_RenderDevice::SetClip_Rect(const FX_RECT& rect) { CFX_Path path; path.AppendRect(rect.left, rect.bottom, rect.right, rect.top); - if (!SetClip_PathFill( - path, nullptr, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding})) { + if (!SetClip_PathFill(path, nullptr, + CFX_FillRenderOptions::WindingOptions())) { return false; } + UpdateClipBox(); return true; } @@ -865,10 +865,10 @@ if (matrix && !matrix->IsIdentity() && !set_identity) new_matrix = matrix; - const CFX_FillRenderOptions path_options = { - .aliased_path = aliased_path, - .zero_area = true, - }; + CFX_FillRenderOptions path_options; + path_options.zero_area = true; + path_options.aliased_path = aliased_path; + m_pDeviceDriver->DrawPath(new_path, new_matrix, &graph_state, 0, stroke_color, path_options, blend_type); } @@ -1081,9 +1081,8 @@ if (fabs(char2device.a) + fabs(char2device.b) > 50 * 1.0f || GetDeviceType() == DeviceType::kPrinter) { if (pFont->GetFaceRec()) { - const CFX_FillRenderOptions path_options = { - .aliased_path = !is_text_smooth, - }; + CFX_FillRenderOptions path_options; + path_options.aliased_path = !is_text_smooth; return DrawTextPath(pCharPos, pFont, font_size, mtText2Device, nullptr, nullptr, fill_color, 0, nullptr, path_options); } @@ -1224,13 +1223,11 @@ CFX_Path transformed_path(*pPath); transformed_path.Transform(matrix); if (fill_color || stroke_color) { - const CFX_FillRenderOptions::FillType fill_type = - fill_color ? CFX_FillRenderOptions::FillType::kWinding - : CFX_FillRenderOptions::FillType::kNoFill; - const CFX_FillRenderOptions options = { - .fill_type = fill_type, - .text_mode = true, - }; + CFX_FillRenderOptions options(fill_options); + if (fill_color) { + options.fill_type = CFX_FillRenderOptions::FillType::kWinding; + } + options.text_mode = true; if (!DrawPathWithBlend(transformed_path, pUser2Device, pGraphState, fill_color, stroke_color, options, BlendMode::kNormal)) { @@ -1249,7 +1246,7 @@ CFX_Path path; path.AppendFloatRect(rect); DrawPath(path, pUser2Device, nullptr, color, 0, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}); + CFX_FillRenderOptions::WindingOptions()); } void CFX_RenderDevice::DrawFillArea(const CFX_Matrix& mtUser2Device, @@ -1262,7 +1259,7 @@ path.AppendPoint(points[i], CFX_Path::Point::Type::kLine); DrawPath(path, &mtUser2Device, nullptr, color, 0, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); } void CFX_RenderDevice::DrawStrokeRect(const CFX_Matrix& mtUser2Device, @@ -1275,7 +1272,7 @@ CFX_Path path; path.AppendFloatRect(rect); DrawPath(path, &mtUser2Device, &gsd, 0, color, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); } void CFX_RenderDevice::DrawStrokeLine(const CFX_Matrix* pUser2Device, @@ -1291,7 +1288,7 @@ gsd.m_LineWidth = fWidth; DrawPath(path, pUser2Device, &gsd, 0, color, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); } void CFX_RenderDevice::DrawFillRect(const CFX_Matrix* pUser2Device, @@ -1357,7 +1354,7 @@ path.AppendRect(fLeft + fWidth, fBottom + fWidth, fRight - fWidth, fTop - fWidth); DrawPath(path, pUser2Device, nullptr, color.ToFXColor(nTransparency), 0, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); break; } case BorderStyle::kDash: { @@ -1378,7 +1375,7 @@ path.AppendPoint(CFX_PointF(fLeft + fHalfWidth, fBottom + fHalfWidth), CFX_Path::Point::Type::kLine); DrawPath(path, pUser2Device, &gsd, 0, color.ToFXColor(nTransparency), - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}); + CFX_FillRenderOptions::WindingOptions()); break; } case BorderStyle::kBeveled: @@ -1407,7 +1404,7 @@ CFX_Path::Point::Type::kLine); DrawPath(path_left_top, pUser2Device, &gsd, crLeftTop.ToFXColor(nTransparency), 0, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); CFX_Path path_right_bottom; path_right_bottom.AppendPoint( @@ -1432,14 +1429,14 @@ CFX_Path::Point::Type::kLine); DrawPath(path_right_bottom, pUser2Device, &gsd, crRightBottom.ToFXColor(nTransparency), 0, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); CFX_Path path; path.AppendRect(fLeft, fBottom, fRight, fTop); path.AppendRect(fLeft + fHalfWidth, fBottom + fHalfWidth, fRight - fHalfWidth, fTop - fHalfWidth); DrawPath(path, pUser2Device, &gsd, color.ToFXColor(nTransparency), 0, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); break; } case BorderStyle::kUnderline: { @@ -1452,7 +1449,7 @@ path.AppendPoint(CFX_PointF(fRight, fBottom + fHalfWidth), CFX_Path::Point::Type::kLine); DrawPath(path, pUser2Device, &gsd, 0, color.ToFXColor(nTransparency), - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); break; } }
diff --git a/core/fxge/cfx_windowsrenderdevice_embeddertest.cpp b/core/fxge/cfx_windowsrenderdevice_embeddertest.cpp index 6c4063e..b637b46 100644 --- a/core/fxge/cfx_windowsrenderdevice_embeddertest.cpp +++ b/core/fxge/cfx_windowsrenderdevice_embeddertest.cpp
@@ -57,8 +57,7 @@ path_data.AppendLine(p3, p1); path_data.ClosePath(); EXPECT_TRUE(m_driver->SetClip_PathFill( - path_data, &kIdentityMatrix, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding})); + path_data, &kIdentityMatrix, CFX_FillRenderOptions::WindingOptions())); } TEST_F(CFX_WindowsRenderDeviceTest, SimpleClipRect) { @@ -67,8 +66,7 @@ path_data.AppendRect(0.0f, 100.0f, 200.0f, 0.0f); path_data.ClosePath(); EXPECT_TRUE(m_driver->SetClip_PathFill( - path_data, &kIdentityMatrix, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding})); + path_data, &kIdentityMatrix, CFX_FillRenderOptions::WindingOptions())); } TEST_F(CFX_WindowsRenderDeviceTest, GargantuanClipRect) { @@ -82,8 +80,7 @@ // however they do not because the GDI API IntersectClipRect() errors out and // affect subsequent imaging. crbug.com/1019026 EXPECT_FALSE(m_driver->SetClip_PathFill( - path_data, &kIdentityMatrix, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding})); + path_data, &kIdentityMatrix, CFX_FillRenderOptions::WindingOptions())); } TEST_F(CFX_WindowsRenderDeviceTest, GargantuanClipRectWithBaseClip) { @@ -97,6 +94,5 @@ // Use of a reasonable base clip ensures that we avoid getting an error back // from GDI API IntersectClipRect(). EXPECT_TRUE(m_driver->SetClip_PathFill( - path_data, &kIdentityMatrix, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding})); + path_data, &kIdentityMatrix, CFX_FillRenderOptions::WindingOptions())); }
diff --git a/core/fxge/skia/fx_skia_device_embeddertest.cpp b/core/fxge/skia/fx_skia_device_embeddertest.cpp index 5aa9a76..d904230 100644 --- a/core/fxge/skia/fx_skia_device_embeddertest.cpp +++ b/core/fxge/skia/fx_skia_device_embeddertest.cpp
@@ -92,7 +92,7 @@ driver->SetClip_PathFill(clipPath, &clipMatrix, CFX_FillRenderOptions()); if (state.m_graphic == State::Graphic::kPath) { driver->DrawPath(path1, &matrix, &graphState, 0xFF112233, 0, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}, + CFX_FillRenderOptions::WindingOptions(), BlendMode::kNormal); } else if (state.m_graphic == State::Graphic::kText) { driver->DrawDeviceText(charPos, &font, matrix, fontSize, 0xFF445566, @@ -116,7 +116,7 @@ driver->SetClip_PathFill(clipPath, &clipMatrix2, CFX_FillRenderOptions()); if (state.m_graphic == State::Graphic::kPath) { driver->DrawPath(path2, &matrix2, &graphState, 0xFF112233, 0, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}, + CFX_FillRenderOptions::WindingOptions(), BlendMode::kNormal); } else if (state.m_graphic == State::Graphic::kText) { driver->DrawDeviceText(charPos, &font, matrix2, fontSize, 0xFF445566,
diff --git a/core/fxge/win32/cps_printer_driver.cpp b/core/fxge/win32/cps_printer_driver.cpp index b687945..f30b80d 100644 --- a/core/fxge/win32/cps_printer_driver.cpp +++ b/core/fxge/win32/cps_printer_driver.cpp
@@ -81,9 +81,8 @@ static_cast<float>(pRect->right), static_cast<float>(pRect->top)); } - m_PSRenderer.SetClip_PathFill( - path, nullptr, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}); + m_PSRenderer.SetClip_PathFill(path, nullptr, + CFX_FillRenderOptions::WindingOptions()); } } }
diff --git a/fpdfsdk/cpdfsdk_widget.cpp b/fpdfsdk/cpdfsdk_widget.cpp index 331bc51..162502c 100644 --- a/fpdfsdk/cpdfsdk_widget.cpp +++ b/fpdfsdk/cpdfsdk_widget.cpp
@@ -923,7 +923,7 @@ CFX_Path path; path.AppendFloatRect(GetRect()); pDevice->DrawPath(path, &mtUser2Device, &gsd, 0, 0xFFAAAAAA, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); } else { CPDFSDK_BAAnnot::DrawAppearance(pDevice, mtUser2Device, mode); }
diff --git a/fpdfsdk/pwl/cpwl_caret.cpp b/fpdfsdk/pwl/cpwl_caret.cpp index 2507f4b..47f7864 100644 --- a/fpdfsdk/pwl/cpwl_caret.cpp +++ b/fpdfsdk/pwl/cpwl_caret.cpp
@@ -50,7 +50,7 @@ CFX_GraphStateData gsd; gsd.m_LineWidth = m_fWidth; pDevice->DrawPath(path, &mtUser2Device, &gsd, 0, ArgbEncode(255, 0, 0, 0), - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); } void CPWL_Caret::OnTimerFired() {
diff --git a/fpdfsdk/pwl/cpwl_cbbutton.cpp b/fpdfsdk/pwl/cpwl_cbbutton.cpp index 0cec527..de248ce 100644 --- a/fpdfsdk/pwl/cpwl_cbbutton.cpp +++ b/fpdfsdk/pwl/cpwl_cbbutton.cpp
@@ -55,7 +55,7 @@ pDevice->DrawPath(path, &mtUser2Device, nullptr, kDefaultBlackColor.ToFXColor(GetTransparency()), 0, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + CFX_FillRenderOptions::EvenOddOptions()); } bool CPWL_CBButton::OnLButtonDown(Mask<FWL_EVENTFLAG> nFlag,
diff --git a/fpdfsdk/pwl/cpwl_edit.cpp b/fpdfsdk/pwl/cpwl_edit.cpp index c4b0270..3657b88 100644 --- a/fpdfsdk/pwl/cpwl_edit.cpp +++ b/fpdfsdk/pwl/cpwl_edit.cpp
@@ -199,9 +199,9 @@ path.AppendPoint(top, CFX_Path::Point::Type::kLine); } if (!path.GetPoints().empty()) { - pDevice->DrawPath( - path, &mtUser2Device, &gsd, 0, GetBorderColor().ToFXColor(255), - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + pDevice->DrawPath(path, &mtUser2Device, &gsd, 0, + GetBorderColor().ToFXColor(255), + CFX_FillRenderOptions::EvenOddOptions()); } }
diff --git a/fpdfsdk/pwl/cpwl_edit_impl.cpp b/fpdfsdk/pwl/cpwl_edit_impl.cpp index 30b78ef..ba4f43d 100644 --- a/fpdfsdk/pwl/cpwl_edit_impl.cpp +++ b/fpdfsdk/pwl/cpwl_edit_impl.cpp
@@ -642,9 +642,8 @@ word.ptWord.x + word.fWidth, line.ptLine.y + line.fLineAscent); - pDevice->DrawPath( - pathSelBK, &mtUser2Device, nullptr, crSelBK, 0, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}); + pDevice->DrawPath(pathSelBK, &mtUser2Device, nullptr, crSelBK, 0, + CFX_FillRenderOptions::WindingOptions()); } } if (bContinuous) {
diff --git a/fxbarcode/BC_TwoDimWriter.cpp b/fxbarcode/BC_TwoDimWriter.cpp index 708699a..56be5ce 100644 --- a/fxbarcode/BC_TwoDimWriter.cpp +++ b/fxbarcode/BC_TwoDimWriter.cpp
@@ -89,8 +89,7 @@ CFX_Path path; path.AppendRect(0, 0, m_Width, m_Height); device->DrawPath(path, &matrix, &stateData, kBackgroundColor, - kBackgroundColor, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + kBackgroundColor, CFX_FillRenderOptions::EvenOddOptions()); int32_t leftPos = m_leftPadding; int32_t topPos = m_topPadding; @@ -119,9 +118,8 @@ topPos + start_y_output * m_multiY, leftPos + end_x_output * m_multiX, topPos + end_y_output * m_multiY); - device->DrawPath( - rect, &matri, &data, kBarColor, 0, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}); + device->DrawPath(rect, &matri, &data, kBarColor, 0, + CFX_FillRenderOptions::WindingOptions()); } } }
diff --git a/fxbarcode/oned/BC_OneDimWriter.cpp b/fxbarcode/oned/BC_OneDimWriter.cpp index 7c2604a..3320c47 100644 --- a/fxbarcode/oned/BC_OneDimWriter.cpp +++ b/fxbarcode/oned/BC_OneDimWriter.cpp
@@ -237,15 +237,14 @@ path.AppendRect(0, 0, static_cast<float>(m_Width), static_cast<float>(m_Height)); device->DrawPath(path, &matrix, &stateData, kBackgroundColor, - kBackgroundColor, - {.fill_type = CFX_FillRenderOptions::FillType::kEvenOdd}); + kBackgroundColor, CFX_FillRenderOptions::EvenOddOptions()); CFX_Matrix scaledMatrix(m_outputHScale, 0.0, 0.0, static_cast<float>(m_Height), 0.0, 0.0); scaledMatrix.Concat(matrix); for (const auto& rect : m_output) { CFX_GraphStateData data; device->DrawPath(rect, &scaledMatrix, &data, kBarColor, 0, - {.fill_type = CFX_FillRenderOptions::FillType::kWinding}); + CFX_FillRenderOptions::WindingOptions()); } return m_locTextLoc == BC_TEXT_LOC::kNone || !contents.Contains(' ') ||
diff --git a/xfa/fgas/graphics/cfgas_gegraphics.cpp b/xfa/fgas/graphics/cfgas_gegraphics.cpp index ecac51a..6f255d6 100644 --- a/xfa/fgas/graphics/cfgas_gegraphics.cpp +++ b/xfa/fgas/graphics/cfgas_gegraphics.cpp
@@ -221,7 +221,7 @@ CFX_Matrix m = m_info.CTM; m.Concat(matrix); - const CFX_FillRenderOptions fill_options = {.fill_type = fill_type}; + const CFX_FillRenderOptions fill_options(fill_type); switch (m_info.fillColor.GetType()) { case CFGAS_GEColor::Solid: m_renderDevice->DrawPath(path.GetPath(), &m, &m_info.graphState,
diff --git a/xfa/fxfa/cxfa_ffwidget.cpp b/xfa/fxfa/cxfa_ffwidget.cpp index 0a456dd..74b1cb2 100644 --- a/xfa/fxfa/cxfa_ffwidget.cpp +++ b/xfa/fxfa/cxfa_ffwidget.cpp
@@ -120,8 +120,8 @@ CFX_RenderDevice::StateRestorer restorer(pRenderDevice); CFX_Path path; path.AppendRect(rtImage.left, rtImage.bottom(), rtImage.right(), rtImage.top); - pRenderDevice->SetClip_PathFill( - path, &matrix, {.fill_type = CFX_FillRenderOptions::FillType::kWinding}); + pRenderDevice->SetClip_PathFill(path, &matrix, + CFX_FillRenderOptions::WindingOptions()); CFX_Matrix mtImage(1, 0, 0, -1, 0, 1); mtImage.Concat(