aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Chiou <boris.chiou@gmail.com>2018-08-23 23:00:16 +0000
committerEmilio Cobos Álvarez <emilio@crisal.io>2018-09-03 12:32:25 +0200
commit68ab6217bdcfae5355c321957aef6ecb766d0472 (patch)
treef8bc969301b884fb548df2b11ef9309b47b5fb0a
parente46daa09ea8a8fdfd9a39d51f748392321c962e2 (diff)
downloadservo-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.toml8
-rw-r--r--components/style/properties/gecko.mako.rs11
-rw-r--r--components/style/values/generics/basic_shape.rs1
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,