ladybird/Userland/Libraries/LibWeb/Layout
MacDue 163b6bb401 LibWeb: Special case SVG masks during layout
Rather than try to lay out masks normally, this updates the TreeBuilder
to create layout nodes for masks as a child of their user (i.e. the
masked element). This allows each use of a mask to be laid out
differently, which makes supporting `maskContentUnits=objectBoundingBox`
fairly easy.

The `SVGFormattingContext` is then updated to lay out masks last (as
their sizing may depend on their parent), and treats them like
viewports.

This is pretty ad-hoc, but the SVG specification does not give any
guidance on how to actually implement this.
2024-03-12 08:51:50 +01:00
..
AudioBox.cpp LibWeb: Begin implementing the HTMLAudioElement for audio playback 2023-06-13 06:14:01 +02:00
AudioBox.h LibWeb: Begin implementing the HTMLAudioElement for audio playback 2023-06-13 06:14:01 +02:00
AvailableSpace.cpp LibWeb: Port AvailableSpace from DeprecatedString to String 2023-11-28 17:15:27 -05:00
AvailableSpace.h LibWeb: Port AvailableSpace from DeprecatedString to String 2023-11-28 17:15:27 -05:00
BlockContainer.cpp LibWeb: Allocate CSS::ComputedValues objects on the heap 2024-01-27 12:27:44 +01:00
BlockContainer.h LibWeb: Allocate CSS::ComputedValues objects on the heap 2024-01-27 12:27:44 +01:00
BlockFormattingContext.cpp LibWeb: Use the parent container's y offset when finding static position 2024-03-10 18:10:01 +01:00
BlockFormattingContext.h LibWeb: Account for absolutely positioned table wrappers 2024-03-07 08:09:04 +01:00
Box.cpp LibWeb: Allocate CSS::ComputedValues objects on the heap 2024-01-27 12:27:44 +01:00
Box.h LibWeb: Allocate CSS::ComputedValues objects on the heap 2024-01-27 12:27:44 +01:00
BoxModelMetrics.cpp
BoxModelMetrics.h LibWeb+Browser+WebContent: Convert BoxModelMetrics to new pixel units 2023-01-05 17:42:31 +01:00
BreakNode.cpp
BreakNode.h LibWeb: Don't generate ::before/::after for BR elements 2023-09-14 21:46:28 +02:00
ButtonBox.cpp LibGfx+LibWeb: Produce font cascade list in CSS font matching algorithm 2023-12-10 17:32:04 +01:00
ButtonBox.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
CanvasBox.cpp LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
CanvasBox.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
CheckBox.cpp LibWeb: Move "natural size" concept into Layout::Box 2023-06-09 20:37:51 +02:00
CheckBox.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
FlexFormattingContext.cpp LibWeb: Account for margin and padding of justified abspos flex items 2024-03-09 16:02:17 +01:00
FlexFormattingContext.h LibWeb: Make flexbox special definite size cases explicit 2024-02-21 17:54:05 +01:00
FormAssociatedLabelableNode.h
FormattingContext.cpp LibWeb: Use the parent container's y offset when finding static position 2024-03-10 18:10:01 +01:00
FormattingContext.h LibWeb: Account for absolutely positioned table wrappers 2024-03-07 08:09:04 +01:00
FrameBox.cpp LibWeb: Stop assuming navigable's existance in FrameBox 2024-01-20 20:34:30 +00:00
FrameBox.h LibWeb: Fix iframes flickering on window resize 2023-05-15 14:08:08 +02:00
GridFormattingContext.cpp LibWeb: Use resolve_grid_position for abspos boxes layout in GFC 2024-03-11 15:20:58 +01:00
GridFormattingContext.h LibWeb: Add record_grid_placement() helper in GFC 2024-03-07 08:26:37 +01:00
ImageBox.cpp LibWeb: Visit ImageProvider from Layout::ImageBox 2024-02-27 16:53:13 +01:00
ImageBox.h LibWeb: Visit ImageProvider from Layout::ImageBox 2024-02-27 16:53:13 +01:00
ImageProvider.cpp LibWeb: Generalize ImageBox and ImagePaintable for any ImageProvider 2024-02-19 11:07:30 +01:00
ImageProvider.h LibWeb: Visit ImageProvider from Layout::ImageBox 2024-02-27 16:53:13 +01:00
InlineFormattingContext.cpp LibWeb: Avoid LayoutState hash lookups in more parts of float layout 2024-01-24 07:53:16 +01:00
InlineFormattingContext.h LibWeb: Let parent formatting context determine size of flex containers 2024-01-10 16:28:12 +01:00
InlineLevelIterator.cpp LibWeb: Move font list from NodeWithStyle to ComputedValues 2024-01-12 17:26:16 +01:00
InlineLevelIterator.h LibGfx+LibWeb: Calculate and save glyph positions during layout 2023-12-02 22:06:11 +01:00
InlineNode.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
InlineNode.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
Label.cpp LibWeb: Use cached element name and id where possible 2024-01-13 12:05:36 +01:00
Label.h LibWeb+WebContent+headless-browser: Use CSSPixels for PageClient events 2022-12-10 12:03:19 +00:00
LabelableNode.cpp
LabelableNode.h
LayoutState.cpp LibWeb: Clamp scroll offset into valid range after relayout 2024-02-22 07:35:30 +01:00
LayoutState.h LibWeb: Use the parent container's y offset when finding static position 2024-03-10 18:10:01 +01:00
LineBox.cpp LibGfx+LibWeb: Use ref-counted object to store glyph run 2024-03-02 09:09:10 +01:00
LineBox.h LibWeb: Remove unused LineBox::absolute_rect() and related things 2024-01-20 18:26:14 +01:00
LineBoxFragment.cpp LibWeb: Use separate structure to represent fragments in paintable tree 2024-01-13 10:53:38 +01:00
LineBoxFragment.h LibGfx+LibWeb: Use ref-counted object to store glyph run 2024-03-02 09:09:10 +01:00
LineBuilder.cpp LibWeb: Move line-height from NodeWithStyle to ComputedValues 2024-01-12 17:26:16 +01:00
LineBuilder.h LibGfx+LibWeb: Calculate and save glyph positions during layout 2023-12-02 22:06:11 +01:00
ListItemBox.cpp
ListItemBox.h LibWeb: Add fast_is<T>() for various types stood out in a profile 2023-03-11 10:46:26 +01:00
ListItemMarkerBox.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ListItemMarkerBox.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Node.cpp LibWeb: Setup computed values for SVG geometry properties 2024-03-04 10:50:32 +01:00
Node.h LibWeb: Allocate CSS::ComputedValues objects on the heap 2024-01-27 12:27:44 +01:00
RadioButton.cpp LibWeb: Move "natural size" concept into Layout::Box 2023-06-09 20:37:51 +02:00
RadioButton.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
ReplacedBox.cpp
ReplacedBox.h LibWeb: Move "natural size" concept into Layout::Box 2023-06-09 20:37:51 +02:00
SVGBox.cpp
SVGBox.h
SVGFormattingContext.cpp LibWeb: Special case SVG masks during layout 2024-03-12 08:51:50 +01:00
SVGFormattingContext.h LibWeb: Add initial support for nesting SVG viewports 2024-01-27 18:12:13 +01:00
SVGGeometryBox.cpp LibWeb: Support transforms, stroking, gradients, etc for SVG <text> 2023-11-05 02:46:46 +01:00
SVGGeometryBox.h LibWeb: Store computed SVG path data/transforms in LayoutState 2023-10-30 19:44:54 +01:00
SVGGraphicsBox.cpp LibWeb: Make SVG <g> elements generate a SVGGraphicsPaintable 2023-04-19 07:52:26 +02:00
SVGGraphicsBox.h LibWeb: Make SVG <g> elements generate a SVGGraphicsPaintable 2023-04-19 07:52:26 +02:00
SVGMaskBox.cpp LibWeb: Special case SVG masks during layout 2024-03-12 08:51:50 +01:00
SVGMaskBox.h LibWeb: Special case SVG masks during layout 2024-03-12 08:51:50 +01:00
SVGSVGBox.cpp LibWeb: Use CSSPixelFraction to represent aspect ratios 2023-09-04 12:40:17 +02:00
SVGSVGBox.h LibWeb: Use CSSPixelFraction to represent aspect ratios 2023-09-04 12:40:17 +02:00
SVGTextBox.cpp LibWeb: Support transforms, stroking, gradients, etc for SVG <text> 2023-11-05 02:46:46 +01:00
SVGTextBox.h LibWeb: Layout SVG <text> elements during layout (not while painting) 2023-10-30 19:44:54 +01:00
SVGTextPathBox.cpp LibWeb: Add initial support for SVG <textPath> 2023-12-19 21:29:03 +01:00
SVGTextPathBox.h LibWeb: Add initial support for SVG <textPath> 2023-12-19 21:29:03 +01:00
TableFormattingContext.cpp LibWeb: Avoid division by zero when computing table width 2024-01-21 16:11:25 +01:00
TableFormattingContext.h LibWeb: Implement table missing cells fixup 2023-08-20 18:38:15 +02:00
TableGrid.cpp LibWeb: Consider colgroups while calculating table grid size 2023-11-04 17:37:38 +01:00
TableGrid.h AK: Rename GenericTraits to DefaultTraits 2023-11-09 10:05:51 -05:00
TableWrapper.cpp LibWeb: Allocate CSS::ComputedValues objects on the heap 2024-01-27 12:27:44 +01:00
TableWrapper.h LibWeb: Allocate CSS::ComputedValues objects on the heap 2024-01-27 12:27:44 +01:00
TextNode.cpp LibWeb: Port Layout::TextNode from DeprecatedString 2023-11-28 17:15:27 -05:00
TextNode.h LibWeb: Port Layout::TextNode from DeprecatedString 2023-11-28 17:15:27 -05:00
TreeBuilder.cpp LibWeb: Special case SVG masks during layout 2024-03-12 08:51:50 +01:00
TreeBuilder.h LibWeb: Special case SVG masks during layout 2024-03-12 08:51:50 +01:00
VideoBox.cpp LibWeb: Use CSSPixelFraction to represent aspect ratios 2023-09-04 12:40:17 +02:00
VideoBox.h LibWeb: Move viewport subscriptions from BrowsingContext to Document 2023-08-23 20:14:20 +02:00
Viewport.cpp LibWeb: Move painting logic from Layout::Viewport to ViewportPaintable 2023-08-20 05:02:59 +02:00
Viewport.h LibWeb: Move painting logic from Layout::Viewport to ViewportPaintable 2023-08-20 05:02:59 +02:00