mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
Use the Separator trait for the filter property
This commit is contained in:
parent
813883e1bd
commit
395f6be0a6
13 changed files with 66 additions and 131 deletions
|
@ -60,7 +60,7 @@ use std::ptr;
|
|||
use stylearc::Arc;
|
||||
use std::cmp;
|
||||
use values::{Auto, CustomIdent, Either, KeyframesName};
|
||||
use values::computed::Shadow;
|
||||
use values::computed::{Filter, Shadow};
|
||||
use values::specified::length::Percentage;
|
||||
use computed_values::border_style;
|
||||
|
||||
|
@ -3300,7 +3300,11 @@ fn static_assert() {
|
|||
'Opacity', 'Saturate', 'Sepia' ]
|
||||
%>
|
||||
|
||||
pub fn set_filter(&mut self, v: longhands::filter::computed_value::T) {
|
||||
pub fn set_filter<I>(&mut self, v: I)
|
||||
where
|
||||
I: IntoIterator<Item = Filter>,
|
||||
I::IntoIter: ExactSizeIterator,
|
||||
{
|
||||
use values::generics::effects::Filter::*;
|
||||
use gecko_bindings::structs::nsCSSShadowArray;
|
||||
use gecko_bindings::structs::nsStyleFilter;
|
||||
|
@ -3320,12 +3324,13 @@ fn static_assert() {
|
|||
gecko_filter.mFilterParameter.set_value(value);
|
||||
}
|
||||
|
||||
let v = v.into_iter();
|
||||
unsafe {
|
||||
Gecko_ResetFilters(&mut self.gecko, v.0.len());
|
||||
Gecko_ResetFilters(&mut self.gecko, v.len());
|
||||
}
|
||||
debug_assert!(v.0.len() == self.gecko.mFilters.len());
|
||||
debug_assert_eq!(v.len(), self.gecko.mFilters.len());
|
||||
|
||||
for (servo, gecko_filter) in v.0.into_vec().into_iter().zip(self.gecko.mFilters.iter_mut()) {
|
||||
for (servo, gecko_filter) in v.zip(self.gecko.mFilters.iter_mut()) {
|
||||
match servo {
|
||||
% for func in FILTER_FUNCTIONS:
|
||||
${func}(factor) => fill_filter(NS_STYLE_FILTER_${func.upper()},
|
||||
|
@ -3372,7 +3377,7 @@ fn static_assert() {
|
|||
}
|
||||
|
||||
pub fn clone_filter(&self) -> longhands::filter::computed_value::T {
|
||||
use values::generics::effects::{Filter, FilterList};
|
||||
use values::generics::effects::Filter;
|
||||
use values::specified::url::SpecifiedUrl;
|
||||
use gecko_bindings::structs::NS_STYLE_FILTER_BLUR;
|
||||
use gecko_bindings::structs::NS_STYLE_FILTER_BRIGHTNESS;
|
||||
|
@ -3422,7 +3427,7 @@ fn static_assert() {
|
|||
_ => {},
|
||||
}
|
||||
}
|
||||
FilterList(filters.into_boxed_slice())
|
||||
longhands::filter::computed_value::T(filters)
|
||||
}
|
||||
|
||||
</%self:impl_trait>
|
||||
|
@ -3942,10 +3947,9 @@ clip-path
|
|||
}
|
||||
|
||||
pub fn clone_stroke_dasharray(&self) -> longhands::stroke_dasharray::computed_value::T {
|
||||
use smallvec::SmallVec;
|
||||
use values::computed::LengthOrPercentage;
|
||||
|
||||
let mut vec = SmallVec::new();
|
||||
let mut vec = vec![];
|
||||
for gecko in self.gecko.mStrokeDasharray.iter() {
|
||||
match gecko.as_value() {
|
||||
CoordDataValue::Factor(number) => vec.push(Either::First(number)),
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
use std::fmt;
|
||||
#[allow(unused_imports)]
|
||||
use style_traits::HasViewportPercentage;
|
||||
use style_traits::ToCss;
|
||||
use style_traits::{Separator, ToCss};
|
||||
|
||||
pub mod single_value {
|
||||
#[allow(unused_imports)]
|
||||
|
@ -186,7 +186,7 @@
|
|||
% endif
|
||||
}
|
||||
for i in iter {
|
||||
dest.write_str(", ")?;
|
||||
dest.write_str(::style_traits::${separator}::separator())?;
|
||||
i.to_css(dest)?;
|
||||
}
|
||||
Ok(())
|
||||
|
@ -213,7 +213,7 @@
|
|||
% endif
|
||||
}
|
||||
for i in iter {
|
||||
dest.write_str(", ")?;
|
||||
dest.write_str(::style_traits::${separator}::separator())?;
|
||||
i.to_css(dest)?;
|
||||
}
|
||||
Ok(())
|
||||
|
|
|
@ -3340,11 +3340,11 @@ impl Animatable for AnimatedFilterList {
|
|||
}
|
||||
}
|
||||
|
||||
Ok(filters.into())
|
||||
Ok(AnimatedFilterList(filters))
|
||||
}
|
||||
|
||||
fn add(&self, other: &Self) -> Result<Self, ()> {
|
||||
Ok(self.0.iter().chain(other.0.iter()).cloned().collect::<Vec<_>>().into())
|
||||
Ok(AnimatedFilterList(self.0.iter().chain(other.0.iter()).cloned().collect()))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
|
|
@ -43,8 +43,10 @@ ${helpers.predefined_type("clip",
|
|||
|
||||
${helpers.predefined_type(
|
||||
"filter",
|
||||
"FilterList",
|
||||
"computed::FilterList::none()",
|
||||
"Filter",
|
||||
None,
|
||||
vector=True,
|
||||
separator="Space",
|
||||
animation_value_type="AnimatedFilterList",
|
||||
extra_prefixes="webkit",
|
||||
flags="CREATES_STACKING_CONTEXT FIXPOS_CB",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue