aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-10-07 16:30:29 -0500
committerGitHub <noreply@github.com>2016-10-07 16:30:29 -0500
commita25e0670b39df0efcc4c6642775c0de414461a3d (patch)
tree7644fb76f93e48af5df14a5e3346a2945329d20c
parentd01a8662154924a551c8d7a2f12b22bcaf998a7c (diff)
parente7a9e46c2737d078a035f850eb5031bfe1e1bf51 (diff)
downloadservo-a25e0670b39df0efcc4c6642775c0de414461a3d.tar.gz
servo-a25e0670b39df0efcc4c6642775c0de414461a3d.zip
Auto merge of #13636 - Wafflespeanut:properties, r=Manishearth
Add 'image-rendering' support and some cleanup <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build-geckolib` does not report any errors - [x] `./mach test-tidy` does not report any errors <!-- Either: --> - [x] These changes have been tested manually ![screenshot](https://cloud.githubusercontent.com/assets/6691262/19195866/eb46ffce-8cd0-11e6-8642-a9525da8bf38.png) r? @Manishearth <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13636) <!-- Reviewable:end -->
-rw-r--r--components/gfx/paint_context.rs4
-rw-r--r--components/layout/display_list_builder.rs2
-rw-r--r--components/layout/webrender_helpers.rs6
-rw-r--r--components/style/properties/gecko.mako.rs42
-rw-r--r--components/style/properties/longhand/inherited_box.mako.rs42
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(())
}
}