Callum Law
25192d3c20
LibWeb: Store BorderRadiusStyleValue
sub-values directly
...
Storing these within LengthPercentage is unnecessary
2025-10-07 10:50:01 +01:00
Callum Law
2ebf446cbf
LibWeb: Store BackgroundSizeStyleValue
sub-values directly
...
Storing these within LengthPercentage is unnecessary
2025-10-07 10:50:01 +01:00
Callum Law
309ff33278
LibWeb: Add convenience from_style_value
for LengthPercentage{OrAuto}
2025-10-07 10:50:01 +01:00
Tim Ledbetter
b64cb89b9d
LibWeb: Implement compositing of font-variation-settings
values
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-09-26 11:20:54 +01:00
Tim Ledbetter
f9452b77b7
LibWeb: Implement interpolation of font-variation-settings
values
2025-09-26 11:20:54 +01:00
Tim Ledbetter
d18d40f7b9
LibWeb: Handle interpolation of grid track size lists
...
This allows the `grid-template-rows` and `grid-template-columns`
properties to be correctly interpolated.
2025-09-26 11:15:08 +01:00
Tim Ledbetter
436e9c317a
LibWeb: Extract commonly used interpolation lambdas into methods
2025-09-26 11:15:08 +01:00
Callum Law
b80e6a4d30
LibWeb: Rename get_inherit_value
to get_non_animated_inherit_value
...
This more acurately represents what it does.
2025-09-19 10:06:33 +01:00
Tim Ledbetter
9b15517052
LibWeb: Apply composite operator to keyframe effects
2025-09-18 16:46:06 +01:00
Callum Law
c3a78d2884
LibWeb: Don't include spread distance when serializing text-shadow
...
We shouldn't include spread distance when serializing `text-shadow` as
it is not supported unlike `box-shadow` - to achieve this we store
whether this is a text or box shadow within the ShadowStyleValue and
serialize appropriately.
2025-09-18 15:21:22 +01:00
Tim Ledbetter
f5fd6338d5
LibWeb: Handle interpolation of mixed-type LengthPercentages
2025-09-15 10:41:01 +01:00
Tim Ledbetter
7409c564d7
LibWeb: Extract mixed-type interpolation to a separate method
2025-09-15 10:41:01 +01:00
Tim Ledbetter
b19fee9962
LibWeb: Interpolate ellipse()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
f146207a04
LibWeb: Interpolate circle()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
4a0fe65923
LibWeb: Interpolate polygon()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
853bedeb31
LibWeb: Interpolate rect()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
0c89e86ff7
LibWeb: Interpolate xywh()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
be94c8d456
LibWeb: Interpolate inset()
function by computed value
2025-09-15 10:34:43 +01:00
MFMF-EGY
fff09ed330
LibWeb: Handle interpolation of BorderRadius style value type
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-09-14 16:49:20 +01:00
Tim Ledbetter
19577b966e
LibWeb: Implement interpolation of border-image-slice
style values
2025-09-13 12:05:19 +02:00
Sam Atkins
0293176429
LibWeb/CSS: Take AbstractElement in StyleComputer::get_*_inherit_value()
2025-09-11 18:45:35 +02:00
Sam Atkins
b3e32445d3
LibWeb/CSS: Use generated FooUnit types instead of Foo::Type
...
I've also renamed the `m_type` and `type()` members to be `m_unit` and
`unit()` instead, to match what they actually are.
2025-09-11 17:06:44 +01:00
Tim Ledbetter
bf8b8c260a
LibWeb: Simplify interpolation of mixed percentage-dimension values
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-09-11 06:10:23 +01:00
Tim Ledbetter
9c062d9d4e
LibWeb: Improve interpolation of mixed percentage-dimension values
...
If we are interpolating between a dimension and a percentage value and
the dimension component is 0, we now return a percentage value rather
than a `calc()` value.
2025-09-10 17:00:20 +01:00
Callum Law
5ed3b2ed16
LibWeb: Support interpolation of CalculatedStyleValue
...
We also support interpolating from a CalculatedStyleValue to a
compatible dimension or percentage style value.
This also brings with it a couple of improvements in how we handle
interpolation between mixed dimension and percentage types in terms of:
- Proper simplification of the resulting calc()
- Improved handling of interpolation outside the 0-1 range
2025-09-08 11:58:44 +01:00
Tim Ledbetter
fa6c7959ff
LibWeb: Pass calculation context by const reference
2025-09-07 14:50:36 +01:00
Tim Ledbetter
96b628fe21
LibWeb: Clamp interpolated values to their accepted range
2025-09-07 14:50:36 +01:00
Sam Atkins
04622f3940
LibWeb/CSS: Use LengthPercentageOrAuto for background sizes
...
...instead of `auto` Lengths.
This also fixes interpolating between two `auto` `<bg-size>`s, which
fixes a lot of animation tests for both `background-size` and `mask`.
2025-09-04 13:31:24 +01:00
Sam Atkins
9b27aaa00c
LibWeb/CSS: Use LengthOrAuto for clip rects
2025-09-04 13:31:24 +01:00
Tim Ledbetter
cb1a1a5cb5
LibWeb: Replace is<T>()
with as_if<T>()
where possible
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-08-25 18:45:00 +02:00
Sam Atkins
5bdc2981e3
LibWeb/CSS: Rename CSSNumericType to NumericType
...
The CSSNumericType defined in the spec is a simple dictionary which is
only used for OM purposes. This NumericType class is used internally
and matches the more abstract definition of a "type".
2025-08-22 09:48:30 +01:00
norbiros
783ae44462
LibWeb: Fix color interpolation by premultiplying alpha
...
The current Color::interpolate_color method does not follow the specs
properly. Started improving it by handling premultiplied alpha in color
interpolation.
Only one WPT test covers this (color-transition-premultiplied), which we
currently pass due to a different approach in Color.mixed_with.
2025-08-14 11:09:05 +02:00
Callum Law
ed6cac89b9
LibWeb: Discard inaccuracies when interpolating rotate
2025-08-12 14:35:02 +01:00
Sam Atkins
6cad3f1921
LibWeb/CSS: Rename CSSColorValue -> ColorStyleValue
...
The typed-om class will be a separate thing.
2025-08-08 15:19:03 +01:00
Sam Atkins
7157d19f56
LibWeb/CSS: Separate IntegerSV and NumberSV from CSSUnitValue
...
This inheritance exists for typed-om classes, but StyleValues aren't
typed-om.
Somehow this makes our z-index interpolation slightly more correct. 🎉
2025-08-08 15:19:03 +01:00
Sam Atkins
4e92ab52e3
LibWeb/CSS: Rename CSSKeywordValue -> KeywordStyleValue
...
The typed-om CSSKeywordValue will need to be a separate class.
2025-08-08 15:19:03 +01:00
Sam Atkins
c57975c9fd
LibWeb: Move and rename CSSStyleValue to StyleValues/StyleValue.{h,cpp}
...
This reverts 0e3487b9ab
.
Back when I made that change, I thought we could make our StyleValue
classes match the typed-om definitions directly. However, they have
different requirements. Typed-om types need to be mutable and GCed,
whereas StyleValues are immutable and ideally wouldn't require a JS VM.
While I was already making such a cataclysmic change, I've moved it into
the StyleValues directory, because it *not* being there has bothered me
for a long time. 😅
2025-08-08 15:19:03 +01:00
Callum Law
a1037e28d6
LibWeb: Improve support for CalculatedStyleValue in scale
...
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
- Properly serialize CalculatedStyleValue components
- Allow CSV to be the 'Z' component in interpolated value
Gains us 52 WPT tests
2025-08-08 09:45:00 +01:00
Callum Law
39fdcbc526
LibWeb: Improve support for CalculatedStyleValue in translate
...
- Omit calcs that are resolved to `0px` from the serialized value
- Allow CSV to be the 'Z' component in interpolated value.
- Allow calcs with mixed percentages in the first two arguments.
To achieve the third item above the concept of a "special" value parsing
context has been added - this will also be useful for instance for
different arguments of color functions having different contexts.
Gains us 23 WPT tests
2025-08-08 09:45:00 +01:00
Callum Law
46153910ec
LibWeb: Update to_color
to take ColorResolutionContext
...
Using a generic context argument will allow us to resolve colors in
places where we have all the required information but not in the form of
a layout node as was expected previously.
2025-08-04 11:29:05 +01:00
Tim Ledbetter
ca9364983c
LibWeb/CSS: Support interpolating filter
and backdrop-filter
values
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-07-30 23:29:07 +02:00
Tim Ledbetter
62e52163d6
LibWeb: Interpolate text-shadow
values as a shadow list
...
This is the same behavior as is currently used for `box-shadow`.
2025-07-30 10:51:50 +02:00
Tim Ledbetter
3ae48776fd
LibWeb: Round integral values to the nearest integer when interpolating
...
Previously, color components were being incorrectly rounded when
interpolating.
2025-07-30 10:51:50 +02:00
Arran Ireland
423e944a92
LibGfx+LibWeb: Upgrade to multi-arg subscript operator in Matrix
...
See the following for more details:
https://en.cppreference.com/w/cpp/language/operators.html#Array_subscript_operator
2025-07-28 09:15:23 +02:00
ayeteadoe
77d9508618
LibWeb/CSS: Fix implicit narrowing cast in interpolate_rotate
...
The changes introduced in 484a09d6a2
broke the Windows LibWeb build, so this fixes that
2025-07-22 13:21:17 -06:00
Tim Ledbetter
484a09d6a2
LibWeb: Support interpolating rotate
values
2025-07-22 11:09:45 +01:00
Tim Ledbetter
cf33dec6d6
LibWeb: Extract SLERP algorithm into its own method
...
No functional changes.
2025-07-22 11:09:45 +01:00
Callum Law
6a9c8d7767
LibWeb: Don't resolve colors with unresolved components
...
`CSSColorValue`s which have unresolved `calc` components should be able
to be resolved. Previously we would always resolve them but with
incorrect values.
This is useful as we will now be able to now whether we should serialize
colors in their normalized form or not.
Slight regression in that we now serialize (RGB, HSL and HWB) colors
with components that rely on compute-time information as an empty
string, but that will be fixed in the next commit.
2025-07-16 13:05:33 +01:00
Gingeh
1b7323fc2d
LibWeb: Interpolate legacy colors in sRGB
2025-07-04 15:28:08 +01:00
Callum Law
9ab7c5d08d
LibWeb: Support relative lengths in calc
color values
...
Gains us ~40 WPT tests.
2025-07-04 13:18:55 +01:00