diff options
-rw-r--r-- | components/gfx/paint_context.rs | 4 | ||||
-rw-r--r-- | components/layout/display_list_builder.rs | 2 | ||||
-rw-r--r-- | components/layout/webrender_helpers.rs | 6 | ||||
-rw-r--r-- | components/style/properties/gecko.mako.rs | 42 | ||||
-rw-r--r-- | components/style/properties/longhand/inherited_box.mako.rs | 42 |
5 files changed, 57 insertions, 39 deletions
diff --git a/components/gfx/paint_context.rs b/components/gfx/paint_context.rs index e671a12344e..51a1bf2795f 100644 --- a/components/gfx/paint_context.rs +++ b/components/gfx/paint_context.rs @@ -222,8 +222,8 @@ impl<'a> PaintContext<'a> { // conforming implementation of `crisp-edges`, but it is not the best we could do. // Something like Scale2x would be ideal. let draw_surface_filter = match image_rendering { - image_rendering::T::Auto => Filter::Linear, - image_rendering::T::CrispEdges | image_rendering::T::Pixelated => Filter::Point, + image_rendering::T::auto => Filter::Linear, + image_rendering::T::crispedges | image_rendering::T::pixelated => Filter::Point, }; let draw_surface_options = DrawSurfaceOptions::new(draw_surface_filter, true); diff --git a/components/layout/display_list_builder.rs b/components/layout/display_list_builder.rs index c62518a9977..91b70ebed34 100644 --- a/components/layout/display_list_builder.rs +++ b/components/layout/display_list_builder.rs @@ -1331,7 +1331,7 @@ impl FragmentDisplayListBuilding for Fragment { }, stretch_size: stacking_relative_content_box.size, tile_spacing: Size2D::zero(), - image_rendering: image_rendering::T::Auto, + image_rendering: image_rendering::T::auto, }) } CanvasData::WebGL(context_id) => { diff --git a/components/layout/webrender_helpers.rs b/components/layout/webrender_helpers.rs index e18eeeb5fb9..9ec470e1b7f 100644 --- a/components/layout/webrender_helpers.rs +++ b/components/layout/webrender_helpers.rs @@ -218,9 +218,9 @@ trait ToImageRendering { impl ToImageRendering for image_rendering::T { fn to_image_rendering(&self) -> webrender_traits::ImageRendering { match *self { - image_rendering::T::CrispEdges => webrender_traits::ImageRendering::CrispEdges, - image_rendering::T::Auto => webrender_traits::ImageRendering::Auto, - image_rendering::T::Pixelated => webrender_traits::ImageRendering::Pixelated, + image_rendering::T::crispedges => webrender_traits::ImageRendering::CrispEdges, + image_rendering::T::auto => webrender_traits::ImageRendering::Auto, + image_rendering::T::pixelated => webrender_traits::ImageRendering::Pixelated, } } } diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 3d08c822c6a..114d4fd964d 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -213,14 +213,15 @@ def set_gecko_property(ffi_name, expr): return "self.gecko.%s = %s;" % (ffi_name, expr) %> -<%def name="impl_keyword_setter(ident, gecko_ffi_name, keyword)"> +<%def name="impl_keyword_setter(ident, gecko_ffi_name, keyword, cast_type='u8')"> #[allow(non_snake_case)] pub fn set_${ident}(&mut self, v: longhands::${ident}::computed_value::T) { use properties::longhands::${ident}::computed_value::T as Keyword; // FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts let result = match v { % for value in keyword.values_for('gecko'): - Keyword::${to_rust_ident(value)} => structs::${keyword.gecko_constant(value)} ${keyword.maybe_cast("u8")}, + Keyword::${to_rust_ident(value)} => + structs::${keyword.gecko_constant(value)} ${keyword.maybe_cast(cast_type)}, % endfor }; ${set_gecko_property(gecko_ffi_name, "result")} @@ -279,8 +280,8 @@ def set_gecko_property(ffi_name, expr): } </%def> -<%def name="impl_keyword(ident, gecko_ffi_name, keyword, need_clone)"> -<%call expr="impl_keyword_setter(ident, gecko_ffi_name, keyword)"></%call> +<%def name="impl_keyword(ident, gecko_ffi_name, keyword, need_clone, **kwargs)"> +<%call expr="impl_keyword_setter(ident, gecko_ffi_name, keyword, **kwargs)"></%call> <%call expr="impl_simple_copy(ident, gecko_ffi_name)"></%call> %if need_clone: <%call expr="impl_keyword_clone(ident, gecko_ffi_name, keyword)"></%call> @@ -791,23 +792,13 @@ fn static_assert() { Au(self.gecko.mSize) } - pub fn set_font_stretch(&mut self, v: longhands::font_stretch::computed_value::T) { - use computed_values::font_stretch::T; + <% stretch_keyword = Keyword("font-stretch", + "normal ultra-condensed extra-condensed condensed " + + "semi-condensed semi-expanded expanded " + + "extra-expanded ultra-expanded", + gecko_constant_prefix='NS_FONT_STRETCH') %> - self.gecko.mFont.stretch = match v { - T::normal => structs::NS_FONT_STRETCH_NORMAL as i16, - T::ultra_condensed => structs::NS_FONT_STRETCH_ULTRA_CONDENSED as i16, - T::extra_condensed => structs::NS_FONT_STRETCH_EXTRA_CONDENSED as i16, - T::condensed => structs::NS_FONT_STRETCH_CONDENSED as i16, - T::semi_condensed => structs::NS_FONT_STRETCH_SEMI_CONDENSED as i16, - T::semi_expanded => structs::NS_FONT_STRETCH_SEMI_EXPANDED as i16, - T::expanded => structs::NS_FONT_STRETCH_EXPANDED as i16, - T::extra_expanded => structs::NS_FONT_STRETCH_EXTRA_EXPANDED as i16, - T::ultra_expanded => structs::NS_FONT_STRETCH_ULTRA_EXPANDED as i16, - }; - } - - ${impl_simple_copy('font_stretch', 'mFont.stretch')} + ${impl_keyword('font_stretch', 'mFont.stretch', stretch_keyword, need_clone=False, cast_type='i16')} pub fn set_font_weight(&mut self, v: longhands::font_weight::computed_value::T) { self.gecko.mFont.weight = v as u16; @@ -1446,6 +1437,17 @@ fn static_assert() { </%self:impl_trait> +<%self:impl_trait style_struct_name="InheritedBox" + skip_longhands="image-rendering"> + + <% render_keyword = Keyword("image-rendering", + "auto optimizequality optimizespeed crispedges") %> + + ${impl_keyword('image_rendering', 'mImageRendering', render_keyword, need_clone=False)} + +</%self:impl_trait> + + <%self:impl_trait style_struct_name="InheritedText" skip_longhands="text-align text-shadow line-height letter-spacing word-spacing"> diff --git a/components/style/properties/longhand/inherited_box.mako.rs b/components/style/properties/longhand/inherited_box.mako.rs index 26abe0bb5d8..4a5368ddbc6 100644 --- a/components/style/properties/longhand/inherited_box.mako.rs +++ b/components/style/properties/longhand/inherited_box.mako.rs @@ -40,25 +40,36 @@ ${helpers.single_keyword("color-adjust", "economy exact", products="gecko", animatable=False)} -<%helpers:longhand name="image-rendering" products="servo" animatable="False"> +<%helpers:longhand name="image-rendering" animatable="False"> pub mod computed_value { use cssparser::ToCss; use std::fmt; + #[allow(non_camel_case_types)] #[derive(Copy, Clone, Debug, PartialEq)] #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))] pub enum T { - Auto, - CrispEdges, - Pixelated, + auto, + crispedges, + % if product == "gecko": + optimizequality, + optimizespeed, + % else: + pixelated, // firefox doesn't support it (https://bugzilla.mozilla.org/show_bug.cgi?id=856337) + % endif } impl ToCss for T { fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { match *self { - T::Auto => dest.write_str("auto"), - T::CrispEdges => dest.write_str("crisp-edges"), - T::Pixelated => dest.write_str("pixelated"), + T::auto => dest.write_str("auto"), + T::crispedges => dest.write_str("crisp-edges"), + % if product == "gecko": + T::optimizequality => dest.write_str("optimizeQuality"), + T::optimizespeed => dest.write_str("optimizeSpeed"), + % else: + T::pixelated => dest.write_str("pixelated"), + % endif } } } @@ -71,7 +82,7 @@ ${helpers.single_keyword("color-adjust", #[inline] pub fn get_initial_value() -> computed_value::T { - computed_value::T::Auto + computed_value::T::auto } pub fn parse(_: &ParserContext, input: &mut Parser) -> Result<SpecifiedValue,()> { @@ -79,11 +90,16 @@ ${helpers.single_keyword("color-adjust", // `auto`. match_ignore_ascii_case! { try!(input.expect_ident()), - "auto" => Ok(computed_value::T::Auto), - "optimizespeed" => Ok(computed_value::T::Auto), - "optimizequality" => Ok(computed_value::T::Auto), - "crisp-edges" => Ok(computed_value::T::CrispEdges), - "pixelated" => Ok(computed_value::T::Pixelated), + "auto" => Ok(computed_value::T::auto), + "crisp-edges" => Ok(computed_value::T::crispedges), + % if product == "gecko": + "optimizequality" => Ok(computed_value::T::optimizequality), + "optimizespeed" => Ok(computed_value::T::optimizespeed), + % else: + "optimizequality" => Ok(computed_value::T::auto), + "optimizespeed" => Ok(computed_value::T::auto), + "pixelated" => Ok(computed_value::T::pixelated), + % endif _ => Err(()) } } |