Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JS SVG getCTM and setCTM?

Tags:

javascript

svg

If I use getCTM() to get the current tranformation matrix, how do I use that object to set the matrix if I want to restore it at a later point (I know about save and restore but those refer to the canvas and not items)

I know I set the attribute:

var m = someitem.getCTM();
$(someitem).attr("transform", "matrix("+m.a+","+m.b+","+m.c+","+ m.d+","+m.e+","+m.f+")");

But that seems sort of a long way of doing it. I can't find a setCTM function of any such close function.

Developing for webkit if that makes a difference.

Thanks!

like image 837
Senica Gonzalez Avatar asked Apr 23 '12 13:04

Senica Gonzalez


2 Answers

function setCTM(someitem,m) {
  return someitem.transform.baseVal.initialize(
    someitem.ownerSVGElement.createSVGTransformFromMatrix(m));
}

If, instead of saving someItem.getCTM(), you save someitem.transform.baseVal.getitem(0), you can use:

function setTransform(someitem,t) {
  return someitem.transform.baseVal.initialize(t));
}
like image 50
Stuart P. Bentley Avatar answered Oct 20 '22 21:10

Stuart P. Bentley


var transform = ownerSVGElement.createSVGTransform()

transform.setMatrix(elem.getCTM())

someelement.transform.baseVal.initialize(transform)
like image 42
Rajkamal Subramanian Avatar answered Oct 20 '22 22:10

Rajkamal Subramanian