mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Update WR (box shadows + per-corner radii, elliptical clips).
This commit is contained in:
parent
fe16c1d5c3
commit
aaaf644c91
5 changed files with 12 additions and 15 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -3620,7 +3620,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webrender"
|
name = "webrender"
|
||||||
version = "0.52.1"
|
version = "0.52.1"
|
||||||
source = "git+https://github.com/servo/webrender#6a7b5381b21805f4e3a15cda3bbe8466bc916485"
|
source = "git+https://github.com/servo/webrender#37d531900bcb8e7c09c01759af12493abed8c0e3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -3648,7 +3648,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webrender_api"
|
name = "webrender_api"
|
||||||
version = "0.52.1"
|
version = "0.52.1"
|
||||||
source = "git+https://github.com/servo/webrender#6a7b5381b21805f4e3a15cda3bbe8466bc916485"
|
source = "git+https://github.com/servo/webrender#37d531900bcb8e7c09c01759af12493abed8c0e3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|
|
@ -875,9 +875,7 @@ pub struct BoxShadowDisplayItem {
|
||||||
pub spread_radius: Au,
|
pub spread_radius: Au,
|
||||||
|
|
||||||
/// The border radius of this shadow.
|
/// The border radius of this shadow.
|
||||||
///
|
pub border_radius: BorderRadii<Au>,
|
||||||
/// TODO(pcwalton): Elliptical radii; different radii for each corner.
|
|
||||||
pub border_radius: Au,
|
|
||||||
|
|
||||||
/// How we should clip the result.
|
/// How we should clip the result.
|
||||||
pub clip_mode: BoxShadowClipMode,
|
pub clip_mode: BoxShadowClipMode,
|
||||||
|
|
|
@ -71,8 +71,8 @@ use style_traits::CSSPixel;
|
||||||
use style_traits::ToCss;
|
use style_traits::ToCss;
|
||||||
use style_traits::cursor::Cursor;
|
use style_traits::cursor::Cursor;
|
||||||
use table_cell::CollapsedBordersForCell;
|
use table_cell::CollapsedBordersForCell;
|
||||||
use webrender_api::{ClipAndScrollInfo, ClipId, ColorF, ComplexClipRegion, GradientStop, LineStyle};
|
use webrender_api::{ClipAndScrollInfo, ClipId, ClipMode, ColorF, ComplexClipRegion, GradientStop};
|
||||||
use webrender_api::{LocalClip, RepeatMode, ScrollPolicy, ScrollSensitivity, StickyFrameInfo};
|
use webrender_api::{LineStyle, LocalClip, RepeatMode, ScrollPolicy, ScrollSensitivity, StickyFrameInfo};
|
||||||
use webrender_api::StickySideConstraint;
|
use webrender_api::StickySideConstraint;
|
||||||
use webrender_helpers::{ToBorderRadius, ToMixBlendMode, ToRectF, ToTransformStyle};
|
use webrender_helpers::{ToBorderRadius, ToMixBlendMode, ToRectF, ToTransformStyle};
|
||||||
|
|
||||||
|
@ -980,6 +980,7 @@ impl FragmentDisplayListBuilding for Fragment {
|
||||||
LocalClip::RoundedRect(bounds.to_rectf(), ComplexClipRegion::new(
|
LocalClip::RoundedRect(bounds.to_rectf(), ComplexClipRegion::new(
|
||||||
bounds.to_rectf(),
|
bounds.to_rectf(),
|
||||||
border_radii.to_border_radius(),
|
border_radii.to_border_radius(),
|
||||||
|
ClipMode::Clip,
|
||||||
))
|
))
|
||||||
} else {
|
} else {
|
||||||
LocalClip::Rect(bounds.to_rectf())
|
LocalClip::Rect(bounds.to_rectf())
|
||||||
|
@ -1479,6 +1480,7 @@ impl FragmentDisplayListBuilding for Fragment {
|
||||||
self.node,
|
self.node,
|
||||||
style.get_cursor(Cursor::Default),
|
style.get_cursor(Cursor::Default),
|
||||||
display_list_section);
|
display_list_section);
|
||||||
|
let border_radius = build_border_radius(absolute_bounds, style.get_border());
|
||||||
state.add_display_item(DisplayItem::BoxShadow(Box::new(BoxShadowDisplayItem {
|
state.add_display_item(DisplayItem::BoxShadow(Box::new(BoxShadowDisplayItem {
|
||||||
base: base,
|
base: base,
|
||||||
box_bounds: *absolute_bounds,
|
box_bounds: *absolute_bounds,
|
||||||
|
@ -1487,9 +1489,7 @@ impl FragmentDisplayListBuilding for Fragment {
|
||||||
Au::from(box_shadow.base.vertical)),
|
Au::from(box_shadow.base.vertical)),
|
||||||
blur_radius: Au::from(box_shadow.base.blur),
|
blur_radius: Au::from(box_shadow.base.blur),
|
||||||
spread_radius: Au::from(box_shadow.spread),
|
spread_radius: Au::from(box_shadow.spread),
|
||||||
border_radius: model::specified_border_radius(style.get_border()
|
border_radius,
|
||||||
.border_top_left_radius,
|
|
||||||
absolute_bounds.size).width,
|
|
||||||
clip_mode: if box_shadow.inset {
|
clip_mode: if box_shadow.inset {
|
||||||
BoxShadowClipMode::Inset
|
BoxShadowClipMode::Inset
|
||||||
} else {
|
} else {
|
||||||
|
@ -2013,6 +2013,7 @@ impl FragmentDisplayListBuilding for Fragment {
|
||||||
stacking_relative_border_box.to_rectf(),
|
stacking_relative_border_box.to_rectf(),
|
||||||
ComplexClipRegion::new(stacking_relative_content_box.to_rectf(),
|
ComplexClipRegion::new(stacking_relative_content_box.to_rectf(),
|
||||||
radii.to_border_radius(),
|
radii.to_border_radius(),
|
||||||
|
ClipMode::Clip,
|
||||||
))
|
))
|
||||||
} else {
|
} else {
|
||||||
LocalClip::Rect(stacking_relative_border_box.to_rectf())
|
LocalClip::Rect(stacking_relative_border_box.to_rectf())
|
||||||
|
|
|
@ -16,7 +16,7 @@ use style::computed_values::{image_rendering, mix_blend_mode, transform_style};
|
||||||
use style::values::computed::{BorderStyle, Filter};
|
use style::values::computed::{BorderStyle, Filter};
|
||||||
use style::values::generics::effects::Filter as GenericFilter;
|
use style::values::generics::effects::Filter as GenericFilter;
|
||||||
use webrender_api::{self, ClipAndScrollInfo, ComplexClipRegion, DisplayListBuilder};
|
use webrender_api::{self, ClipAndScrollInfo, ComplexClipRegion, DisplayListBuilder};
|
||||||
use webrender_api::{ExtendMode, LayoutTransform};
|
use webrender_api::{ClipMode, ExtendMode, LayoutTransform};
|
||||||
|
|
||||||
pub trait WebRenderDisplayListConverter {
|
pub trait WebRenderDisplayListConverter {
|
||||||
fn convert_to_webrender(&self, pipeline_id: PipelineId) -> DisplayListBuilder;
|
fn convert_to_webrender(&self, pipeline_id: PipelineId) -> DisplayListBuilder;
|
||||||
|
@ -447,7 +447,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
||||||
item.color,
|
item.color,
|
||||||
item.blur_radius.to_f32_px(),
|
item.blur_radius.to_f32_px(),
|
||||||
item.spread_radius.to_f32_px(),
|
item.spread_radius.to_f32_px(),
|
||||||
item.border_radius.to_f32_px(),
|
item.border_radius.to_border_radius(),
|
||||||
item.clip_mode.to_clip_mode());
|
item.clip_mode.to_clip_mode());
|
||||||
}
|
}
|
||||||
DisplayItem::PushTextShadow(ref item) => {
|
DisplayItem::PushTextShadow(ref item) => {
|
||||||
|
@ -528,6 +528,7 @@ impl ToWebRenderClip for ClippingRegion {
|
||||||
ComplexClipRegion::new(
|
ComplexClipRegion::new(
|
||||||
complex_clipping_region.rect.to_rectf(),
|
complex_clipping_region.rect.to_rectf(),
|
||||||
complex_clipping_region.radii.to_border_radius(),
|
complex_clipping_region.radii.to_border_radius(),
|
||||||
|
ClipMode::Clip,
|
||||||
)
|
)
|
||||||
}).collect()
|
}).collect()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[css-box-shadow-001.htm]
|
|
||||||
type: reftest
|
|
||||||
expected: FAIL
|
|
Loading…
Add table
Add a link
Reference in a new issue