diff options
author | Boris Chiou <boris.chiou@gmail.com> | 2018-08-23 23:00:16 +0000 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2018-09-03 12:32:25 +0200 |
commit | 68ab6217bdcfae5355c321957aef6ecb766d0472 (patch) | |
tree | f8bc969301b884fb548df2b11ef9309b47b5fb0a | |
parent | e46daa09ea8a8fdfd9a39d51f748392321c962e2 (diff) | |
download | servo-68ab6217bdcfae5355c321957aef6ecb766d0472.tar.gz servo-68ab6217bdcfae5355c321957aef6ecb766d0472.zip |
style: Use cbindgen for basic_shape::FillRule.
Just a minor fix to use cbindgen to avoid the conversion between
basic_shape::FillRule and mozilla::StyleFillRule.
Differential Revision: https://phabricator.services.mozilla.com/D4171
-rw-r--r-- | components/style/cbindgen.toml | 8 | ||||
-rw-r--r-- | components/style/properties/gecko.mako.rs | 11 | ||||
-rw-r--r-- | components/style/values/generics/basic_shape.rs | 1 |
3 files changed, 12 insertions, 8 deletions
diff --git a/components/style/cbindgen.toml b/components/style/cbindgen.toml index c0eeee9b968..46162e43db5 100644 --- a/components/style/cbindgen.toml +++ b/components/style/cbindgen.toml @@ -23,5 +23,11 @@ derive_helper_methods = true [export] prefix = "Style" -include = ["StyleDisplay", "StyleAppearance", "StyleDisplayMode", "StylePathCommand"] +include = [ + "StyleAppearance", + "StyleDisplay", + "StyleDisplayMode", + "StyleFillRule", + "StylePathCommand" +] item_types = ["enums", "structs", "typedefs"] diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 596dc29fb19..76d61838708 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -4986,10 +4986,10 @@ fn static_assert() { pub fn set_${ident}(&mut self, v: longhands::${ident}::computed_value::T) { use gecko_bindings::bindings::{Gecko_NewBasicShape, Gecko_DestroyShapeSource}; use gecko_bindings::structs::{StyleBasicShape, StyleBasicShapeType, StyleShapeSourceType}; - use gecko_bindings::structs::{StyleFillRule, StyleGeometryBox, StyleShapeSource}; + use gecko_bindings::structs::{StyleGeometryBox, StyleShapeSource}; use gecko::conversions::basic_shape::set_corners_from_radius; use gecko::values::GeckoStyleCoordConvertible; - use values::generics::basic_shape::{BasicShape, FillRule, ShapeSource}; + use values::generics::basic_shape::{BasicShape, ShapeSource}; let ref mut ${ident} = self.gecko.${gecko_ffi_name}; @@ -5083,11 +5083,8 @@ fn static_assert() { coord.0.to_gecko_style_coord(&mut shape.mCoordinates[2 * i]); coord.1.to_gecko_style_coord(&mut shape.mCoordinates[2 * i + 1]); } - shape.mFillRule = if poly.fill == FillRule::Evenodd { - StyleFillRule::Evenodd - } else { - StyleFillRule::Nonzero - }; + // unsafe: cbindgen ensures the representation is the same. + shape.mFillRule = unsafe { transmute(poly.fill) }; } } diff --git a/components/style/values/generics/basic_shape.rs b/components/style/values/generics/basic_shape.rs index 274673b9c61..ee7455e777d 100644 --- a/components/style/values/generics/basic_shape.rs +++ b/components/style/values/generics/basic_shape.rs @@ -138,6 +138,7 @@ pub struct PolygonCoord<LengthOrPercentage>(pub LengthOrPercentage, pub LengthOr #[cfg_attr(feature = "servo", derive(Deserialize, Serialize))] #[derive(Clone, Copy, Debug, Eq, MallocSizeOf, Parse, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss)] +#[repr(u8)] pub enum FillRule { Nonzero, Evenodd, |