]> source.dussan.org Git - svg.js.git/commitdiff
get rid of that unnecessary bbox call on every frame
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Thu, 20 Sep 2018 12:14:40 +0000 (14:14 +0200)
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Thu, 20 Sep 2018 12:14:40 +0000 (14:14 +0200)
src/helpers.js
src/matrix.js
src/transform.js

index 9982b3678e395437ee61ae16bfd9af183dcf7532..4b55897c5d32538913719b85aa34bb50c9f0c238 100644 (file)
@@ -204,6 +204,17 @@ function closeEnough (a, b, threshold) {
   return Math.abs(b - a) < (threshold || 1e-6)
 }
 
+function isMatrixLike (o) {
+  return (
+    o.a != null ||
+    o.b != null ||
+    o.c != null ||
+    o.d != null ||
+    o.e != null ||
+    o.f != null
+  )
+}
+
 // TODO: Refactor this to a static function of matrix.js
 function formatTransforms (o) {
   // Get all of the parameters required to form the matrix
index 2a9f2a90b978f6c7d9351c73fbe0e2a8433a12d7..e0bc08ae252f8c9ec2b70077fee1ecd53db35b4d 100644 (file)
@@ -9,10 +9,7 @@ SVG.Matrix = SVG.invent({
     source = source instanceof SVG.Element ? source.matrixify()
       : typeof source === 'string' ? arrayToMatrix(source.split(SVG.regex.delimiter).map(parseFloat))
       : Array.isArray(source) ? arrayToMatrix(source)
-      : (typeof source === 'object' && (
-          source.a != null || source.b != null || source.c != null ||
-          source.d != null || source.e != null || source.f != null
-        )) ? source
+      : (typeof source === 'object' && isMatrixLike(source)) ? source
       : (typeof source === 'object') ? new SVG.Matrix().transform(source)
       : arguments.length === 6 ? arrayToMatrix([].slice.call(arguments))
       : base
index 35eb53e115f4b69da6531938f35c9f76fbe4da0b..6ea5269ce5010e05cdd203fcb06bc5b4ab7cdd88 100644 (file)
@@ -57,8 +57,10 @@ SVG.extend(SVG.Element, {
       return decomposed[o] || decomposed
     }
 
-    // Set the origin according to the defined transform
-    o = {...o, origin: getOrigin(o, this)}
+    if (!isMatrixLike(o)) {
+      // Set the origin according to the defined transform
+      o = {...o, origin: getOrigin(o, this)}
+    }
 
     // The user can pass a boolean, an SVG.Element or an SVG.Matrix or nothing
     var cleanRelative = relative === true ? this : (relative || false)