1 Clazz.declarePackage ("jalview.util");
\r
2 Clazz.load (null, "jalview.util.Format", ["java.lang.Character", "$.IllegalArgumentException", "$.StringBuffer"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
8 this.leading_zeroes = false;
\r
9 this.show_plus = false;
\r
10 this.alternate = false;
\r
11 this.show_space = false;
\r
12 this.left_align = false;
\r
14 this.formatString = null;
\r
15 Clazz.instantialize (this, arguments);
\r
16 }, jalview.util, "Format");
\r
17 Clazz.makeConstructor (c$,
\r
19 this.formatString = s;
\r
21 this.precision = -1;
\r
24 this.leading_zeroes = false;
\r
25 this.show_plus = false;
\r
26 this.alternate = false;
\r
27 this.show_space = false;
\r
28 this.left_align = false;
\r
30 var length = s.length;
\r
31 var parse_state = 0;
\r
33 while (parse_state == 0) {
\r
36 } else if (s.charAt (i) == '%') {
\r
37 if (i < (length - 1)) {
\r
38 if (s.charAt (i + 1) == '%') {
\r
39 this.pre = this.pre + '%';
\r
44 throw new IllegalArgumentException ();
\r
46 this.pre = this.pre + s.charAt (i);
\r
49 while (parse_state == 1) {
\r
52 } else if (s.charAt (i) == ' ') {
\r
53 this.show_space = true;
\r
54 } else if (s.charAt (i) == '-') {
\r
55 this.left_align = true;
\r
56 } else if (s.charAt (i) == '+') {
\r
57 this.show_plus = true;
\r
58 } else if (s.charAt (i) == '0') {
\r
59 this.leading_zeroes = true;
\r
60 } else if (s.charAt (i) == '#') {
\r
61 this.alternate = true;
\r
67 while (parse_state == 2) {
\r
70 } else if (('0' <= s.charAt (i)) && (s.charAt (i) <= '9')) {
\r
71 this.width = ((this.width * 10) + s.charCodeAt (i)) - 48;
\r
73 } else if (s.charAt (i) == '.') {
\r
80 while (parse_state == 3) {
\r
83 } else if (('0' <= s.charAt (i)) && (s.charAt (i) <= '9')) {
\r
84 this.precision = ((this.precision * 10) + s.charCodeAt (i)) - 48;
\r
89 if (parse_state == 4) {
\r
93 this.fmt = s.charAt (i);
\r
96 this.post = s.substring (i, length);
\r
98 c$.getHexString = Clazz.defineMethod (c$, "getHexString",
\r
103 r = Integer.toHexString (color.getRed ());
\r
104 if (r.length < 2) {
\r
106 }g = Integer.toHexString (color.getGreen ());
\r
107 if (g.length < 2) {
\r
109 }b = Integer.toHexString (color.getBlue ());
\r
110 if (b.length < 2) {
\r
113 }, "java.awt.Color");
\r
114 c$.printDouble = Clazz.defineMethod (c$, "printDouble",
\r
115 function (s, fmt, x) {
\r
116 s.print ( new jalview.util.Format (fmt).formDouble (x));
\r
117 }, "java.io.PrintStream,~S,~N");
\r
118 c$.printLong = Clazz.defineMethod (c$, "printLong",
\r
119 function (s, fmt, x) {
\r
120 s.print ( new jalview.util.Format (fmt).formLong (x));
\r
121 }, "java.io.PrintStream,~S,~N");
\r
122 c$.printChar = Clazz.defineMethod (c$, "printChar",
\r
123 function (s, fmt, x) {
\r
124 s.print ( new jalview.util.Format (fmt).formChar (x));
\r
125 }, "java.io.PrintStream,~S,~S");
\r
126 c$.print = Clazz.defineMethod (c$, "print",
\r
127 function (s, fmt, x) {
\r
128 s.print ( new jalview.util.Format (fmt).form (x));
\r
129 }, "java.io.PrintStream,~S,~S");
\r
130 c$.atoi = Clazz.defineMethod (c$, "atoi",
\r
132 return jalview.util.Format.atol (s);
\r
134 c$.atol = Clazz.defineMethod (c$, "atol",
\r
137 while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {
\r
140 if ((i < s.length) && (s.charAt (i) == '0')) {
\r
141 if (((i + 1) < s.length) && ((s.charAt (i + 1) == 'x') || (s.charAt (i + 1) == 'X'))) {
\r
142 return jalview.util.Format.parseLong (s.substring (i + 2), 16);
\r
144 return jalview.util.Format.parseLong (s, 8);
\r
146 return jalview.util.Format.parseLong (s, 10);
\r
148 c$.parseLong = Clazz.defineMethod (c$, "parseLong",
\r
149 ($fz = function (s, base) {
\r
153 while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {
\r
156 if ((i < s.length) && (s.charAt (i) == '-')) {
\r
159 } else if ((i < s.length) && (s.charAt (i) == '+')) {
\r
161 }while (i < s.length) {
\r
162 var ch = s.charAt (i);
\r
163 if (('0' <= ch) && (ch.charCodeAt (0) < (48 + base))) {
\r
164 r = ((r * base) + ch.charCodeAt (0)) - 48;
\r
165 } else if (('A' <= ch) && (ch.charCodeAt (0) < ((65 + base) - 10))) {
\r
166 r = ((r * base) + ch.charCodeAt (0)) - 65 + 10;
\r
167 } else if (('a' <= ch) && (ch.charCodeAt (0) < ((97 + base) - 10))) {
\r
168 r = ((r * base) + ch.charCodeAt (0)) - 97 + 10;
\r
174 }, $fz.isPrivate = true, $fz), "~S,~N");
\r
175 c$.atof = Clazz.defineMethod (c$, "atof",
\r
182 while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {
\r
185 if ((i < s.length) && (s.charAt (i) == '-')) {
\r
188 } else if ((i < s.length) && (s.charAt (i) == '+')) {
\r
190 }while (i < s.length) {
\r
191 var ch = s.charAt (i);
\r
192 if (('0' <= ch) && (ch <= '9')) {
\r
194 r = ((r * 10) + ch.charCodeAt (0)) - 48;
\r
195 } else if (state == 1) {
\r
197 r = r + (p * (ch.charCodeAt (0) - 48));
\r
198 }} else if (ch == '.') {
\r
203 }} else if ((ch == 'e') || (ch == 'E')) {
\r
204 var e = jalview.util.Format.parseLong (s.substring (i + 1), 10);
\r
205 return sign * r * Math.pow (10, e);
\r
212 Clazz.defineMethod (c$, "formDouble",
\r
215 if (this.precision < 0) {
\r
216 this.precision = 6;
\r
221 }if (this.fmt == 'f') {
\r
222 r = this.fixed_format (x);
\r
223 } else if ((this.fmt == 'e') || (this.fmt == 'E') || (this.fmt == 'g') || (this.fmt == 'G')) {
\r
224 r = this.exp_format (x);
\r
226 throw new IllegalArgumentException ();
\r
227 }return this.pad (this.sign (s, r));
\r
229 Clazz.defineMethod (c$, "formLong",
\r
233 if ((this.fmt == 'd') || (this.fmt == 'i')) {
\r
235 r = ("" + x).substring (1);
\r
240 }} else if (this.fmt == 'o') {
\r
241 r = jalview.util.Format.convert (x, 3, 7, "01234567");
\r
242 } else if (this.fmt == 'x') {
\r
243 r = jalview.util.Format.convert (x, 4, 15, "0123456789abcdef");
\r
244 } else if (this.fmt == 'X') {
\r
245 r = jalview.util.Format.convert (x, 4, 15, "0123456789ABCDEF");
\r
247 throw new IllegalArgumentException ();
\r
248 }return this.pad (this.sign (s, r));
\r
250 Clazz.defineMethod (c$, "formChar",
\r
252 if (this.fmt != 'c') {
\r
253 throw new IllegalArgumentException ();
\r
255 return this.pad (r);
\r
257 Clazz.defineMethod (c$, "form",
\r
259 if (this.fmt != 's') {
\r
260 throw new IllegalArgumentException ();
\r
261 }if (this.precision >= 0) {
\r
262 s = s.substring (0, this.precision);
\r
263 }return this.pad (s);
\r
265 c$.repeat = Clazz.defineMethod (c$, "repeat",
\r
266 ($fz = function (c, n) {
\r
269 }var s = new StringBuffer (n);
\r
270 for (var i = 0; i < n; i++) {
\r
273 return s.toString ();
\r
274 }, $fz.isPrivate = true, $fz), "~S,~N");
\r
275 c$.convert = Clazz.defineMethod (c$, "convert",
\r
276 ($fz = function (x, n, m, d) {
\r
281 r = d.charAt ((x & m)) + r;
\r
285 }, $fz.isPrivate = true, $fz), "~N,~N,~N,~S");
\r
286 Clazz.defineMethod (c$, "pad",
\r
287 ($fz = function (r) {
\r
288 var p = jalview.util.Format.repeat (' ', this.width - r.length);
\r
289 if (this.left_align) {
\r
290 return this.pre + r + p + this.post;
\r
292 return this.pre + p + r + this.post;
\r
293 }}, $fz.isPrivate = true, $fz), "~S");
\r
294 Clazz.defineMethod (c$, "sign",
\r
295 ($fz = function (s, r) {
\r
299 } else if (s > 0) {
\r
300 if (this.show_plus) {
\r
302 } else if (this.show_space) {
\r
305 if ((this.fmt == 'o') && this.alternate && (r.length > 0) && (r.charAt (0) != '0')) {
\r
307 } else if ((this.fmt == 'x') && this.alternate) {
\r
309 } else if ((this.fmt == 'X') && this.alternate) {
\r
312 if (this.leading_zeroes) {
\r
314 } else if (((this.fmt == 'd') || (this.fmt == 'i') || (this.fmt == 'x') || (this.fmt == 'X') || (this.fmt == 'o')) && (this.precision > 0)) {
\r
315 w = this.precision;
\r
316 }return p + jalview.util.Format.repeat ('0', w - p.length - r.length) + r;
\r
317 }, $fz.isPrivate = true, $fz), "~N,~S");
\r
318 Clazz.defineMethod (c$, "fixed_format",
\r
319 ($fz = function (d) {
\r
320 var removeTrailing = ((this.fmt == 'G') || (this.fmt == 'g')) && !this.alternate;
\r
321 if (d > 0x7FFFFFFFFFFFFFFF) {
\r
322 return this.exp_format (d);
\r
323 }if (this.precision == 0) {
\r
324 return Clazz.doubleToLong (d + 0.5) + (removeTrailing ? "" : ".");
\r
325 }var whole = Clazz.doubleToLong (d);
\r
326 var fr = d - whole;
\r
327 if ((fr >= 1) || (fr < 0)) {
\r
328 return this.exp_format (d);
\r
330 var leading_zeroes = "";
\r
331 for (var i = 1; (i <= this.precision) && (factor <= 0x7FFFFFFFFFFFFFFF); i++) {
\r
333 leading_zeroes = leading_zeroes + "0";
\r
335 var l = Clazz.doubleToLong ((factor * fr) + 0.5);
\r
339 }var z = leading_zeroes + l;
\r
340 z = "." + z.substring (z.length - this.precision, z.length);
\r
341 if (removeTrailing) {
\r
342 var t = z.length - 1;
\r
343 while ((t >= 0) && (z.charAt (t) == '0')) {
\r
346 if ((t >= 0) && (z.charAt (t) == '.')) {
\r
348 }z = z.substring (0, t + 1);
\r
350 }, $fz.isPrivate = true, $fz), "~N");
\r
351 Clazz.defineMethod (c$, "exp_format",
\r
352 ($fz = function (d) {
\r
368 }if (((this.fmt == 'g') || (this.fmt == 'G')) && (e >= -4) && (e < this.precision)) {
\r
369 return this.fixed_format (d);
\r
371 f = f + this.fixed_format (d);
\r
372 if ((this.fmt == 'e') || (this.fmt == 'g')) {
\r
383 }return f + p.substring (p.length - 3, p.length);
\r
384 }, $fz.isPrivate = true, $fz), "~N");
\r
385 Clazz.overrideMethod (c$, "toString",
\r
387 return this.formatString;
\r