1 Clazz.declarePackage ("java.awt.geom");
\r
2 Clazz.load (null, "java.awt.geom.AffineTransform", ["java.lang.Double", "$.InternalError", "JU.AU", "java.awt.geom.NoninvertibleTransformException", "$.Path2D", "$.Point2D", "java.awt.geom.Point2D.Double"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
12 Clazz.instantialize (this, arguments);
\r
13 }, java.awt.geom, "AffineTransform", null, [Cloneable, java.io.Serializable]);
\r
14 Clazz.makeConstructor (c$,
\r
15 function (m00, m10, m01, m11, m02, m12, state) {
\r
17 switch (arguments.length) { case 0: this.m00 = this.m11 = 1.0;
\r
20 if (Clazz.instanceOf(m00, java.awt.geom.AffineTransform)) {
\r
21 var Tx = m00; this.m00 =
\r
22 Tx.m00; this.m10 = Tx.m10; this.m01 = Tx.m01; this.m11 =
\r
23 Tx.m11; this.m02 = Tx.m02; this.m12 = Tx.m12; this.state =
\r
24 Tx.state; this.type = Tx.type;
\r
26 var flatmatrix = m00;
\r
27 this.m00 = flatmatrix[0];
\r
28 this.m10 = flatmatrix[1];
\r
29 this.m01 = flatmatrix[2];
\r
30 this.m11 = flatmatrix[3];
\r
31 if (flatmatrix.length > 5) {
\r
32 this.m02 = flatmatrix[4];
\r
33 this.m12 = flatmatrix[5];
\r
56 }, "~N,~N,~N,~N,~N,~N,~N");
\r
57 c$.getTranslateInstance = Clazz.defineMethod (c$, "getTranslateInstance",
\r
59 var Tx = new java.awt.geom.AffineTransform ();
\r
60 Tx.setToTranslation (tx, ty);
\r
63 c$.getRotateInstance = Clazz.defineMethod (c$, "getRotateInstance",
\r
65 var Tx = new java.awt.geom.AffineTransform ();
\r
66 Tx.setToRotation (theta);
\r
69 c$.getRotateInstance = Clazz.defineMethod (c$, "getRotateInstance",
\r
70 function (theta, anchorx, anchory) {
\r
71 var Tx = new java.awt.geom.AffineTransform ();
\r
72 Tx.setToRotation (theta, anchorx, anchory);
\r
75 c$.getRotateInstance = Clazz.defineMethod (c$, "getRotateInstance",
\r
76 function (vecx, vecy) {
\r
77 var Tx = new java.awt.geom.AffineTransform ();
\r
78 Tx.setToRotation (vecx, vecy);
\r
81 c$.getRotateInstance = Clazz.defineMethod (c$, "getRotateInstance",
\r
82 function (vecx, vecy, anchorx, anchory) {
\r
83 var Tx = new java.awt.geom.AffineTransform ();
\r
84 Tx.setToRotation (vecx, vecy, anchorx, anchory);
\r
87 c$.getQuadrantRotateInstance = Clazz.defineMethod (c$, "getQuadrantRotateInstance",
\r
88 function (numquadrants) {
\r
89 var Tx = new java.awt.geom.AffineTransform ();
\r
90 Tx.setToQuadrantRotation (numquadrants);
\r
93 c$.getQuadrantRotateInstance = Clazz.defineMethod (c$, "getQuadrantRotateInstance",
\r
94 function (numquadrants, anchorx, anchory) {
\r
95 var Tx = new java.awt.geom.AffineTransform ();
\r
96 Tx.setToQuadrantRotation (numquadrants, anchorx, anchory);
\r
99 c$.getScaleInstance = Clazz.defineMethod (c$, "getScaleInstance",
\r
100 function (sx, sy) {
\r
101 var Tx = new java.awt.geom.AffineTransform ();
\r
102 Tx.setToScale (sx, sy);
\r
105 c$.getShearInstance = Clazz.defineMethod (c$, "getShearInstance",
\r
106 function (shx, shy) {
\r
107 var Tx = new java.awt.geom.AffineTransform ();
\r
108 Tx.setToShear (shx, shy);
\r
111 Clazz.defineMethod (c$, "getType",
\r
113 if (this.type == -1) {
\r
114 this.calculateType ();
\r
117 Clazz.defineMethod (c$, "calculateType",
\r
126 this.updateState ();
\r
127 switch (this.state) {
\r
129 this.stateError ();
\r
133 if ((M0 = this.m00) * (M2 = this.m01) + (M3 = this.m10) * (M1 = this.m11) != 0) {
\r
136 }sgn0 = (M0 >= 0.0);
\r
137 sgn1 = (M1 >= 0.0);
\r
138 if (sgn0 == sgn1) {
\r
139 if (M0 != M1 || M2 != -M3) {
\r
141 } else if (M0 * M1 - M2 * M3 != 1.0) {
\r
146 if (M0 != -M1 || M2 != M3) {
\r
148 } else if (M0 * M1 - M2 * M3 != 1.0) {
\r
156 sgn0 = ((M0 = this.m01) >= 0.0);
\r
157 sgn1 = ((M1 = this.m10) >= 0.0);
\r
158 if (sgn0 != sgn1) {
\r
161 } else if (M0 != 1.0 && M0 != -1.0) {
\r
174 sgn0 = ((M0 = this.m00) >= 0.0);
\r
175 sgn1 = ((M1 = this.m11) >= 0.0);
\r
176 if (sgn0 == sgn1) {
\r
185 } else if (M0 != -1.0) {
\r
191 if (M0 == 1.0 || M0 == -1.0) {
\r
206 Clazz.defineMethod (c$, "getDeterminant",
\r
208 switch (this.state) {
\r
210 this.stateError ();
\r
213 return this.m00 * this.m11 - this.m01 * this.m10;
\r
216 return -(this.m01 * this.m10);
\r
219 return this.m00 * this.m11;
\r
225 Clazz.defineMethod (c$, "updateState",
\r
227 if (this.m01 == 0.0 && this.m10 == 0.0) {
\r
228 if (this.m00 == 1.0 && this.m11 == 1.0) {
\r
229 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
236 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
243 if (this.m00 == 0.0 && this.m11 == 0.0) {
\r
244 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
251 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
258 Clazz.defineMethod (c$, "stateError",
\r
260 throw new InternalError ("missing case in transform state switch");
\r
262 Clazz.defineMethod (c$, "getMatrix",
\r
263 function (flatmatrix) {
\r
264 flatmatrix[0] = this.m00;
\r
265 flatmatrix[1] = this.m10;
\r
266 flatmatrix[2] = this.m01;
\r
267 flatmatrix[3] = this.m11;
\r
268 if (flatmatrix.length > 5) {
\r
269 flatmatrix[4] = this.m02;
\r
270 flatmatrix[5] = this.m12;
\r
272 Clazz.defineMethod (c$, "getScaleX",
\r
276 Clazz.defineMethod (c$, "getScaleY",
\r
280 Clazz.defineMethod (c$, "getShearX",
\r
284 Clazz.defineMethod (c$, "getShearY",
\r
288 Clazz.defineMethod (c$, "getTranslateX",
\r
292 Clazz.defineMethod (c$, "getTranslateY",
\r
296 Clazz.defineMethod (c$, "translate",
\r
297 function (tx, ty) {
\r
298 switch (this.state) {
\r
300 this.stateError ();
\r
302 this.m02 = tx * this.m00 + ty * this.m01 + this.m02;
\r
303 this.m12 = tx * this.m10 + ty * this.m11 + this.m12;
\r
304 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
306 if (this.type != -1) {
\r
310 this.m02 = tx * this.m00 + ty * this.m01;
\r
311 this.m12 = tx * this.m10 + ty * this.m11;
\r
312 if (this.m02 != 0.0 || this.m12 != 0.0) {
\r
317 this.m02 = ty * this.m01 + this.m02;
\r
318 this.m12 = tx * this.m10 + this.m12;
\r
319 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
321 if (this.type != -1) {
\r
325 this.m02 = ty * this.m01;
\r
326 this.m12 = tx * this.m10;
\r
327 if (this.m02 != 0.0 || this.m12 != 0.0) {
\r
332 this.m02 = tx * this.m00 + this.m02;
\r
333 this.m12 = ty * this.m11 + this.m12;
\r
334 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
336 if (this.type != -1) {
\r
340 this.m02 = tx * this.m00;
\r
341 this.m12 = ty * this.m11;
\r
342 if (this.m02 != 0.0 || this.m12 != 0.0) {
\r
347 this.m02 = tx + this.m02;
\r
348 this.m12 = ty + this.m12;
\r
349 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
356 if (tx != 0.0 || ty != 0.0) {
\r
362 Clazz.defineMethod (c$, "rotate90",
\r
365 this.m00 = this.m01;
\r
368 this.m10 = this.m11;
\r
370 var state = java.awt.geom.AffineTransform.rot90conversion[this.state];
\r
371 if ((state & (6)) == 2 && this.m00 == 1.0 && this.m11 == 1.0) {
\r
373 }this.state = state;
\r
376 Clazz.defineMethod (c$, "rotate180",
\r
378 this.m00 = -this.m00;
\r
379 this.m11 = -this.m11;
\r
380 var state = this.state;
\r
381 if ((state & (4)) != 0) {
\r
382 this.m01 = -this.m01;
\r
383 this.m10 = -this.m10;
\r
385 if (this.m00 == 1.0 && this.m11 == 1.0) {
\r
386 this.state = state & -3;
\r
388 this.state = state | 2;
\r
391 Clazz.defineMethod (c$, "rotate270",
\r
394 this.m00 = -this.m01;
\r
397 this.m10 = -this.m11;
\r
399 var state = java.awt.geom.AffineTransform.rot90conversion[this.state];
\r
400 if ((state & (6)) == 2 && this.m00 == 1.0 && this.m11 == 1.0) {
\r
402 }this.state = state;
\r
405 Clazz.defineMethod (c$, "rotate",
\r
407 var sin = Math.sin (theta);
\r
410 } else if (sin == -1.0) {
\r
413 var cos = Math.cos (theta);
\r
416 } else if (cos != 1.0) {
\r
421 this.m00 = cos * M0 + sin * M1;
\r
422 this.m01 = -sin * M0 + cos * M1;
\r
425 this.m10 = cos * M0 + sin * M1;
\r
426 this.m11 = -sin * M0 + cos * M1;
\r
427 this.updateState ();
\r
429 Clazz.defineMethod (c$, "rotate",
\r
430 function (theta, anchorx, anchory) {
\r
431 this.translate (anchorx, anchory);
\r
432 this.rotate (theta);
\r
433 this.translate (-anchorx, -anchory);
\r
435 Clazz.defineMethod (c$, "rotate",
\r
436 function (vecx, vecy) {
\r
440 }} else if (vecx == 0.0) {
\r
446 var len = Math.sqrt (vecx * vecx + vecy * vecy);
\r
447 var sin = vecy / len;
\r
448 var cos = vecx / len;
\r
453 this.m00 = cos * M0 + sin * M1;
\r
454 this.m01 = -sin * M0 + cos * M1;
\r
457 this.m10 = cos * M0 + sin * M1;
\r
458 this.m11 = -sin * M0 + cos * M1;
\r
459 this.updateState ();
\r
461 Clazz.defineMethod (c$, "rotate",
\r
462 function (vecx, vecy, anchorx, anchory) {
\r
463 this.translate (anchorx, anchory);
\r
464 this.rotate (vecx, vecy);
\r
465 this.translate (-anchorx, -anchory);
\r
467 Clazz.defineMethod (c$, "quadrantRotate",
\r
468 function (numquadrants) {
\r
469 switch (numquadrants & 3) {
\r
483 Clazz.defineMethod (c$, "quadrantRotate",
\r
484 function (numquadrants, anchorx, anchory) {
\r
485 switch (numquadrants & 3) {
\r
489 this.m02 += anchorx * (this.m00 - this.m01) + anchory * (this.m01 + this.m00);
\r
490 this.m12 += anchorx * (this.m10 - this.m11) + anchory * (this.m11 + this.m10);
\r
494 this.m02 += anchorx * (this.m00 + this.m00) + anchory * (this.m01 + this.m01);
\r
495 this.m12 += anchorx * (this.m10 + this.m10) + anchory * (this.m11 + this.m11);
\r
499 this.m02 += anchorx * (this.m00 + this.m01) + anchory * (this.m01 - this.m00);
\r
500 this.m12 += anchorx * (this.m10 + this.m11) + anchory * (this.m11 - this.m10);
\r
504 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
509 Clazz.defineMethod (c$, "scale",
\r
510 function (sx, sy) {
\r
511 var state = this.state;
\r
514 this.stateError ();
\r
523 if (this.m01 == 0 && this.m10 == 0) {
\r
525 if (this.m00 == 1.0 && this.m11 == 1.0) {
\r
526 this.type = (state == 0 ? 0 : 1);
\r
530 }this.state = state;
\r
536 if (this.m00 == 1.0 && this.m11 == 1.0) {
\r
537 this.state = (state &= 1);
\r
538 this.type = (state == 0 ? 0 : 1);
\r
546 if (sx != 1.0 || sy != 1.0) {
\r
547 this.state = state | 2;
\r
552 Clazz.defineMethod (c$, "shear",
\r
553 function (shx, shy) {
\r
554 var state = this.state;
\r
557 this.stateError ();
\r
564 this.m00 = M0 + M1 * shy;
\r
565 this.m01 = M0 * shx + M1;
\r
568 this.m10 = M0 + M1 * shy;
\r
569 this.m11 = M0 * shx + M1;
\r
570 this.updateState ();
\r
574 this.m00 = this.m01 * shy;
\r
575 this.m11 = this.m10 * shx;
\r
576 if (this.m00 != 0.0 || this.m11 != 0.0) {
\r
577 this.state = state | 2;
\r
582 this.m01 = this.m00 * shx;
\r
583 this.m10 = this.m11 * shy;
\r
584 if (this.m01 != 0.0 || this.m10 != 0.0) {
\r
585 this.state = state | 4;
\r
592 if (this.m01 != 0.0 || this.m10 != 0.0) {
\r
593 this.state = state | 2 | 4;
\r
598 Clazz.defineMethod (c$, "setToIdentity",
\r
600 this.m00 = this.m11 = 1.0;
\r
601 this.m10 = this.m01 = this.m02 = this.m12 = 0.0;
\r
605 Clazz.defineMethod (c$, "setToTranslation",
\r
606 function (tx, ty) {
\r
613 if (tx != 0.0 || ty != 0.0) {
\r
620 Clazz.defineMethod (c$, "setToRotation",
\r
622 var sin = Math.sin (theta);
\r
624 if (sin == 1.0 || sin == -1.0) {
\r
629 cos = Math.cos (theta);
\r
634 } else if (cos == 1.0) {
\r
648 Clazz.defineMethod (c$, "setToRotation",
\r
649 function (theta, anchorx, anchory) {
\r
650 this.setToRotation (theta);
\r
651 var sin = this.m10;
\r
652 var oneMinusCos = 1.0 - this.m00;
\r
653 this.m02 = anchorx * oneMinusCos + anchory * sin;
\r
654 this.m12 = anchory * oneMinusCos - anchorx * sin;
\r
655 if (this.m02 != 0.0 || this.m12 != 0.0) {
\r
659 Clazz.defineMethod (c$, "setToRotation",
\r
660 function (vecx, vecy) {
\r
673 }} else if (vecx == 0) {
\r
675 sin = (vecy > 0.0) ? 1.0 : -1.0;
\r
679 var len = Math.sqrt (vecx * vecx + vecy * vecy);
\r
691 Clazz.defineMethod (c$, "setToRotation",
\r
692 function (vecx, vecy, anchorx, anchory) {
\r
693 this.setToRotation (vecx, vecy);
\r
694 var sin = this.m10;
\r
695 var oneMinusCos = 1.0 - this.m00;
\r
696 this.m02 = anchorx * oneMinusCos + anchory * sin;
\r
697 this.m12 = anchory * oneMinusCos - anchorx * sin;
\r
698 if (this.m02 != 0.0 || this.m12 != 0.0) {
\r
701 }}, "~N,~N,~N,~N");
\r
702 Clazz.defineMethod (c$, "setToQuadrantRotation",
\r
703 function (numquadrants) {
\r
704 switch (numquadrants & 3) {
\r
747 Clazz.defineMethod (c$, "setToQuadrantRotation",
\r
748 function (numquadrants, anchorx, anchory) {
\r
749 switch (numquadrants & 3) {
\r
765 this.m02 = anchorx + anchory;
\r
766 this.m12 = anchory - anchorx;
\r
767 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
779 this.m02 = anchorx + anchorx;
\r
780 this.m12 = anchory + anchory;
\r
781 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
793 this.m02 = anchorx - anchory;
\r
794 this.m12 = anchory + anchorx;
\r
795 if (this.m02 == 0.0 && this.m12 == 0.0) {
\r
804 Clazz.defineMethod (c$, "setToScale",
\r
805 function (sx, sy) {
\r
812 if (sx != 1.0 || sy != 1.0) {
\r
819 Clazz.defineMethod (c$, "setToShear",
\r
820 function (shx, shy) {
\r
827 if (shx != 0.0 || shy != 0.0) {
\r
834 Clazz.defineMethod (c$, "setTransform",
\r
842 this.state = Tx.state;
\r
843 this.type = Tx.type;
\r
844 }, "java.awt.geom.AffineTransform");
\r
845 Clazz.defineMethod (c$, "setTransform",
\r
846 function (m00, m10, m01, m11, m02, m12) {
\r
853 this.updateState ();
\r
854 }, "~N,~N,~N,~N,~N,~N");
\r
855 Clazz.defineMethod (c$, "concatenate",
\r
865 var mystate = this.state;
\r
866 var txstate = Tx.state;
\r
867 switch ((txstate << 3) | mystate) {
\r
886 this.state = txstate;
\r
887 this.type = Tx.type;
\r
895 this.state = txstate;
\r
896 this.type = Tx.type;
\r
904 this.m00 = this.m11 = 0.0;
\r
905 this.state = txstate;
\r
906 this.type = Tx.type;
\r
915 this.translate (Tx.m02, Tx.m12);
\r
924 this.scale (Tx.m00, Tx.m11);
\r
931 this.m00 = this.m01 * T10;
\r
932 this.m01 = M0 * T01;
\r
934 this.m10 = this.m11 * T10;
\r
935 this.m11 = M0 * T01;
\r
940 this.m00 = this.m01 * Tx.m10;
\r
942 this.m11 = this.m10 * Tx.m01;
\r
944 this.state = mystate ^ (6);
\r
949 this.m01 = this.m00 * Tx.m01;
\r
951 this.m10 = this.m11 * Tx.m10;
\r
953 this.state = mystate ^ (6);
\r
973 this.stateError ();
\r
975 this.state = mystate | txstate;
\r
979 this.m00 = T00 * M0 + T10 * M1;
\r
980 this.m01 = T01 * M0 + T11 * M1;
\r
981 this.m02 += T02 * M0 + T12 * M1;
\r
984 this.m10 = T00 * M0 + T10 * M1;
\r
985 this.m11 = T01 * M0 + T11 * M1;
\r
986 this.m12 += T02 * M0 + T12 * M1;
\r
992 this.m00 = T10 * M0;
\r
993 this.m01 = T11 * M0;
\r
994 this.m02 += T12 * M0;
\r
996 this.m10 = T00 * M0;
\r
997 this.m11 = T01 * M0;
\r
998 this.m12 += T02 * M0;
\r
1003 this.m00 = T00 * M0;
\r
1004 this.m01 = T01 * M0;
\r
1005 this.m02 += T02 * M0;
\r
1007 this.m10 = T10 * M0;
\r
1008 this.m11 = T11 * M0;
\r
1009 this.m12 += T12 * M0;
\r
1018 this.state = txstate | 1;
\r
1022 this.updateState ();
\r
1023 }, "java.awt.geom.AffineTransform");
\r
1024 Clazz.defineMethod (c$, "preConcatenate",
\r
1034 var mystate = this.state;
\r
1035 var txstate = Tx.state;
\r
1036 switch ((txstate << 3) | mystate) {
\r
1050 this.m02 = Tx.m02;
\r
1051 this.m12 = Tx.m12;
\r
1052 this.state = mystate | 1;
\r
1059 this.m02 = this.m02 + Tx.m02;
\r
1060 this.m12 = this.m12 + Tx.m12;
\r
1064 this.state = mystate | 2;
\r
1073 if ((mystate & 4) != 0) {
\r
1074 this.m01 = this.m01 * T00;
\r
1075 this.m10 = this.m10 * T11;
\r
1076 if ((mystate & 2) != 0) {
\r
1077 this.m00 = this.m00 * T00;
\r
1078 this.m11 = this.m11 * T11;
\r
1080 this.m00 = this.m00 * T00;
\r
1081 this.m11 = this.m11 * T11;
\r
1082 }if ((mystate & 1) != 0) {
\r
1083 this.m02 = this.m02 * T00;
\r
1084 this.m12 = this.m12 * T11;
\r
1089 mystate = mystate | 2;
\r
1094 this.state = mystate ^ 4;
\r
1100 this.m00 = this.m10 * T01;
\r
1101 this.m10 = M0 * T10;
\r
1103 this.m01 = this.m11 * T01;
\r
1104 this.m11 = M0 * T10;
\r
1106 this.m02 = this.m12 * T01;
\r
1107 this.m12 = M0 * T10;
\r
1117 switch (mystate) {
\r
1119 this.stateError ();
\r
1123 T02 += M0 * T00 + M1 * T01;
\r
1124 T12 += M0 * T10 + M1 * T11;
\r
1130 this.m00 = M0 * T00 + M1 * T01;
\r
1131 this.m10 = M0 * T10 + M1 * T11;
\r
1134 this.m01 = M0 * T00 + M1 * T01;
\r
1135 this.m11 = M0 * T10 + M1 * T11;
\r
1140 T02 += M0 * T00 + M1 * T01;
\r
1141 T12 += M0 * T10 + M1 * T11;
\r
1146 this.m00 = M0 * T01;
\r
1147 this.m10 = M0 * T11;
\r
1149 this.m01 = M0 * T00;
\r
1150 this.m11 = M0 * T10;
\r
1155 T02 += M0 * T00 + M1 * T01;
\r
1156 T12 += M0 * T10 + M1 * T11;
\r
1161 this.m00 = M0 * T00;
\r
1162 this.m10 = M0 * T10;
\r
1164 this.m01 = M0 * T01;
\r
1165 this.m11 = M0 * T11;
\r
1170 T02 += M0 * T00 + M1 * T01;
\r
1171 T12 += M0 * T10 + M1 * T11;
\r
1179 this.state = mystate | txstate;
\r
1183 this.updateState ();
\r
1184 }, "java.awt.geom.AffineTransform");
\r
1185 Clazz.defineMethod (c$, "createInverse",
\r
1188 switch (this.state) {
\r
1190 this.stateError ();
\r
1192 det = this.m00 * this.m11 - this.m01 * this.m10;
\r
1193 if (Math.abs (det) <= 4.9E-324) {
\r
1194 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is " + det);
\r
1195 }return new java.awt.geom.AffineTransform (this.m11 / det, -this.m10 / det, -this.m01 / det, this.m00 / det, (this.m01 * this.m12 - this.m11 * this.m02) / det, (this.m10 * this.m02 - this.m00 * this.m12) / det, (7));
\r
1197 det = this.m00 * this.m11 - this.m01 * this.m10;
\r
1198 if (Math.abs (det) <= 4.9E-324) {
\r
1199 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is " + det);
\r
1200 }return new java.awt.geom.AffineTransform (this.m11 / det, -this.m10 / det, -this.m01 / det, this.m00 / det, 0.0, 0.0, (6));
\r
1202 if (this.m01 == 0.0 || this.m10 == 0.0) {
\r
1203 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1204 }return new java.awt.geom.AffineTransform (0.0, 1.0 / this.m01, 1.0 / this.m10, 0.0, -this.m12 / this.m10, -this.m02 / this.m01, (5));
\r
1206 if (this.m01 == 0.0 || this.m10 == 0.0) {
\r
1207 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1208 }return new java.awt.geom.AffineTransform (0.0, 1.0 / this.m01, 1.0 / this.m10, 0.0, 0.0, 0.0, (4));
\r
1210 if (this.m00 == 0.0 || this.m11 == 0.0) {
\r
1211 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1212 }return new java.awt.geom.AffineTransform (1.0 / this.m00, 0.0, 0.0, 1.0 / this.m11, -this.m02 / this.m00, -this.m12 / this.m11, (3));
\r
1214 if (this.m00 == 0.0 || this.m11 == 0.0) {
\r
1215 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1216 }return new java.awt.geom.AffineTransform (1.0 / this.m00, 0.0, 0.0, 1.0 / this.m11, 0.0, 0.0, (2));
\r
1218 return new java.awt.geom.AffineTransform (1.0, 0.0, 0.0, 1.0, -this.m02, -this.m12, (1));
\r
1220 return new java.awt.geom.AffineTransform ();
\r
1223 Clazz.defineMethod (c$, "invert",
\r
1232 switch (this.state) {
\r
1234 this.stateError ();
\r
1242 det = M00 * M11 - M01 * M10;
\r
1243 if (Math.abs (det) <= 4.9E-324) {
\r
1244 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is " + det);
\r
1245 }this.m00 = M11 / det;
\r
1246 this.m10 = -M10 / det;
\r
1247 this.m01 = -M01 / det;
\r
1248 this.m11 = M00 / det;
\r
1249 this.m02 = (M01 * M12 - M11 * M02) / det;
\r
1250 this.m12 = (M10 * M02 - M00 * M12) / det;
\r
1257 det = M00 * M11 - M01 * M10;
\r
1258 if (Math.abs (det) <= 4.9E-324) {
\r
1259 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is " + det);
\r
1260 }this.m00 = M11 / det;
\r
1261 this.m10 = -M10 / det;
\r
1262 this.m01 = -M01 / det;
\r
1263 this.m11 = M00 / det;
\r
1270 if (M01 == 0.0 || M10 == 0.0) {
\r
1271 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1272 }this.m10 = 1.0 / M01;
\r
1273 this.m01 = 1.0 / M10;
\r
1274 this.m02 = -M12 / M10;
\r
1275 this.m12 = -M02 / M01;
\r
1280 if (M01 == 0.0 || M10 == 0.0) {
\r
1281 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1282 }this.m10 = 1.0 / M01;
\r
1283 this.m01 = 1.0 / M10;
\r
1290 if (M00 == 0.0 || M11 == 0.0) {
\r
1291 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1292 }this.m00 = 1.0 / M00;
\r
1293 this.m11 = 1.0 / M11;
\r
1294 this.m02 = -M02 / M00;
\r
1295 this.m12 = -M12 / M11;
\r
1300 if (M00 == 0.0 || M11 == 0.0) {
\r
1301 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1302 }this.m00 = 1.0 / M00;
\r
1303 this.m11 = 1.0 / M11;
\r
1306 this.m02 = -this.m02;
\r
1307 this.m12 = -this.m12;
\r
1313 Clazz.defineMethod (c$, "transform",
\r
1314 function (ptSrc, ptDst) {
\r
1315 if (ptDst == null) {
\r
1316 if (Clazz.instanceOf (ptSrc, java.awt.geom.Point2D.Double)) {
\r
1317 ptDst = new java.awt.geom.Point2D.Double ();
\r
1319 ptDst = new java.awt.geom.Point2D.Float ();
\r
1320 }}var x = ptSrc.getX ();
\r
1321 var y = ptSrc.getY ();
\r
1322 switch (this.state) {
\r
1324 this.stateError ();
\r
1326 ptDst.setLocation (x * this.m00 + y * this.m01 + this.m02, x * this.m10 + y * this.m11 + this.m12);
\r
1329 ptDst.setLocation (x * this.m00 + y * this.m01, x * this.m10 + y * this.m11);
\r
1332 ptDst.setLocation (y * this.m01 + this.m02, x * this.m10 + this.m12);
\r
1335 ptDst.setLocation (y * this.m01, x * this.m10);
\r
1338 ptDst.setLocation (x * this.m00 + this.m02, y * this.m11 + this.m12);
\r
1341 ptDst.setLocation (x * this.m00, y * this.m11);
\r
1344 ptDst.setLocation (x + this.m02, y + this.m12);
\r
1347 ptDst.setLocation (x, y);
\r
1350 }, "java.awt.geom.Point2D,java.awt.geom.Point2D");
\r
1351 Clazz.defineMethod (c$, "transform",
\r
1352 function (srcPts, srcOff, dstPts, dstOff, numPts) {
\r
1353 if (numPts == 0) return;
\r
1354 if (!JU.AU.isAD (srcPts)) {
\r
1357 this.transform (src, srcOff, dst, dstOff, numPts);
\r
1365 if (dstPts === srcPts && dstOff > srcOff && dstOff < srcOff + numPts * 2) {
\r
1366 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);
\r
1368 }switch (this.state) {
\r
1370 this.stateError ();
\r
1378 while (--numPts >= 0) {
\r
1379 var x = srcPts[srcOff++];
\r
1380 var y = srcPts[srcOff++];
\r
1381 dstPts[dstOff++] = M00 * x + M01 * y + M02;
\r
1382 dstPts[dstOff++] = M10 * x + M11 * y + M12;
\r
1390 while (--numPts >= 0) {
\r
1391 var x = srcPts[srcOff++];
\r
1392 var y = srcPts[srcOff++];
\r
1393 dstPts[dstOff++] = M00 * x + M01 * y;
\r
1394 dstPts[dstOff++] = M10 * x + M11 * y;
\r
1402 while (--numPts >= 0) {
\r
1403 var x = srcPts[srcOff++];
\r
1404 dstPts[dstOff++] = M01 * srcPts[srcOff++] + M02;
\r
1405 dstPts[dstOff++] = M10 * x + M12;
\r
1411 while (--numPts >= 0) {
\r
1412 var x = srcPts[srcOff++];
\r
1413 dstPts[dstOff++] = M01 * srcPts[srcOff++];
\r
1414 dstPts[dstOff++] = M10 * x;
\r
1422 while (--numPts >= 0) {
\r
1423 dstPts[dstOff++] = M00 * srcPts[srcOff++] + M02;
\r
1424 dstPts[dstOff++] = M11 * srcPts[srcOff++] + M12;
\r
1430 while (--numPts >= 0) {
\r
1431 dstPts[dstOff++] = M00 * srcPts[srcOff++];
\r
1432 dstPts[dstOff++] = M11 * srcPts[srcOff++];
\r
1438 while (--numPts >= 0) {
\r
1439 dstPts[dstOff++] = srcPts[srcOff++] + M02;
\r
1440 dstPts[dstOff++] = srcPts[srcOff++] + M12;
\r
1444 if (srcPts !== dstPts || srcOff != dstOff) {
\r
1445 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);
\r
1448 }, "~A,~N,~A,~N,~N");
\r
1449 Clazz.defineMethod (c$, "inverseTransform",
\r
1450 function (ptSrc, ptDst) {
\r
1451 if (ptDst == null) {
\r
1452 if (Clazz.instanceOf (ptSrc, java.awt.geom.Point2D.Double)) {
\r
1453 ptDst = new java.awt.geom.Point2D.Double ();
\r
1455 ptDst = new java.awt.geom.Point2D.Float ();
\r
1456 }}var x = ptSrc.getX ();
\r
1457 var y = ptSrc.getY ();
\r
1458 switch (this.state) {
\r
1460 this.stateError ();
\r
1465 var det = this.m00 * this.m11 - this.m01 * this.m10;
\r
1466 if (Math.abs (det) <= 4.9E-324) {
\r
1467 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is " + det);
\r
1468 }ptDst.setLocation ((x * this.m11 - y * this.m01) / det, (y * this.m00 - x * this.m10) / det);
\r
1474 if (this.m01 == 0.0 || this.m10 == 0.0) {
\r
1475 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1476 }ptDst.setLocation (y / this.m10, x / this.m01);
\r
1482 if (this.m00 == 0.0 || this.m11 == 0.0) {
\r
1483 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1484 }ptDst.setLocation (x / this.m00, y / this.m11);
\r
1487 ptDst.setLocation (x - this.m02, y - this.m12);
\r
1490 ptDst.setLocation (x, y);
\r
1493 }, "java.awt.geom.Point2D,java.awt.geom.Point2D");
\r
1494 Clazz.defineMethod (c$, "inverseTransform",
\r
1495 function (srcPts, srcOff, dstPts, dstOff, numPts) {
\r
1503 if (dstPts === srcPts && dstOff > srcOff && dstOff < srcOff + numPts * 2) {
\r
1504 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);
\r
1506 }switch (this.state) {
\r
1508 this.stateError ();
\r
1516 det = M00 * M11 - M01 * M10;
\r
1517 if (Math.abs (det) <= 4.9E-324) {
\r
1518 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is " + det);
\r
1519 }while (--numPts >= 0) {
\r
1520 var x = srcPts[srcOff++] - M02;
\r
1521 var y = srcPts[srcOff++] - M12;
\r
1522 dstPts[dstOff++] = (x * M11 - y * M01) / det;
\r
1523 dstPts[dstOff++] = (y * M00 - x * M10) / det;
\r
1531 det = M00 * M11 - M01 * M10;
\r
1532 if (Math.abs (det) <= 4.9E-324) {
\r
1533 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is " + det);
\r
1534 }while (--numPts >= 0) {
\r
1535 var x = srcPts[srcOff++];
\r
1536 var y = srcPts[srcOff++];
\r
1537 dstPts[dstOff++] = (x * M11 - y * M01) / det;
\r
1538 dstPts[dstOff++] = (y * M00 - x * M10) / det;
\r
1546 if (M01 == 0.0 || M10 == 0.0) {
\r
1547 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1548 }while (--numPts >= 0) {
\r
1549 var x = srcPts[srcOff++] - M02;
\r
1550 dstPts[dstOff++] = (srcPts[srcOff++] - M12) / M10;
\r
1551 dstPts[dstOff++] = x / M01;
\r
1557 if (M01 == 0.0 || M10 == 0.0) {
\r
1558 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1559 }while (--numPts >= 0) {
\r
1560 var x = srcPts[srcOff++];
\r
1561 dstPts[dstOff++] = srcPts[srcOff++] / M10;
\r
1562 dstPts[dstOff++] = x / M01;
\r
1570 if (M00 == 0.0 || M11 == 0.0) {
\r
1571 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1572 }while (--numPts >= 0) {
\r
1573 dstPts[dstOff++] = (srcPts[srcOff++] - M02) / M00;
\r
1574 dstPts[dstOff++] = (srcPts[srcOff++] - M12) / M11;
\r
1580 if (M00 == 0.0 || M11 == 0.0) {
\r
1581 throw new java.awt.geom.NoninvertibleTransformException ("Determinant is 0");
\r
1582 }while (--numPts >= 0) {
\r
1583 dstPts[dstOff++] = srcPts[srcOff++] / M00;
\r
1584 dstPts[dstOff++] = srcPts[srcOff++] / M11;
\r
1590 while (--numPts >= 0) {
\r
1591 dstPts[dstOff++] = srcPts[srcOff++] - M02;
\r
1592 dstPts[dstOff++] = srcPts[srcOff++] - M12;
\r
1596 if (srcPts !== dstPts || srcOff != dstOff) {
\r
1597 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);
\r
1600 }, "~A,~N,~A,~N,~N");
\r
1601 Clazz.defineMethod (c$, "deltaTransform",
\r
1602 function (ptSrc, ptDst) {
\r
1603 if (ptDst == null) {
\r
1604 if (Clazz.instanceOf (ptSrc, java.awt.geom.Point2D.Double)) {
\r
1605 ptDst = new java.awt.geom.Point2D.Double ();
\r
1607 ptDst = new java.awt.geom.Point2D.Float ();
\r
1608 }}var x = ptSrc.getX ();
\r
1609 var y = ptSrc.getY ();
\r
1610 switch (this.state) {
\r
1612 this.stateError ();
\r
1615 ptDst.setLocation (x * this.m00 + y * this.m01, x * this.m10 + y * this.m11);
\r
1619 ptDst.setLocation (y * this.m01, x * this.m10);
\r
1623 ptDst.setLocation (x * this.m00, y * this.m11);
\r
1627 ptDst.setLocation (x, y);
\r
1630 }, "java.awt.geom.Point2D,java.awt.geom.Point2D");
\r
1631 Clazz.defineMethod (c$, "deltaTransform",
\r
1632 function (srcPts, srcOff, dstPts, dstOff, numPts) {
\r
1637 if (dstPts === srcPts && dstOff > srcOff && dstOff < srcOff + numPts * 2) {
\r
1638 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);
\r
1640 }switch (this.state) {
\r
1642 this.stateError ();
\r
1649 while (--numPts >= 0) {
\r
1650 var x = srcPts[srcOff++];
\r
1651 var y = srcPts[srcOff++];
\r
1652 dstPts[dstOff++] = x * M00 + y * M01;
\r
1653 dstPts[dstOff++] = x * M10 + y * M11;
\r
1660 while (--numPts >= 0) {
\r
1661 var x = srcPts[srcOff++];
\r
1662 dstPts[dstOff++] = srcPts[srcOff++] * M01;
\r
1663 dstPts[dstOff++] = x * M10;
\r
1670 while (--numPts >= 0) {
\r
1671 dstPts[dstOff++] = srcPts[srcOff++] * M00;
\r
1672 dstPts[dstOff++] = srcPts[srcOff++] * M11;
\r
1677 if (srcPts !== dstPts || srcOff != dstOff) {
\r
1678 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);
\r
1681 }, "~A,~N,~A,~N,~N");
\r
1682 Clazz.defineMethod (c$, "createTransformedShape",
\r
1684 if (pSrc == null) {
\r
1686 }return new java.awt.geom.Path2D.Double (pSrc, this);
\r
1687 }, "java.awt.Shape");
\r
1688 c$._matround = Clazz.defineMethod (c$, "_matround",
\r
1689 function (matval) {
\r
1690 return Math.rint (matval * 1E15) / 1E15;
\r
1692 Clazz.overrideMethod (c$, "toString",
\r
1694 return ("AffineTransform[[" + java.awt.geom.AffineTransform._matround (this.m00) + ", " + java.awt.geom.AffineTransform._matround (this.m01) + ", " + java.awt.geom.AffineTransform._matround (this.m02) + "], [" + java.awt.geom.AffineTransform._matround (this.m10) + ", " + java.awt.geom.AffineTransform._matround (this.m11) + ", " + java.awt.geom.AffineTransform._matround (this.m12) + "]]");
\r
1696 Clazz.defineMethod (c$, "isIdentity",
\r
1698 return (this.state == 0 || (this.getType () == 0));
\r
1700 Clazz.defineMethod (c$, "clone",
\r
1703 return Clazz.superCall (this, java.awt.geom.AffineTransform, "clone", []);
\r
1705 if (Clazz.exceptionOf (e, CloneNotSupportedException)) {
\r
1706 throw new InternalError ();
\r
1712 Clazz.overrideMethod (c$, "hashCode",
\r
1714 var bits = Double.doubleToLongBits (this.m00);
\r
1715 bits = bits * 31 + Double.doubleToLongBits (this.m01);
\r
1716 bits = bits * 31 + Double.doubleToLongBits (this.m02);
\r
1717 bits = bits * 31 + Double.doubleToLongBits (this.m10);
\r
1718 bits = bits * 31 + Double.doubleToLongBits (this.m11);
\r
1719 bits = bits * 31 + Double.doubleToLongBits (this.m12);
\r
1720 return ((bits) ^ ((bits >> 32)));
\r
1722 Clazz.overrideMethod (c$, "equals",
\r
1724 if (!(Clazz.instanceOf (obj, java.awt.geom.AffineTransform))) {
\r
1727 return ((this.m00 == a.m00) && (this.m01 == a.m01) && (this.m02 == a.m02) && (this.m10 == a.m10) && (this.m11 == a.m11) && (this.m12 == a.m12));
\r
1729 Clazz.defineStatics (c$,
\r
1730 "TYPE_UNKNOWN", -1,
\r
1731 "TYPE_IDENTITY", 0,
\r
1732 "TYPE_TRANSLATION", 1,
\r
1733 "TYPE_UNIFORM_SCALE", 2,
\r
1734 "TYPE_GENERAL_SCALE", 4,
\r
1735 "TYPE_MASK_SCALE", (6),
\r
1737 "TYPE_QUADRANT_ROTATION", 8,
\r
1738 "TYPE_GENERAL_ROTATION", 16,
\r
1739 "TYPE_MASK_ROTATION", (24),
\r
1740 "TYPE_GENERAL_TRANSFORM", 32,
\r
1741 "APPLY_IDENTITY", 0,
\r
1742 "APPLY_TRANSLATE", 1,
\r
1747 "HI_TRANSLATE", 8,
\r
1750 "rot90conversion", Clazz.newIntArray (-1, [4, 5, 4, 5, 2, 3, 6, 7]));
\r