Use type alias enums in layout code

closes #22862
This commit is contained in:
Philipp Klein 2019-05-26 22:51:07 +02:00
parent 5b79711ece
commit 0ed8e6f98e
2 changed files with 17 additions and 24 deletions

View file

@ -8,7 +8,6 @@ use style::computed_values::image_rendering::T as ImageRendering;
use style::computed_values::mix_blend_mode::T as MixBlendMode; use style::computed_values::mix_blend_mode::T as MixBlendMode;
use style::computed_values::transform_style::T as TransformStyle; use style::computed_values::transform_style::T as TransformStyle;
use style::values::computed::{BorderStyle, Filter}; use style::values::computed::{BorderStyle, Filter};
use style::values::generics::effects::Filter as GenericFilter;
use style::values::specified::border::BorderImageRepeatKeyword; use style::values::specified::border::BorderImageRepeatKeyword;
use style::values::RGBA; use style::values::RGBA;
use webrender_api as wr; use webrender_api as wr;
@ -40,19 +39,19 @@ impl ToLayout for Filter {
type Type = wr::FilterOp; type Type = wr::FilterOp;
fn to_layout(&self) -> Self::Type { fn to_layout(&self) -> Self::Type {
match *self { match *self {
GenericFilter::Blur(radius) => wr::FilterOp::Blur(radius.px()), Filter::Blur(radius) => wr::FilterOp::Blur(radius.px()),
GenericFilter::Brightness(amount) => wr::FilterOp::Brightness(amount.0), Filter::Brightness(amount) => wr::FilterOp::Brightness(amount.0),
GenericFilter::Contrast(amount) => wr::FilterOp::Contrast(amount.0), Filter::Contrast(amount) => wr::FilterOp::Contrast(amount.0),
GenericFilter::Grayscale(amount) => wr::FilterOp::Grayscale(amount.0), Filter::Grayscale(amount) => wr::FilterOp::Grayscale(amount.0),
GenericFilter::HueRotate(angle) => wr::FilterOp::HueRotate(angle.radians()), Filter::HueRotate(angle) => wr::FilterOp::HueRotate(angle.radians()),
GenericFilter::Invert(amount) => wr::FilterOp::Invert(amount.0), Filter::Invert(amount) => wr::FilterOp::Invert(amount.0),
GenericFilter::Opacity(amount) => wr::FilterOp::Opacity(amount.0.into(), amount.0), Filter::Opacity(amount) => wr::FilterOp::Opacity(amount.0.into(), amount.0),
GenericFilter::Saturate(amount) => wr::FilterOp::Saturate(amount.0), Filter::Saturate(amount) => wr::FilterOp::Saturate(amount.0),
GenericFilter::Sepia(amount) => wr::FilterOp::Sepia(amount.0), Filter::Sepia(amount) => wr::FilterOp::Sepia(amount.0),
// Statically check that DropShadow is impossible. // Statically check that DropShadow is impossible.
GenericFilter::DropShadow(ref shadow) => match *shadow {}, Filter::DropShadow(ref shadow) => match *shadow {},
// Statically check that Url is impossible. // Statically check that Url is impossible.
GenericFilter::Url(ref url) => match *url {}, Filter::Url(ref url) => match *url {},
} }
} }
} }

View file

@ -2,16 +2,12 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// FIXME(rust-lang/rust#26264): Remove GenericEndingShape and GenericGradientItem.
use crate::display_list::ToLayout; use crate::display_list::ToLayout;
use app_units::Au; use app_units::Au;
use euclid::{Point2D, Size2D, Vector2D}; use euclid::{Point2D, Size2D, Vector2D};
use style::properties::ComputedValues; use style::properties::ComputedValues;
use style::values::computed::image::{EndingShape, LineDirection}; use style::values::computed::image::{EndingShape, LineDirection};
use style::values::computed::{Angle, GradientItem, LengthPercentage, Percentage, Position}; use style::values::computed::{Angle, GradientItem, LengthPercentage, Percentage, Position};
use style::values::generics::image::EndingShape as GenericEndingShape;
use style::values::generics::image::GradientItem as GenericGradientItem;
use style::values::generics::image::{Circle, ColorStop, Ellipse, ShapeExtent}; use style::values::generics::image::{Circle, ColorStop, Ellipse, ShapeExtent};
use style::values::specified::position::{X, Y}; use style::values::specified::position::{X, Y};
use webrender_api::{ExtendMode, Gradient, GradientBuilder, GradientStop, RadialGradient}; use webrender_api::{ExtendMode, Gradient, GradientBuilder, GradientStop, RadialGradient};
@ -92,11 +88,11 @@ fn convert_gradient_stops(
let mut stop_items = gradient_items let mut stop_items = gradient_items
.iter() .iter()
.filter_map(|item| match *item { .filter_map(|item| match *item {
GenericGradientItem::SimpleColorStop(color) => Some(ColorStop { GradientItem::SimpleColorStop(color) => Some(ColorStop {
color, color,
position: None, position: None,
}), }),
GenericGradientItem::ComplexColorStop { color, position } => Some(ColorStop { GradientItem::ComplexColorStop { color, position } => Some(ColorStop {
color, color,
position: Some(position), position: Some(position),
}), }),
@ -301,17 +297,15 @@ pub fn radial(
center.vertical.to_used_value(size.height), center.vertical.to_used_value(size.height),
); );
let radius = match shape { let radius = match shape {
GenericEndingShape::Circle(Circle::Radius(length)) => { EndingShape::Circle(Circle::Radius(length)) => {
let length = Au::from(length); let length = Au::from(length);
Size2D::new(length, length) Size2D::new(length, length)
}, },
GenericEndingShape::Circle(Circle::Extent(extent)) => { EndingShape::Circle(Circle::Extent(extent)) => circle_size_keyword(extent, &size, &center),
circle_size_keyword(extent, &size, &center) EndingShape::Ellipse(Ellipse::Radii(x, y)) => {
},
GenericEndingShape::Ellipse(Ellipse::Radii(x, y)) => {
Size2D::new(x.to_used_value(size.width), y.to_used_value(size.height)) Size2D::new(x.to_used_value(size.width), y.to_used_value(size.height))
}, },
GenericEndingShape::Ellipse(Ellipse::Extent(extent)) => { EndingShape::Ellipse(Ellipse::Extent(extent)) => {
ellipse_size_keyword(extent, &size, &center) ellipse_size_keyword(extent, &size, &center)
}, },
}; };