( transform )
| 273 | |
| 274 | // turns a transform string into its "matrix(A,B,C,D,X,Y)" form (as an array, though) |
| 275 | function matrix( transform ) { |
| 276 | transform = transform.split(")"); |
| 277 | var |
| 278 | trim = $.trim |
| 279 | , i = -1 |
| 280 | // last element of the array is an empty string, get rid of it |
| 281 | , l = transform.length -1 |
| 282 | , split, prop, val |
| 283 | , prev = supportFloat32Array ? new Float32Array(6) : [] |
| 284 | , curr = supportFloat32Array ? new Float32Array(6) : [] |
| 285 | , rslt = supportFloat32Array ? new Float32Array(6) : [1,0,0,1,0,0] |
| 286 | ; |
| 287 | |
| 288 | prev[0] = prev[3] = rslt[0] = rslt[3] = 1; |
| 289 | prev[1] = prev[2] = prev[4] = prev[5] = 0; |
| 290 | |
| 291 | // Loop through the transform properties, parse and multiply them |
| 292 | while ( ++i < l ) { |
| 293 | split = transform[i].split("("); |
| 294 | prop = trim(split[0]); |
| 295 | val = split[1]; |
| 296 | curr[0] = curr[3] = 1; |
| 297 | curr[1] = curr[2] = curr[4] = curr[5] = 0; |
| 298 | |
| 299 | switch (prop) { |
| 300 | case _translate+"X": |
| 301 | curr[4] = parseInt(val, 10); |
| 302 | break; |
| 303 | |
| 304 | case _translate+"Y": |
| 305 | curr[5] = parseInt(val, 10); |
| 306 | break; |
| 307 | |
| 308 | case _translate: |
| 309 | val = val.split(","); |
| 310 | curr[4] = parseInt(val[0], 10); |
| 311 | curr[5] = parseInt(val[1] || 0, 10); |
| 312 | break; |
| 313 | |
| 314 | case _rotate: |
| 315 | val = toRadian(val); |
| 316 | curr[0] = Math.cos(val); |
| 317 | curr[1] = Math.sin(val); |
| 318 | curr[2] = -Math.sin(val); |
| 319 | curr[3] = Math.cos(val); |
| 320 | break; |
| 321 | |
| 322 | case _scale+"X": |
| 323 | curr[0] = +val; |
| 324 | break; |
| 325 | |
| 326 | case _scale+"Y": |
| 327 | curr[3] = val; |
| 328 | break; |
| 329 | |
| 330 | case _scale: |
| 331 | val = val.split(","); |
| 332 | curr[0] = val[0]; |
no test coverage detected
searching dependent graphs…