Переглянути джерело

LibWeb: Deduplicate opacity code in ApplyFilters

The opacity is still being set separately by using
ApplyOpacity for both CSS and SVG
Saksham Mittal 8 місяців тому
батько
коміт
ecdb53cca6

+ 0 - 1
Libraries/LibWeb/Painting/Command.h

@@ -409,7 +409,6 @@ struct ApplyOpacity {
 };
 
 struct ApplyFilters {
-    float opacity;
     CSS::ResolvedFilter filter;
 };
 

+ 0 - 10
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();

+ 2 - 2
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)

+ 1 - 1
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);
 

+ 1 - 1
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();

+ 1 - 1
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();