Auto merge of #9080 - jdm:canvaspattern, r=Ms2ger

Enable Pattern variant of CanvasFillOrStrokeStyle

This is a rebase of #8104, with a test added that exposes pre-existing problems in the canvas code for dealing with patterns.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9080)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2015-12-30 13:56:43 +05:30
commit 80135a70ce
4 changed files with 47 additions and 1 deletions

View file

@ -50,10 +50,11 @@ use util::vec::byte_swap;
#[must_root]
#[derive(JSTraceable, Clone, HeapSizeOf)]
#[allow(dead_code)]
enum CanvasFillOrStrokeStyle {
Color(RGBA),
Gradient(JS<CanvasGradient>),
// Pattern(JS<CanvasPattern>), // https://github.com/servo/servo/pull/6157
Pattern(JS<CanvasPattern>),
}
// https://html.spec.whatwg.org/multipage/#canvasrenderingcontext2d
@ -922,6 +923,9 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
CanvasFillOrStrokeStyle::Gradient(ref gradient) => {
StringOrCanvasGradientOrCanvasPattern::eCanvasGradient(Root::from_ref(&*gradient))
},
CanvasFillOrStrokeStyle::Pattern(ref pattern) => {
StringOrCanvasGradientOrCanvasPattern::eCanvasPattern(Root::from_ref(&*pattern))
}
}
}
@ -966,6 +970,9 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
CanvasFillOrStrokeStyle::Gradient(ref gradient) => {
StringOrCanvasGradientOrCanvasPattern::eCanvasGradient(Root::from_ref(&*gradient))
},
CanvasFillOrStrokeStyle::Pattern(ref pattern) => {
StringOrCanvasGradientOrCanvasPattern::eCanvasPattern(Root::from_ref(&*pattern))
}
}
}