diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2017-08-07 11:05:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-07 11:05:17 -0500 |
commit | 016ea11cbaf7586db144be122581c5b110649aee (patch) | |
tree | 8d8f687fd8d2f2071b3a59d932c2fef8f74ebf06 /components/layout/webrender_helpers.rs | |
parent | f8abce8b72bf3fb09d39d6c7d708a79d1b89c9db (diff) | |
parent | 8651acd94cd068d5c2f340ab447926550a3238d0 (diff) | |
download | servo-016ea11cbaf7586db144be122581c5b110649aee.tar.gz servo-016ea11cbaf7586db144be122581c5b110649aee.zip |
Auto merge of #17783 - BorisChiou:stylo/animation/restrictions, r=nox
stylo: Bug 1374233 - Clamp interpolated values for properties which need to be restricted
Some properties only accept non-negative values, or values greater than or equal to one. It is possible to produce an negative interpolated values while using negative timing functions, so we have to apply a restriction to these values to avoid getting invalid values.
For example, line-height must be non-negative, but the output progress of some timing functions (e,g. cubic-bezier(0.25, -2, 0.75, 1)) may be a negative value, so the interpolated result of line-height is also negative.
---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix Bug 1374233.
- [X] These changes do not require tests because we have tests in Gecko side already.
<!-- 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/17783)
<!-- Reviewable:end -->
Diffstat (limited to 'components/layout/webrender_helpers.rs')
-rw-r--r-- | components/layout/webrender_helpers.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/components/layout/webrender_helpers.rs b/components/layout/webrender_helpers.rs index 13bde487675..6b8b334d52d 100644 --- a/components/layout/webrender_helpers.rs +++ b/components/layout/webrender_helpers.rs @@ -190,15 +190,15 @@ impl ToFilterOps for Vec<Filter> { let mut result = Vec::with_capacity(self.len()); for filter in self.iter() { match *filter { - GenericFilter::Blur(radius) => result.push(webrender_api::FilterOp::Blur(radius.to_f32_px())), - GenericFilter::Brightness(amount) => result.push(webrender_api::FilterOp::Brightness(amount)), - GenericFilter::Contrast(amount) => result.push(webrender_api::FilterOp::Contrast(amount)), - GenericFilter::Grayscale(amount) => result.push(webrender_api::FilterOp::Grayscale(amount)), + GenericFilter::Blur(radius) => result.push(webrender_api::FilterOp::Blur(radius.0.to_f32_px())), + GenericFilter::Brightness(amount) => result.push(webrender_api::FilterOp::Brightness(amount.0)), + GenericFilter::Contrast(amount) => result.push(webrender_api::FilterOp::Contrast(amount.0)), + GenericFilter::Grayscale(amount) => result.push(webrender_api::FilterOp::Grayscale(amount.0)), GenericFilter::HueRotate(angle) => result.push(webrender_api::FilterOp::HueRotate(angle.radians())), - GenericFilter::Invert(amount) => result.push(webrender_api::FilterOp::Invert(amount)), - GenericFilter::Opacity(amount) => result.push(webrender_api::FilterOp::Opacity(amount.into())), - GenericFilter::Saturate(amount) => result.push(webrender_api::FilterOp::Saturate(amount)), - GenericFilter::Sepia(amount) => result.push(webrender_api::FilterOp::Sepia(amount)), + GenericFilter::Invert(amount) => result.push(webrender_api::FilterOp::Invert(amount.0)), + GenericFilter::Opacity(amount) => result.push(webrender_api::FilterOp::Opacity(amount.0.into())), + GenericFilter::Saturate(amount) => result.push(webrender_api::FilterOp::Saturate(amount.0)), + GenericFilter::Sepia(amount) => result.push(webrender_api::FilterOp::Sepia(amount.0)), GenericFilter::DropShadow(ref shadow) => match *shadow {}, } } |