JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / javajs / awt / Font.js
1 Clazz.declarePackage ("javajs.awt");\r
2 Clazz.load (null, "javajs.awt.Font", ["javajs.util.AU"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.fid = 0;\r
5 this.fontFace = null;\r
6 this.fontStyle = null;\r
7 this.fontSizeNominal = 0;\r
8 this.idFontFace = 0;\r
9 this.idFontStyle = 0;\r
10 this.fontSize = 0;\r
11 this.font = null;\r
12 this.fontMetrics = null;\r
13 this.manager = null;\r
14 this.ascent = 0;\r
15 this.descent = 0;\r
16 this.isBold = false;\r
17 this.isItalic = false;\r
18 Clazz.instantialize (this, arguments);\r
19 }, javajs.awt, "Font");\r
20 Clazz.makeConstructor (c$, \r
21 ($fz = function (manager, fid, idFontFace, idFontStyle, fontSize, fontSizeNominal, graphics) {\r
22 this.manager = manager;\r
23 this.fid = fid;\r
24 this.fontFace = javajs.awt.Font.fontFaces[idFontFace];\r
25 this.fontStyle = javajs.awt.Font.fontStyles[idFontStyle];\r
26 this.idFontFace = idFontFace;\r
27 this.idFontStyle = idFontStyle;\r
28 this.fontSize = fontSize;\r
29 this.isBold = (idFontStyle & 1) == 1;\r
30 this.isItalic = (idFontStyle & 2) == 2;\r
31 this.fontSizeNominal = fontSizeNominal;\r
32 this.font = manager.newFont (javajs.awt.Font.fontFaces[idFontFace], this.isBold, this.isItalic, fontSize);\r
33 this.fontMetrics = manager.getFontMetrics (this, graphics);\r
34 this.descent = manager.getFontDescent (this.fontMetrics);\r
35 this.ascent = manager.getFontAscent (this.fontMetrics);\r
36 }, $fz.isPrivate = true, $fz), "javajs.api.FontManager,~N,~N,~N,~N,~N,~O");\r
37 c$.getFont3D = Clazz.defineMethod (c$, "getFont3D", \r
38 function (fontID) {\r
39 return javajs.awt.Font.font3ds[fontID & 0xFF];\r
40 }, "~N");\r
41 c$.createFont3D = Clazz.defineMethod (c$, "createFont3D", \r
42 function (fontface, fontstyle, fontsize, fontsizeNominal, manager, graphicsForMetrics) {\r
43 if (fontsize > 0xFF) fontsize = 0xFF;\r
44 var fontsizeX16 = (Clazz.floatToInt (fontsize)) << 4;\r
45 var fontkey = ((fontface & 3) | ((fontstyle & 3) << 2) | (fontsizeX16 << 4));\r
46 for (var i = javajs.awt.Font.fontkeyCount; --i > 0; ) if (fontkey == javajs.awt.Font.fontkeys[i] && javajs.awt.Font.font3ds[i].fontSizeNominal == fontsizeNominal) return javajs.awt.Font.font3ds[i];\r
47 \r
48 var fontIndexNext = javajs.awt.Font.fontkeyCount++;\r
49 if (fontIndexNext == javajs.awt.Font.fontkeys.length) javajs.awt.Font.fontkeys = javajs.util.AU.arrayCopyI (javajs.awt.Font.fontkeys, fontIndexNext + 8);\r
50 javajs.awt.Font.font3ds = javajs.util.AU.arrayCopyObject (javajs.awt.Font.font3ds, fontIndexNext + 8);\r
51 var font3d =  new javajs.awt.Font (manager, fontIndexNext, fontface, fontstyle, fontsize, fontsizeNominal, graphicsForMetrics);\r
52 javajs.awt.Font.font3ds[fontIndexNext] = font3d;\r
53 javajs.awt.Font.fontkeys[fontIndexNext] = fontkey;\r
54 return font3d;\r
55 }, "~N,~N,~N,~N,javajs.api.FontManager,~O");\r
56 c$.getFontFaceID = Clazz.defineMethod (c$, "getFontFaceID", \r
57 function (fontface) {\r
58 return ("Monospaced".equalsIgnoreCase (fontface) ? 2 : "Serif".equalsIgnoreCase (fontface) ? 1 : 0);\r
59 }, "~S");\r
60 c$.getFontStyleID = Clazz.defineMethod (c$, "getFontStyleID", \r
61 function (fontstyle) {\r
62 for (var i = 4; --i >= 0; ) if (javajs.awt.Font.fontStyles[i].equalsIgnoreCase (fontstyle)) return i;\r
63 \r
64 return -1;\r
65 }, "~S");\r
66 Clazz.defineMethod (c$, "getAscent", \r
67 function () {\r
68 return this.ascent;\r
69 });\r
70 Clazz.defineMethod (c$, "getDescent", \r
71 function () {\r
72 return this.descent;\r
73 });\r
74 Clazz.defineMethod (c$, "getHeight", \r
75 function () {\r
76 return this.getAscent () + this.getDescent ();\r
77 });\r
78 Clazz.defineMethod (c$, "getFontMetrics", \r
79 function () {\r
80 return this.fontMetrics;\r
81 });\r
82 Clazz.defineMethod (c$, "stringWidth", \r
83 function (text) {\r
84 return this.manager.fontStringWidth (this, text);\r
85 }, "~S");\r
86 Clazz.defineMethod (c$, "getInfo", \r
87 function () {\r
88 return this.fontSizeNominal + " " + this.fontFace + " " + this.fontStyle;\r
89 });\r
90 Clazz.defineStatics (c$,\r
91 "FONT_ALLOCATION_UNIT", 8,\r
92 "fontkeyCount", 1,\r
93 "fontkeys",  Clazz.newIntArray (8, 0));\r
94 c$.font3ds = c$.prototype.font3ds =  new Array (8);\r
95 Clazz.defineStatics (c$,\r
96 "FONT_FACE_SANS", 0,\r
97 "FONT_FACE_SERIF", 1,\r
98 "FONT_FACE_MONO", 2,\r
99 "fontFaces",  Clazz.newArray (-1, ["SansSerif", "Serif", "Monospaced", ""]),\r
100 "FONT_STYLE_PLAIN", 0,\r
101 "FONT_STYLE_BOLD", 1,\r
102 "FONT_STYLE_ITALIC", 2,\r
103 "FONT_STYLE_BOLDITALIC", 3,\r
104 "fontStyles",  Clazz.newArray (-1, ["Plain", "Bold", "Italic", "BoldItalic"]));\r
105 });\r