Commit graph

162 commits

Author SHA1 Message Date
Simon Wanner
293ece2292 LibWeb: Support list-style-position
This moves the ::marker inside of <summary> actually inside. :^)
2023-06-03 05:54:49 +02:00
Sam Atkins
1160d8186b LibWeb: Implement IntegerStyleValue, for holding <integer>
Having one StyleValue for `<number>` and `<integer>` is making user code
more complicated than it needs to be. We know based on the property
being parsed, whether it wants a `<number>` or an `<integer>`, so we
can use separate StyleValue types for these.
2023-06-01 21:04:21 +02:00
Sam Atkins
ad8565011c LibWeb: Rename NumericStyleValue -> NumberStyleValue
This is in preparation of splitting off a separate IntegerStyleValue.
2023-06-01 21:04:21 +02:00
Andreas Kling
966058d693 LibWeb: Support line-height: calc(...) values that resolve to number
This is used on GitHub and many other websites.
2023-06-01 09:20:05 +02:00
stelar7
344f37986f LibWeb: Allow calculated values in transform 2023-05-31 05:57:53 +02:00
Ali Mohammad Pur
b7e3a68bfc LibWeb: Keep track of CSS property source declarations
This allows us to figure out where a specific CSS property comes from,
which is going to be used in a future commit to uniquely identify
running animations.
2023-05-29 05:35:41 +02:00
Sam Atkins
e8a946c674 LibWeb: Remove StyleValue::has/to_length()
Specifically, stop letting NumericStyleValues holding `0` from
pretending to hold a Length. The parser is now smart enough that we
don't have to do this. :^)
2023-05-27 16:12:25 +02:00
Sam Atkins
5cbf6eb930 LibWeb: Remove StyleValue::has/to_integer()
Only NumericStyleValue holds integers.

I'm not sure our current distinction between NumericStyleValue holding
an integer or non-integer is useful given it always returns a float.
:thonk:
2023-05-27 16:12:25 +02:00
Sam Atkins
4ecf0b7768 LibWeb: Remove StyleValue::has/to_number()
Only NumericStyleValue holds numbers.

Renamed `to_number()` to `number()` because it's just a getter now.
2023-05-27 16:12:25 +02:00
Sam Atkins
5f755d721e LibWeb: Remove StyleValue::has_rect()
This behaves identically to `is_rect()`
2023-05-27 16:12:25 +02:00
Andreas Kling
09eb3ef405 LibWeb: Add fit-content as a valid size value for CSS width 2023-05-27 05:47:54 +02:00
Aliaksandr Kalenik
6e0601a63e LibWeb/CSS: Implement parsing of grid-auto-columns and grid-auto-rows 2023-05-22 06:05:19 +02:00
MacDue
00cda96e2d LibWeb: Implement SVG opacity properties
This implements the stop-opacity, fill-opacity, and stroke-opacity
properties (in CSS). This replaces the existing more ad-hoc
fill-opacity attribute handling.
2023-05-20 08:52:19 +02:00
Andreas Kling
2e13f65ff4 LibWeb: Support flex-basis: calc(...)
1. Propagate calc() values from StyleProperties to ComputedValues.
2. Actually resolve calc() values when determining the used flex basis.

This makes the "support" section on https://shopify.com/ show up
correctly as a 2x2 grid (instead of 1x4). :^)
2023-05-17 07:40:17 +02:00
Andreas Kling
da768e7c46 LibWeb: Don't crash on unresolvable line-height: calc() value
Instead, log the calc() value we failed to resolve, so we can debug it.
2023-05-03 13:59:05 +02:00
Emil Militzer
31e1be0438 LibWeb: Support multi-keyword syntax for CSS display property
The Display class already supported all specific values, and now they
will be parsed too. The display property now has a special type
DisplayStyleValue.
2023-05-02 20:27:28 +02:00
martinfalisse
bebf4363db LibWeb: Change name of GridTrackSizeListStyleValue
Change the name of GridTrackSizeStyleValue to
GridTrackSizeListStyleValue which is more accurate.
2023-04-30 05:56:10 +02:00
Sam Atkins
0679b4e0b9 LibWeb: Wrap font metrics into a struct
Rather than passing an increasingly-unwieldy number of font parameters
individually to every function that resolves lengths, let's wrap them
up.

This is frustratingly close to being `Gfx::FontPixelMetrics`, but bitmap
fonts cause issues: We choose the closest font to what the CSS
requests, but that might have a wildly different size than what the
page expects, so we have to fudge the numbers.

No behaviour changes.
2023-04-29 16:23:50 +02:00
MacDue
297d8eebcd LibWeb: Add stop-color as a CSS property
(This is to set the color of a stop for an SVG gradient)
2023-04-28 09:42:28 +02:00
Andreas Kling
7465362fe7 LibWeb: Clamp CSS z-index to the range of a 32-bit integer
This appears to be consistent with other engines, and fixes many pages
where we were misinterpreting super large z-index values as something
else entirely.
2023-04-26 09:44:43 +02:00
Sam Atkins
6bf5371124 LibWeb: Properly handle auto in StyleProperties::length_percentage()
This relied on `auto` being a LengthStyleValue, which soon will not be
true. :^)
2023-04-19 18:25:18 +02:00
Sam Atkins
53a4a31af2 LibWeb: Remove CalculatedStyleValue from Length 2023-03-30 21:29:50 +02:00
Sam Atkins
62a8cf2bb8 LibWeb: Let CSS::Size contain a CalculatedStyleValue
Technically this was already true, but now we explicitly allow it
instead of that calc value being hidden inside a Length or Percentage.
2023-03-30 21:29:50 +02:00
Sam Atkins
4c54c5d3dd LibWeb: Split StyleValueList out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
3a2de67c7b LibWeb: Split RectStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
cd06b1341b LibWeb: Split TransformationStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
9b834058ee LibWeb: Split StringStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
08fa513887 LibWeb: Split ShadowStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
4b711932cc LibWeb: Split PercentageStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
d39788556a LibWeb: Split GridTrackSizeStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
486ef3df7f LibWeb: Split GridTrackPlacementStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
4dc99e49a1 LibWeb: Split GridTemplateAreaStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
9436b7de83 LibWeb: Split ContentStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Sam Atkins
777d3e73f9 LibWeb: Split AngleStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
MacDue
87b8a36e56 LibWeb: Parse and plumb the accent-color CSS property 2023-03-23 08:27:51 +00:00
Andreas Kling
1f99f9523d LibWeb: Add temporary hack for line-height: calc(...)
At the moment, we can't resolve CSS calc() values without having a
LayoutNode. The new StyleProperties::line_height() overload was trying
to do exactly that, which led to an assertion.

This patch makes `line-height: calc(...)` behave the same as
`line-height: normal` for now and adds a FIXME.
2023-03-18 21:15:51 +01:00
Simon Wanner
554c4af90f LibWeb: Add support for the lh and rlh length units
Resolving these units is somewhat tricky because of their interaction
with both font-size and line-height, but this implementation seems to
work as tested in http://wpt.live/css/css-values/lh-unit-001.html and
http://wpt.live/css/css-values/lh-unit-002.html
2023-03-18 20:14:52 +01:00
Andreas Kling
4c75d4af28 LibWeb: Stop using NonnullRefPtrVector for StyleValueVector 2023-03-06 23:46:35 +01:00
Andreas Kling
f11899f885 LibWeb+LibIDL: Fix (or paper over) various const-correctness issues
There's definitely stuff to iterate on here, but this takes care of
making the libraries compile with stricter RP and NNRP.
2023-02-21 00:54:04 +01:00
Sam Atkins
e338ef4914 LibWeb: Port ComputedValues to new Strings 2023-02-15 12:48:26 -05:00
martinfalisse
9bc001f410 LibWeb: Parse grid-area CSS property 2023-01-21 14:35:00 +01:00
martinfalisse
a6548c4d80 LibWeb: Parse grid-template-areas CSS property 2023-01-21 14:35:00 +01:00
Aliaksandr Kalenik
276a77f02d LibWeb: Support display inline-table
Add support for inline-table display type with corrresponding changes in
tree builder to generate inline anonymous wrapper around inline table
boxes.
2023-01-17 10:18:33 +01:00
martinfalisse
ce0f41b9fb LibWeb+WebContent: Use new String class in CSS::StyleValue
Converts uses of DeprecatedString to String in StyleValue, and patches
surrounding files that depend on these functions.
2023-01-09 11:09:31 +01:00
Sam Atkins
5d8e3f5122 LibWeb: Convert Layout::Node to new pixel units 2023-01-05 17:42:31 +01:00
martinfalisse
64c353f11c LibWeb: Parse border-collapse property for HTML table 2023-01-03 20:02:47 +01:00
martinfalisse
d3b4a5fbdb LibWeb: Allow use of calculated property for line-height
Previously, calculated properties for line-heights were not being
calculated and were simply ignored.
2023-01-01 18:38:01 +01:00
Karol Kosek
e338a0656d LibWeb: Remove unused StyleProperties::length_or_fallback function 2022-12-10 11:46:12 +00:00
Linus Groh
57dc179b1f Everywhere: Rename to_{string => deprecated_string}() where applicable
This will make it easier to support both string types at the same time
while we convert code, and tracking down remaining uses.

One big exception is Value::to_string() in LibJS, where the name is
dictated by the ToString AO.
2022-12-06 08:54:33 +01:00
Andreas Kling
767d632ab7 LibWeb: Don't panic on unsupported text-decoration-line values
Instead, just log a FIXME message and move on.
2022-11-02 22:42:48 +01:00