JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / java / awt / geom / CubicCurve2D.js
1 Clazz.declarePackage ("java.awt.geom");\r
2 Clazz.load (["java.awt.Shape"], "java.awt.geom.CubicCurve2D", ["java.lang.InternalError", "java.util.Arrays", "java.awt.geom.FlatteningPathIterator", "$.Line2D", "$.Point2D", "$.QuadCurve2D", "$.Rectangle2D", "jssun.awt.geom.Curve", "swingjs.api.Interface"], function () {\r
3 c$ = Clazz.declareType (java.awt.geom, "CubicCurve2D", null, [java.awt.Shape, Cloneable]);\r
4 Clazz.makeConstructor (c$, \r
5 function () {\r
6 });\r
7 Clazz.defineMethod (c$, "setCurve", \r
8 function (coords, offset) {\r
9 this.setCurve (coords[offset + 0], coords[offset + 1], coords[offset + 2], coords[offset + 3], coords[offset + 4], coords[offset + 5], coords[offset + 6], coords[offset + 7]);\r
10 }, "~A,~N");\r
11 Clazz.defineMethod (c$, "setCurve", \r
12 function (p1, cp1, cp2, p2) {\r
13 this.setCurve (p1.getX (), p1.getY (), cp1.getX (), cp1.getY (), cp2.getX (), cp2.getY (), p2.getX (), p2.getY ());\r
14 }, "java.awt.geom.Point2D,java.awt.geom.Point2D,java.awt.geom.Point2D,java.awt.geom.Point2D");\r
15 Clazz.defineMethod (c$, "setCurve", \r
16 function (pts, offset) {\r
17 this.setCurve (pts[offset + 0].getX (), pts[offset + 0].getY (), pts[offset + 1].getX (), pts[offset + 1].getY (), pts[offset + 2].getX (), pts[offset + 2].getY (), pts[offset + 3].getX (), pts[offset + 3].getY ());\r
18 }, "~A,~N");\r
19 Clazz.defineMethod (c$, "setCurve", \r
20 function (c) {\r
21 this.setCurve (c.getX1 (), c.getY1 (), c.getCtrlX1 (), c.getCtrlY1 (), c.getCtrlX2 (), c.getCtrlY2 (), c.getX2 (), c.getY2 ());\r
22 }, "java.awt.geom.CubicCurve2D");\r
23 c$.getFlatnessSq = Clazz.defineMethod (c$, "getFlatnessSq", \r
24 function (x1, y1, ctrlx1, ctrly1, ctrlx2, ctrly2, x2, y2) {\r
25 return Math.max (java.awt.geom.Line2D.ptSegDistSq (x1, y1, x2, y2, ctrlx1, ctrly1), java.awt.geom.Line2D.ptSegDistSq (x1, y1, x2, y2, ctrlx2, ctrly2));\r
26 }, "~N,~N,~N,~N,~N,~N,~N,~N");\r
27 c$.getFlatness = Clazz.defineMethod (c$, "getFlatness", \r
28 function (x1, y1, ctrlx1, ctrly1, ctrlx2, ctrly2, x2, y2) {\r
29 return Math.sqrt (java.awt.geom.CubicCurve2D.getFlatnessSq (x1, y1, ctrlx1, ctrly1, ctrlx2, ctrly2, x2, y2));\r
30 }, "~N,~N,~N,~N,~N,~N,~N,~N");\r
31 c$.getFlatnessSq = Clazz.defineMethod (c$, "getFlatnessSq", \r
32 function (coords, offset) {\r
33 return java.awt.geom.CubicCurve2D.getFlatnessSq (coords[offset + 0], coords[offset + 1], coords[offset + 2], coords[offset + 3], coords[offset + 4], coords[offset + 5], coords[offset + 6], coords[offset + 7]);\r
34 }, "~A,~N");\r
35 c$.getFlatness = Clazz.defineMethod (c$, "getFlatness", \r
36 function (coords, offset) {\r
37 return java.awt.geom.CubicCurve2D.getFlatness (coords[offset + 0], coords[offset + 1], coords[offset + 2], coords[offset + 3], coords[offset + 4], coords[offset + 5], coords[offset + 6], coords[offset + 7]);\r
38 }, "~A,~N");\r
39 Clazz.defineMethod (c$, "getFlatnessSq", \r
40 function () {\r
41 return java.awt.geom.CubicCurve2D.getFlatnessSq (this.getX1 (), this.getY1 (), this.getCtrlX1 (), this.getCtrlY1 (), this.getCtrlX2 (), this.getCtrlY2 (), this.getX2 (), this.getY2 ());\r
42 });\r
43 Clazz.defineMethod (c$, "getFlatness", \r
44 function () {\r
45 return java.awt.geom.CubicCurve2D.getFlatness (this.getX1 (), this.getY1 (), this.getCtrlX1 (), this.getCtrlY1 (), this.getCtrlX2 (), this.getCtrlY2 (), this.getX2 (), this.getY2 ());\r
46 });\r
47 Clazz.defineMethod (c$, "subdivide", \r
48 function (left, right) {\r
49 java.awt.geom.CubicCurve2D.subdivide (this, left, right);\r
50 }, "java.awt.geom.CubicCurve2D,java.awt.geom.CubicCurve2D");\r
51 c$.subdivide = Clazz.defineMethod (c$, "subdivide", \r
52 function (src, left, right) {\r
53 var x1 = src.getX1 ();\r
54 var y1 = src.getY1 ();\r
55 var ctrlx1 = src.getCtrlX1 ();\r
56 var ctrly1 = src.getCtrlY1 ();\r
57 var ctrlx2 = src.getCtrlX2 ();\r
58 var ctrly2 = src.getCtrlY2 ();\r
59 var x2 = src.getX2 ();\r
60 var y2 = src.getY2 ();\r
61 var centerx = (ctrlx1 + ctrlx2) / 2.0;\r
62 var centery = (ctrly1 + ctrly2) / 2.0;\r
63 ctrlx1 = (x1 + ctrlx1) / 2.0;\r
64 ctrly1 = (y1 + ctrly1) / 2.0;\r
65 ctrlx2 = (x2 + ctrlx2) / 2.0;\r
66 ctrly2 = (y2 + ctrly2) / 2.0;\r
67 var ctrlx12 = (ctrlx1 + centerx) / 2.0;\r
68 var ctrly12 = (ctrly1 + centery) / 2.0;\r
69 var ctrlx21 = (ctrlx2 + centerx) / 2.0;\r
70 var ctrly21 = (ctrly2 + centery) / 2.0;\r
71 centerx = (ctrlx12 + ctrlx21) / 2.0;\r
72 centery = (ctrly12 + ctrly21) / 2.0;\r
73 if (left != null) {\r
74 left.setCurve (x1, y1, ctrlx1, ctrly1, ctrlx12, ctrly12, centerx, centery);\r
75 }if (right != null) {\r
76 right.setCurve (centerx, centery, ctrlx21, ctrly21, ctrlx2, ctrly2, x2, y2);\r
77 }}, "java.awt.geom.CubicCurve2D,java.awt.geom.CubicCurve2D,java.awt.geom.CubicCurve2D");\r
78 c$.subdivide = Clazz.defineMethod (c$, "subdivide", \r
79 function (src, srcoff, left, leftoff, right, rightoff) {\r
80 var x1 = src[srcoff + 0];\r
81 var y1 = src[srcoff + 1];\r
82 var ctrlx1 = src[srcoff + 2];\r
83 var ctrly1 = src[srcoff + 3];\r
84 var ctrlx2 = src[srcoff + 4];\r
85 var ctrly2 = src[srcoff + 5];\r
86 var x2 = src[srcoff + 6];\r
87 var y2 = src[srcoff + 7];\r
88 if (left != null) {\r
89 left[leftoff + 0] = x1;\r
90 left[leftoff + 1] = y1;\r
91 }if (right != null) {\r
92 right[rightoff + 6] = x2;\r
93 right[rightoff + 7] = y2;\r
94 }x1 = (x1 + ctrlx1) / 2.0;\r
95 y1 = (y1 + ctrly1) / 2.0;\r
96 x2 = (x2 + ctrlx2) / 2.0;\r
97 y2 = (y2 + ctrly2) / 2.0;\r
98 var centerx = (ctrlx1 + ctrlx2) / 2.0;\r
99 var centery = (ctrly1 + ctrly2) / 2.0;\r
100 ctrlx1 = (x1 + centerx) / 2.0;\r
101 ctrly1 = (y1 + centery) / 2.0;\r
102 ctrlx2 = (x2 + centerx) / 2.0;\r
103 ctrly2 = (y2 + centery) / 2.0;\r
104 centerx = (ctrlx1 + ctrlx2) / 2.0;\r
105 centery = (ctrly1 + ctrly2) / 2.0;\r
106 if (left != null) {\r
107 left[leftoff + 2] = x1;\r
108 left[leftoff + 3] = y1;\r
109 left[leftoff + 4] = ctrlx1;\r
110 left[leftoff + 5] = ctrly1;\r
111 left[leftoff + 6] = centerx;\r
112 left[leftoff + 7] = centery;\r
113 }if (right != null) {\r
114 right[rightoff + 0] = centerx;\r
115 right[rightoff + 1] = centery;\r
116 right[rightoff + 2] = ctrlx2;\r
117 right[rightoff + 3] = ctrly2;\r
118 right[rightoff + 4] = x2;\r
119 right[rightoff + 5] = y2;\r
120 }}, "~A,~N,~A,~N,~A,~N");\r
121 c$.solveCubic = Clazz.defineMethod (c$, "solveCubic", \r
122 function (eqn) {\r
123 return java.awt.geom.CubicCurve2D.solveCubic (eqn, eqn);\r
124 }, "~A");\r
125 c$.solveCubic = Clazz.defineMethod (c$, "solveCubic", \r
126 function (eqn, res) {\r
127 var d = eqn[3];\r
128 if (d == 0.0) {\r
129 return java.awt.geom.QuadCurve2D.solveQuadratic (eqn, res);\r
130 }var a = eqn[2] / d;\r
131 var b = eqn[1] / d;\r
132 var c = eqn[0] / d;\r
133 var roots = 0;\r
134 var Q = (a * a - 3.0 * b) / 9.0;\r
135 var R = (2.0 * a * a * a - 9.0 * a * b + 27.0 * c) / 54.0;\r
136 var R2 = R * R;\r
137 var Q3 = Q * Q * Q;\r
138 a = a / 3.0;\r
139 if (R2 < Q3) {\r
140 var theta = Math.acos (R / Math.sqrt (Q3));\r
141 Q = -2.0 * Math.sqrt (Q);\r
142 if (res === eqn) {\r
143 eqn =  Clazz.newDoubleArray (4, 0);\r
144 System.arraycopy (res, 0, eqn, 0, 4);\r
145 }res[roots++] = Q * Math.cos (theta / 3.0) - a;\r
146 res[roots++] = Q * Math.cos ((theta + 6.283185307179586) / 3.0) - a;\r
147 res[roots++] = Q * Math.cos ((theta - 6.283185307179586) / 3.0) - a;\r
148 java.awt.geom.CubicCurve2D.fixRoots (res, eqn);\r
149 } else {\r
150 var neg = (R < 0.0);\r
151 var S = Math.sqrt (R2 - Q3);\r
152 if (neg) {\r
153 R = -R;\r
154 }var A = Math.pow (R + S, 0.3333333333333333);\r
155 if (!neg) {\r
156 A = -A;\r
157 }var B = (A == 0.0) ? 0.0 : (Q / A);\r
158 res[roots++] = (A + B) - a;\r
159 }return roots;\r
160 }, "~A,~A");\r
161 c$.fixRoots = Clazz.defineMethod (c$, "fixRoots", \r
162  function (res, eqn) {\r
163 var EPSILON = 1E-5;\r
164 for (var i = 0; i < 3; i++) {\r
165 var t = res[i];\r
166 if (Math.abs (t) < 1.0E-5) {\r
167 res[i] = java.awt.geom.CubicCurve2D.findZero (t, 0, eqn);\r
168 } else if (Math.abs (t - 1) < 1.0E-5) {\r
169 res[i] = java.awt.geom.CubicCurve2D.findZero (t, 1, eqn);\r
170 }}\r
171 }, "~A,~A");\r
172 c$.solveEqn = Clazz.defineMethod (c$, "solveEqn", \r
173  function (eqn, order, t) {\r
174 var v = eqn[order];\r
175 while (--order >= 0) {\r
176 v = v * t + eqn[order];\r
177 }\r
178 return v;\r
179 }, "~A,~N,~N");\r
180 c$.findZero = Clazz.defineMethod (c$, "findZero", \r
181  function (t, target, eqn) {\r
182 var slopeqn =  Clazz.newDoubleArray (-1, [eqn[1], 2 * eqn[2], 3 * eqn[3]]);\r
183 var slope;\r
184 var origdelta = 0;\r
185 var origt = t;\r
186 while (true) {\r
187 slope = java.awt.geom.CubicCurve2D.solveEqn (slopeqn, 2, t);\r
188 if (slope == 0) {\r
189 return t;\r
190 }var y = java.awt.geom.CubicCurve2D.solveEqn (eqn, 3, t);\r
191 if (y == 0) {\r
192 return t;\r
193 }var delta = -(y / slope);\r
194 if (origdelta == 0) {\r
195 origdelta = delta;\r
196 }if (t < target) {\r
197 if (delta < 0) return t;\r
198 } else if (t > target) {\r
199 if (delta > 0) return t;\r
200 } else {\r
201 return (delta > 0 ? (target + 4.9E-324) : (target - 4.9E-324));\r
202 }var newt = t + delta;\r
203 if (t == newt) {\r
204 return t;\r
205 }if (delta * origdelta < 0) {\r
206 var tag = (origt < t ? java.awt.geom.CubicCurve2D.getTag (target, origt, t) : java.awt.geom.CubicCurve2D.getTag (target, t, origt));\r
207 if (tag != 0) {\r
208 return (origt + t) / 2;\r
209 }t = target;\r
210 } else {\r
211 t = newt;\r
212 }}\r
213 }, "~N,~N,~A");\r
214 Clazz.defineMethod (c$, "contains", \r
215 function (x, y) {\r
216 if (!(x * 0.0 + y * 0.0 == 0.0)) {\r
217 return false;\r
218 }var x1 = this.getX1 ();\r
219 var y1 = this.getY1 ();\r
220 var x2 = this.getX2 ();\r
221 var y2 = this.getY2 ();\r
222 var crossings = (jssun.awt.geom.Curve.pointCrossingsForLine (x, y, x1, y1, x2, y2) + jssun.awt.geom.Curve.pointCrossingsForCubic (x, y, x1, y1, this.getCtrlX1 (), this.getCtrlY1 (), this.getCtrlX2 (), this.getCtrlY2 (), x2, y2, 0));\r
223 return ((crossings & 1) == 1);\r
224 }, "~N,~N");\r
225 Clazz.defineMethod (c$, "contains", \r
226 function (p) {\r
227 return this.contains (p.getX (), p.getY ());\r
228 }, "java.awt.geom.Point2D");\r
229 c$.fillEqn = Clazz.defineMethod (c$, "fillEqn", \r
230  function (eqn, val, c1, cp1, cp2, c2) {\r
231 eqn[0] = c1 - val;\r
232 eqn[1] = (cp1 - c1) * 3.0;\r
233 eqn[2] = (cp2 - cp1 - cp1 + c1) * 3.0;\r
234 eqn[3] = c2 + (cp1 - cp2) * 3.0 - c1;\r
235 return;\r
236 }, "~A,~N,~N,~N,~N,~N");\r
237 c$.evalCubic = Clazz.defineMethod (c$, "evalCubic", \r
238  function (vals, num, include0, include1, inflect, c1, cp1, cp2, c2) {\r
239 var j = 0;\r
240 for (var i = 0; i < num; i++) {\r
241 var t = vals[i];\r
242 if ((include0 ? t >= 0 : t > 0) && (include1 ? t <= 1 : t < 1) && (inflect == null || inflect[1] + (2 * inflect[2] + 3 * inflect[3] * t) * t != 0)) {\r
243 var u = 1 - t;\r
244 vals[j++] = c1 * u * u * u + 3 * cp1 * t * u * u + 3 * cp2 * t * t * u + c2 * t * t * t;\r
245 }}\r
246 return j;\r
247 }, "~A,~N,~B,~B,~A,~N,~N,~N,~N");\r
248 c$.getTag = Clazz.defineMethod (c$, "getTag", \r
249  function (coord, low, high) {\r
250 if (coord <= low) {\r
251 return (coord < low ? -2 : -1);\r
252 }if (coord >= high) {\r
253 return (coord > high ? 2 : 1);\r
254 }return 0;\r
255 }, "~N,~N,~N");\r
256 c$.inwards = Clazz.defineMethod (c$, "inwards", \r
257  function (pttag, opt1tag, opt2tag) {\r
258 switch (pttag) {\r
259 case -2:\r
260 case 2:\r
261 default:\r
262 return false;\r
263 case -1:\r
264 return (opt1tag >= 0 || opt2tag >= 0);\r
265 case 0:\r
266 return true;\r
267 case 1:\r
268 return (opt1tag <= 0 || opt2tag <= 0);\r
269 }\r
270 }, "~N,~N,~N");\r
271 Clazz.defineMethod (c$, "intersects", \r
272 function (x, y, w, h) {\r
273 if (w <= 0 || h <= 0) {\r
274 return false;\r
275 }var x1 = this.getX1 ();\r
276 var y1 = this.getY1 ();\r
277 var x1tag = java.awt.geom.CubicCurve2D.getTag (x1, x, x + w);\r
278 var y1tag = java.awt.geom.CubicCurve2D.getTag (y1, y, y + h);\r
279 if (x1tag == 0 && y1tag == 0) {\r
280 return true;\r
281 }var x2 = this.getX2 ();\r
282 var y2 = this.getY2 ();\r
283 var x2tag = java.awt.geom.CubicCurve2D.getTag (x2, x, x + w);\r
284 var y2tag = java.awt.geom.CubicCurve2D.getTag (y2, y, y + h);\r
285 if (x2tag == 0 && y2tag == 0) {\r
286 return true;\r
287 }var ctrlx1 = this.getCtrlX1 ();\r
288 var ctrly1 = this.getCtrlY1 ();\r
289 var ctrlx2 = this.getCtrlX2 ();\r
290 var ctrly2 = this.getCtrlY2 ();\r
291 var ctrlx1tag = java.awt.geom.CubicCurve2D.getTag (ctrlx1, x, x + w);\r
292 var ctrly1tag = java.awt.geom.CubicCurve2D.getTag (ctrly1, y, y + h);\r
293 var ctrlx2tag = java.awt.geom.CubicCurve2D.getTag (ctrlx2, x, x + w);\r
294 var ctrly2tag = java.awt.geom.CubicCurve2D.getTag (ctrly2, y, y + h);\r
295 if (x1tag < 0 && x2tag < 0 && ctrlx1tag < 0 && ctrlx2tag < 0) {\r
296 return false;\r
297 }if (y1tag < 0 && y2tag < 0 && ctrly1tag < 0 && ctrly2tag < 0) {\r
298 return false;\r
299 }if (x1tag > 0 && x2tag > 0 && ctrlx1tag > 0 && ctrlx2tag > 0) {\r
300 return false;\r
301 }if (y1tag > 0 && y2tag > 0 && ctrly1tag > 0 && ctrly2tag > 0) {\r
302 return false;\r
303 }if (java.awt.geom.CubicCurve2D.inwards (x1tag, x2tag, ctrlx1tag) && java.awt.geom.CubicCurve2D.inwards (y1tag, y2tag, ctrly1tag)) {\r
304 return true;\r
305 }if (java.awt.geom.CubicCurve2D.inwards (x2tag, x1tag, ctrlx2tag) && java.awt.geom.CubicCurve2D.inwards (y2tag, y1tag, ctrly2tag)) {\r
306 return true;\r
307 }var xoverlap = (x1tag * x2tag <= 0);\r
308 var yoverlap = (y1tag * y2tag <= 0);\r
309 if (x1tag == 0 && x2tag == 0 && yoverlap) {\r
310 return true;\r
311 }if (y1tag == 0 && y2tag == 0 && xoverlap) {\r
312 return true;\r
313 }var eqn =  Clazz.newDoubleArray (4, 0);\r
314 var res =  Clazz.newDoubleArray (4, 0);\r
315 if (!yoverlap) {\r
316 java.awt.geom.CubicCurve2D.fillEqn (eqn, (y1tag < 0 ? y : y + h), y1, ctrly1, ctrly2, y2);\r
317 var num = java.awt.geom.CubicCurve2D.solveCubic (eqn, res);\r
318 num = java.awt.geom.CubicCurve2D.evalCubic (res, num, true, true, null, x1, ctrlx1, ctrlx2, x2);\r
319 return (num == 2 && java.awt.geom.CubicCurve2D.getTag (res[0], x, x + w) * java.awt.geom.CubicCurve2D.getTag (res[1], x, x + w) <= 0);\r
320 }if (!xoverlap) {\r
321 java.awt.geom.CubicCurve2D.fillEqn (eqn, (x1tag < 0 ? x : x + w), x1, ctrlx1, ctrlx2, x2);\r
322 var num = java.awt.geom.CubicCurve2D.solveCubic (eqn, res);\r
323 num = java.awt.geom.CubicCurve2D.evalCubic (res, num, true, true, null, y1, ctrly1, ctrly2, y2);\r
324 return (num == 2 && java.awt.geom.CubicCurve2D.getTag (res[0], y, y + h) * java.awt.geom.CubicCurve2D.getTag (res[1], y, y + h) <= 0);\r
325 }var dx = x2 - x1;\r
326 var dy = y2 - y1;\r
327 var k = y2 * x1 - x2 * y1;\r
328 var c1tag;\r
329 var c2tag;\r
330 if (y1tag == 0) {\r
331 c1tag = x1tag;\r
332 } else {\r
333 c1tag = java.awt.geom.CubicCurve2D.getTag ((k + dx * (y1tag < 0 ? y : y + h)) / dy, x, x + w);\r
334 }if (y2tag == 0) {\r
335 c2tag = x2tag;\r
336 } else {\r
337 c2tag = java.awt.geom.CubicCurve2D.getTag ((k + dx * (y2tag < 0 ? y : y + h)) / dy, x, x + w);\r
338 }if (c1tag * c2tag <= 0) {\r
339 return true;\r
340 }c1tag = ((c1tag * x1tag <= 0) ? y1tag : y2tag);\r
341 java.awt.geom.CubicCurve2D.fillEqn (eqn, (c2tag < 0 ? x : x + w), x1, ctrlx1, ctrlx2, x2);\r
342 var num = java.awt.geom.CubicCurve2D.solveCubic (eqn, res);\r
343 num = java.awt.geom.CubicCurve2D.evalCubic (res, num, true, true, null, y1, ctrly1, ctrly2, y2);\r
344 var tags =  Clazz.newIntArray (num + 1, 0);\r
345 for (var i = 0; i < num; i++) {\r
346 tags[i] = java.awt.geom.CubicCurve2D.getTag (res[i], y, y + h);\r
347 }\r
348 tags[num] = c1tag;\r
349 java.util.Arrays.sort (tags);\r
350 return ((num >= 1 && tags[0] * tags[1] <= 0) || (num >= 3 && tags[2] * tags[3] <= 0));\r
351 }, "~N,~N,~N,~N");\r
352 Clazz.defineMethod (c$, "intersects", \r
353 function (r) {\r
354 return this.intersects (r.getX (), r.getY (), r.getWidth (), r.getHeight ());\r
355 }, "java.awt.geom.Rectangle2D");\r
356 Clazz.defineMethod (c$, "contains", \r
357 function (x, y, w, h) {\r
358 if (w <= 0 || h <= 0) {\r
359 return false;\r
360 }if (!(this.contains (x, y) && this.contains (x + w, y) && this.contains (x + w, y + h) && this.contains (x, y + h))) {\r
361 return false;\r
362 }var rect =  new java.awt.geom.Rectangle2D.Double (x, y, w, h);\r
363 return !rect.intersectsLine (this.getX1 (), this.getY1 (), this.getX2 (), this.getY2 ());\r
364 }, "~N,~N,~N,~N");\r
365 Clazz.defineMethod (c$, "contains", \r
366 function (r) {\r
367 return this.contains (r.getX (), r.getY (), r.getWidth (), r.getHeight ());\r
368 }, "java.awt.geom.Rectangle2D");\r
369 Clazz.overrideMethod (c$, "getBounds", \r
370 function () {\r
371 return this.getBounds2D ().getBounds ();\r
372 });\r
373 Clazz.defineMethod (c$, "getPathIterator", \r
374 function (at) {\r
375 return (swingjs.api.Interface.getInstance ("java.awt.geom.CubicInterator", false)).set (this, at);\r
376 }, "java.awt.geom.AffineTransform");\r
377 Clazz.defineMethod (c$, "getPathIterator", \r
378 function (at, flatness) {\r
379 return  new java.awt.geom.FlatteningPathIterator (this.getPathIterator (at), flatness);\r
380 }, "java.awt.geom.AffineTransform,~N");\r
381 Clazz.defineMethod (c$, "clone", \r
382 function () {\r
383 try {\r
384 return Clazz.superCall (this, java.awt.geom.CubicCurve2D, "clone", []);\r
385 } catch (e) {\r
386 if (Clazz.exceptionOf (e, CloneNotSupportedException)) {\r
387 throw  new InternalError ();\r
388 } else {\r
389 throw e;\r
390 }\r
391 }\r
392 });\r
393 Clazz.pu$h(self.c$);\r
394 c$ = Clazz.decorateAsClass (function () {\r
395 this.x1 = 0;\r
396 this.y1 = 0;\r
397 this.ctrlx1 = 0;\r
398 this.ctrly1 = 0;\r
399 this.ctrlx2 = 0;\r
400 this.ctrly2 = 0;\r
401 this.x2 = 0;\r
402 this.y2 = 0;\r
403 Clazz.instantialize (this, arguments);\r
404 }, java.awt.geom.CubicCurve2D, "Float", java.awt.geom.CubicCurve2D);\r
405 Clazz.makeConstructor (c$, \r
406 function () {\r
407 Clazz.superConstructor (this, java.awt.geom.CubicCurve2D.Float, []);\r
408 });\r
409 Clazz.makeConstructor (c$, \r
410 function (a, b, c, d, e, f, g, h) {\r
411 Clazz.superConstructor (this, java.awt.geom.CubicCurve2D.Float, []);\r
412 this.setCurve (a, b, c, d, e, f, g, h);\r
413 }, "~N,~N,~N,~N,~N,~N,~N,~N");\r
414 Clazz.overrideMethod (c$, "getX1", \r
415 function () {\r
416 return this.x1;\r
417 });\r
418 Clazz.overrideMethod (c$, "getY1", \r
419 function () {\r
420 return this.y1;\r
421 });\r
422 Clazz.overrideMethod (c$, "getP1", \r
423 function () {\r
424 return  new java.awt.geom.Point2D.Float (this.x1, this.y1);\r
425 });\r
426 Clazz.overrideMethod (c$, "getCtrlX1", \r
427 function () {\r
428 return this.ctrlx1;\r
429 });\r
430 Clazz.overrideMethod (c$, "getCtrlY1", \r
431 function () {\r
432 return this.ctrly1;\r
433 });\r
434 Clazz.overrideMethod (c$, "getCtrlP1", \r
435 function () {\r
436 return  new java.awt.geom.Point2D.Float (this.ctrlx1, this.ctrly1);\r
437 });\r
438 Clazz.overrideMethod (c$, "getCtrlX2", \r
439 function () {\r
440 return this.ctrlx2;\r
441 });\r
442 Clazz.overrideMethod (c$, "getCtrlY2", \r
443 function () {\r
444 return this.ctrly2;\r
445 });\r
446 Clazz.overrideMethod (c$, "getCtrlP2", \r
447 function () {\r
448 return  new java.awt.geom.Point2D.Float (this.ctrlx2, this.ctrly2);\r
449 });\r
450 Clazz.overrideMethod (c$, "getX2", \r
451 function () {\r
452 return this.x2;\r
453 });\r
454 Clazz.overrideMethod (c$, "getY2", \r
455 function () {\r
456 return this.y2;\r
457 });\r
458 Clazz.overrideMethod (c$, "getP2", \r
459 function () {\r
460 return  new java.awt.geom.Point2D.Float (this.x2, this.y2);\r
461 });\r
462 Clazz.defineMethod (c$, "setCurve", \r
463 function (a, b, c, d, e, f, g, h) {\r
464 this.x1 = a;\r
465 this.y1 = b;\r
466 this.ctrlx1 = c;\r
467 this.ctrly1 = d;\r
468 this.ctrlx2 = e;\r
469 this.ctrly2 = f;\r
470 this.x2 = g;\r
471 this.y2 = h;\r
472 }, "~N,~N,~N,~N,~N,~N,~N,~N");\r
473 Clazz.defineMethod (c$, "setCurve", \r
474 function (a, b, c, d, e, f, g, h) {\r
475 this.x1 = a;\r
476 this.y1 = b;\r
477 this.ctrlx1 = c;\r
478 this.ctrly1 = d;\r
479 this.ctrlx2 = e;\r
480 this.ctrly2 = f;\r
481 this.x2 = g;\r
482 this.y2 = h;\r
483 }, "~N,~N,~N,~N,~N,~N,~N,~N");\r
484 Clazz.overrideMethod (c$, "getBounds2D", \r
485 function () {\r
486 var a = Math.min (Math.min (this.x1, this.x2), Math.min (this.ctrlx1, this.ctrlx2));\r
487 var b = Math.min (Math.min (this.y1, this.y2), Math.min (this.ctrly1, this.ctrly2));\r
488 var c = Math.max (Math.max (this.x1, this.x2), Math.max (this.ctrlx1, this.ctrlx2));\r
489 var d = Math.max (Math.max (this.y1, this.y2), Math.max (this.ctrly1, this.ctrly2));\r
490 return  new java.awt.geom.Rectangle2D.Float (a, b, c - a, d - b);\r
491 });\r
492 c$ = Clazz.p0p ();\r
493 Clazz.pu$h(self.c$);\r
494 c$ = Clazz.decorateAsClass (function () {\r
495 this.x1 = 0;\r
496 this.y1 = 0;\r
497 this.ctrlx1 = 0;\r
498 this.ctrly1 = 0;\r
499 this.ctrlx2 = 0;\r
500 this.ctrly2 = 0;\r
501 this.x2 = 0;\r
502 this.y2 = 0;\r
503 Clazz.instantialize (this, arguments);\r
504 }, java.awt.geom.CubicCurve2D, "Double", java.awt.geom.CubicCurve2D);\r
505 Clazz.makeConstructor (c$, \r
506 function () {\r
507 Clazz.superConstructor (this, java.awt.geom.CubicCurve2D.Double, []);\r
508 });\r
509 Clazz.makeConstructor (c$, \r
510 function (a, b, c, d, e, f, g, h) {\r
511 Clazz.superConstructor (this, java.awt.geom.CubicCurve2D.Double, []);\r
512 this.setCurve (a, b, c, d, e, f, g, h);\r
513 }, "~N,~N,~N,~N,~N,~N,~N,~N");\r
514 Clazz.overrideMethod (c$, "getX1", \r
515 function () {\r
516 return this.x1;\r
517 });\r
518 Clazz.overrideMethod (c$, "getY1", \r
519 function () {\r
520 return this.y1;\r
521 });\r
522 Clazz.overrideMethod (c$, "getP1", \r
523 function () {\r
524 return  new java.awt.geom.Point2D.Double (this.x1, this.y1);\r
525 });\r
526 Clazz.overrideMethod (c$, "getCtrlX1", \r
527 function () {\r
528 return this.ctrlx1;\r
529 });\r
530 Clazz.overrideMethod (c$, "getCtrlY1", \r
531 function () {\r
532 return this.ctrly1;\r
533 });\r
534 Clazz.overrideMethod (c$, "getCtrlP1", \r
535 function () {\r
536 return  new java.awt.geom.Point2D.Double (this.ctrlx1, this.ctrly1);\r
537 });\r
538 Clazz.overrideMethod (c$, "getCtrlX2", \r
539 function () {\r
540 return this.ctrlx2;\r
541 });\r
542 Clazz.overrideMethod (c$, "getCtrlY2", \r
543 function () {\r
544 return this.ctrly2;\r
545 });\r
546 Clazz.overrideMethod (c$, "getCtrlP2", \r
547 function () {\r
548 return  new java.awt.geom.Point2D.Double (this.ctrlx2, this.ctrly2);\r
549 });\r
550 Clazz.overrideMethod (c$, "getX2", \r
551 function () {\r
552 return this.x2;\r
553 });\r
554 Clazz.overrideMethod (c$, "getY2", \r
555 function () {\r
556 return this.y2;\r
557 });\r
558 Clazz.overrideMethod (c$, "getP2", \r
559 function () {\r
560 return  new java.awt.geom.Point2D.Double (this.x2, this.y2);\r
561 });\r
562 Clazz.defineMethod (c$, "setCurve", \r
563 function (a, b, c, d, e, f, g, h) {\r
564 this.x1 = a;\r
565 this.y1 = b;\r
566 this.ctrlx1 = c;\r
567 this.ctrly1 = d;\r
568 this.ctrlx2 = e;\r
569 this.ctrly2 = f;\r
570 this.x2 = g;\r
571 this.y2 = h;\r
572 }, "~N,~N,~N,~N,~N,~N,~N,~N");\r
573 Clazz.overrideMethod (c$, "getBounds2D", \r
574 function () {\r
575 var a = Math.min (Math.min (this.x1, this.x2), Math.min (this.ctrlx1, this.ctrlx2));\r
576 var b = Math.min (Math.min (this.y1, this.y2), Math.min (this.ctrly1, this.ctrly2));\r
577 var c = Math.max (Math.max (this.x1, this.x2), Math.max (this.ctrlx1, this.ctrlx2));\r
578 var d = Math.max (Math.max (this.y1, this.y2), Math.max (this.ctrly1, this.ctrly2));\r
579 return  new java.awt.geom.Rectangle2D.Double (a, b, c - a, d - b);\r
580 });\r
581 c$ = Clazz.p0p ();\r
582 Clazz.defineStatics (c$,\r
583 "BELOW", -2,\r
584 "LOWEDGE", -1,\r
585 "INSIDE", 0,\r
586 "HIGHEDGE", 1,\r
587 "ABOVE", 2);\r
588 });\r