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::transform_style::T as TransformStyle;
use style::values::computed::{BorderStyle, Filter};
use style::values::generics::effects::Filter as GenericFilter;
use style::values::specified::border::BorderImageRepeatKeyword;
use style::values::RGBA;
use webrender_api as wr;
@ -40,19 +39,19 @@ impl ToLayout for Filter {
type Type = wr::FilterOp;
fn to_layout(&self) -> Self::Type {
match *self {
GenericFilter::Blur(radius) => wr::FilterOp::Blur(radius.px()),
GenericFilter::Brightness(amount) => wr::FilterOp::Brightness(amount.0),
GenericFilter::Contrast(amount) => wr::FilterOp::Contrast(amount.0),
GenericFilter::Grayscale(amount) => wr::FilterOp::Grayscale(amount.0),
GenericFilter::HueRotate(angle) => wr::FilterOp::HueRotate(angle.radians()),
GenericFilter::Invert(amount) => wr::FilterOp::Invert(amount.0),
GenericFilter::Opacity(amount) => wr::FilterOp::Opacity(amount.0.into(), amount.0),
GenericFilter::Saturate(amount) => wr::FilterOp::Saturate(amount.0),
GenericFilter::Sepia(amount) => wr::FilterOp::Sepia(amount.0),
Filter::Blur(radius) => wr::FilterOp::Blur(radius.px()),
Filter::Brightness(amount) => wr::FilterOp::Brightness(amount.0),
Filter::Contrast(amount) => wr::FilterOp::Contrast(amount.0),
Filter::Grayscale(amount) => wr::FilterOp::Grayscale(amount.0),
Filter::HueRotate(angle) => wr::FilterOp::HueRotate(angle.radians()),
Filter::Invert(amount) => wr::FilterOp::Invert(amount.0),
Filter::Opacity(amount) => wr::FilterOp::Opacity(amount.0.into(), amount.0),
Filter::Saturate(amount) => wr::FilterOp::Saturate(amount.0),
Filter::Sepia(amount) => wr::FilterOp::Sepia(amount.0),
// Statically check that DropShadow is impossible.
GenericFilter::DropShadow(ref shadow) => match *shadow {},
Filter::DropShadow(ref shadow) => match *shadow {},
// 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
* 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 app_units::Au;
use euclid::{Point2D, Size2D, Vector2D};
use style::properties::ComputedValues;
use style::values::computed::image::{EndingShape, LineDirection};
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::specified::position::{X, Y};
use webrender_api::{ExtendMode, Gradient, GradientBuilder, GradientStop, RadialGradient};
@ -92,11 +88,11 @@ fn convert_gradient_stops(
let mut stop_items = gradient_items
.iter()
.filter_map(|item| match *item {
GenericGradientItem::SimpleColorStop(color) => Some(ColorStop {
GradientItem::SimpleColorStop(color) => Some(ColorStop {
color,
position: None,
}),
GenericGradientItem::ComplexColorStop { color, position } => Some(ColorStop {
GradientItem::ComplexColorStop { color, position } => Some(ColorStop {
color,
position: Some(position),
}),
@ -301,17 +297,15 @@ pub fn radial(
center.vertical.to_used_value(size.height),
);
let radius = match shape {
GenericEndingShape::Circle(Circle::Radius(length)) => {
EndingShape::Circle(Circle::Radius(length)) => {
let length = Au::from(length);
Size2D::new(length, length)
},
GenericEndingShape::Circle(Circle::Extent(extent)) => {
circle_size_keyword(extent, &size, &center)
},
GenericEndingShape::Ellipse(Ellipse::Radii(x, y)) => {
EndingShape::Circle(Circle::Extent(extent)) => circle_size_keyword(extent, &size, &center),
EndingShape::Ellipse(Ellipse::Radii(x, y)) => {
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)
},
};