1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 03:48:13 +00:00
serenity/Userland/Libraries/LibWeb/Painting
Aliaksandr Kalenik ac6b3c989d LibWeb: Apply scroll boxes offsets after painting commands recording
With this change, instead of applying scroll offsets during the
recording of the painting command list, we do the following:
1. Collect all boxes with scrollable overflow into a PaintContext,
   each with an id and the total amount of scrolling offset accumulated
   from ancestor scrollable boxes.
2. During the recording phase assign a corresponding scroll_frame_id to
   each command that paints content within a scrollable box.
3. Before executing the recorded commands, translate each command that
   has a scroll_frame_id by the accumulated scroll offset.

This approach has following advantages:
- Implementing nested scrollables becomes much simpler, as the
  recording phase only requires the correct assignment of the nearest
  scrollable's scroll_frame_id, while the accumulated offset from
  ancestors is applied subsequently.
- The recording of painting commands is not tied to a specific offset
  within scrollable boxes, which means in the future, it will be
  possible to update the scrolling offset and repaint without the need
  to re-record painting commands.
2023-12-30 11:10:24 +01:00
..
AudioPaintable.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
AudioPaintable.h LibWeb: Begin implementing the HTMLAudioElement for audio playback 2023-06-13 06:14:01 +02:00
BackgroundPainting.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
BackgroundPainting.h LibWeb: Convert background painting to new pixel units 2022-12-14 16:47:57 +00:00
BorderPainting.cpp LibWeb: Resolve border radius during layout and save it in paintables 2023-12-07 10:52:47 +01:00
BorderPainting.h LibWeb: Resolve border radius during layout and save it in paintables 2023-12-07 10:52:47 +01:00
BorderRadiiData.cpp LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
BorderRadiiData.h LibWeb: Move BorderRadiusCornerClipper allocation into CPU executor 2023-12-06 13:05:59 +01:00
BorderRadiusCornerClipper.cpp LibWeb: Move border radius sampling config preparation into a function 2023-12-17 23:12:48 +01:00
BorderRadiusCornerClipper.h LibWeb: Move border radius sampling config preparation into a function 2023-12-17 23:12:48 +01:00
BordersData.cpp LibWeb: Change paint_all_borders() to accept only device pixel values 2023-11-20 14:59:47 +01:00
BordersData.h LibWeb: Change paint_all_borders() to accept only device pixel values 2023-11-20 14:59:47 +01:00
ButtonPaintable.cpp LibGfx+LibWeb: Move Gfx::ScaledFont caching from LibWeb into LibGfx 2023-12-26 18:15:55 +01:00
ButtonPaintable.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
CanvasPaintable.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
CanvasPaintable.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
CheckBoxPaintable.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
CheckBoxPaintable.h LibWeb: Add scaleable checkboxes (with theme/accent-color support) 2023-03-23 08:27:51 +00:00
FilterPainting.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
FilterPainting.h LibWeb: Resolve backdrop filter length in apply_style() 2023-10-12 07:38:48 +02:00
GradientData.h LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
GradientPainting.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
GradientPainting.h LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
ImagePaintable.cpp LibWeb: Stop rendering the src (URL) as image alt attribute fallback 2023-12-28 14:39:15 +01:00
ImagePaintable.h LibWeb: Move viewport subscriptions from BrowsingContext to Document 2023-08-23 20:14:20 +02:00
InlinePaintable.cpp LibWeb: Implement getBoundingClientRect() for inline paintables 2023-12-14 16:25:27 +01:00
InlinePaintable.h LibWeb: Implement getBoundingClientRect() for inline paintables 2023-12-14 16:25:27 +01:00
InputColors.h LibWeb: Move checkbox color palette computation to helper header 2023-03-24 09:57:48 +00:00
LabelablePaintable.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
LabelablePaintable.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
LinearGradientData.h LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
MarkerPaintable.cpp LibWeb: Don't pass StringView to RecordingPainter, to avoid copy 2023-12-27 11:41:15 +01:00
MarkerPaintable.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
MediaPaintable.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
MediaPaintable.h LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
NestedBrowsingContextPaintable.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
NestedBrowsingContextPaintable.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
Paintable.cpp LibWeb: Rename "position" enum to "positioning" 2023-10-30 10:40:30 +00:00
Paintable.h LibWeb: Add pair of methods to apply/reset scroll offset of paintable 2023-12-11 20:37:05 +01:00
PaintableBox.cpp LibWeb: Apply scroll boxes offsets after painting commands recording 2023-12-30 11:10:24 +01:00
PaintableBox.h LibWeb: Apply scroll boxes offsets after painting commands recording 2023-12-30 11:10:24 +01:00
PaintContext.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
PaintContext.h LibWeb: Apply scroll boxes offsets after painting commands recording 2023-12-30 11:10:24 +01:00
PaintingCommandExecutorCPU.cpp LibWeb: Do not use Optional for aa_translation in RecordingPainter 2023-12-29 09:23:27 +01:00
PaintingCommandExecutorCPU.h LibWeb: Do not use Optional for aa_translation in RecordingPainter 2023-12-29 09:23:27 +01:00
PaintingCommandExecutorGPU.cpp LibWeb: Do not use Optional for aa_translation in RecordingPainter 2023-12-29 09:23:27 +01:00
PaintingCommandExecutorGPU.h LibWeb: Do not use Optional for aa_translation in RecordingPainter 2023-12-29 09:23:27 +01:00
PaintOuterBoxShadowParams.h LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
RadioButtonPaintable.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
RadioButtonPaintable.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
RecordingPainter.cpp LibWeb: Apply scroll boxes offsets after painting commands recording 2023-12-30 11:10:24 +01:00
RecordingPainter.h LibWeb: Apply scroll boxes offsets after painting commands recording 2023-12-30 11:10:24 +01:00
ShadowData.h LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
ShadowPainting.cpp LibWeb: Make private RecordingPainter::state() 2023-12-16 15:10:07 +01:00
ShadowPainting.h LibWeb/Painting: Do not paint box outer shadows not visible in viewport 2023-10-19 08:29:06 +02:00
StackingContext.cpp LibWeb: Apply scroll boxes offsets after painting commands recording 2023-12-30 11:10:24 +01:00
StackingContext.h LibWeb: Make CSS Transformation struct a proper class 2023-10-15 07:14:39 +02:00
SVGGraphicsPaintable.cpp LibWeb/Painting: Introduce PaintingCommandExecutor 2023-10-26 11:02:04 +02:00
SVGGraphicsPaintable.h LibWeb: Layout SVG <text> elements during layout (not while painting) 2023-10-30 19:44:54 +01:00
SVGPaintable.cpp LibWeb: Resolve and paint simple SVG masks 2023-09-19 10:46:05 +02:00
SVGPaintable.h LibWeb: Remove SVGContext 2023-07-02 01:31:18 +02:00
SVGPathPaintable.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
SVGPathPaintable.h LibWeb: Support transforms, stroking, gradients, etc for SVG <text> 2023-11-05 02:46:46 +01:00
SVGSVGPaintable.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
SVGSVGPaintable.h LibWeb: Make a handful of paintable leaf classes final 2023-01-11 14:03:25 +01:00
TableBordersPainting.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
TableBordersPainting.h LibWeb: Make StackingContext point to paint tree instead of layout tree 2023-08-20 05:02:59 +02:00
TextPaintable.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
TextPaintable.h LibWeb: Make a handful of paintable leaf classes final 2023-01-11 14:03:25 +01:00
VideoPaintable.cpp LibWeb: Rename painter() to recording_painter() in PaintContext 2023-11-27 21:53:38 +01:00
VideoPaintable.h LibWeb: Extract media element timeline painting to a base class 2023-06-13 06:14:01 +02:00
ViewportPaintable.cpp LibWeb: Apply scroll boxes offsets after painting commands recording 2023-12-30 11:10:24 +01:00
ViewportPaintable.h LibWeb: Apply scroll boxes offsets after painting commands recording 2023-12-30 11:10:24 +01:00