From ecdb53cca6f385199f656f1f766dc181698b8b33 Mon Sep 17 00:00:00 2001 From: Saksham Mittal Date: Sat, 23 Nov 2024 23:08:51 +0530 Subject: [PATCH] LibWeb: Deduplicate opacity code in ApplyFilters The opacity is still being set separately by using ApplyOpacity for both CSS and SVG --- Libraries/LibWeb/Painting/Command.h | 1 - Libraries/LibWeb/Painting/DisplayListPlayerSkia.cpp | 10 ---------- Libraries/LibWeb/Painting/DisplayListRecorder.cpp | 4 ++-- Libraries/LibWeb/Painting/DisplayListRecorder.h | 2 +- Libraries/LibWeb/Painting/SVGSVGPaintable.cpp | 2 +- Libraries/LibWeb/Painting/StackingContext.cpp | 2 +- 6 files changed, 5 insertions(+), 16 deletions(-) diff --git a/Libraries/LibWeb/Painting/Command.h b/Libraries/LibWeb/Painting/Command.h index cb395bbd922..fa1deaec99e 100644 --- a/Libraries/LibWeb/Painting/Command.h +++ b/Libraries/LibWeb/Painting/Command.h @@ -409,7 +409,6 @@ struct ApplyOpacity { }; struct ApplyFilters { - float opacity; CSS::ResolvedFilter filter; }; diff --git a/Libraries/LibWeb/Painting/DisplayListPlayerSkia.cpp b/Libraries/LibWeb/Painting/DisplayListPlayerSkia.cpp index d3ea84fe993..9460fdab76c 100644 --- a/Libraries/LibWeb/Painting/DisplayListPlayerSkia.cpp +++ b/Libraries/LibWeb/Painting/DisplayListPlayerSkia.cpp @@ -1097,16 +1097,6 @@ void DisplayListPlayerSkia::apply_filters(ApplyFilters const& command) append_filter(to_skia_image_filter(filter)); } - // We apply opacity as a color filter here so we only need to save and restore a single layer. - if (command.opacity < 1) { - append_filter(to_skia_image_filter(CSS::ResolvedFilter::FilterFunction { - CSS::ResolvedFilter::Color { - CSS::FilterOperation::Color::Type::Opacity, - command.opacity, - }, - })); - } - SkPaint paint; paint.setImageFilter(image_filter); auto& canvas = surface().canvas(); diff --git a/Libraries/LibWeb/Painting/DisplayListRecorder.cpp b/Libraries/LibWeb/Painting/DisplayListRecorder.cpp index 3d3f6b479d1..0ba89e6e9d9 100644 --- a/Libraries/LibWeb/Painting/DisplayListRecorder.cpp +++ b/Libraries/LibWeb/Painting/DisplayListRecorder.cpp @@ -407,9 +407,9 @@ void DisplayListRecorder::apply_opacity(float opacity) append(ApplyOpacity { .opacity = opacity }); } -void DisplayListRecorder::apply_filters(float opacity, CSS::ResolvedFilter filter) +void DisplayListRecorder::apply_filters(CSS::ResolvedFilter filter) { - append(ApplyFilters { .opacity = opacity, .filter = filter }); + append(ApplyFilters { .filter = filter }); } void DisplayListRecorder::apply_transform(Gfx::FloatPoint origin, Gfx::FloatMatrix4x4 matrix) diff --git a/Libraries/LibWeb/Painting/DisplayListRecorder.h b/Libraries/LibWeb/Painting/DisplayListRecorder.h index 300d2be7e07..0e7a560cc2e 100644 --- a/Libraries/LibWeb/Painting/DisplayListRecorder.h +++ b/Libraries/LibWeb/Painting/DisplayListRecorder.h @@ -149,7 +149,7 @@ public: void paint_scrollbar(int scroll_frame_id, Gfx::IntRect, CSSPixelFraction scroll_size, bool vertical); void apply_opacity(float opacity); - void apply_filters(float opacity, CSS::ResolvedFilter filter); + void apply_filters(CSS::ResolvedFilter filter); void apply_transform(Gfx::FloatPoint origin, Gfx::FloatMatrix4x4); void apply_mask_bitmap(Gfx::IntPoint origin, Gfx::ImmutableBitmap const&, Gfx::Bitmap::MaskKind); diff --git a/Libraries/LibWeb/Painting/SVGSVGPaintable.cpp b/Libraries/LibWeb/Painting/SVGSVGPaintable.cpp index 9384eb107a6..39d45b09205 100644 --- a/Libraries/LibWeb/Painting/SVGSVGPaintable.cpp +++ b/Libraries/LibWeb/Painting/SVGSVGPaintable.cpp @@ -70,7 +70,7 @@ void SVGSVGPaintable::paint_descendants(PaintContext& context, PaintableBox cons context.display_list_recorder().apply_opacity(computed_values.opacity()); } - context.display_list_recorder().apply_filters(paintable.computed_values().opacity(), paintable.computed_values().filter()); + context.display_list_recorder().apply_filters(paintable.computed_values().filter()); if (svg_box.has_css_transform()) { auto transform_matrix = svg_box.transform(); diff --git a/Libraries/LibWeb/Painting/StackingContext.cpp b/Libraries/LibWeb/Painting/StackingContext.cpp index 6938e848826..8d00a030307 100644 --- a/Libraries/LibWeb/Painting/StackingContext.cpp +++ b/Libraries/LibWeb/Painting/StackingContext.cpp @@ -327,7 +327,7 @@ void StackingContext::paint(PaintContext& context) const context.display_list_recorder().push_scroll_frame_id(*paintable_box().scroll_frame_id()); } context.display_list_recorder().push_stacking_context(push_stacking_context_params); - context.display_list_recorder().apply_filters(opacity, paintable_box().computed_values().filter()); + context.display_list_recorder().apply_filters(paintable_box().computed_values().filter()); if (auto mask_image = computed_values.mask_image()) { auto mask_display_list = DisplayList::create();