mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
layout: Enable rendering of conical-gradient
and repeating-conical-gradient
(#31597)
This also ignores a clippy warning for a new function (and a similar existing one), until this code can be refactored to use temporary Rust strutures to carry display list building state. There are a few new test failures here: - FAIL [expected PASS] /css/css-images/image-set/image-set-conic-gradient-rendering.html - FAIL [expected PASS] /css/css-images/image-set/image-set-repeating-conic-gradient-rendering.html These fail because Servo does not yet support `image-set()`. - FAIL [expected PASS] /css/filter-effects/filter-function/filter-function-conic-gradient.html - FAIL [expected PASS] /css/filter-effects/filter-function/filter-function-repeating-conic-gradient.html These fail because Servo does not support the very early filter effects specification. - FAIL [expected PASS] /html/canvas/element/manual/fill-and-stroke-styles/conic-gradient-rotation.html - FAIL [expected PASS] /html/canvas/element/manual/fill-and-stroke-styles/conic-gradient.html These fail because this change only adds support for CSS conical gradients. Another set of changes will be necessary to support this for Canvas.
This commit is contained in:
parent
de7b9bed85
commit
1d1f239ecc
32 changed files with 161 additions and 405 deletions
26
Cargo.lock
generated
26
Cargo.lock
generated
|
@ -1208,7 +1208,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "derive_common"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"darling",
|
||||
"proc-macro2",
|
||||
|
@ -3463,7 +3463,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "malloc_size_of"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"accountable-refcell",
|
||||
"app_units",
|
||||
|
@ -5075,7 +5075,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "selectors"
|
||||
version = "0.24.0"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"cssparser",
|
||||
|
@ -5363,7 +5363,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "servo_arc"
|
||||
version = "0.2.0"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"nodrop",
|
||||
"serde",
|
||||
|
@ -5373,7 +5373,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "servo_atoms"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"string_cache",
|
||||
"string_cache_codegen",
|
||||
|
@ -5579,7 +5579,7 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
|
|||
[[package]]
|
||||
name = "size_of_test"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"static_assertions",
|
||||
]
|
||||
|
@ -5705,7 +5705,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|||
[[package]]
|
||||
name = "static_prefs"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
|
||||
[[package]]
|
||||
name = "str-buf"
|
||||
|
@ -5748,7 +5748,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "style"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"app_units",
|
||||
"arrayvec",
|
||||
|
@ -5806,7 +5806,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "style_config"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
]
|
||||
|
@ -5814,7 +5814,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "style_derive"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"darling",
|
||||
"derive_common",
|
||||
|
@ -5845,7 +5845,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "style_traits"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"app_units",
|
||||
"bitflags 1.3.2",
|
||||
|
@ -6188,7 +6188,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|||
[[package]]
|
||||
name = "to_shmem"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"cssparser",
|
||||
"servo_arc",
|
||||
|
@ -6201,7 +6201,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "to_shmem_derive"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
|
||||
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
|
||||
dependencies = [
|
||||
"darling",
|
||||
"derive_common",
|
||||
|
|
|
@ -1019,7 +1019,7 @@ impl Fragment {
|
|||
};
|
||||
DisplayItem::RadialGradient(CommonDisplayItem::with_data(base, item, stops))
|
||||
},
|
||||
Gradient::Conic { .. } => unimplemented!(),
|
||||
Gradient::Conic { .. } => return,
|
||||
};
|
||||
state.add_display_item(display_item);
|
||||
});
|
||||
|
@ -1273,7 +1273,7 @@ impl Fragment {
|
|||
stops = radial_stops;
|
||||
NinePatchBorderSource::RadialGradient(wr_gradient)
|
||||
},
|
||||
Gradient::Conic { .. } => unimplemented!(),
|
||||
Gradient::Conic { .. } => return None,
|
||||
},
|
||||
_ => return None,
|
||||
};
|
||||
|
|
|
@ -5,9 +5,12 @@
|
|||
use style::color::mix::ColorInterpolationMethod;
|
||||
use style::properties::ComputedValues;
|
||||
use style::values::computed::image::{EndingShape, Gradient, LineDirection};
|
||||
use style::values::computed::{Color, Length, LengthPercentage, Position};
|
||||
use style::values::computed::{
|
||||
Angle, AngleOrPercentage, Color, Length, LengthPercentage, Position,
|
||||
};
|
||||
use style::values::generics::image::{Circle, ColorStop, Ellipse, GradientItem, ShapeExtent};
|
||||
use webrender_api::{self as wr, units};
|
||||
use wr::ColorF;
|
||||
|
||||
pub(super) fn build(
|
||||
style: &ComputedValues,
|
||||
|
@ -56,7 +59,26 @@ pub(super) fn build(
|
|||
layer,
|
||||
builder,
|
||||
),
|
||||
Gradient::Conic { .. } => unimplemented!(),
|
||||
Gradient::Conic {
|
||||
angle,
|
||||
position,
|
||||
color_interpolation_method,
|
||||
items,
|
||||
repeating,
|
||||
} => build_conic(
|
||||
style,
|
||||
*angle,
|
||||
position,
|
||||
*color_interpolation_method,
|
||||
items,
|
||||
if *repeating {
|
||||
wr::ExtendMode::Repeat
|
||||
} else {
|
||||
wr::ExtendMode::Clamp
|
||||
},
|
||||
layer,
|
||||
builder,
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -148,7 +170,9 @@ pub(super) fn build_linear(
|
|||
let start_point = center - half_gradient_line;
|
||||
let end_point = center + half_gradient_line;
|
||||
|
||||
let stops = fixup_stops(style, items, Length::new(gradient_line_length));
|
||||
let mut color_stops =
|
||||
gradient_items_to_color_stops(style, items, Length::new(gradient_line_length));
|
||||
let stops = fixup_stops(&mut color_stops);
|
||||
let linear_gradient = builder
|
||||
.wr()
|
||||
.create_gradient(start_point, end_point, stops, extend_mode);
|
||||
|
@ -162,6 +186,7 @@ pub(super) fn build_linear(
|
|||
}
|
||||
|
||||
/// <https://drafts.csswg.org/css-images-3/#radial-gradients>
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
pub(super) fn build_radial(
|
||||
style: &ComputedValues,
|
||||
items: &[GradientItem<Color, LengthPercentage>],
|
||||
|
@ -249,7 +274,9 @@ pub(super) fn build_radial(
|
|||
// where the gradient line intersects the ending shape.”
|
||||
let gradient_line_length = radii.width;
|
||||
|
||||
let stops = fixup_stops(style, items, Length::new(gradient_line_length));
|
||||
let mut color_stops =
|
||||
gradient_items_to_color_stops(style, items, Length::new(gradient_line_length));
|
||||
let stops = fixup_stops(&mut color_stops);
|
||||
let radial_gradient = builder
|
||||
.wr()
|
||||
.create_radial_gradient(center, radii, stops, extend_mode);
|
||||
|
@ -262,12 +289,48 @@ pub(super) fn build_radial(
|
|||
)
|
||||
}
|
||||
|
||||
/// <https://drafts.csswg.org/css-images-4/#color-stop-fixup>
|
||||
fn fixup_stops(
|
||||
/// <https://drafts.csswg.org/css-images-4/#conic-gradients>
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
fn build_conic(
|
||||
style: &ComputedValues,
|
||||
items: &[GradientItem<Color, LengthPercentage>],
|
||||
gradient_line_length: Length,
|
||||
) -> Vec<wr::GradientStop> {
|
||||
angle: Angle,
|
||||
center: &Position,
|
||||
_color_interpolation_method: ColorInterpolationMethod,
|
||||
items: &[GradientItem<Color, AngleOrPercentage>],
|
||||
extend_mode: wr::ExtendMode,
|
||||
layer: &super::background::BackgroundLayer,
|
||||
builder: &mut super::DisplayListBuilder<'_>,
|
||||
) {
|
||||
let gradient_box = layer.tile_size;
|
||||
let center = units::LayoutPoint::new(
|
||||
center
|
||||
.horizontal
|
||||
.percentage_relative_to(Length::new(gradient_box.width))
|
||||
.px(),
|
||||
center
|
||||
.vertical
|
||||
.percentage_relative_to(Length::new(gradient_box.height))
|
||||
.px(),
|
||||
);
|
||||
let mut color_stops = conic_gradient_items_to_color_stops(style, items);
|
||||
let stops = fixup_stops(&mut color_stops);
|
||||
let conic_gradient =
|
||||
builder
|
||||
.wr()
|
||||
.create_conic_gradient(center, angle.radians(), stops, extend_mode);
|
||||
builder.wr().push_conic_gradient(
|
||||
&layer.common,
|
||||
layer.bounds,
|
||||
conic_gradient,
|
||||
layer.tile_size,
|
||||
layer.tile_spacing,
|
||||
)
|
||||
}
|
||||
|
||||
fn conic_gradient_items_to_color_stops(
|
||||
style: &ComputedValues,
|
||||
items: &[GradientItem<Color, AngleOrPercentage>],
|
||||
) -> Vec<ColorStop<ColorF, f32>> {
|
||||
// Remove color transititon hints, which are not supported yet.
|
||||
// https://drafts.csswg.org/css-images-4/#color-transition-hint
|
||||
//
|
||||
|
@ -278,28 +341,71 @@ fn fixup_stops(
|
|||
// Either way, the best outcome is to add support.
|
||||
// Gecko does so by approximating the non-linear interpolation
|
||||
// by up to 10 piece-wise linear segments (9 intermediate color stops)
|
||||
let mut stops = Vec::with_capacity(items.len());
|
||||
for item in items {
|
||||
match item {
|
||||
GradientItem::SimpleColorStop(color) => stops.push(ColorStop {
|
||||
color: super::rgba(style.resolve_color(color.clone())),
|
||||
position: None,
|
||||
}),
|
||||
GradientItem::ComplexColorStop { color, position } => stops.push(ColorStop {
|
||||
color: super::rgba(style.resolve_color(color.clone())),
|
||||
position: Some(if gradient_line_length.px() == 0. {
|
||||
0.
|
||||
} else {
|
||||
position.percentage_relative_to(gradient_line_length).px() /
|
||||
gradient_line_length.px()
|
||||
items
|
||||
.iter()
|
||||
.filter_map(|item| {
|
||||
match item {
|
||||
GradientItem::SimpleColorStop(color) => Some(ColorStop {
|
||||
color: super::rgba(style.resolve_color(color.clone())),
|
||||
position: None,
|
||||
}),
|
||||
GradientItem::ComplexColorStop { color, position } => Some(ColorStop {
|
||||
color: super::rgba(style.resolve_color(color.clone())),
|
||||
position: match position {
|
||||
AngleOrPercentage::Percentage(percentage) => Some(percentage.0),
|
||||
AngleOrPercentage::Angle(angle) => Some(angle.degrees() / 360.),
|
||||
},
|
||||
}),
|
||||
}),
|
||||
GradientItem::InterpolationHint(_) => {
|
||||
// FIXME: approximate like in:
|
||||
// https://searchfox.org/mozilla-central/rev/f98dad153b59a985efd4505912588d4651033395/layout/painting/nsCSSRenderingGradients.cpp#315-391
|
||||
},
|
||||
}
|
||||
}
|
||||
GradientItem::InterpolationHint(_) => None,
|
||||
}
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn gradient_items_to_color_stops(
|
||||
style: &ComputedValues,
|
||||
items: &[GradientItem<Color, LengthPercentage>],
|
||||
gradient_line_length: Length,
|
||||
) -> Vec<ColorStop<ColorF, f32>> {
|
||||
// Remove color transititon hints, which are not supported yet.
|
||||
// https://drafts.csswg.org/css-images-4/#color-transition-hint
|
||||
//
|
||||
// This gives an approximation of the gradient that might be visibly wrong,
|
||||
// but maybe better than not parsing that value at all?
|
||||
// It’s debatble whether that’s better or worse
|
||||
// than not parsing and allowing authors to set a fallback.
|
||||
// Either way, the best outcome is to add support.
|
||||
// Gecko does so by approximating the non-linear interpolation
|
||||
// by up to 10 piece-wise linear segments (9 intermediate color stops)
|
||||
items
|
||||
.iter()
|
||||
.filter_map(|item| {
|
||||
match item {
|
||||
GradientItem::SimpleColorStop(color) => Some(ColorStop {
|
||||
color: super::rgba(style.resolve_color(color.clone())),
|
||||
position: None,
|
||||
}),
|
||||
GradientItem::ComplexColorStop { color, position } => Some(ColorStop {
|
||||
color: super::rgba(style.resolve_color(color.clone())),
|
||||
position: Some(if gradient_line_length.px() == 0. {
|
||||
0.
|
||||
} else {
|
||||
position.percentage_relative_to(gradient_line_length).px() /
|
||||
gradient_line_length.px()
|
||||
}),
|
||||
}),
|
||||
// FIXME: approximate like in:
|
||||
// https://searchfox.org/mozilla-central/rev/f98dad153b59a985efd4505912588d4651033395/layout/painting/nsCSSRenderingGradients.cpp#315-391
|
||||
GradientItem::InterpolationHint(_) => None,
|
||||
}
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
/// <https://drafts.csswg.org/css-images-4/#color-stop-fixup>
|
||||
fn fixup_stops(stops: &mut Vec<ColorStop<ColorF, f32>>) -> Vec<wr::GradientStop> {
|
||||
assert!(stops.len() >= 2);
|
||||
|
||||
// https://drafts.csswg.org/css-images-4/#color-stop-fixup
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
[background-image-computed.sub.html]
|
||||
[Property background-image value 'conic-gradient(at center, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 45deg at 10px 10px, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 0deg, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(at 10px 10px, rgb(255, 0, 0), rgb(0, 0, 255))']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 45deg at 50%, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 45deg at center, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 0deg at 50%, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 0deg at center, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 45deg, rgb(255, 0, 0), rgb(0, 0, 255))']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 0deg at 10px 10px, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(at 50%, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from -45deg, rgb(255, 0, 0), rgb(0, 0, 255))']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from -45deg at center, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from -45deg at 50%, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from -45deg at 10px 10px, red, blue)']
|
||||
expected: FAIL
|
|
@ -1,7 +1,3 @@
|
|||
[border-image-source-computed.sub.html]
|
||||
[Property border-image-source value 'conic-gradient(from 90deg at 80% 90%, lime, black)' computes to 'conic-gradient(from 90deg at 80% 90%, rgb(0, 255, 0), rgb(0, 0, 0))']
|
||||
expected: FAIL
|
||||
|
||||
[Property border-image-source value 'conic-gradient(from 90deg at 80% 90%, lime, black)']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
[color-stops-parsing.html]
|
||||
|
||||
[conic-gradient(black, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black, green, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, green 50%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 50%, green 10%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black, 25%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, 25%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, 15%, green 50%, 60%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0% 50%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0% 50%, white 50% 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0% 50%, green 25% 75%, white 50% 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0% calc(100% / 5), 25%, green 30% 60%, calc(100% * 3 / 4), white calc(100% - 20%) 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black, green, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, green 50%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 50%, green 10%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black, 25%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, 25%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, 15%, green 50%, 60%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0% 50%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0% 50%, white 50% 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0% 50%, green 25% 75%, white 50% 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0% calc(100% / 5), 25%, green 30% 60%, calc(100% * 3 / 4), white calc(100% - 20%) 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
|
@ -1943,18 +1943,6 @@
|
|||
[Property background-image value 'radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 30deg, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(at left 10px top 50em, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 30deg, color(srgb 1 0 0), blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(in lab, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1943,18 +1943,6 @@
|
|||
[e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(from 30deg, red, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, red, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(from 30deg, color(srgb 1 0 0), blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(in lab, red, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -3737,12 +3725,6 @@
|
|||
[e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, red, 50%, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(from 30deg, red, 50%, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, red, 50%, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(in lab, red, 50%, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[calc-linear-radial-conic-gradient-001.html]
|
||||
[testing background-image: conic-gradient(rgb(0, 128, 0) calc(50% + 10%), rgb(0, 0, 255) calc(60% + 20%))]
|
||||
expected: FAIL
|
|
@ -1,48 +0,0 @@
|
|||
[background-image-computed.sub.html]
|
||||
[Property background-image value 'conic-gradient(at center, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 45deg at 10px 10px, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 0deg, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(at 10px 10px, rgb(255, 0, 0), rgb(0, 0, 255))']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 45deg at 50%, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 45deg at center, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 0deg at 50%, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 0deg at center, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 45deg, rgb(255, 0, 0), rgb(0, 0, 255))']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 0deg at 10px 10px, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(at 50%, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from -45deg, rgb(255, 0, 0), rgb(0, 0, 255))']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from -45deg at center, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from -45deg at 50%, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from -45deg at 10px 10px, red, blue)']
|
||||
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
|||
[border-image-source-computed.sub.html]
|
||||
[Property border-image-source value 'conic-gradient(from 90deg at 80% 90%, lime, black)']
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[conic-gradient-angle-negative.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[conic-gradient-angle.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[conic-gradient-center.html]
|
||||
expected: FAIL
|
|
@ -1,84 +0,0 @@
|
|||
[color-stops-parsing.html]
|
||||
[conic-gradient(black, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black, green, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, green 50%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 50%, green 10%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black, 25%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, 25%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0%, 15%, green 50%, 60%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0% 50%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0% 50%, white 50% 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0% 50%, green 25% 75%, white 50% 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[conic-gradient(black 0% calc(100% / 5), 25%, green 30% 60%, calc(100% * 3 / 4), white calc(100% - 20%) 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black, green, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, green 50%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 50%, green 10%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black, 25%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, 25%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0%, 15%, green 50%, 60%, white 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0% 50%, white) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0% 50%, white 50% 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0% 50%, green 25% 75%, white 50% 100%) [ parsable \]]
|
||||
expected: FAIL
|
||||
|
||||
[repeating-conic-gradient(black 0% calc(100% / 5), 25%, green 30% 60%, calc(100% * 3 / 4), white calc(100% - 20%) 100%) [ parsable \]]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[image-set-conic-gradient-rendering.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[image-set-repeating-conic-gradient-rendering.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[multiple-position-color-stop-conic-2.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[multiple-position-color-stop-conic.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[normalization-conic-2.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[normalization-conic-degenerate.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[normalization-conic.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[out-of-range-color-stop-conic.html]
|
||||
expected: FAIL
|
|
@ -1943,18 +1943,6 @@
|
|||
[Property background-image value 'radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 30deg, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(at left 10px top 50em, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(from 30deg, color(srgb 1 0 0), blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property background-image value 'conic-gradient(in lab, red, blue)']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1943,18 +1943,6 @@
|
|||
[e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(from 30deg, red, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, red, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(from 30deg, color(srgb 1 0 0), blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(in lab, red, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -3737,12 +3725,6 @@
|
|||
[e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, red, 50%, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(from 30deg, red, 50%, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, red, 50%, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['background-image'\] = "conic-gradient(in lab, red, 50%, blue)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[repeating-conic-gradient.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[tiled-conic-gradients.html]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[calc-linear-radial-conic-gradient-001.html]
|
||||
[testing background-image: conic-gradient(rgb(0, 128, 0) calc(50% + 10%), rgb(0, 0, 255) calc(60% + 20%))]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[filter-function-conic-gradient.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[filter-function-repeating-conic-gradient.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[conic-gradient-rotation.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[conic-gradient.html]
|
||||
expected: FAIL
|
Loading…
Add table
Add a link
Reference in a new issue