fb532516d0e50be0c69170f47ad52e5ad1155cbb
[jalviewjs.git] / site / swingjs / j2s / jssun / font / AttributeValues.js
1 Clazz.declarePackage ("jssun.font");\r
2 Clazz.load (["jssun.font.EAttribute"], "jssun.font.AttributeValues", ["java.lang.Boolean", "$.Float", "$.InternalError", "$.Number", "$.StringBuilder", "java.util.HashMap", "java.awt.font.TextAttribute", "java.awt.geom.AffineTransform", "$.Point2D", "jssun.font.AttributeMap"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.defined = 0;\r
5 this.nondefault = 0;\r
6 this.family = "Default";\r
7 this.weight = 1;\r
8 this.width = 1;\r
9 this.posture = 0;\r
10 this.size = 12;\r
11 this.tracking = 0;\r
12 this.transform = null;\r
13 this.foreground = null;\r
14 this.background = null;\r
15 this.justification = 1;\r
16 this.imHighlight = null;\r
17 this.font = null;\r
18 this.imUnderline = -1;\r
19 this.superscript = 0;\r
20 this.underline = -1;\r
21 this.runDirection = -2;\r
22 this.bidiEmbedding = 0;\r
23 this.kerning = 0;\r
24 this.ligatures = 0;\r
25 this.strikethrough = false;\r
26 this.swapColors = false;\r
27 this.baselineTransform = null;\r
28 this.charTransform = null;\r
29 Clazz.instantialize (this, arguments);\r
30 }, jssun.font, "AttributeValues", null, Cloneable);\r
31 Clazz.defineMethod (c$, "getFamily", \r
32 function () {\r
33 return this.family;\r
34 });\r
35 Clazz.defineMethod (c$, "setFamily", \r
36 function (f) {\r
37 this.family = f;\r
38 this.update (jssun.font.EAttribute.EFAMILY);\r
39 }, "~S");\r
40 Clazz.defineMethod (c$, "getWeight", \r
41 function () {\r
42 return this.weight;\r
43 });\r
44 Clazz.defineMethod (c$, "setWeight", \r
45 function (f) {\r
46 this.weight = f;\r
47 this.update (jssun.font.EAttribute.EWEIGHT);\r
48 }, "~N");\r
49 Clazz.defineMethod (c$, "getWidth", \r
50 function () {\r
51 return this.width;\r
52 });\r
53 Clazz.defineMethod (c$, "setWidth", \r
54 function (f) {\r
55 this.width = f;\r
56 this.update (jssun.font.EAttribute.EWIDTH);\r
57 }, "~N");\r
58 Clazz.defineMethod (c$, "getPosture", \r
59 function () {\r
60 return this.posture;\r
61 });\r
62 Clazz.defineMethod (c$, "setPosture", \r
63 function (f) {\r
64 this.posture = f;\r
65 this.update (jssun.font.EAttribute.EPOSTURE);\r
66 }, "~N");\r
67 Clazz.defineMethod (c$, "getSize", \r
68 function () {\r
69 return this.size;\r
70 });\r
71 Clazz.defineMethod (c$, "setSize", \r
72 function (f) {\r
73 this.size = f;\r
74 this.update (jssun.font.EAttribute.ESIZE);\r
75 }, "~N");\r
76 Clazz.defineMethod (c$, "getTransform", \r
77 function () {\r
78 return this.transform;\r
79 });\r
80 Clazz.defineMethod (c$, "setTransform", \r
81 function (f) {\r
82 this.transform = (f == null || f.isIdentity ()) ? jssun.font.AttributeValues.DEFAULT.transform :  new java.awt.geom.AffineTransform (f);\r
83 this.updateDerivedTransforms ();\r
84 this.update (jssun.font.EAttribute.ETRANSFORM);\r
85 }, "java.awt.geom.AffineTransform");\r
86 Clazz.defineMethod (c$, "getSuperscript", \r
87 function () {\r
88 return this.superscript;\r
89 });\r
90 Clazz.defineMethod (c$, "setSuperscript", \r
91 function (f) {\r
92 this.superscript = f;\r
93 this.update (jssun.font.EAttribute.ESUPERSCRIPT);\r
94 }, "~N");\r
95 Clazz.defineMethod (c$, "getFont", \r
96 function () {\r
97 return this.font;\r
98 });\r
99 Clazz.defineMethod (c$, "setFont", \r
100 function (f) {\r
101 this.font = f;\r
102 this.update (jssun.font.EAttribute.EFONT);\r
103 }, "java.awt.Font");\r
104 Clazz.defineMethod (c$, "getForeground", \r
105 function () {\r
106 return this.foreground;\r
107 });\r
108 Clazz.defineMethod (c$, "setForeground", \r
109 function (f) {\r
110 this.foreground = f;\r
111 this.update (jssun.font.EAttribute.EFOREGROUND);\r
112 }, "java.awt.Paint");\r
113 Clazz.defineMethod (c$, "getBackground", \r
114 function () {\r
115 return this.background;\r
116 });\r
117 Clazz.defineMethod (c$, "setBackground", \r
118 function (f) {\r
119 this.background = f;\r
120 this.update (jssun.font.EAttribute.EBACKGROUND);\r
121 }, "java.awt.Paint");\r
122 Clazz.defineMethod (c$, "getUnderline", \r
123 function () {\r
124 return this.underline;\r
125 });\r
126 Clazz.defineMethod (c$, "setUnderline", \r
127 function (f) {\r
128 this.underline = f;\r
129 this.update (jssun.font.EAttribute.EUNDERLINE);\r
130 }, "~N");\r
131 Clazz.defineMethod (c$, "getStrikethrough", \r
132 function () {\r
133 return this.strikethrough;\r
134 });\r
135 Clazz.defineMethod (c$, "setStrikethrough", \r
136 function (f) {\r
137 this.strikethrough = f;\r
138 this.update (jssun.font.EAttribute.ESTRIKETHROUGH);\r
139 }, "~B");\r
140 Clazz.defineMethod (c$, "getRunDirection", \r
141 function () {\r
142 return this.runDirection;\r
143 });\r
144 Clazz.defineMethod (c$, "setRunDirection", \r
145 function (f) {\r
146 this.runDirection = f;\r
147 this.update (jssun.font.EAttribute.ERUN_DIRECTION);\r
148 }, "~N");\r
149 Clazz.defineMethod (c$, "getBidiEmbedding", \r
150 function () {\r
151 return this.bidiEmbedding;\r
152 });\r
153 Clazz.defineMethod (c$, "setBidiEmbedding", \r
154 function (f) {\r
155 this.bidiEmbedding = f;\r
156 this.update (jssun.font.EAttribute.EBIDI_EMBEDDING);\r
157 }, "~N");\r
158 Clazz.defineMethod (c$, "getJustification", \r
159 function () {\r
160 return this.justification;\r
161 });\r
162 Clazz.defineMethod (c$, "setJustification", \r
163 function (f) {\r
164 this.justification = f;\r
165 this.update (jssun.font.EAttribute.EJUSTIFICATION);\r
166 }, "~N");\r
167 Clazz.defineMethod (c$, "getInputMethodHighlight", \r
168 function () {\r
169 return this.imHighlight;\r
170 });\r
171 Clazz.defineMethod (c$, "setInputMethodHighlight", \r
172 function (f) {\r
173 this.imHighlight = f;\r
174 this.update (jssun.font.EAttribute.EINPUT_METHOD_HIGHLIGHT);\r
175 }, "java.text.Annotation");\r
176 Clazz.defineMethod (c$, "getInputMethodUnderline", \r
177 function () {\r
178 return this.imUnderline;\r
179 });\r
180 Clazz.defineMethod (c$, "setInputMethodUnderline", \r
181 function (f) {\r
182 this.imUnderline = f;\r
183 this.update (jssun.font.EAttribute.EINPUT_METHOD_UNDERLINE);\r
184 }, "~N");\r
185 Clazz.defineMethod (c$, "getSwapColors", \r
186 function () {\r
187 return this.swapColors;\r
188 });\r
189 Clazz.defineMethod (c$, "setSwapColors", \r
190 function (f) {\r
191 this.swapColors = f;\r
192 this.update (jssun.font.EAttribute.ESWAP_COLORS);\r
193 }, "~B");\r
194 Clazz.defineMethod (c$, "getKerning", \r
195 function () {\r
196 return this.kerning;\r
197 });\r
198 Clazz.defineMethod (c$, "setKerning", \r
199 function (f) {\r
200 this.kerning = f;\r
201 this.update (jssun.font.EAttribute.EKERNING);\r
202 }, "~N");\r
203 Clazz.defineMethod (c$, "getTracking", \r
204 function () {\r
205 return this.tracking;\r
206 });\r
207 Clazz.defineMethod (c$, "setTracking", \r
208 function (f) {\r
209 this.tracking = Clazz.floatToByte (f);\r
210 this.update (jssun.font.EAttribute.ETRACKING);\r
211 }, "~N");\r
212 Clazz.defineMethod (c$, "getLigatures", \r
213 function () {\r
214 return this.ligatures;\r
215 });\r
216 Clazz.defineMethod (c$, "setLigatures", \r
217 function (f) {\r
218 this.ligatures = f;\r
219 this.update (jssun.font.EAttribute.ELIGATURES);\r
220 }, "~N");\r
221 Clazz.defineMethod (c$, "getBaselineTransform", \r
222 function () {\r
223 return this.baselineTransform;\r
224 });\r
225 Clazz.defineMethod (c$, "getCharTransform", \r
226 function () {\r
227 return this.charTransform;\r
228 });\r
229 c$.getMask = Clazz.defineMethod (c$, "getMask", \r
230 function (att) {\r
231 return att.mask;\r
232 }, "jssun.font.EAttribute");\r
233 c$.getMask = Clazz.defineMethod (c$, "getMask", \r
234 function (atts) {\r
235 var mask = 0;\r
236 for (var a, $a = 0, $$a = atts; $a < $$a.length && ((a = $$a[$a]) || true); $a++) {\r
237 mask |= a.mask;\r
238 }\r
239 return mask;\r
240 }, "~A");\r
241 Clazz.defineMethod (c$, "unsetDefault", \r
242 function () {\r
243 this.defined &= this.nondefault;\r
244 });\r
245 Clazz.defineMethod (c$, "defineAll", \r
246 function (mask) {\r
247 this.defined |= mask;\r
248 if ((this.defined & jssun.font.EAttribute.EBASELINE_TRANSFORM.mask) != 0) {\r
249 throw  new InternalError ("can't define derived attribute");\r
250 }}, "~N");\r
251 Clazz.defineMethod (c$, "allDefined", \r
252 function (mask) {\r
253 return (this.defined & mask) == mask;\r
254 }, "~N");\r
255 Clazz.defineMethod (c$, "anyDefined", \r
256 function (mask) {\r
257 return (this.defined & mask) != 0;\r
258 }, "~N");\r
259 Clazz.defineMethod (c$, "anyNonDefault", \r
260 function (mask) {\r
261 return (this.nondefault & mask) != 0;\r
262 }, "~N");\r
263 Clazz.defineMethod (c$, "isDefined", \r
264 function (a) {\r
265 return (this.defined & a.mask) != 0;\r
266 }, "jssun.font.EAttribute");\r
267 Clazz.defineMethod (c$, "isNonDefault", \r
268 function (a) {\r
269 return (this.nondefault & a.mask) != 0;\r
270 }, "jssun.font.EAttribute");\r
271 Clazz.defineMethod (c$, "setDefault", \r
272 function (a) {\r
273 if (a.att == null) {\r
274 throw  new InternalError ("can't set default derived attribute: " + a);\r
275 }this.i_set (a, jssun.font.AttributeValues.DEFAULT);\r
276 this.defined |= a.mask;\r
277 this.nondefault &= ~a.mask;\r
278 }, "jssun.font.EAttribute");\r
279 Clazz.defineMethod (c$, "unset", \r
280 function (a) {\r
281 if (a.att == null) {\r
282 throw  new InternalError ("can't unset derived attribute: " + a);\r
283 }this.i_set (a, jssun.font.AttributeValues.DEFAULT);\r
284 this.defined &= ~a.mask;\r
285 this.nondefault &= ~a.mask;\r
286 }, "jssun.font.EAttribute");\r
287 Clazz.defineMethod (c$, "set", \r
288 function (a, src) {\r
289 if (a.att == null) {\r
290 throw  new InternalError ("can't set derived attribute: " + a);\r
291 }if (src == null || src === jssun.font.AttributeValues.DEFAULT) {\r
292 this.setDefault (a);\r
293 } else {\r
294 if ((src.defined & a.mask) != 0) {\r
295 this.i_set (a, src);\r
296 this.update (a);\r
297 }}}, "jssun.font.EAttribute,jssun.font.AttributeValues");\r
298 Clazz.defineMethod (c$, "set", \r
299 function (a, o) {\r
300 if (a.att == null) {\r
301 throw  new InternalError ("can't set derived attribute: " + a);\r
302 }if (o != null) {\r
303 try {\r
304 this.i_set (a, o);\r
305 this.update (a);\r
306 return;\r
307 } catch (e) {\r
308 if (Clazz.exceptionOf (e, Exception)) {\r
309 } else {\r
310 throw e;\r
311 }\r
312 }\r
313 }this.setDefault (a);\r
314 }, "jssun.font.EAttribute,~O");\r
315 Clazz.defineMethod (c$, "get", \r
316 function (a) {\r
317 if (a.att == null) {\r
318 throw  new InternalError ("can't get derived attribute: " + a);\r
319 }if ((this.nondefault & a.mask) != 0) {\r
320 return this.i_get (a);\r
321 }return null;\r
322 }, "jssun.font.EAttribute");\r
323 Clazz.defineMethod (c$, "merge", \r
324 function (map) {\r
325 return this.merge (map, jssun.font.AttributeValues.MASK_ALL);\r
326 }, "java.util.Map");\r
327 Clazz.defineMethod (c$, "merge", \r
328 function (map, mask) {\r
329 if (Clazz.instanceOf (map, jssun.font.AttributeMap) && (map).getValues () != null) {\r
330 this.merge ((map).getValues (), mask);\r
331 } else if (map != null && !map.isEmpty ()) {\r
332 for (var e, $e = map.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {\r
333 var ea = jssun.font.EAttribute.forAttribute (e.getKey ());\r
334 if (ea != null && (mask & ea.mask) != 0) {\r
335 this.set (ea, e.getValue ());\r
336 }}\r
337 }return this;\r
338 }, "java.util.Map,~N");\r
339 Clazz.defineMethod (c$, "merge", \r
340 function (src) {\r
341 return this.merge (src, jssun.font.AttributeValues.MASK_ALL);\r
342 }, "jssun.font.AttributeValues");\r
343 Clazz.defineMethod (c$, "merge", \r
344 function (src, mask) {\r
345 var m = mask & src.defined;\r
346 for (var ea, $ea = 0, $$ea = jssun.font.EAttribute.atts; $ea < $$ea.length && ((ea = $$ea[$ea]) || true); $ea++) {\r
347 if (m == 0) {\r
348 break;\r
349 }if ((m & ea.mask) != 0) {\r
350 m &= ~ea.mask;\r
351 this.i_set (ea, src);\r
352 this.update (ea);\r
353 }}\r
354 return this;\r
355 }, "jssun.font.AttributeValues,~N");\r
356 c$.fromMap = Clazz.defineMethod (c$, "fromMap", \r
357 function (map) {\r
358 return jssun.font.AttributeValues.fromMap (map, jssun.font.AttributeValues.MASK_ALL);\r
359 }, "java.util.Map");\r
360 c$.fromMap = Clazz.defineMethod (c$, "fromMap", \r
361 function (map, mask) {\r
362 return  new jssun.font.AttributeValues ().merge (map, mask);\r
363 }, "java.util.Map,~N");\r
364 Clazz.defineMethod (c$, "toMap", \r
365 function (fill) {\r
366 if (fill == null) {\r
367 fill =  new java.util.HashMap ();\r
368 }for (var m = this.defined, i = 0; m != 0; ++i) {\r
369 var ea = jssun.font.EAttribute.atts[i];\r
370 if ((m & ea.mask) != 0) {\r
371 m &= ~ea.mask;\r
372 fill.put (ea.att, this.get (ea));\r
373 }}\r
374 return fill;\r
375 }, "java.util.Map");\r
376 c$.is16Hashtable = Clazz.defineMethod (c$, "is16Hashtable", \r
377 function (ht) {\r
378 return ht.containsKey ("sun.font.attributevalues.defined_key");\r
379 }, "java.util.Hashtable");\r
380 c$.fromSerializableHashtable = Clazz.defineMethod (c$, "fromSerializableHashtable", \r
381 function (ht) {\r
382 var result =  new jssun.font.AttributeValues ();\r
383 if (ht != null && !ht.isEmpty ()) {\r
384 for (var e, $e = ht.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {\r
385 var key = e.getKey ();\r
386 var val = e.getValue ();\r
387 if (key.equals ("sun.font.attributevalues.defined_key")) {\r
388 result.defineAll ((val).intValue ());\r
389 } else {\r
390 try {\r
391 var ea = jssun.font.EAttribute.forAttribute (key);\r
392 if (ea != null) {\r
393 result.set (ea, val);\r
394 }} catch (ex) {\r
395 if (Clazz.exceptionOf (ex, ClassCastException)) {\r
396 } else {\r
397 throw ex;\r
398 }\r
399 }\r
400 }}\r
401 }return result;\r
402 }, "java.util.Hashtable");\r
403 Clazz.overrideMethod (c$, "hashCode", \r
404 function () {\r
405 return this.defined << 8 ^ this.nondefault;\r
406 });\r
407 Clazz.defineMethod (c$, "equals", \r
408 function (rhs) {\r
409 try {\r
410 return this.equals (rhs);\r
411 } catch (e) {\r
412 if (Clazz.exceptionOf (e, ClassCastException)) {\r
413 } else {\r
414 throw e;\r
415 }\r
416 }\r
417 return false;\r
418 }, "~O");\r
419 Clazz.defineMethod (c$, "equals", \r
420 function (rhs) {\r
421 if (rhs == null) return false;\r
422 if (rhs === this) return true;\r
423 return this.defined == rhs.defined && this.nondefault == rhs.nondefault && this.underline == rhs.underline && this.strikethrough == rhs.strikethrough && this.superscript == rhs.superscript && this.width == rhs.width && this.kerning == rhs.kerning && this.tracking == rhs.tracking && this.ligatures == rhs.ligatures && this.runDirection == rhs.runDirection && this.bidiEmbedding == rhs.bidiEmbedding && this.swapColors == rhs.swapColors && jssun.font.AttributeValues.equals (this.transform, rhs.transform) && jssun.font.AttributeValues.equals (new Float (this.justification), new Float (rhs.justification)) && this.size == rhs.size && this.weight == rhs.weight && this.posture == rhs.posture && jssun.font.AttributeValues.equals (this.family, rhs.family) && jssun.font.AttributeValues.equals (this.font, rhs.font) && this.imUnderline == rhs.imUnderline && jssun.font.AttributeValues.equals (this.imHighlight, rhs.imHighlight);\r
424 }, "jssun.font.AttributeValues");\r
425 Clazz.defineMethod (c$, "clone", \r
426 function () {\r
427 try {\r
428 var result = Clazz.superCall (this, jssun.font.AttributeValues, "clone", []);\r
429 if (this.transform != null) {\r
430 result.transform =  new java.awt.geom.AffineTransform (this.transform);\r
431 result.updateDerivedTransforms ();\r
432 }return result;\r
433 } catch (e) {\r
434 if (Clazz.exceptionOf (e, CloneNotSupportedException)) {\r
435 return null;\r
436 } else {\r
437 throw e;\r
438 }\r
439 }\r
440 });\r
441 Clazz.overrideMethod (c$, "toString", \r
442 function () {\r
443 var b =  new StringBuilder ();\r
444 b.append ('{');\r
445 for (var m = this.defined, i = 0; m != 0; ++i) {\r
446 var ea = jssun.font.EAttribute.atts[i];\r
447 if ((m & ea.mask) != 0) {\r
448 m &= ~ea.mask;\r
449 if (b.length () > 1) {\r
450 b.append (", ");\r
451 }b.append (ea);\r
452 b.append ('=');\r
453 switch (ea) {\r
454 case jssun.font.EAttribute.EFAMILY:\r
455 b.append ('"');\r
456 b.append (this.family);\r
457 b.append ('"');\r
458 break;\r
459 case jssun.font.EAttribute.EWEIGHT:\r
460 b.append (this.weight);\r
461 break;\r
462 case jssun.font.EAttribute.EWIDTH:\r
463 b.append (this.width);\r
464 break;\r
465 case jssun.font.EAttribute.EPOSTURE:\r
466 b.append (this.posture);\r
467 break;\r
468 case jssun.font.EAttribute.ESIZE:\r
469 b.append (this.size);\r
470 break;\r
471 case jssun.font.EAttribute.ETRANSFORM:\r
472 b.append (this.transform);\r
473 break;\r
474 case jssun.font.EAttribute.ESUPERSCRIPT:\r
475 b.append ("" + this.superscript);\r
476 break;\r
477 case jssun.font.EAttribute.EFONT:\r
478 b.append (this.font);\r
479 break;\r
480 case jssun.font.EAttribute.EUNDERLINE:\r
481 b.append ("" + this.underline);\r
482 break;\r
483 case jssun.font.EAttribute.ESTRIKETHROUGH:\r
484 b.append (this.strikethrough);\r
485 break;\r
486 case jssun.font.EAttribute.ERUN_DIRECTION:\r
487 b.append ("" + this.runDirection);\r
488 break;\r
489 case jssun.font.EAttribute.EBIDI_EMBEDDING:\r
490 b.append ("" + this.bidiEmbedding);\r
491 break;\r
492 case jssun.font.EAttribute.EJUSTIFICATION:\r
493 b.append (this.justification);\r
494 break;\r
495 case jssun.font.EAttribute.EINPUT_METHOD_HIGHLIGHT:\r
496 b.append (this.imHighlight);\r
497 break;\r
498 case jssun.font.EAttribute.EINPUT_METHOD_UNDERLINE:\r
499 b.append ("" + this.imUnderline);\r
500 break;\r
501 case jssun.font.EAttribute.ESWAP_COLORS:\r
502 b.append (this.swapColors);\r
503 break;\r
504 case jssun.font.EAttribute.EKERNING:\r
505 b.append (this.kerning);\r
506 break;\r
507 case jssun.font.EAttribute.ELIGATURES:\r
508 b.append (this.ligatures);\r
509 break;\r
510 case jssun.font.EAttribute.ETRACKING:\r
511 b.append (this.tracking);\r
512 break;\r
513 default:\r
514 throw  new InternalError ();\r
515 }\r
516 if ((this.nondefault & ea.mask) == 0) {\r
517 b.append ('*');\r
518 }}}\r
519 b.append ("[btx=" + this.baselineTransform + ", ctx=" + this.charTransform + "]");\r
520 b.append ('}');\r
521 return b.toString ();\r
522 });\r
523 c$.equals = Clazz.defineMethod (c$, "equals", \r
524  function (lhs, rhs) {\r
525 return lhs == null ? rhs == null : lhs.equals (rhs);\r
526 }, "~O,~O");\r
527 Clazz.defineMethod (c$, "update", \r
528  function (a) {\r
529 this.defined |= a.mask;\r
530 if (this.i_validate (a)) {\r
531 if (this.i_equals (a, jssun.font.AttributeValues.DEFAULT)) {\r
532 this.nondefault &= ~a.mask;\r
533 } else {\r
534 this.nondefault |= a.mask;\r
535 }} else {\r
536 this.setDefault (a);\r
537 }}, "jssun.font.EAttribute");\r
538 Clazz.defineMethod (c$, "i_set", \r
539  function (a, src) {\r
540 switch (a) {\r
541 case jssun.font.EAttribute.EFAMILY:\r
542 this.family = src.family;\r
543 break;\r
544 case jssun.font.EAttribute.EWEIGHT:\r
545 this.weight = src.weight;\r
546 break;\r
547 case jssun.font.EAttribute.EWIDTH:\r
548 this.width = src.width;\r
549 break;\r
550 case jssun.font.EAttribute.EPOSTURE:\r
551 this.posture = src.posture;\r
552 break;\r
553 case jssun.font.EAttribute.ESIZE:\r
554 this.size = src.size;\r
555 break;\r
556 case jssun.font.EAttribute.ETRANSFORM:\r
557 this.transform = src.transform;\r
558 this.updateDerivedTransforms ();\r
559 break;\r
560 case jssun.font.EAttribute.ESUPERSCRIPT:\r
561 this.superscript = src.superscript;\r
562 break;\r
563 case jssun.font.EAttribute.EFONT:\r
564 this.font = src.font;\r
565 break;\r
566 case jssun.font.EAttribute.EUNDERLINE:\r
567 this.underline = src.underline;\r
568 break;\r
569 case jssun.font.EAttribute.ESTRIKETHROUGH:\r
570 this.strikethrough = src.strikethrough;\r
571 break;\r
572 case jssun.font.EAttribute.ERUN_DIRECTION:\r
573 this.runDirection = src.runDirection;\r
574 break;\r
575 case jssun.font.EAttribute.EBIDI_EMBEDDING:\r
576 this.bidiEmbedding = src.bidiEmbedding;\r
577 break;\r
578 case jssun.font.EAttribute.EJUSTIFICATION:\r
579 this.justification = src.justification;\r
580 break;\r
581 case jssun.font.EAttribute.EINPUT_METHOD_HIGHLIGHT:\r
582 this.imHighlight = src.imHighlight;\r
583 break;\r
584 case jssun.font.EAttribute.EINPUT_METHOD_UNDERLINE:\r
585 this.imUnderline = src.imUnderline;\r
586 break;\r
587 case jssun.font.EAttribute.ESWAP_COLORS:\r
588 this.swapColors = src.swapColors;\r
589 break;\r
590 case jssun.font.EAttribute.EKERNING:\r
591 this.kerning = src.kerning;\r
592 break;\r
593 case jssun.font.EAttribute.ELIGATURES:\r
594 this.ligatures = src.ligatures;\r
595 break;\r
596 case jssun.font.EAttribute.ETRACKING:\r
597 this.tracking = src.tracking;\r
598 break;\r
599 default:\r
600 throw  new InternalError ();\r
601 }\r
602 }, "jssun.font.EAttribute,jssun.font.AttributeValues");\r
603 Clazz.defineMethod (c$, "i_equals", \r
604  function (a, src) {\r
605 switch (a) {\r
606 case jssun.font.EAttribute.EFAMILY:\r
607 return jssun.font.AttributeValues.equals (this.family, src.family);\r
608 case jssun.font.EAttribute.EWEIGHT:\r
609 return this.weight == src.weight;\r
610 case jssun.font.EAttribute.EWIDTH:\r
611 return this.width == src.width;\r
612 case jssun.font.EAttribute.EPOSTURE:\r
613 return this.posture == src.posture;\r
614 case jssun.font.EAttribute.ESIZE:\r
615 return this.size == src.size;\r
616 case jssun.font.EAttribute.ETRANSFORM:\r
617 return jssun.font.AttributeValues.equals (this.transform, src.transform);\r
618 case jssun.font.EAttribute.ESUPERSCRIPT:\r
619 return this.superscript == src.superscript;\r
620 case jssun.font.EAttribute.EFONT:\r
621 return jssun.font.AttributeValues.equals (this.font, src.font);\r
622 case jssun.font.EAttribute.EUNDERLINE:\r
623 return this.underline == src.underline;\r
624 case jssun.font.EAttribute.ESTRIKETHROUGH:\r
625 return this.strikethrough == src.strikethrough;\r
626 case jssun.font.EAttribute.ERUN_DIRECTION:\r
627 return this.runDirection == src.runDirection;\r
628 case jssun.font.EAttribute.EBIDI_EMBEDDING:\r
629 return this.bidiEmbedding == src.bidiEmbedding;\r
630 case jssun.font.EAttribute.EJUSTIFICATION:\r
631 return this.justification == src.justification;\r
632 case jssun.font.EAttribute.EINPUT_METHOD_HIGHLIGHT:\r
633 return jssun.font.AttributeValues.equals (this.imHighlight, src.imHighlight);\r
634 case jssun.font.EAttribute.EINPUT_METHOD_UNDERLINE:\r
635 return this.imUnderline == src.imUnderline;\r
636 case jssun.font.EAttribute.ESWAP_COLORS:\r
637 return this.swapColors == src.swapColors;\r
638 case jssun.font.EAttribute.EKERNING:\r
639 return this.kerning == src.kerning;\r
640 case jssun.font.EAttribute.ELIGATURES:\r
641 return this.ligatures == src.ligatures;\r
642 case jssun.font.EAttribute.ETRACKING:\r
643 return this.tracking == src.tracking;\r
644 default:\r
645 throw  new InternalError ();\r
646 }\r
647 }, "jssun.font.EAttribute,jssun.font.AttributeValues");\r
648 Clazz.defineMethod (c$, "i_set", \r
649  function (a, o) {\r
650 switch (a) {\r
651 case jssun.font.EAttribute.EFAMILY:\r
652 this.family = (o).trim ();\r
653 break;\r
654 case jssun.font.EAttribute.EWEIGHT:\r
655 this.weight = (o).floatValue ();\r
656 break;\r
657 case jssun.font.EAttribute.EWIDTH:\r
658 this.width = (o).floatValue ();\r
659 break;\r
660 case jssun.font.EAttribute.EPOSTURE:\r
661 this.posture = (o).floatValue ();\r
662 break;\r
663 case jssun.font.EAttribute.ESIZE:\r
664 this.size = (o).floatValue ();\r
665 break;\r
666 case jssun.font.EAttribute.ESUPERSCRIPT:\r
667 this.superscript = (o).intValue ();\r
668 break;\r
669 case jssun.font.EAttribute.EFONT:\r
670 this.font = o;\r
671 break;\r
672 case jssun.font.EAttribute.EUNDERLINE:\r
673 this.underline = (o).intValue ();\r
674 break;\r
675 case jssun.font.EAttribute.ESTRIKETHROUGH:\r
676 this.strikethrough = (o).booleanValue ();\r
677 break;\r
678 case jssun.font.EAttribute.ERUN_DIRECTION:\r
679 {\r
680 if (Clazz.instanceOf (o, Boolean)) {\r
681 this.runDirection = (java.awt.font.TextAttribute.RUN_DIRECTION_LTR.equals (o) ? 0 : 1);\r
682 } else {\r
683 this.runDirection = (o).intValue ();\r
684 }}break;\r
685 case jssun.font.EAttribute.EBIDI_EMBEDDING:\r
686 this.bidiEmbedding = (o).intValue ();\r
687 break;\r
688 case jssun.font.EAttribute.EJUSTIFICATION:\r
689 this.justification = (o).floatValue ();\r
690 break;\r
691 case jssun.font.EAttribute.EINPUT_METHOD_UNDERLINE:\r
692 this.imUnderline = (o).intValue ();\r
693 break;\r
694 case jssun.font.EAttribute.ESWAP_COLORS:\r
695 this.swapColors = (o).booleanValue ();\r
696 break;\r
697 case jssun.font.EAttribute.EKERNING:\r
698 this.kerning = (o).intValue ();\r
699 break;\r
700 case jssun.font.EAttribute.ELIGATURES:\r
701 this.ligatures = (o).intValue ();\r
702 break;\r
703 case jssun.font.EAttribute.ETRACKING:\r
704 this.tracking = (o).floatValue ();\r
705 break;\r
706 default:\r
707 throw  new InternalError ();\r
708 }\r
709 }, "jssun.font.EAttribute,~O");\r
710 Clazz.defineMethod (c$, "i_get", \r
711  function (a) {\r
712 switch (a) {\r
713 case jssun.font.EAttribute.EFAMILY:\r
714 return this.family;\r
715 case jssun.font.EAttribute.EWEIGHT:\r
716 return Float.$valueOf (this.weight);\r
717 case jssun.font.EAttribute.EWIDTH:\r
718 return Float.$valueOf (this.width);\r
719 case jssun.font.EAttribute.EPOSTURE:\r
720 return Float.$valueOf (this.posture);\r
721 case jssun.font.EAttribute.ESIZE:\r
722 return Float.$valueOf (this.size);\r
723 case jssun.font.EAttribute.ESUPERSCRIPT:\r
724 return Integer.$valueOf (this.superscript);\r
725 case jssun.font.EAttribute.EFONT:\r
726 return this.font;\r
727 case jssun.font.EAttribute.EUNDERLINE:\r
728 return Integer.$valueOf (this.underline);\r
729 case jssun.font.EAttribute.ESTRIKETHROUGH:\r
730 return Boolean.$valueOf (this.strikethrough);\r
731 case jssun.font.EAttribute.ERUN_DIRECTION:\r
732 {\r
733 switch (this.runDirection) {\r
734 case 0:\r
735 return java.awt.font.TextAttribute.RUN_DIRECTION_LTR;\r
736 case 1:\r
737 return java.awt.font.TextAttribute.RUN_DIRECTION_RTL;\r
738 default:\r
739 return null;\r
740 }\r
741 }case jssun.font.EAttribute.EBIDI_EMBEDDING:\r
742 return Integer.$valueOf (this.bidiEmbedding);\r
743 case jssun.font.EAttribute.EJUSTIFICATION:\r
744 return Float.$valueOf (this.justification);\r
745 case jssun.font.EAttribute.EINPUT_METHOD_HIGHLIGHT:\r
746 return this.imHighlight;\r
747 case jssun.font.EAttribute.EINPUT_METHOD_UNDERLINE:\r
748 return Integer.$valueOf (this.imUnderline);\r
749 case jssun.font.EAttribute.ESWAP_COLORS:\r
750 return Boolean.$valueOf (this.swapColors);\r
751 case jssun.font.EAttribute.EKERNING:\r
752 return Integer.$valueOf (this.kerning);\r
753 case jssun.font.EAttribute.ELIGATURES:\r
754 return Integer.$valueOf (this.ligatures);\r
755 case jssun.font.EAttribute.ETRACKING:\r
756 return Float.$valueOf (this.tracking);\r
757 default:\r
758 throw  new InternalError ();\r
759 }\r
760 }, "jssun.font.EAttribute");\r
761 Clazz.defineMethod (c$, "i_validate", \r
762  function (a) {\r
763 switch (a) {\r
764 case jssun.font.EAttribute.EFAMILY:\r
765 if (this.family == null || this.family.length == 0) this.family = jssun.font.AttributeValues.DEFAULT.family;\r
766 return true;\r
767 case jssun.font.EAttribute.EWEIGHT:\r
768 return this.weight > 0 && this.weight < 10;\r
769 case jssun.font.EAttribute.EWIDTH:\r
770 return this.width >= .5 && this.width < 10;\r
771 case jssun.font.EAttribute.EPOSTURE:\r
772 return this.posture >= -1 && this.posture <= 1;\r
773 case jssun.font.EAttribute.ESIZE:\r
774 return this.size >= 0;\r
775 case jssun.font.EAttribute.ETRANSFORM:\r
776 if (this.transform != null && this.transform.isIdentity ()) this.transform = jssun.font.AttributeValues.DEFAULT.transform;\r
777 return true;\r
778 case jssun.font.EAttribute.ESUPERSCRIPT:\r
779 return this.superscript >= -7 && this.superscript <= 7;\r
780 case jssun.font.EAttribute.EFONT:\r
781 return true;\r
782 case jssun.font.EAttribute.ECHAR_REPLACEMENT:\r
783 return true;\r
784 case jssun.font.EAttribute.EFOREGROUND:\r
785 return true;\r
786 case jssun.font.EAttribute.EBACKGROUND:\r
787 return true;\r
788 case jssun.font.EAttribute.EUNDERLINE:\r
789 return this.underline >= -1 && this.underline < 6;\r
790 case jssun.font.EAttribute.ESTRIKETHROUGH:\r
791 return true;\r
792 case jssun.font.EAttribute.ERUN_DIRECTION:\r
793 return this.runDirection >= -2 && this.runDirection <= 1;\r
794 case jssun.font.EAttribute.EBIDI_EMBEDDING:\r
795 return this.bidiEmbedding >= -61 && this.bidiEmbedding < 62;\r
796 case jssun.font.EAttribute.EJUSTIFICATION:\r
797 this.justification = Math.max (0, Math.min (this.justification, 1));\r
798 return true;\r
799 case jssun.font.EAttribute.EINPUT_METHOD_HIGHLIGHT:\r
800 return true;\r
801 case jssun.font.EAttribute.EINPUT_METHOD_UNDERLINE:\r
802 return this.imUnderline >= -1 && this.imUnderline < 6;\r
803 case jssun.font.EAttribute.ESWAP_COLORS:\r
804 return true;\r
805 case jssun.font.EAttribute.ENUMERIC_SHAPING:\r
806 return true;\r
807 case jssun.font.EAttribute.EKERNING:\r
808 return this.kerning >= 0 && this.kerning <= 1;\r
809 case jssun.font.EAttribute.ELIGATURES:\r
810 return this.ligatures >= 0 && this.ligatures <= 1;\r
811 case jssun.font.EAttribute.ETRACKING:\r
812 return this.tracking >= -1 && this.tracking <= 10;\r
813 default:\r
814 throw  new InternalError ("unknown attribute: " + a);\r
815 }\r
816 }, "jssun.font.EAttribute");\r
817 c$.getJustification = Clazz.defineMethod (c$, "getJustification", \r
818 function (map) {\r
819 if (map != null) {\r
820 if (Clazz.instanceOf (map, jssun.font.AttributeMap) && (map).getValues () != null) {\r
821 return (map).getValues ().justification;\r
822 }var obj = map.get (java.awt.font.TextAttribute.JUSTIFICATION);\r
823 if (obj != null && Clazz.instanceOf (obj, Number)) {\r
824 return Math.max (0, Math.min (1, (obj).floatValue ()));\r
825 }}return jssun.font.AttributeValues.DEFAULT.justification;\r
826 }, "java.util.Map");\r
827 Clazz.defineMethod (c$, "applyIMHighlight", \r
828 function () {\r
829 return this;\r
830 });\r
831 c$.getBaselineTransform = Clazz.defineMethod (c$, "getBaselineTransform", \r
832 function (map) {\r
833 if (map != null) {\r
834 var av = null;\r
835 if (Clazz.instanceOf (map, jssun.font.AttributeMap) && (map).getValues () != null) {\r
836 av = (map).getValues ();\r
837 } else if (map.get (java.awt.font.TextAttribute.TRANSFORM) != null) {\r
838 av = jssun.font.AttributeValues.fromMap (map);\r
839 }if (av != null) {\r
840 return av.baselineTransform;\r
841 }}return null;\r
842 }, "java.util.Map");\r
843 c$.getCharTransform = Clazz.defineMethod (c$, "getCharTransform", \r
844 function (map) {\r
845 if (map != null) {\r
846 var av = null;\r
847 if (Clazz.instanceOf (map, jssun.font.AttributeMap) && (map).getValues () != null) {\r
848 av = (map).getValues ();\r
849 } else if (map.get (java.awt.font.TextAttribute.TRANSFORM) != null) {\r
850 av = jssun.font.AttributeValues.fromMap (map);\r
851 }if (av != null) {\r
852 return av.charTransform;\r
853 }}return null;\r
854 }, "java.util.Map");\r
855 Clazz.defineMethod (c$, "updateDerivedTransforms", \r
856 function () {\r
857 if (this.transform == null) {\r
858 this.baselineTransform = null;\r
859 this.charTransform = null;\r
860 } else {\r
861 this.charTransform =  new java.awt.geom.AffineTransform (this.transform);\r
862 this.baselineTransform = jssun.font.AttributeValues.extractXRotation (this.charTransform, true);\r
863 if (this.charTransform.isIdentity ()) {\r
864 this.charTransform = null;\r
865 }if (this.baselineTransform.isIdentity ()) {\r
866 this.baselineTransform = null;\r
867 }}if (this.baselineTransform == null) {\r
868 this.nondefault &= ~jssun.font.EAttribute.EBASELINE_TRANSFORM.mask;\r
869 } else {\r
870 this.nondefault |= jssun.font.EAttribute.EBASELINE_TRANSFORM.mask;\r
871 }});\r
872 c$.extractXRotation = Clazz.defineMethod (c$, "extractXRotation", \r
873 function (tx, andTranslation) {\r
874 return jssun.font.AttributeValues.extractRotation ( new java.awt.geom.Point2D.Double (1, 0), tx, andTranslation);\r
875 }, "java.awt.geom.AffineTransform,~B");\r
876 c$.extractYRotation = Clazz.defineMethod (c$, "extractYRotation", \r
877 function (tx, andTranslation) {\r
878 return jssun.font.AttributeValues.extractRotation ( new java.awt.geom.Point2D.Double (0, 1), tx, andTranslation);\r
879 }, "java.awt.geom.AffineTransform,~B");\r
880 c$.extractRotation = Clazz.defineMethod (c$, "extractRotation", \r
881  function (pt, tx, andTranslation) {\r
882 tx.deltaTransform (pt, pt);\r
883 var rtx = java.awt.geom.AffineTransform.getRotateInstance (pt.x, pt.y);\r
884 try {\r
885 var rtxi = rtx.createInverse ();\r
886 var dx = tx.getTranslateX ();\r
887 var dy = tx.getTranslateY ();\r
888 tx.preConcatenate (rtxi);\r
889 if (andTranslation) {\r
890 if (dx != 0 || dy != 0) {\r
891 tx.setTransform (tx.getScaleX (), tx.getShearY (), tx.getShearX (), tx.getScaleY (), 0, 0);\r
892 rtx.setTransform (rtx.getScaleX (), rtx.getShearY (), rtx.getShearX (), rtx.getScaleY (), dx, dy);\r
893 }}} catch (e) {\r
894 if (Clazz.exceptionOf (e, java.awt.geom.NoninvertibleTransformException)) {\r
895 return null;\r
896 } else {\r
897 throw e;\r
898 }\r
899 }\r
900 return rtx;\r
901 }, "java.awt.geom.Point2D.Double,java.awt.geom.AffineTransform,~B");\r
902 c$.DEFAULT = c$.prototype.DEFAULT =  new jssun.font.AttributeValues ();\r
903 c$.MASK_ALL = c$.prototype.MASK_ALL = jssun.font.AttributeValues.getMask (jssun.font.EAttribute.getEnumConstants ());\r
904 Clazz.defineStatics (c$,\r
905 "DEFINED_KEY", "sun.font.attributevalues.defined_key");\r
906 });\r