aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlcanvaselement.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-03-23 16:26:02 +0100
committerAnthony Ramine <n.oxyde@gmail.com>2018-03-23 17:32:42 +0100
commita77d35b60c5e9b01f868daff510fbb7e44ca1bbc (patch)
treeac9c0c351334236289aa44e23cefb1467a8896b3 /components/script/dom/htmlcanvaselement.rs
parent4a6453ac9ad956502ec6d39093b83820d94a409e (diff)
downloadservo-a77d35b60c5e9b01f868daff510fbb7e44ca1bbc.tar.gz
servo-a77d35b60c5e9b01f868daff510fbb7e44ca1bbc.zip
Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes #19147)
Diffstat (limited to 'components/script/dom/htmlcanvaselement.rs')
-rw-r--r--components/script/dom/htmlcanvaselement.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs
index c866664cbcf..b1bea124a7b 100644
--- a/components/script/dom/htmlcanvaselement.rs
+++ b/components/script/dom/htmlcanvaselement.rs
@@ -345,11 +345,22 @@ impl HTMLCanvasElementMethods for HTMLCanvasElement {
Finite::wrap(self.Height() as f64))?;
image_data.get_data_array()
}
+ Some(CanvasContext::WebGL(ref context)) => {
+ match context.get_image_data(self.Width(), self.Height()) {
+ Some(data) => data,
+ None => return Ok("data:,".into()),
+ }
+ }
+ Some(CanvasContext::WebGL2(ref context)) => {
+ match context.base_context().get_image_data(self.Width(), self.Height()) {
+ Some(data) => data,
+ None => return Ok("data:,".into()),
+ }
+ }
None => {
// Each pixel is fully-transparent black.
vec![0; (self.Width() * self.Height() * 4) as usize]
}
- _ => return Err(Error::NotSupported) // WebGL
};
// Only handle image/png for now.