mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Use generics for the filter property
This introduces an additional shadow type for drop-shadow().
This commit is contained in:
parent
e41b7d06b4
commit
6f4061d4ad
21 changed files with 822 additions and 496 deletions
|
@ -50,7 +50,6 @@ use std::sync::Arc;
|
|||
use style::computed_values::{background_attachment, background_clip, background_origin};
|
||||
use style::computed_values::{background_repeat, border_style, cursor};
|
||||
use style::computed_values::{image_rendering, overflow_x, pointer_events, position, visibility};
|
||||
use style::computed_values::filter::Filter;
|
||||
use style::logical_geometry::{LogicalPoint, LogicalRect, LogicalSize, WritingMode};
|
||||
use style::properties::{self, ServoComputedValues};
|
||||
use style::properties::longhands::border_image_repeat::computed_value::RepeatKeyword;
|
||||
|
@ -61,6 +60,7 @@ use style::values::computed::{Gradient, GradientItem, LengthOrPercentage};
|
|||
use style::values::computed::{LengthOrPercentageOrAuto, NumberOrPercentage, Position, Shadow};
|
||||
use style::values::computed::image::{EndingShape, LineDirection};
|
||||
use style::values::generics::background::BackgroundSize;
|
||||
use style::values::generics::effects::Filter;
|
||||
use style::values::generics::image::{Circle, Ellipse, EndingShape as GenericEndingShape};
|
||||
use style::values::generics::image::{GradientItem as GenericGradientItem, GradientKind};
|
||||
use style::values::generics::image::{Image, ShapeExtent};
|
||||
|
@ -2006,7 +2006,7 @@ impl FragmentDisplayListBuilding for Fragment {
|
|||
|
||||
// Create the filter pipeline.
|
||||
let effects = self.style().get_effects();
|
||||
let mut filters = effects.filter.clone();
|
||||
let mut filters = effects.filter.clone().0.into_vec();
|
||||
if effects.opacity != 1.0 {
|
||||
filters.push(Filter::Opacity(effects.opacity))
|
||||
}
|
||||
|
@ -2022,7 +2022,7 @@ impl FragmentDisplayListBuilding for Fragment {
|
|||
&border_box,
|
||||
&overflow,
|
||||
self.effective_z_index(),
|
||||
filters,
|
||||
filters.into(),
|
||||
self.style().get_effects().mix_blend_mode.to_mix_blend_mode(),
|
||||
self.transform_matrix(&border_box),
|
||||
self.style().get_used_transform_style().to_transform_style(),
|
||||
|
|
|
@ -2467,7 +2467,7 @@ impl Fragment {
|
|||
if self.style().get_effects().opacity != 1.0 {
|
||||
return true
|
||||
}
|
||||
if !self.style().get_effects().filter.is_empty() {
|
||||
if !self.style().get_effects().filter.0.is_empty() {
|
||||
return true
|
||||
}
|
||||
if self.style().get_effects().mix_blend_mode != mix_blend_mode::T::normal {
|
||||
|
|
|
@ -13,8 +13,9 @@ use gfx::display_list::{BorderDetails, BorderRadii, BoxShadowClipMode, ClippingR
|
|||
use gfx::display_list::{DisplayItem, DisplayList, DisplayListTraversal, StackingContextType};
|
||||
use msg::constellation_msg::PipelineId;
|
||||
use style::computed_values::{image_rendering, mix_blend_mode, transform_style};
|
||||
use style::computed_values::filter::{self, Filter};
|
||||
use style::computed_values::filter;
|
||||
use style::values::computed::BorderStyle;
|
||||
use style::values::generics::effects::Filter;
|
||||
use webrender_traits::{self, DisplayListBuilder, ExtendMode};
|
||||
use webrender_traits::{LayoutTransform, ClipId, ClipRegionToken};
|
||||
|
||||
|
@ -203,8 +204,8 @@ trait ToFilterOps {
|
|||
|
||||
impl ToFilterOps for filter::T {
|
||||
fn to_filter_ops(&self) -> Vec<webrender_traits::FilterOp> {
|
||||
let mut result = Vec::with_capacity(self.filters.len());
|
||||
for filter in self.filters.iter() {
|
||||
let mut result = Vec::with_capacity(self.0.len());
|
||||
for filter in self.0.iter() {
|
||||
match *filter {
|
||||
Filter::Blur(radius) => result.push(webrender_traits::FilterOp::Blur(radius)),
|
||||
Filter::Brightness(amount) => result.push(webrender_traits::FilterOp::Brightness(amount)),
|
||||
|
@ -215,6 +216,7 @@ impl ToFilterOps for filter::T {
|
|||
Filter::Opacity(amount) => result.push(webrender_traits::FilterOp::Opacity(amount.into())),
|
||||
Filter::Saturate(amount) => result.push(webrender_traits::FilterOp::Saturate(amount)),
|
||||
Filter::Sepia(amount) => result.push(webrender_traits::FilterOp::Sepia(amount)),
|
||||
Filter::DropShadow(ref shadow) => match *shadow {},
|
||||
}
|
||||
}
|
||||
result
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue