1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:28:11 +00:00
serenity/Userland/Libraries/LibWeb/Layout
MacDue 3484db0dc1 LibWeb: Remove SVG sizing hack and fix viewbox scaling
Previously, if you had an SVG with a viewbox and a definite width
and height, then all SVGGeometryBox boxes within that SVG would
have a width and height set to the size of the parent SVG.

This broke hit testing for SVG paths, and didn't make much sense.
It seems like the SVG sizing hack was patching over the incorrect
logic in viewbox_scaling() and the incorrect path sizing (which was
never reached).

Before this change the view box scaling was:
	element_dimension / viewbox_dimension

Which only seemed to work because of the SVG sizing hack that made
all paths the size of the containing SVG.

After this change SVGGeometryBoxes are (in most cases) sized correctly
based on their bounding boxes, which allows hit testing to function,
and the view box scaling is updated now to:
	  containing_SVG_dimension / viewbox_dimension

Which works with one less hack :^)

This now also handles centering the viewbox within the parent SVG
element and applying any tranforms to the bounding box. This still
a bit ad-hoc, but much more closely matches other browsers now.
2023-04-12 07:40:22 +02:00
..
AvailableSpace.cpp LibWeb: Convert FormattingContext to new pixel units 2023-01-05 17:42:31 +01:00
AvailableSpace.h LibWeb: Add default equality operators to Available{Space,Size} 2023-03-27 23:28:07 +02:00
BlockContainer.cpp LibWeb: Move scroll state from Layout::BlockContainer to Layout::Box 2023-01-24 11:44:03 +01:00
BlockContainer.h LibWeb: Move scroll state from Layout::BlockContainer to Layout::Box 2023-01-24 11:44:03 +01:00
BlockFormattingContext.cpp LibWeb: Ignore preferred width when calculating intrinsic width of block 2023-04-06 16:47:40 +02:00
BlockFormattingContext.h LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
Box.cpp LibWeb: Declare overflow_value_makes_box_a_scroll_container as static 2023-03-26 10:38:05 -04:00
Box.h LibWeb: Add Layout::Box::is_scroll_container() 2023-03-26 15:14:35 +02:00
BoxModelMetrics.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
BoxModelMetrics.h LibWeb+Browser+WebContent: Convert BoxModelMetrics to new pixel units 2023-01-05 17:42:31 +01:00
BreakNode.cpp LibWeb: Remove Layout::Node::set_inline() 2022-10-06 15:29:38 +02:00
BreakNode.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
ButtonBox.cpp Userland: Use Font::pixel_size_rounded_up() instead of glyph_height() 2023-03-04 00:29:38 +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: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
CanvasBox.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
CheckBox.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
CheckBox.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
FlexFormattingContext.cpp LibWeb: Fix application of intrinsic aspect ratio to flex column items 2023-04-02 06:45:44 +02:00
FlexFormattingContext.h LibWeb: Clamp fit-content widths in flex layout to min/max-width 2023-03-28 21:08:54 +02:00
FormAssociatedLabelableNode.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
FormattingContext.cpp LibWeb: Use intrinsic aspect ratio when calculating max content height 2023-04-05 16:23:56 +02:00
FormattingContext.h LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
FrameBox.cpp LibWeb: Rename Layout::InitialContainingBlock to Layout::Viewport 2023-02-28 12:21:56 +01:00
FrameBox.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
GridFormattingContext.cpp LibWeb: Add borders functionality to CSS Grid 2023-04-02 19:08:04 +02:00
GridFormattingContext.h LibWeb: Add borders functionality to CSS Grid 2023-04-02 19:08:04 +02:00
ImageBox.cpp LibWeb: Don't use image source URL as backup alt attribute 2023-03-25 19:41:31 +01:00
ImageBox.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
InlineFormattingContext.cpp LibWeb: Pass available inner space to inline-level SVG layout 2023-03-27 23:28:07 +02:00
InlineFormattingContext.h LibWeb: Convert InlineFormattingContext to new pixel units 2023-01-05 17:42:31 +01:00
InlineLevelIterator.cpp LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
InlineLevelIterator.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +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: Rename Layout::InitialContainingBlock to Layout::Viewport 2023-02-28 12:21:56 +01:00
Label.h LibWeb+WebContent+headless-browser: Use CSSPixels for PageClient events 2022-12-10 12:03:19 +00:00
LabelableNode.cpp LibWeb: Move mouse event and label logic from layout to painting tree 2022-03-11 00:21:49 +01:00
LabelableNode.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
LayoutState.cpp LibWeb: Remove CalculatedStyleValue from Length 2023-03-30 21:29:50 +02:00
LayoutState.h LibWeb: Make box content sizes indefinite before intrinsic sizing 2023-03-27 23:28:07 +02:00
LineBox.cpp LibWeb: Convert InlineLevelIterator/LineBox/LineBuilder to new px units 2023-01-05 17:42:31 +01:00
LineBox.h LibWeb: Don't drop single <br/> lines 2023-03-16 08:40:29 +00:00
LineBoxFragment.cpp LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
LineBoxFragment.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
LineBuilder.cpp LibWeb: Resolve percentage vertical-align values against line-height 2023-03-29 18:38:29 +02:00
LineBuilder.h LibWeb: Convert InlineLevelIterator/LineBox/LineBuilder to new px units 2023-01-05 17:42:31 +01:00
ListItemBox.cpp LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
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 LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
ListItemMarkerBox.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
Node.cpp LibWeb: Parse and plumb background-position-x/y 2023-04-03 07:10:33 +02:00
Node.h LibWeb: Add .scaled_font() helper to Layout::Node 2023-04-01 22:39:47 +01:00
Progress.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
Progress.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
RadioButton.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
RadioButton.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
ReplacedBox.cpp LibWeb: Remove Layout::Node::set_inline() 2022-10-06 15:29:38 +02:00
ReplacedBox.h LibWeb: Convert Layout Boxes to new pixel units 2023-01-05 17:42:31 +01:00
SVGBox.cpp LibWeb: Make SVG <svg> elements behave as CSS replaced elements 2022-03-19 12:42:10 +01:00
SVGBox.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
SVGFormattingContext.cpp LibWeb: Remove SVG sizing hack and fix viewbox scaling 2023-04-12 07:40:22 +02:00
SVGFormattingContext.h LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
SVGGeometryBox.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
SVGGeometryBox.h LibWeb: Use static_cast in SVGGeometryBox::dom_node() 2023-03-11 10:46:26 +01:00
SVGGraphicsBox.cpp LibWeb: Let Paintable perform the painting 2022-03-11 00:21:49 +01:00
SVGGraphicsBox.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
SVGSVGBox.cpp LibWeb: Support more length types in SVG width/height attributes 2023-03-20 23:45:01 +01:00
SVGSVGBox.h LibWeb: Add fast_is<T>() for various types stood out in a profile 2023-03-11 10:46:26 +01:00
TableBox.cpp LibWeb: Remove inheritance of TableBox from BlockContainer 2023-01-09 11:47:31 +01:00
TableBox.h LibWeb: Add Layout::Node::is_table() and make is<TableBox>() fast 2023-01-24 11:44:03 +01:00
TableCellBox.cpp LibWeb: Take rowspan into account while table formatting 2022-12-05 17:47:48 +01:00
TableCellBox.h LibWeb: Support display inline-table 2023-01-17 10:18:33 +01:00
TableFormattingContext.cpp LibWeb: Use max-width property in table formatting 2023-04-07 10:42:26 +02:00
TableFormattingContext.h LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
TableRowBox.cpp Libraries: Use default constructors/destructors in LibWeb 2022-03-17 17:23:49 +00:00
TableRowBox.h LibWeb: Support display inline-table 2023-01-17 10:18:33 +01:00
TableRowGroupBox.cpp LibWeb: Remove inheritance of TableRowGroupBox from BlockContainer 2023-01-09 11:47:31 +01:00
TableRowGroupBox.h LibWeb: Remove inheritance of TableRowGroupBox from BlockContainer 2023-01-09 11:47:31 +01:00
TableWrapper.cpp LibWeb: Override width calculation for table wrappers 2023-01-14 19:22:08 +01:00
TableWrapper.h LibWeb: Override width calculation for table wrappers 2023-01-14 19:22:08 +01:00
TextNode.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
TextNode.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
TreeBuilder.cpp LibWeb: Don't put abspos grid/flex items in anonymous wrapper 2023-04-07 10:15:16 +02:00
TreeBuilder.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
VideoBox.cpp LibWeb: Create a basic layout node for HTMLVideoElement 2023-04-07 16:02:22 +02:00
VideoBox.h LibWeb: Create a basic layout node for HTMLVideoElement 2023-04-07 16:02:22 +02:00
Viewport.cpp LibWeb: Rename Layout::InitialContainingBlock to Layout::Viewport 2023-02-28 12:21:56 +01:00
Viewport.h LibWeb: Rename Layout::InitialContainingBlock to Layout::Viewport 2023-02-28 12:21:56 +01:00