| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-draw-Matrix'>/**
 
- </span> * @private
 
-  */
 
- Ext.define('Ext.draw.Matrix', {
 
-     /* Begin Definitions */
 
-     requires: ['Ext.draw.Draw'],
 
-     /* End Definitions */
 
-     constructor: function(a, b, c, d, e, f) {
 
-         if (a != null) {
 
-             this.matrix = [[a, c, e], [b, d, f], [0, 0, 1]];
 
-         }
 
-         else {
 
-             this.matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];
 
-         }
 
-     },
 
-     add: function(a, b, c, d, e, f) {
 
-         var me = this,
 
-             out = [[], [], []],
 
-             matrix = [[a, c, e], [b, d, f], [0, 0, 1]],
 
-             x,
 
-             y,
 
-             z,
 
-             res;
 
-         for (x = 0; x < 3; x++) {
 
-             for (y = 0; y < 3; y++) {
 
-                 res = 0;
 
-                 for (z = 0; z < 3; z++) {
 
-                     res += me.matrix[x][z] * matrix[z][y];
 
-                 }
 
-                 out[x][y] = res;
 
-             }
 
-         }
 
-         me.matrix = out;
 
-     },
 
-     prepend: function(a, b, c, d, e, f) {
 
-         var me = this,
 
-             out = [[], [], []],
 
-             matrix = [[a, c, e], [b, d, f], [0, 0, 1]],
 
-             x,
 
-             y,
 
-             z,
 
-             res;
 
-         for (x = 0; x < 3; x++) {
 
-             for (y = 0; y < 3; y++) {
 
-                 res = 0;
 
-                 for (z = 0; z < 3; z++) {
 
-                     res += matrix[x][z] * me.matrix[z][y];
 
-                 }
 
-                 out[x][y] = res;
 
-             }
 
-         }
 
-         me.matrix = out;
 
-     },
 
-     invert: function() {
 
-         var matrix = this.matrix,
 
-             a = matrix[0][0],
 
-             b = matrix[1][0],
 
-             c = matrix[0][1],
 
-             d = matrix[1][1],
 
-             e = matrix[0][2],
 
-             f = matrix[1][2],
 
-             x = a * d - b * c;
 
-         return new Ext.draw.Matrix(d / x, -b / x, -c / x, a / x, (c * f - d * e) / x, (b * e - a * f) / x);
 
-     },
 
-     clone: function() {
 
-         var matrix = this.matrix,
 
-             a = matrix[0][0],
 
-             b = matrix[1][0],
 
-             c = matrix[0][1],
 
-             d = matrix[1][1],
 
-             e = matrix[0][2],
 
-             f = matrix[1][2];
 
-         return new Ext.draw.Matrix(a, b, c, d, e, f);
 
-     },
 
-     translate: function(x, y) {
 
-         this.prepend(1, 0, 0, 1, x, y);
 
-     },
 
-     scale: function(x, y, cx, cy) {
 
-         var me = this;
 
-         if (y == null) {
 
-             y = x;
 
-         }
 
-         me.add(x, 0, 0, y, cx * (1 - x), cy * (1 - y));
 
-     },
 
-     rotate: function(a, x, y) {
 
-         a = Ext.draw.Draw.rad(a);
 
-         var me = this,
 
-             cos = +Math.cos(a).toFixed(9),
 
-             sin = +Math.sin(a).toFixed(9);
 
-         me.add(cos, sin, -sin, cos, x - cos * x + sin * y, -(sin * x) + y - cos * y);
 
-     },
 
-     x: function(x, y) {
 
-         var matrix = this.matrix;
 
-         return x * matrix[0][0] + y * matrix[0][1] + matrix[0][2];
 
-     },
 
-     y: function(x, y) {
 
-         var matrix = this.matrix;
 
-         return x * matrix[1][0] + y * matrix[1][1] + matrix[1][2];
 
-     },
 
-     get: function(i, j) {
 
-         return + this.matrix[i][j].toFixed(4);
 
-     },
 
-     toString: function() {
 
-         var me = this;
 
-         return [me.get(0, 0), me.get(0, 1), me.get(1, 0), me.get(1, 1), 0, 0].join();
 
-     },
 
-     toSvg: function() {
 
-         var me = this;
 
-         return "matrix(" + [me.get(0, 0), me.get(1, 0), me.get(0, 1), me.get(1, 1), me.get(0, 2), me.get(1, 2)].join() + ")";
 
-     },
 
-     toFilter: function(dx, dy) {
 
-         var me = this;
 
-         dx = dx || 0;
 
-         dy = dy || 0;
 
-         return "progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', filterType='bilinear', M11=" + me.get(0, 0) +
 
-             ", M12=" + me.get(0, 1) + ", M21=" + me.get(1, 0) + ", M22=" + me.get(1, 1) +
 
-             ", Dx=" + (me.get(0, 2) + dx) + ", Dy=" + (me.get(1, 2) + dy) + ")";
 
-     },
 
-     offset: function() {
 
-         var matrix = this.matrix;
 
-         return [(matrix[0][2] || 0).toFixed(4), (matrix[1][2] || 0).toFixed(4)];
 
-     },
 
-     // Split matrix into Translate Scale, Shear, and Rotate
 
-     split: function () {
 
-         function norm(a) {
 
-             return a[0] * a[0] + a[1] * a[1];
 
-         }
 
-         function normalize(a) {
 
-             var mag = Math.sqrt(norm(a));
 
-             a[0] /= mag;
 
-             a[1] /= mag;
 
-         }
 
-         var matrix = this.matrix,
 
-             out = {
 
-                 translateX: matrix[0][2],
 
-                 translateY: matrix[1][2]
 
-             },
 
-             row;
 
-         // scale and shear
 
-         row = [[matrix[0][0], matrix[0][1]], [matrix[1][1], matrix[1][1]]];
 
-         out.scaleX = Math.sqrt(norm(row[0]));
 
-         normalize(row[0]);
 
-         out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1];
 
-         row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear];
 
-         out.scaleY = Math.sqrt(norm(row[1]));
 
-         normalize(row[1]);
 
-         out.shear /= out.scaleY;
 
-         // rotation
 
-         out.rotate = Math.asin(-row[0][1]);
 
-         out.isSimple = !+out.shear.toFixed(9) && (out.scaleX.toFixed(9) == out.scaleY.toFixed(9) || !out.rotate);
 
-         return out;
 
-     }
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |