Procházet zdrojové kódy

LibWeb: Remove unused members in PaintOuterBoxShadowParams

This struct had all members in CSSPixels and DevicePixels, but only the
latter are needed for painting.

Shrinks PaintOuterBoxShadowParams from 144 bytes to 72 bytes.
Aliaksandr Kalenik před 1 rokem
rodič
revize
2dd3b6fcff

+ 2 - 4
Userland/Libraries/LibWeb/Painting/PaintOuterBoxShadowParams.h

@@ -12,10 +12,8 @@
 namespace Web::Painting {
 namespace Web::Painting {
 
 
 struct PaintOuterBoxShadowParams {
 struct PaintOuterBoxShadowParams {
-    RecordingPainter& painter;
-    CSSPixelRect content_rect;
-    BorderRadiiData border_radii;
-    ShadowData box_shadow_data;
+    Gfx::Color color;
+    ShadowPlacement placement;
     CornerRadii corner_radii;
     CornerRadii corner_radii;
     DevicePixels offset_x;
     DevicePixels offset_x;
     DevicePixels offset_y;
     DevicePixels offset_y;

+ 21 - 24
Userland/Libraries/LibWeb/Painting/ShadowPainting.cpp

@@ -57,20 +57,20 @@ void paint_inner_box_shadow(Gfx::Painter& painter, PaintOuterBoxShadowParams par
     auto top_right_corner = params.corner_radii.top_right;
     auto top_right_corner = params.corner_radii.top_right;
     auto bottom_right_corner = params.corner_radii.bottom_right;
     auto bottom_right_corner = params.corner_radii.bottom_right;
     auto bottom_left_corner = params.corner_radii.bottom_left;
     auto bottom_left_corner = params.corner_radii.bottom_left;
-    shadow_painter.fill_rect(outer_shadow_rect, params.box_shadow_data.color.with_alpha(0xff));
-    if (params.border_radii.has_any_radius()) {
-        shadow_aa_painter.fill_rect_with_rounded_corners(inner_shadow_rect, params.box_shadow_data.color.with_alpha(0xff),
+    shadow_painter.fill_rect(outer_shadow_rect, params.color.with_alpha(0xff));
+    if (params.corner_radii.has_any_radius()) {
+        shadow_aa_painter.fill_rect_with_rounded_corners(inner_shadow_rect, params.color.with_alpha(0xff),
             top_left_corner, top_right_corner, bottom_right_corner, bottom_left_corner,
             top_left_corner, top_right_corner, bottom_right_corner, bottom_left_corner,
             Gfx::AntiAliasingPainter::BlendMode::AlphaSubtract);
             Gfx::AntiAliasingPainter::BlendMode::AlphaSubtract);
     } else {
     } else {
         shadow_painter.clear_rect(inner_shadow_rect, Color::Transparent);
         shadow_painter.clear_rect(inner_shadow_rect, Color::Transparent);
     }
     }
     Gfx::StackBlurFilter filter(*shadow_bitmap);
     Gfx::StackBlurFilter filter(*shadow_bitmap);
-    filter.process_rgba(blur_radius.value(), params.box_shadow_data.color);
+    filter.process_rgba(blur_radius.value(), params.color);
     Gfx::PainterStateSaver save { painter };
     Gfx::PainterStateSaver save { painter };
     painter.add_clip_rect(device_content_rect_int);
     painter.add_clip_rect(device_content_rect_int);
     painter.blit({ device_content_rect_int.left() - blur_radius.value(), device_content_rect_int.top() - blur_radius.value() },
     painter.blit({ device_content_rect_int.left() - blur_radius.value(), device_content_rect_int.top() - blur_radius.value() },
-        *shadow_bitmap, shadow_bitmap->rect(), params.box_shadow_data.color.alpha() / 255.);
+        *shadow_bitmap, shadow_bitmap->rect(), params.color.alpha() / 255.);
 }
 }
 
 
 struct OuterBoxShadowMetrics {
 struct OuterBoxShadowMetrics {
@@ -306,9 +306,7 @@ Gfx::IntRect get_outer_box_shadow_bounding_rect(PaintOuterBoxShadowParams params
 
 
 void paint_outer_box_shadow(Gfx::Painter& painter, PaintOuterBoxShadowParams params)
 void paint_outer_box_shadow(Gfx::Painter& painter, PaintOuterBoxShadowParams params)
 {
 {
-    auto const& box_shadow_data = params.box_shadow_data;
     auto const& device_content_rect = params.device_content_rect;
     auto const& device_content_rect = params.device_content_rect;
-    auto const& border_radii = params.border_radii;
 
 
     auto const& top_left_corner = params.corner_radii.top_left;
     auto const& top_left_corner = params.corner_radii.top_left;
     auto const& top_right_corner = params.corner_radii.top_right;
     auto const& top_right_corner = params.corner_radii.top_right;
@@ -366,14 +364,14 @@ void paint_outer_box_shadow(Gfx::Painter& painter, PaintOuterBoxShadowParams par
     };
     };
 
 
     // If there's no blurring, nor rounded corners, we can save a lot of effort.
     // If there's no blurring, nor rounded corners, we can save a lot of effort.
-    if (blur_radius == 0 && !border_radii.has_any_radius()) {
-        fill_rect_masked(painter, non_blurred_shadow_rect.translated(offset_x, offset_y), device_content_rect, box_shadow_data.color);
+    if (blur_radius == 0 && !params.corner_radii.has_any_radius()) {
+        fill_rect_masked(painter, non_blurred_shadow_rect.translated(offset_x, offset_y), device_content_rect, params.color);
         return;
         return;
     }
     }
 
 
     auto paint_shadow_infill = [&] {
     auto paint_shadow_infill = [&] {
-        if (!params.border_radii.has_any_radius())
-            return painter.fill_rect(inner_bounding_rect.to_type<int>(), box_shadow_data.color);
+        if (!params.corner_radii.has_any_radius())
+            return painter.fill_rect(inner_bounding_rect.to_type<int>(), params.color);
 
 
         auto top_left_inner_width = top_left_corner_rect.width() - blurred_edge_thickness;
         auto top_left_inner_width = top_left_corner_rect.width() - blurred_edge_thickness;
         auto top_left_inner_height = top_left_corner_rect.height() - blurred_edge_thickness;
         auto top_left_inner_height = top_left_corner_rect.height() - blurred_edge_thickness;
@@ -415,11 +413,11 @@ void paint_outer_box_shadow(Gfx::Painter& painter, PaintOuterBoxShadowParams par
             inner_bounding_rect.height() - top_rect.height() - bottom_rect.height()
             inner_bounding_rect.height() - top_rect.height() - bottom_rect.height()
         };
         };
 
 
-        painter.fill_rect(top_rect.to_type<int>(), box_shadow_data.color);
-        painter.fill_rect(right_rect.to_type<int>(), box_shadow_data.color);
-        painter.fill_rect(bottom_rect.to_type<int>(), box_shadow_data.color);
-        painter.fill_rect(left_rect.to_type<int>(), box_shadow_data.color);
-        painter.fill_rect(inner.to_type<int>(), box_shadow_data.color);
+        painter.fill_rect(top_rect.to_type<int>(), params.color);
+        painter.fill_rect(right_rect.to_type<int>(), params.color);
+        painter.fill_rect(bottom_rect.to_type<int>(), params.color);
+        painter.fill_rect(left_rect.to_type<int>(), params.color);
+        painter.fill_rect(inner.to_type<int>(), params.color);
     };
     };
 
 
     auto shadows_bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRA8888, shadow_bitmap_rect.size().to_type<int>());
     auto shadows_bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRA8888, shadow_bitmap_rect.size().to_type<int>());
@@ -433,9 +431,9 @@ void paint_outer_box_shadow(Gfx::Painter& painter, PaintOuterBoxShadowParams par
 
 
     aa_corner_painter.fill_rect_with_rounded_corners(
     aa_corner_painter.fill_rect_with_rounded_corners(
         shadow_bitmap_rect.shrunken(double_radius, double_radius, double_radius, double_radius).to_type<int>(),
         shadow_bitmap_rect.shrunken(double_radius, double_radius, double_radius, double_radius).to_type<int>(),
-        box_shadow_data.color, top_left_shadow_corner, top_right_shadow_corner, bottom_right_shadow_corner, bottom_left_shadow_corner);
+        params.color, top_left_shadow_corner, top_right_shadow_corner, bottom_right_shadow_corner, bottom_left_shadow_corner);
     Gfx::StackBlurFilter filter(*shadow_bitmap);
     Gfx::StackBlurFilter filter(*shadow_bitmap);
-    filter.process_rgba(blur_radius.value(), box_shadow_data.color);
+    filter.process_rgba(blur_radius.value(), params.color);
 
 
     auto paint_shadow = [&](DevicePixelRect clip_rect) {
     auto paint_shadow = [&](DevicePixelRect clip_rect) {
         Gfx::PainterStateSaver save { painter };
         Gfx::PainterStateSaver save { painter };
@@ -552,10 +550,8 @@ void paint_box_shadow(PaintContext& context,
         }
         }
 
 
         auto params = PaintOuterBoxShadowParams {
         auto params = PaintOuterBoxShadowParams {
-            .painter = context.recording_painter(),
-            .content_rect = bordered_content_rect,
-            .border_radii = border_radii,
-            .box_shadow_data = box_shadow_data,
+            .color = box_shadow_data.color,
+            .placement = box_shadow_data.placement,
             .corner_radii = CornerRadii {
             .corner_radii = CornerRadii {
                 .top_left = border_radii.top_left.as_corner(context),
                 .top_left = border_radii.top_left.as_corner(context),
                 .top_right = border_radii.top_right.as_corner(context),
                 .top_right = border_radii.top_right.as_corner(context),
@@ -569,8 +565,9 @@ void paint_box_shadow(PaintContext& context,
         };
         };
 
 
         if (box_shadow_data.placement == ShadowPlacement::Inner) {
         if (box_shadow_data.placement == ShadowPlacement::Inner) {
-            params.border_radii.shrink(borders_data.top.width, borders_data.right.width, borders_data.bottom.width, borders_data.left.width);
-            ScopedCornerRadiusClip corner_clipper { context, device_content_rect, params.border_radii, CornerClip::Outside };
+            auto shrinked_border_radii = border_radii;
+            shrinked_border_radii.shrink(borders_data.top.width, borders_data.right.width, borders_data.bottom.width, borders_data.left.width);
+            ScopedCornerRadiusClip corner_clipper { context, device_content_rect, shrinked_border_radii, CornerClip::Outside };
             context.recording_painter().paint_inner_box_shadow_params(params);
             context.recording_painter().paint_inner_box_shadow_params(params);
         } else {
         } else {
             ScopedCornerRadiusClip corner_clipper { context, device_content_rect, border_radii, CornerClip::Inside };
             ScopedCornerRadiusClip corner_clipper { context, device_content_rect, border_radii, CornerClip::Inside };