aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/canvas_state.rs
diff options
context:
space:
mode:
authorpylbrecht <palbrecht@mailbox.org>2020-02-11 22:36:50 +0100
committerpylbrecht <palbrecht@mailbox.org>2020-02-12 08:49:18 +0100
commit588c09b5807bd9534aa63cbb11cff5c0227efdab (patch)
treeb9a65317579b79904122a68e4ee9bf81496feff7 /components/script/canvas_state.rs
parent6b2079e5b3272245bdd21e2664e2ef6cd83f7aab (diff)
downloadservo-588c09b5807bd9534aa63cbb11cff5c0227efdab.tar.gz
servo-588c09b5807bd9534aa63cbb11cff5c0227efdab.zip
Implement CanvasRenderingContext2D.getTransform()
Diffstat (limited to 'components/script/canvas_state.rs')
-rw-r--r--components/script/canvas_state.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/components/script/canvas_state.rs b/components/script/canvas_state.rs
index d596ff826fa..41c92fc0799 100644
--- a/components/script/canvas_state.rs
+++ b/components/script/canvas_state.rs
@@ -16,6 +16,7 @@ use crate::dom::bindings::root::{Dom, DomRoot};
use crate::dom::bindings::str::DOMString;
use crate::dom::canvasgradient::{CanvasGradient, CanvasGradientStyle, ToFillOrStrokeStyle};
use crate::dom::canvaspattern::CanvasPattern;
+use crate::dom::dommatrix::DOMMatrix;
use crate::dom::element::cors_setting_for_element;
use crate::dom::element::Element;
use crate::dom::globalscope::GlobalScope;
@@ -1415,6 +1416,15 @@ impl CanvasState {
self.update_transform()
}
+ // https://html.spec.whatwg.org/multipage/#dom-context-2d-gettransform
+ pub fn get_transform(&self, global: &GlobalScope) -> DomRoot<DOMMatrix> {
+ let (sender, receiver) = ipc::channel::<Transform2D<f32>>().unwrap();
+ self.send_canvas_2d_msg(Canvas2dMsg::GetTransform(sender));
+ let transform = receiver.recv().unwrap();
+
+ DOMMatrix::new(global, true, transform.cast::<f64>().to_3d())
+ }
+
// https://html.spec.whatwg.org/multipage/#dom-context-2d-settransform
pub fn set_transform(&self, a: f64, b: f64, c: f64, d: f64, e: f64, f: f64) {
if !(a.is_finite() &&