JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / java / awt / geom / AffineTransform.js
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
4 this.m00 = 0;\r
5 this.m10 = 0;\r
6 this.m01 = 0;\r
7 this.m11 = 0;\r
8 this.m02 = 0;\r
9 this.m12 = 0;\r
10 this.state = 0;\r
11 this.type = 0;\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
16 {\r
17 switch (arguments.length) { case 0: this.m00 = this.m11 = 1.0;\r
18 return;\r
19 case 1:\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
25 } else {\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
34 }\r
35 this.updateState();\r
36 }\r
37 return;\r
38 case 6:\r
39 this.m00 = m00;\r
40 this.m10 = m10;\r
41 this.m01 = m01;\r
42 this.m11 = m11;\r
43 this.m02 = m02;\r
44 this.m12 = m12;\r
45 this.updateState();\r
46 return;\r
47 }\r
48 }this.m00 = m00;\r
49 this.m10 = m10;\r
50 this.m01 = m01;\r
51 this.m11 = m11;\r
52 this.m02 = m02;\r
53 this.m12 = m12;\r
54 this.state = state;\r
55 this.type = -1;\r
56 }, "~N,~N,~N,~N,~N,~N,~N");\r
57 c$.getTranslateInstance = Clazz.defineMethod (c$, "getTranslateInstance", \r
58 function (tx, ty) {\r
59 var Tx =  new java.awt.geom.AffineTransform ();\r
60 Tx.setToTranslation (tx, ty);\r
61 return Tx;\r
62 }, "~N,~N");\r
63 c$.getRotateInstance = Clazz.defineMethod (c$, "getRotateInstance", \r
64 function (theta) {\r
65 var Tx =  new java.awt.geom.AffineTransform ();\r
66 Tx.setToRotation (theta);\r
67 return Tx;\r
68 }, "~N");\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
73 return Tx;\r
74 }, "~N,~N,~N");\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
79 return Tx;\r
80 }, "~N,~N");\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
85 return Tx;\r
86 }, "~N,~N,~N,~N");\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
91 return Tx;\r
92 }, "~N");\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
97 return Tx;\r
98 }, "~N,~N,~N");\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
103 return Tx;\r
104 }, "~N,~N");\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
109 return Tx;\r
110 }, "~N,~N");\r
111 Clazz.defineMethod (c$, "getType", \r
112 function () {\r
113 if (this.type == -1) {\r
114 this.calculateType ();\r
115 }return this.type;\r
116 });\r
117 Clazz.defineMethod (c$, "calculateType", \r
118  function () {\r
119 var ret = 0;\r
120 var sgn0;\r
121 var sgn1;\r
122 var M0;\r
123 var M1;\r
124 var M2;\r
125 var M3;\r
126 this.updateState ();\r
127 switch (this.state) {\r
128 default:\r
129 this.stateError ();\r
130 case (7):\r
131 ret = 1;\r
132 case (6):\r
133 if ((M0 = this.m00) * (M2 = this.m01) + (M3 = this.m10) * (M1 = this.m11) != 0) {\r
134 this.type = 32;\r
135 return;\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
140 ret |= (20);\r
141 } else if (M0 * M1 - M2 * M3 != 1.0) {\r
142 ret |= (18);\r
143 } else {\r
144 ret |= 16;\r
145 }} else {\r
146 if (M0 != -M1 || M2 != M3) {\r
147 ret |= (84);\r
148 } else if (M0 * M1 - M2 * M3 != 1.0) {\r
149 ret |= (82);\r
150 } else {\r
151 ret |= (80);\r
152 }}break;\r
153 case (5):\r
154 ret = 1;\r
155 case (4):\r
156 sgn0 = ((M0 = this.m01) >= 0.0);\r
157 sgn1 = ((M1 = this.m10) >= 0.0);\r
158 if (sgn0 != sgn1) {\r
159 if (M0 != -M1) {\r
160 ret |= (12);\r
161 } else if (M0 != 1.0 && M0 != -1.0) {\r
162 ret |= (10);\r
163 } else {\r
164 ret |= 8;\r
165 }} else {\r
166 if (M0 == M1) {\r
167 ret |= (74);\r
168 } else {\r
169 ret |= (76);\r
170 }}break;\r
171 case (3):\r
172 ret = 1;\r
173 case (2):\r
174 sgn0 = ((M0 = this.m00) >= 0.0);\r
175 sgn1 = ((M1 = this.m11) >= 0.0);\r
176 if (sgn0 == sgn1) {\r
177 if (sgn0) {\r
178 if (M0 == M1) {\r
179 ret |= 2;\r
180 } else {\r
181 ret |= 4;\r
182 }} else {\r
183 if (M0 != M1) {\r
184 ret |= (12);\r
185 } else if (M0 != -1.0) {\r
186 ret |= (10);\r
187 } else {\r
188 ret |= 8;\r
189 }}} else {\r
190 if (M0 == -M1) {\r
191 if (M0 == 1.0 || M0 == -1.0) {\r
192 ret |= 64;\r
193 } else {\r
194 ret |= (66);\r
195 }} else {\r
196 ret |= (68);\r
197 }}break;\r
198 case (1):\r
199 ret = 1;\r
200 break;\r
201 case (0):\r
202 break;\r
203 }\r
204 this.type = ret;\r
205 });\r
206 Clazz.defineMethod (c$, "getDeterminant", \r
207 function () {\r
208 switch (this.state) {\r
209 default:\r
210 this.stateError ();\r
211 case (7):\r
212 case (6):\r
213 return this.m00 * this.m11 - this.m01 * this.m10;\r
214 case (5):\r
215 case (4):\r
216 return -(this.m01 * this.m10);\r
217 case (3):\r
218 case (2):\r
219 return this.m00 * this.m11;\r
220 case (1):\r
221 case (0):\r
222 return 1.0;\r
223 }\r
224 });\r
225 Clazz.defineMethod (c$, "updateState", \r
226 function () {\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
230 this.state = 0;\r
231 this.type = 0;\r
232 } else {\r
233 this.state = 1;\r
234 this.type = 1;\r
235 }} else {\r
236 if (this.m02 == 0.0 && this.m12 == 0.0) {\r
237 this.state = 2;\r
238 this.type = -1;\r
239 } else {\r
240 this.state = (3);\r
241 this.type = -1;\r
242 }}} else {\r
243 if (this.m00 == 0.0 && this.m11 == 0.0) {\r
244 if (this.m02 == 0.0 && this.m12 == 0.0) {\r
245 this.state = 4;\r
246 this.type = -1;\r
247 } else {\r
248 this.state = (5);\r
249 this.type = -1;\r
250 }} else {\r
251 if (this.m02 == 0.0 && this.m12 == 0.0) {\r
252 this.state = (6);\r
253 this.type = -1;\r
254 } else {\r
255 this.state = (7);\r
256 this.type = -1;\r
257 }}}});\r
258 Clazz.defineMethod (c$, "stateError", \r
259  function () {\r
260 throw  new InternalError ("missing case in transform state switch");\r
261 });\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
271 }}, "~A");\r
272 Clazz.defineMethod (c$, "getScaleX", \r
273 function () {\r
274 return this.m00;\r
275 });\r
276 Clazz.defineMethod (c$, "getScaleY", \r
277 function () {\r
278 return this.m11;\r
279 });\r
280 Clazz.defineMethod (c$, "getShearX", \r
281 function () {\r
282 return this.m01;\r
283 });\r
284 Clazz.defineMethod (c$, "getShearY", \r
285 function () {\r
286 return this.m10;\r
287 });\r
288 Clazz.defineMethod (c$, "getTranslateX", \r
289 function () {\r
290 return this.m02;\r
291 });\r
292 Clazz.defineMethod (c$, "getTranslateY", \r
293 function () {\r
294 return this.m12;\r
295 });\r
296 Clazz.defineMethod (c$, "translate", \r
297 function (tx, ty) {\r
298 switch (this.state) {\r
299 default:\r
300 this.stateError ();\r
301 case (7):\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
305 this.state = 6;\r
306 if (this.type != -1) {\r
307 this.type -= 1;\r
308 }}return;\r
309 case (6):\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
313 this.state = 7;\r
314 this.type |= 1;\r
315 }return;\r
316 case (5):\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
320 this.state = 4;\r
321 if (this.type != -1) {\r
322 this.type -= 1;\r
323 }}return;\r
324 case (4):\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
328 this.state = 5;\r
329 this.type |= 1;\r
330 }return;\r
331 case (3):\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
335 this.state = 2;\r
336 if (this.type != -1) {\r
337 this.type -= 1;\r
338 }}return;\r
339 case (2):\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
343 this.state = 3;\r
344 this.type |= 1;\r
345 }return;\r
346 case (1):\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
350 this.state = 0;\r
351 this.type = 0;\r
352 }return;\r
353 case (0):\r
354 this.m02 = tx;\r
355 this.m12 = ty;\r
356 if (tx != 0.0 || ty != 0.0) {\r
357 this.state = 1;\r
358 this.type = 1;\r
359 }return;\r
360 }\r
361 }, "~N,~N");\r
362 Clazz.defineMethod (c$, "rotate90", \r
363  function () {\r
364 var M0 = this.m00;\r
365 this.m00 = this.m01;\r
366 this.m01 = -M0;\r
367 M0 = this.m10;\r
368 this.m10 = this.m11;\r
369 this.m11 = -M0;\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
372 state -= 2;\r
373 }this.state = state;\r
374 this.type = -1;\r
375 });\r
376 Clazz.defineMethod (c$, "rotate180", \r
377  function () {\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
384 } else {\r
385 if (this.m00 == 1.0 && this.m11 == 1.0) {\r
386 this.state = state & -3;\r
387 } else {\r
388 this.state = state | 2;\r
389 }}this.type = -1;\r
390 });\r
391 Clazz.defineMethod (c$, "rotate270", \r
392  function () {\r
393 var M0 = this.m00;\r
394 this.m00 = -this.m01;\r
395 this.m01 = M0;\r
396 M0 = this.m10;\r
397 this.m10 = -this.m11;\r
398 this.m11 = M0;\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
401 state -= 2;\r
402 }this.state = state;\r
403 this.type = -1;\r
404 });\r
405 Clazz.defineMethod (c$, "rotate", \r
406 function (theta) {\r
407 var sin = Math.sin (theta);\r
408 if (sin == 1.0) {\r
409 this.rotate90 ();\r
410 } else if (sin == -1.0) {\r
411 this.rotate270 ();\r
412 } else {\r
413 var cos = Math.cos (theta);\r
414 if (cos == -1.0) {\r
415 this.rotate180 ();\r
416 } else if (cos != 1.0) {\r
417 var M0;\r
418 var M1;\r
419 M0 = this.m00;\r
420 M1 = this.m01;\r
421 this.m00 = cos * M0 + sin * M1;\r
422 this.m01 = -sin * M0 + cos * M1;\r
423 M0 = this.m10;\r
424 M1 = this.m11;\r
425 this.m10 = cos * M0 + sin * M1;\r
426 this.m11 = -sin * M0 + cos * M1;\r
427 this.updateState ();\r
428 }}}, "~N");\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
434 }, "~N,~N,~N");\r
435 Clazz.defineMethod (c$, "rotate", \r
436 function (vecx, vecy) {\r
437 if (vecy == 0.0) {\r
438 if (vecx < 0.0) {\r
439 this.rotate180 ();\r
440 }} else if (vecx == 0.0) {\r
441 if (vecy > 0.0) {\r
442 this.rotate90 ();\r
443 } else {\r
444 this.rotate270 ();\r
445 }} else {\r
446 var len = Math.sqrt (vecx * vecx + vecy * vecy);\r
447 var sin = vecy / len;\r
448 var cos = vecx / len;\r
449 var M0;\r
450 var M1;\r
451 M0 = this.m00;\r
452 M1 = this.m01;\r
453 this.m00 = cos * M0 + sin * M1;\r
454 this.m01 = -sin * M0 + cos * M1;\r
455 M0 = this.m10;\r
456 M1 = this.m11;\r
457 this.m10 = cos * M0 + sin * M1;\r
458 this.m11 = -sin * M0 + cos * M1;\r
459 this.updateState ();\r
460 }}, "~N,~N");\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
466 }, "~N,~N,~N,~N");\r
467 Clazz.defineMethod (c$, "quadrantRotate", \r
468 function (numquadrants) {\r
469 switch (numquadrants & 3) {\r
470 case 0:\r
471 break;\r
472 case 1:\r
473 this.rotate90 ();\r
474 break;\r
475 case 2:\r
476 this.rotate180 ();\r
477 break;\r
478 case 3:\r
479 this.rotate270 ();\r
480 break;\r
481 }\r
482 }, "~N");\r
483 Clazz.defineMethod (c$, "quadrantRotate", \r
484 function (numquadrants, anchorx, anchory) {\r
485 switch (numquadrants & 3) {\r
486 case 0:\r
487 return;\r
488 case 1:\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
491 this.rotate90 ();\r
492 break;\r
493 case 2:\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
496 this.rotate180 ();\r
497 break;\r
498 case 3:\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
501 this.rotate270 ();\r
502 break;\r
503 }\r
504 if (this.m02 == 0.0 && this.m12 == 0.0) {\r
505 this.state &= -2;\r
506 } else {\r
507 this.state |= 1;\r
508 }}, "~N,~N,~N");\r
509 Clazz.defineMethod (c$, "scale", \r
510 function (sx, sy) {\r
511 var state = this.state;\r
512 switch (state) {\r
513 default:\r
514 this.stateError ();\r
515 case (7):\r
516 case (6):\r
517 this.m00 *= sx;\r
518 this.m11 *= sy;\r
519 case (5):\r
520 case (4):\r
521 this.m01 *= sy;\r
522 this.m10 *= sx;\r
523 if (this.m01 == 0 && this.m10 == 0) {\r
524 state &= 1;\r
525 if (this.m00 == 1.0 && this.m11 == 1.0) {\r
526 this.type = (state == 0 ? 0 : 1);\r
527 } else {\r
528 state |= 2;\r
529 this.type = -1;\r
530 }this.state = state;\r
531 }return;\r
532 case (3):\r
533 case (2):\r
534 this.m00 *= sx;\r
535 this.m11 *= sy;\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
539 } else {\r
540 this.type = -1;\r
541 }return;\r
542 case (1):\r
543 case (0):\r
544 this.m00 = sx;\r
545 this.m11 = sy;\r
546 if (sx != 1.0 || sy != 1.0) {\r
547 this.state = state | 2;\r
548 this.type = -1;\r
549 }return;\r
550 }\r
551 }, "~N,~N");\r
552 Clazz.defineMethod (c$, "shear", \r
553 function (shx, shy) {\r
554 var state = this.state;\r
555 switch (state) {\r
556 default:\r
557 this.stateError ();\r
558 case (7):\r
559 case (6):\r
560 var M0;\r
561 var M1;\r
562 M0 = this.m00;\r
563 M1 = this.m01;\r
564 this.m00 = M0 + M1 * shy;\r
565 this.m01 = M0 * shx + M1;\r
566 M0 = this.m10;\r
567 M1 = this.m11;\r
568 this.m10 = M0 + M1 * shy;\r
569 this.m11 = M0 * shx + M1;\r
570 this.updateState ();\r
571 return;\r
572 case (5):\r
573 case (4):\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
578 }this.type = -1;\r
579 return;\r
580 case (3):\r
581 case (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
586 }this.type = -1;\r
587 return;\r
588 case (1):\r
589 case (0):\r
590 this.m01 = shx;\r
591 this.m10 = shy;\r
592 if (this.m01 != 0.0 || this.m10 != 0.0) {\r
593 this.state = state | 2 | 4;\r
594 this.type = -1;\r
595 }return;\r
596 }\r
597 }, "~N,~N");\r
598 Clazz.defineMethod (c$, "setToIdentity", \r
599 function () {\r
600 this.m00 = this.m11 = 1.0;\r
601 this.m10 = this.m01 = this.m02 = this.m12 = 0.0;\r
602 this.state = 0;\r
603 this.type = 0;\r
604 });\r
605 Clazz.defineMethod (c$, "setToTranslation", \r
606 function (tx, ty) {\r
607 this.m00 = 1.0;\r
608 this.m10 = 0.0;\r
609 this.m01 = 0.0;\r
610 this.m11 = 1.0;\r
611 this.m02 = tx;\r
612 this.m12 = ty;\r
613 if (tx != 0.0 || ty != 0.0) {\r
614 this.state = 1;\r
615 this.type = 1;\r
616 } else {\r
617 this.state = 0;\r
618 this.type = 0;\r
619 }}, "~N,~N");\r
620 Clazz.defineMethod (c$, "setToRotation", \r
621 function (theta) {\r
622 var sin = Math.sin (theta);\r
623 var cos;\r
624 if (sin == 1.0 || sin == -1.0) {\r
625 cos = 0.0;\r
626 this.state = 4;\r
627 this.type = 8;\r
628 } else {\r
629 cos = Math.cos (theta);\r
630 if (cos == -1.0) {\r
631 sin = 0.0;\r
632 this.state = 2;\r
633 this.type = 8;\r
634 } else if (cos == 1.0) {\r
635 sin = 0.0;\r
636 this.state = 0;\r
637 this.type = 0;\r
638 } else {\r
639 this.state = 6;\r
640 this.type = 16;\r
641 }}this.m00 = cos;\r
642 this.m10 = sin;\r
643 this.m01 = -sin;\r
644 this.m11 = cos;\r
645 this.m02 = 0.0;\r
646 this.m12 = 0.0;\r
647 }, "~N");\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
656 this.state |= 1;\r
657 this.type |= 1;\r
658 }}, "~N,~N,~N");\r
659 Clazz.defineMethod (c$, "setToRotation", \r
660 function (vecx, vecy) {\r
661 var sin;\r
662 var cos;\r
663 if (vecy == 0) {\r
664 sin = 0.0;\r
665 if (vecx < 0.0) {\r
666 cos = -1.0;\r
667 this.state = 2;\r
668 this.type = 8;\r
669 } else {\r
670 cos = 1.0;\r
671 this.state = 0;\r
672 this.type = 0;\r
673 }} else if (vecx == 0) {\r
674 cos = 0.0;\r
675 sin = (vecy > 0.0) ? 1.0 : -1.0;\r
676 this.state = 4;\r
677 this.type = 8;\r
678 } else {\r
679 var len = Math.sqrt (vecx * vecx + vecy * vecy);\r
680 cos = vecx / len;\r
681 sin = vecy / len;\r
682 this.state = 6;\r
683 this.type = 16;\r
684 }this.m00 = cos;\r
685 this.m10 = sin;\r
686 this.m01 = -sin;\r
687 this.m11 = cos;\r
688 this.m02 = 0.0;\r
689 this.m12 = 0.0;\r
690 }, "~N,~N");\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
699 this.state |= 1;\r
700 this.type |= 1;\r
701 }}, "~N,~N,~N,~N");\r
702 Clazz.defineMethod (c$, "setToQuadrantRotation", \r
703 function (numquadrants) {\r
704 switch (numquadrants & 3) {\r
705 case 0:\r
706 this.m00 = 1.0;\r
707 this.m10 = 0.0;\r
708 this.m01 = 0.0;\r
709 this.m11 = 1.0;\r
710 this.m02 = 0.0;\r
711 this.m12 = 0.0;\r
712 this.state = 0;\r
713 this.type = 0;\r
714 break;\r
715 case 1:\r
716 this.m00 = 0.0;\r
717 this.m10 = 1.0;\r
718 this.m01 = -1.0;\r
719 this.m11 = 0.0;\r
720 this.m02 = 0.0;\r
721 this.m12 = 0.0;\r
722 this.state = 4;\r
723 this.type = 8;\r
724 break;\r
725 case 2:\r
726 this.m00 = -1.0;\r
727 this.m10 = 0.0;\r
728 this.m01 = 0.0;\r
729 this.m11 = -1.0;\r
730 this.m02 = 0.0;\r
731 this.m12 = 0.0;\r
732 this.state = 2;\r
733 this.type = 8;\r
734 break;\r
735 case 3:\r
736 this.m00 = 0.0;\r
737 this.m10 = -1.0;\r
738 this.m01 = 1.0;\r
739 this.m11 = 0.0;\r
740 this.m02 = 0.0;\r
741 this.m12 = 0.0;\r
742 this.state = 4;\r
743 this.type = 8;\r
744 break;\r
745 }\r
746 }, "~N");\r
747 Clazz.defineMethod (c$, "setToQuadrantRotation", \r
748 function (numquadrants, anchorx, anchory) {\r
749 switch (numquadrants & 3) {\r
750 case 0:\r
751 this.m00 = 1.0;\r
752 this.m10 = 0.0;\r
753 this.m01 = 0.0;\r
754 this.m11 = 1.0;\r
755 this.m02 = 0.0;\r
756 this.m12 = 0.0;\r
757 this.state = 0;\r
758 this.type = 0;\r
759 break;\r
760 case 1:\r
761 this.m00 = 0.0;\r
762 this.m10 = 1.0;\r
763 this.m01 = -1.0;\r
764 this.m11 = 0.0;\r
765 this.m02 = anchorx + anchory;\r
766 this.m12 = anchory - anchorx;\r
767 if (this.m02 == 0.0 && this.m12 == 0.0) {\r
768 this.state = 4;\r
769 this.type = 8;\r
770 } else {\r
771 this.state = 5;\r
772 this.type = 9;\r
773 }break;\r
774 case 2:\r
775 this.m00 = -1.0;\r
776 this.m10 = 0.0;\r
777 this.m01 = 0.0;\r
778 this.m11 = -1.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
782 this.state = 2;\r
783 this.type = 8;\r
784 } else {\r
785 this.state = 3;\r
786 this.type = 9;\r
787 }break;\r
788 case 3:\r
789 this.m00 = 0.0;\r
790 this.m10 = -1.0;\r
791 this.m01 = 1.0;\r
792 this.m11 = 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
796 this.state = 4;\r
797 this.type = 8;\r
798 } else {\r
799 this.state = 5;\r
800 this.type = 9;\r
801 }break;\r
802 }\r
803 }, "~N,~N,~N");\r
804 Clazz.defineMethod (c$, "setToScale", \r
805 function (sx, sy) {\r
806 this.m00 = sx;\r
807 this.m10 = 0.0;\r
808 this.m01 = 0.0;\r
809 this.m11 = sy;\r
810 this.m02 = 0.0;\r
811 this.m12 = 0.0;\r
812 if (sx != 1.0 || sy != 1.0) {\r
813 this.state = 2;\r
814 this.type = -1;\r
815 } else {\r
816 this.state = 0;\r
817 this.type = 0;\r
818 }}, "~N,~N");\r
819 Clazz.defineMethod (c$, "setToShear", \r
820 function (shx, shy) {\r
821 this.m00 = 1.0;\r
822 this.m01 = shx;\r
823 this.m10 = shy;\r
824 this.m11 = 1.0;\r
825 this.m02 = 0.0;\r
826 this.m12 = 0.0;\r
827 if (shx != 0.0 || shy != 0.0) {\r
828 this.state = (6);\r
829 this.type = -1;\r
830 } else {\r
831 this.state = 0;\r
832 this.type = 0;\r
833 }}, "~N,~N");\r
834 Clazz.defineMethod (c$, "setTransform", \r
835 function (Tx) {\r
836 this.m00 = Tx.m00;\r
837 this.m10 = Tx.m10;\r
838 this.m01 = Tx.m01;\r
839 this.m11 = Tx.m11;\r
840 this.m02 = Tx.m02;\r
841 this.m12 = Tx.m12;\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
847 this.m00 = m00;\r
848 this.m10 = m10;\r
849 this.m01 = m01;\r
850 this.m11 = m11;\r
851 this.m02 = m02;\r
852 this.m12 = m12;\r
853 this.updateState ();\r
854 }, "~N,~N,~N,~N,~N,~N");\r
855 Clazz.defineMethod (c$, "concatenate", \r
856 function (Tx) {\r
857 var M0;\r
858 var M1;\r
859 var T00;\r
860 var T01;\r
861 var T10;\r
862 var T11;\r
863 var T02;\r
864 var T12;\r
865 var mystate = this.state;\r
866 var txstate = Tx.state;\r
867 switch ((txstate << 3) | mystate) {\r
868 case (0):\r
869 case (1):\r
870 case (2):\r
871 case (3):\r
872 case (4):\r
873 case (5):\r
874 case (6):\r
875 case (7):\r
876 return;\r
877 case (56):\r
878 this.m01 = Tx.m01;\r
879 this.m10 = Tx.m10;\r
880 case (24):\r
881 this.m00 = Tx.m00;\r
882 this.m11 = Tx.m11;\r
883 case (8):\r
884 this.m02 = Tx.m02;\r
885 this.m12 = Tx.m12;\r
886 this.state = txstate;\r
887 this.type = Tx.type;\r
888 return;\r
889 case (48):\r
890 this.m01 = Tx.m01;\r
891 this.m10 = Tx.m10;\r
892 case (16):\r
893 this.m00 = Tx.m00;\r
894 this.m11 = Tx.m11;\r
895 this.state = txstate;\r
896 this.type = Tx.type;\r
897 return;\r
898 case (40):\r
899 this.m02 = Tx.m02;\r
900 this.m12 = Tx.m12;\r
901 case (32):\r
902 this.m01 = Tx.m01;\r
903 this.m10 = Tx.m10;\r
904 this.m00 = this.m11 = 0.0;\r
905 this.state = txstate;\r
906 this.type = Tx.type;\r
907 return;\r
908 case (15):\r
909 case (14):\r
910 case (13):\r
911 case (12):\r
912 case (11):\r
913 case (10):\r
914 case (9):\r
915 this.translate (Tx.m02, Tx.m12);\r
916 return;\r
917 case (23):\r
918 case (22):\r
919 case (21):\r
920 case (20):\r
921 case (19):\r
922 case (18):\r
923 case (17):\r
924 this.scale (Tx.m00, Tx.m11);\r
925 return;\r
926 case (39):\r
927 case (38):\r
928 T01 = Tx.m01;\r
929 T10 = Tx.m10;\r
930 M0 = this.m00;\r
931 this.m00 = this.m01 * T10;\r
932 this.m01 = M0 * T01;\r
933 M0 = this.m10;\r
934 this.m10 = this.m11 * T10;\r
935 this.m11 = M0 * T01;\r
936 this.type = -1;\r
937 return;\r
938 case (37):\r
939 case (36):\r
940 this.m00 = this.m01 * Tx.m10;\r
941 this.m01 = 0.0;\r
942 this.m11 = this.m10 * Tx.m01;\r
943 this.m10 = 0.0;\r
944 this.state = mystate ^ (6);\r
945 this.type = -1;\r
946 return;\r
947 case (35):\r
948 case (34):\r
949 this.m01 = this.m00 * Tx.m01;\r
950 this.m00 = 0.0;\r
951 this.m10 = this.m11 * Tx.m10;\r
952 this.m11 = 0.0;\r
953 this.state = mystate ^ (6);\r
954 this.type = -1;\r
955 return;\r
956 case (33):\r
957 this.m00 = 0.0;\r
958 this.m01 = Tx.m01;\r
959 this.m10 = Tx.m10;\r
960 this.m11 = 0.0;\r
961 this.state = 5;\r
962 this.type = -1;\r
963 return;\r
964 }\r
965 T00 = Tx.m00;\r
966 T01 = Tx.m01;\r
967 T02 = Tx.m02;\r
968 T10 = Tx.m10;\r
969 T11 = Tx.m11;\r
970 T12 = Tx.m12;\r
971 switch (mystate) {\r
972 default:\r
973 this.stateError ();\r
974 case (6):\r
975 this.state = mystate | txstate;\r
976 case (7):\r
977 M0 = this.m00;\r
978 M1 = this.m01;\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
982 M0 = this.m10;\r
983 M1 = this.m11;\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
987 this.type = -1;\r
988 return;\r
989 case (5):\r
990 case (4):\r
991 M0 = this.m01;\r
992 this.m00 = T10 * M0;\r
993 this.m01 = T11 * M0;\r
994 this.m02 += T12 * M0;\r
995 M0 = this.m10;\r
996 this.m10 = T00 * M0;\r
997 this.m11 = T01 * M0;\r
998 this.m12 += T02 * M0;\r
999 break;\r
1000 case (3):\r
1001 case (2):\r
1002 M0 = this.m00;\r
1003 this.m00 = T00 * M0;\r
1004 this.m01 = T01 * M0;\r
1005 this.m02 += T02 * M0;\r
1006 M0 = this.m11;\r
1007 this.m10 = T10 * M0;\r
1008 this.m11 = T11 * M0;\r
1009 this.m12 += T12 * M0;\r
1010 break;\r
1011 case (1):\r
1012 this.m00 = T00;\r
1013 this.m01 = T01;\r
1014 this.m02 += T02;\r
1015 this.m10 = T10;\r
1016 this.m11 = T11;\r
1017 this.m12 += T12;\r
1018 this.state = txstate | 1;\r
1019 this.type = -1;\r
1020 return;\r
1021 }\r
1022 this.updateState ();\r
1023 }, "java.awt.geom.AffineTransform");\r
1024 Clazz.defineMethod (c$, "preConcatenate", \r
1025 function (Tx) {\r
1026 var M0;\r
1027 var M1;\r
1028 var T00;\r
1029 var T01;\r
1030 var T10;\r
1031 var T11;\r
1032 var T02;\r
1033 var T12;\r
1034 var mystate = this.state;\r
1035 var txstate = Tx.state;\r
1036 switch ((txstate << 3) | mystate) {\r
1037 case (0):\r
1038 case (1):\r
1039 case (2):\r
1040 case (3):\r
1041 case (4):\r
1042 case (5):\r
1043 case (6):\r
1044 case (7):\r
1045 return;\r
1046 case (8):\r
1047 case (10):\r
1048 case (12):\r
1049 case (14):\r
1050 this.m02 = Tx.m02;\r
1051 this.m12 = Tx.m12;\r
1052 this.state = mystate | 1;\r
1053 this.type |= 1;\r
1054 return;\r
1055 case (9):\r
1056 case (11):\r
1057 case (13):\r
1058 case (15):\r
1059 this.m02 = this.m02 + Tx.m02;\r
1060 this.m12 = this.m12 + Tx.m12;\r
1061 return;\r
1062 case (17):\r
1063 case (16):\r
1064 this.state = mystate | 2;\r
1065 case (23):\r
1066 case (22):\r
1067 case (21):\r
1068 case (20):\r
1069 case (19):\r
1070 case (18):\r
1071 T00 = Tx.m00;\r
1072 T11 = Tx.m11;\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
1079 }} else {\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
1085 }this.type = -1;\r
1086 return;\r
1087 case (37):\r
1088 case (36):\r
1089 mystate = mystate | 2;\r
1090 case (33):\r
1091 case (32):\r
1092 case (35):\r
1093 case (34):\r
1094 this.state = mystate ^ 4;\r
1095 case (39):\r
1096 case (38):\r
1097 T01 = Tx.m01;\r
1098 T10 = Tx.m10;\r
1099 M0 = this.m00;\r
1100 this.m00 = this.m10 * T01;\r
1101 this.m10 = M0 * T10;\r
1102 M0 = this.m01;\r
1103 this.m01 = this.m11 * T01;\r
1104 this.m11 = M0 * T10;\r
1105 M0 = this.m02;\r
1106 this.m02 = this.m12 * T01;\r
1107 this.m12 = M0 * T10;\r
1108 this.type = -1;\r
1109 return;\r
1110 }\r
1111 T00 = Tx.m00;\r
1112 T01 = Tx.m01;\r
1113 T02 = Tx.m02;\r
1114 T10 = Tx.m10;\r
1115 T11 = Tx.m11;\r
1116 T12 = Tx.m12;\r
1117 switch (mystate) {\r
1118 default:\r
1119 this.stateError ();\r
1120 case (7):\r
1121 M0 = this.m02;\r
1122 M1 = this.m12;\r
1123 T02 += M0 * T00 + M1 * T01;\r
1124 T12 += M0 * T10 + M1 * T11;\r
1125 case (6):\r
1126 this.m02 = T02;\r
1127 this.m12 = T12;\r
1128 M0 = this.m00;\r
1129 M1 = this.m10;\r
1130 this.m00 = M0 * T00 + M1 * T01;\r
1131 this.m10 = M0 * T10 + M1 * T11;\r
1132 M0 = this.m01;\r
1133 M1 = this.m11;\r
1134 this.m01 = M0 * T00 + M1 * T01;\r
1135 this.m11 = M0 * T10 + M1 * T11;\r
1136 break;\r
1137 case (5):\r
1138 M0 = this.m02;\r
1139 M1 = this.m12;\r
1140 T02 += M0 * T00 + M1 * T01;\r
1141 T12 += M0 * T10 + M1 * T11;\r
1142 case (4):\r
1143 this.m02 = T02;\r
1144 this.m12 = T12;\r
1145 M0 = this.m10;\r
1146 this.m00 = M0 * T01;\r
1147 this.m10 = M0 * T11;\r
1148 M0 = this.m01;\r
1149 this.m01 = M0 * T00;\r
1150 this.m11 = M0 * T10;\r
1151 break;\r
1152 case (3):\r
1153 M0 = this.m02;\r
1154 M1 = this.m12;\r
1155 T02 += M0 * T00 + M1 * T01;\r
1156 T12 += M0 * T10 + M1 * T11;\r
1157 case (2):\r
1158 this.m02 = T02;\r
1159 this.m12 = T12;\r
1160 M0 = this.m00;\r
1161 this.m00 = M0 * T00;\r
1162 this.m10 = M0 * T10;\r
1163 M0 = this.m11;\r
1164 this.m01 = M0 * T01;\r
1165 this.m11 = M0 * T11;\r
1166 break;\r
1167 case (1):\r
1168 M0 = this.m02;\r
1169 M1 = this.m12;\r
1170 T02 += M0 * T00 + M1 * T01;\r
1171 T12 += M0 * T10 + M1 * T11;\r
1172 case (0):\r
1173 this.m02 = T02;\r
1174 this.m12 = T12;\r
1175 this.m00 = T00;\r
1176 this.m10 = T10;\r
1177 this.m01 = T01;\r
1178 this.m11 = T11;\r
1179 this.state = mystate | txstate;\r
1180 this.type = -1;\r
1181 return;\r
1182 }\r
1183 this.updateState ();\r
1184 }, "java.awt.geom.AffineTransform");\r
1185 Clazz.defineMethod (c$, "createInverse", \r
1186 function () {\r
1187 var det;\r
1188 switch (this.state) {\r
1189 default:\r
1190 this.stateError ();\r
1191 case (7):\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
1196 case (6):\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
1201 case (5):\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
1205 case (4):\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
1209 case (3):\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
1213 case (2):\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
1217 case (1):\r
1218 return  new java.awt.geom.AffineTransform (1.0, 0.0, 0.0, 1.0, -this.m02, -this.m12, (1));\r
1219 case (0):\r
1220 return  new java.awt.geom.AffineTransform ();\r
1221 }\r
1222 });\r
1223 Clazz.defineMethod (c$, "invert", \r
1224 function () {\r
1225 var M00;\r
1226 var M01;\r
1227 var M02;\r
1228 var M10;\r
1229 var M11;\r
1230 var M12;\r
1231 var det;\r
1232 switch (this.state) {\r
1233 default:\r
1234 this.stateError ();\r
1235 case (7):\r
1236 M00 = this.m00;\r
1237 M01 = this.m01;\r
1238 M02 = this.m02;\r
1239 M10 = this.m10;\r
1240 M11 = this.m11;\r
1241 M12 = this.m12;\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
1251 break;\r
1252 case (6):\r
1253 M00 = this.m00;\r
1254 M01 = this.m01;\r
1255 M10 = this.m10;\r
1256 M11 = this.m11;\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
1264 break;\r
1265 case (5):\r
1266 M01 = this.m01;\r
1267 M02 = this.m02;\r
1268 M10 = this.m10;\r
1269 M12 = this.m12;\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
1276 break;\r
1277 case (4):\r
1278 M01 = this.m01;\r
1279 M10 = this.m10;\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
1284 break;\r
1285 case (3):\r
1286 M00 = this.m00;\r
1287 M02 = this.m02;\r
1288 M11 = this.m11;\r
1289 M12 = this.m12;\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
1296 break;\r
1297 case (2):\r
1298 M00 = this.m00;\r
1299 M11 = this.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
1304 break;\r
1305 case (1):\r
1306 this.m02 = -this.m02;\r
1307 this.m12 = -this.m12;\r
1308 break;\r
1309 case (0):\r
1310 break;\r
1311 }\r
1312 });\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
1318 } else {\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
1323 default:\r
1324 this.stateError ();\r
1325 case (7):\r
1326 ptDst.setLocation (x * this.m00 + y * this.m01 + this.m02, x * this.m10 + y * this.m11 + this.m12);\r
1327 return ptDst;\r
1328 case (6):\r
1329 ptDst.setLocation (x * this.m00 + y * this.m01, x * this.m10 + y * this.m11);\r
1330 return ptDst;\r
1331 case (5):\r
1332 ptDst.setLocation (y * this.m01 + this.m02, x * this.m10 + this.m12);\r
1333 return ptDst;\r
1334 case (4):\r
1335 ptDst.setLocation (y * this.m01, x * this.m10);\r
1336 return ptDst;\r
1337 case (3):\r
1338 ptDst.setLocation (x * this.m00 + this.m02, y * this.m11 + this.m12);\r
1339 return ptDst;\r
1340 case (2):\r
1341 ptDst.setLocation (x * this.m00, y * this.m11);\r
1342 return ptDst;\r
1343 case (1):\r
1344 ptDst.setLocation (x + this.m02, y + this.m12);\r
1345 return ptDst;\r
1346 case (0):\r
1347 ptDst.setLocation (x, y);\r
1348 return ptDst;\r
1349 }\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
1355 var src = srcPts;\r
1356 var dst = dstPts;\r
1357 this.transform (src, srcOff, dst, dstOff, numPts);\r
1358 return;\r
1359 }var M00;\r
1360 var M01;\r
1361 var M02;\r
1362 var M10;\r
1363 var M11;\r
1364 var M12;\r
1365 if (dstPts === srcPts && dstOff > srcOff && dstOff < srcOff + numPts * 2) {\r
1366 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);\r
1367 srcOff = dstOff;\r
1368 }switch (this.state) {\r
1369 default:\r
1370 this.stateError ();\r
1371 case (7):\r
1372 M00 = this.m00;\r
1373 M01 = this.m01;\r
1374 M02 = this.m02;\r
1375 M10 = this.m10;\r
1376 M11 = this.m11;\r
1377 M12 = this.m12;\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
1383 }\r
1384 return;\r
1385 case (6):\r
1386 M00 = this.m00;\r
1387 M01 = this.m01;\r
1388 M10 = this.m10;\r
1389 M11 = this.m11;\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
1395 }\r
1396 return;\r
1397 case (5):\r
1398 M01 = this.m01;\r
1399 M02 = this.m02;\r
1400 M10 = this.m10;\r
1401 M12 = this.m12;\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
1406 }\r
1407 return;\r
1408 case (4):\r
1409 M01 = this.m01;\r
1410 M10 = this.m10;\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
1415 }\r
1416 return;\r
1417 case (3):\r
1418 M00 = this.m00;\r
1419 M02 = this.m02;\r
1420 M11 = this.m11;\r
1421 M12 = this.m12;\r
1422 while (--numPts >= 0) {\r
1423 dstPts[dstOff++] = M00 * srcPts[srcOff++] + M02;\r
1424 dstPts[dstOff++] = M11 * srcPts[srcOff++] + M12;\r
1425 }\r
1426 return;\r
1427 case (2):\r
1428 M00 = this.m00;\r
1429 M11 = this.m11;\r
1430 while (--numPts >= 0) {\r
1431 dstPts[dstOff++] = M00 * srcPts[srcOff++];\r
1432 dstPts[dstOff++] = M11 * srcPts[srcOff++];\r
1433 }\r
1434 return;\r
1435 case (1):\r
1436 M02 = this.m02;\r
1437 M12 = this.m12;\r
1438 while (--numPts >= 0) {\r
1439 dstPts[dstOff++] = srcPts[srcOff++] + M02;\r
1440 dstPts[dstOff++] = srcPts[srcOff++] + M12;\r
1441 }\r
1442 return;\r
1443 case (0):\r
1444 if (srcPts !== dstPts || srcOff != dstOff) {\r
1445 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);\r
1446 }return;\r
1447 }\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
1454 } else {\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
1459 default:\r
1460 this.stateError ();\r
1461 case (7):\r
1462 x -= this.m02;\r
1463 y -= this.m12;\r
1464 case (6):\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
1469 return ptDst;\r
1470 case (5):\r
1471 x -= this.m02;\r
1472 y -= this.m12;\r
1473 case (4):\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
1477 return ptDst;\r
1478 case (3):\r
1479 x -= this.m02;\r
1480 y -= this.m12;\r
1481 case (2):\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
1485 return ptDst;\r
1486 case (1):\r
1487 ptDst.setLocation (x - this.m02, y - this.m12);\r
1488 return ptDst;\r
1489 case (0):\r
1490 ptDst.setLocation (x, y);\r
1491 return ptDst;\r
1492 }\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
1496 var M00;\r
1497 var M01;\r
1498 var M02;\r
1499 var M10;\r
1500 var M11;\r
1501 var M12;\r
1502 var det;\r
1503 if (dstPts === srcPts && dstOff > srcOff && dstOff < srcOff + numPts * 2) {\r
1504 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);\r
1505 srcOff = dstOff;\r
1506 }switch (this.state) {\r
1507 default:\r
1508 this.stateError ();\r
1509 case (7):\r
1510 M00 = this.m00;\r
1511 M01 = this.m01;\r
1512 M02 = this.m02;\r
1513 M10 = this.m10;\r
1514 M11 = this.m11;\r
1515 M12 = this.m12;\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
1524 }\r
1525 return;\r
1526 case (6):\r
1527 M00 = this.m00;\r
1528 M01 = this.m01;\r
1529 M10 = this.m10;\r
1530 M11 = this.m11;\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
1539 }\r
1540 return;\r
1541 case (5):\r
1542 M01 = this.m01;\r
1543 M02 = this.m02;\r
1544 M10 = this.m10;\r
1545 M12 = this.m12;\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
1552 }\r
1553 return;\r
1554 case (4):\r
1555 M01 = this.m01;\r
1556 M10 = this.m10;\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
1563 }\r
1564 return;\r
1565 case (3):\r
1566 M00 = this.m00;\r
1567 M02 = this.m02;\r
1568 M11 = this.m11;\r
1569 M12 = this.m12;\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
1575 }\r
1576 return;\r
1577 case (2):\r
1578 M00 = this.m00;\r
1579 M11 = this.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
1585 }\r
1586 return;\r
1587 case (1):\r
1588 M02 = this.m02;\r
1589 M12 = this.m12;\r
1590 while (--numPts >= 0) {\r
1591 dstPts[dstOff++] = srcPts[srcOff++] - M02;\r
1592 dstPts[dstOff++] = srcPts[srcOff++] - M12;\r
1593 }\r
1594 return;\r
1595 case (0):\r
1596 if (srcPts !== dstPts || srcOff != dstOff) {\r
1597 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);\r
1598 }return;\r
1599 }\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
1606 } else {\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
1611 default:\r
1612 this.stateError ();\r
1613 case (7):\r
1614 case (6):\r
1615 ptDst.setLocation (x * this.m00 + y * this.m01, x * this.m10 + y * this.m11);\r
1616 return ptDst;\r
1617 case (5):\r
1618 case (4):\r
1619 ptDst.setLocation (y * this.m01, x * this.m10);\r
1620 return ptDst;\r
1621 case (3):\r
1622 case (2):\r
1623 ptDst.setLocation (x * this.m00, y * this.m11);\r
1624 return ptDst;\r
1625 case (1):\r
1626 case (0):\r
1627 ptDst.setLocation (x, y);\r
1628 return ptDst;\r
1629 }\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
1633 var M00;\r
1634 var M01;\r
1635 var M10;\r
1636 var M11;\r
1637 if (dstPts === srcPts && dstOff > srcOff && dstOff < srcOff + numPts * 2) {\r
1638 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);\r
1639 srcOff = dstOff;\r
1640 }switch (this.state) {\r
1641 default:\r
1642 this.stateError ();\r
1643 case (7):\r
1644 case (6):\r
1645 M00 = this.m00;\r
1646 M01 = this.m01;\r
1647 M10 = this.m10;\r
1648 M11 = this.m11;\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
1654 }\r
1655 return;\r
1656 case (5):\r
1657 case (4):\r
1658 M01 = this.m01;\r
1659 M10 = this.m10;\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
1664 }\r
1665 return;\r
1666 case (3):\r
1667 case (2):\r
1668 M00 = this.m00;\r
1669 M11 = this.m11;\r
1670 while (--numPts >= 0) {\r
1671 dstPts[dstOff++] = srcPts[srcOff++] * M00;\r
1672 dstPts[dstOff++] = srcPts[srcOff++] * M11;\r
1673 }\r
1674 return;\r
1675 case (1):\r
1676 case (0):\r
1677 if (srcPts !== dstPts || srcOff != dstOff) {\r
1678 System.arraycopy (srcPts, srcOff, dstPts, dstOff, numPts * 2);\r
1679 }return;\r
1680 }\r
1681 }, "~A,~N,~A,~N,~N");\r
1682 Clazz.defineMethod (c$, "createTransformedShape", \r
1683 function (pSrc) {\r
1684 if (pSrc == null) {\r
1685 return 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
1691 }, "~N");\r
1692 Clazz.overrideMethod (c$, "toString", \r
1693 function () {\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
1695 });\r
1696 Clazz.defineMethod (c$, "isIdentity", \r
1697 function () {\r
1698 return (this.state == 0 || (this.getType () == 0));\r
1699 });\r
1700 Clazz.defineMethod (c$, "clone", \r
1701 function () {\r
1702 try {\r
1703 return Clazz.superCall (this, java.awt.geom.AffineTransform, "clone", []);\r
1704 } catch (e) {\r
1705 if (Clazz.exceptionOf (e, CloneNotSupportedException)) {\r
1706 throw  new InternalError ();\r
1707 } else {\r
1708 throw e;\r
1709 }\r
1710 }\r
1711 });\r
1712 Clazz.overrideMethod (c$, "hashCode", \r
1713 function () {\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
1721 });\r
1722 Clazz.overrideMethod (c$, "equals", \r
1723 function (obj) {\r
1724 if (!(Clazz.instanceOf (obj, java.awt.geom.AffineTransform))) {\r
1725 return false;\r
1726 }var a = obj;\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
1728 }, "~O");\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
1736 "TYPE_FLIP", 64,\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
1743 "APPLY_SCALE", 2,\r
1744 "APPLY_SHEAR", 4,\r
1745 "HI_SHIFT", 3,\r
1746 "HI_IDENTITY", 0,\r
1747 "HI_TRANSLATE", 8,\r
1748 "HI_SCALE", 16,\r
1749 "HI_SHEAR", 32,\r
1750 "rot90conversion",  Clazz.newIntArray (-1, [4, 5, 4, 5, 2, 3, 6, 7]));\r
1751 });\r