11

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!

Senica Gonzalez
  • 7,996
  • 16
  • 66
  • 108

2 Answers2

8
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));
}
Stuart P. Bentley
  • 10,195
  • 10
  • 55
  • 84
6
var transform = ownerSVGElement.createSVGTransform()

transform.setMatrix(elem.getCTM())

someelement.transform.baseVal.initialize(transform)
Rajkamal Subramanian
  • 6,884
  • 4
  • 52
  • 69