/***************************************************************************** * * * HotEqn Equation Viewer Basic Applet * * * ****************************************************************************** * Java Applet to view mathematical Equations provided in the LaTeX language * ****************************************************************************** Copyright 2006 Stefan Müller and Christian Schmid, modified by Rene Grothmann This file is part of the HotEqn package. HotEqn is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; HotEqn is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ package atp; import java.awt.BasicStroke; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.MediaTracker; import java.awt.event.ActionListener; import java.util.Hashtable; import javax.swing.JComponent; public class sHotEqn { JComponent PC; // container panel private int width; private int height; private String _fldcase; private String _fldint; ActionListener G; private final b S; private e D; private Font d; private Font b; private Font _fldnull; private Font _fldlong; private final int j[] = { 14, 12, 10, 8 }; private final int _fldfor[] = { 3, 3, 3, 3 }; private Image s; private boolean Q; private int f; private int H; private final boolean K; private int g; private String z; private String E; private final f _flddo; private final MediaTracker B; private final Hashtable w; public boolean r; public boolean L; public boolean q; private boolean A; private boolean t; private int _fldelse; private int _fldchar; private int J; private int I; private int a; private int m; private int R; private int l; private int F; private boolean c; private int p; private int o; public sHotEqn(final JComponent PC) { width = 0; height = 0; _fldcase = null; _fldint = "Helvetica"; Q = false; f = 0; H = 0; K = false; g = 0; z = "left"; E = "top"; w = new Hashtable(13); r = false; L = false; q = true; A = false; t = true; _fldelse = 0; _fldchar = 0; J = 0; I = 0; a = 0; m = 0; R = 0; l = 0; F = 5; c = false; p = 0; o = 0; _flddo = new f(); B = new MediaTracker(PC); S = new b(""); } public void setEquation(final String s1) { _fldcase = s1; S.a(s1); Q = false; } public String getEquation() { return _fldcase; } public String Status; public void printStatus(final String s1) { Status = s1; } private void a(final String s1) { Status = s1; } public Image getImage() { if (Q) { return s; } else { return null; } } public void setDebug(final boolean flag) { q = flag; } public boolean isDebug() { return q; } public void setFontname(final String s1) { _fldint = s1; } public String getFontname() { return _fldint; } int i10, j10, k10, l10; boolean bold0, fonts = false; public void setHAlign(final String s1) { z = s1; Q = false; } public String getHAlign() { return z; } public void setVAlign(final String s1) { E = s1; Q = false; } public String getVAlign() { return E; } public void setEditable(final boolean flag) { t = flag; } public boolean isEditable() { return t; } public String getSelectedArea() { return S.a(p, o); } public Dimension getPreferredSize() { if ((width == 0) & (height == 0)) { final Graphics2D g1 = (Graphics2D) PC.getGraphics(); if (g1 != null) { g1.setFont(d); S._mthdo(); final c c1 = _mthnew(0, 150, false, g1, 1); if (K) { g = 5; } else { g = 0; } f = 1 + c1._flddo + 2 * g; H = 1 + c1._fldif + c1.a + 2 * g; } } width = f; height = H; if (f <= 1) { return new Dimension(100, 100); } else { return new Dimension(f, H); } } final int ff1 = 8, ff2 = 6; public Dimension getSizeof(final String s1, final Graphics2D g1) { if (d != g1.getFont()) { d = g1.getFont(); final int fs = d.getSize(); b = new Font(d.getFamily(), d.getStyle(), fs * ff1 / 10); _fldnull = _fldlong = new Font(d.getFamily(), d.getStyle(), fs * ff2 / 10); } S.a(s1); final c c1 = _mthnew(0, 150, false, g1, 1); byte byte0; if (K) { byte0 = 5; } else { byte0 = 0; } return new Dimension(1 + c1._flddo + 2 * byte0, 1 + c1._fldif + c1.a + 2 * byte0); } public int getAscent(final String s1, final Graphics2D g1) { if (d != g1.getFont()) { d = g1.getFont(); final int fs = d.getSize(); b = new Font(d.getFamily(), d.getStyle(), fs * ff1 / 10); _fldnull = _fldlong = new Font(d.getFamily(), d.getStyle(), fs * ff2 / 10); } S.a(s1); final c c1 = _mthnew(0, 150, false, g1, 1); byte byte0; if (K) { byte0 = 5; } else { byte0 = 0; } return c1._fldif + byte0; } public Dimension getMinimumSize() { return getPreferredSize(); } public synchronized int paint(final int cc, final int rr, final Graphics2D g2) { // g2.setStroke(new BasicStroke(1.0f)); if (d != g2.getFont()) { d = g2.getFont(); final int fs = d.getSize(); b = new Font(d.getFamily(), d.getStyle(), fs * ff1 / 10); _fldnull = _fldlong = new Font(d.getFamily(), d.getStyle(), fs * ff2 / 10); } c c1 = new c(); g2.setFont(d); g = 0; S._mthdo(); c1 = _mthnew(cc, rr, false, g2, 1); final int hh = c1._fldif; c1 = new c(); S._mthdo(); c1 = _mthnew(cc, rr + hh, true, g2, 1); a(" "); if (z.equals("center")) { } else if (z.equals("right")) { } if (E.equals("middle")) { } else if (E.equals("bottom")) { } f = 1 + c1._flddo + 2 * g; H = 1 + c1._fldif + c1.a + 2 * g; if (f > width) { } if (H > height) { } Q = true; notify(); return c1._fldif + c1.a; } private c _mthnew(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { return _mthtry(i1, j1, flag, g1, k1, true); } private c _mthtry(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1, final boolean flag1) { c c1 = new c(); final c c2 = new c(); boolean flag2 = true; boolean flag5 = false; int l1 = 0; while (!S._mthnew() && flag2) { D = S._mthint(); if (A && flag) { l1 = S._mthif(); } boolean flag4 = false; final int i2 = l1; final int j2 = D.y; switch (D.y) { case 4: // '\004' case 7: // '\007' case 8: // '\b' case 17: // '\021' case 51: // '3' if (c && flag) { if (l1 > o) { o = l1; } if (l1 < p) { p = l1; } } return c2; case 22: // '\026' c1 = _mthbyte(i1 + c2._flddo, j1, flag, g1, k1); break; case 5: // '\005' c1 = a(i1 + c2._flddo, j1, flag, g1); break; case 15: // '\017' if (c && flag) { flag5 = true; } c1 = _mthif(i1 + c2._flddo, j1, flag, g1, k1); break; case 50: // '2' if (c && flag) { flag5 = true; } c1 = _mthgoto(i1 + c2._flddo, j1, flag, g1, k1); break; case 3: // '\003' c1 = _mthtry(i1 + c2._flddo, j1, flag, g1, k1, true); break; case 123: // '{' if (c && flag) { flag5 = true; } c1 = _mthelse(i1 + c2._flddo, j1, flag, g1, k1); break; case 1: // '\001' c1 = _mthnew(i1 + c2._flddo, j1, flag, g1); break; case 110: // 'n' c1 = _mthtry(i1 + c2._flddo, j1, flag, g1, k1); break; case 108: // 'l' c1 = _mthint(i1 + c2._flddo, j1, flag, g1); break; case 12: // '\f' c1 = _mthfor(i1 + c2._flddo, j1, flag, g1, k1, true); break; case 1001: // '\f' c1 = _mthfor(i1 + c2._flddo, j1, flag, g1, k1 - 1, true); break; case 115: // 's' c1 = _mthfor(i1 + c2._flddo, j1, flag, g1, k1, false); break; case 2: // '\002' case 9: // '\t' c1 = _mthif(i1 + c2._flddo, j1, flag, g1); break; case 18: // '\022' c1 = _mthif(i1 + c2._flddo, j1, flag, g1, k1, false); break; case 19: // '\023' c1 = _mthif(i1 + c2._flddo, j1, flag, g1, k1, true); break; case 16: // '\020' if (c && flag) { flag5 = true; } c1 = _mthnull(i1 + c2._flddo, j1, flag, g1, k1); break; case 24: // '\030' c1 = _mthfor(i1 + c2._flddo, j1, flag, g1, k1); break; case 124: // '|' c1 = _mthdo(i1 + c2._flddo, j1, flag, g1); break; case 118: // 'v' c1 = a(i1 + c2._flddo, j1, flag, g1, k1); break; case 119: // 'w' c1 = _mthlong(i1 + c2._flddo, j1, flag, g1, k1); break; case 116: // 't' c1 = a(i1 + c2._flddo, j1, flag, g1, k1, true); break; case 117: // 'u' c1 = a(i1 + c2._flddo, j1, flag, g1, k1, false); break; case 109: // 'm' c1 = _mthtry(i1 + c2._flddo, j1, flag, g1); break; case 113: // 'q' c1 = _mthfor(i1 + c2._flddo, j1, flag, g1); break; case 13: // '\r' if (c && flag) { flag5 = true; } c1 = _mthcase(i1 + c2._flddo, j1, flag, g1, k1); break; case 120: // 'x' c1 = _mthchar(i1 + c2._flddo, j1, flag, g1, k1); break; case 10: // '\n' c1 = _mthint(i1 + c2._flddo, j1, flag, g1, k1, true); break; case 11: // '\013' c1 = _mthdo(i1 + c2._flddo, j1, flag, g1, k1, true); break; case 20: // '\024' c1 = _mthdo(i1 + c2._flddo, j1, flag, g1, k1); break; case 14: // '\016' c1 = _mthint(i1 + c2._flddo, j1, flag, g1, k1); break; case 25: // '\031' c1 = new c(0, 0, 0); flag4 = true; break; case 99: // 'c' case 100: // 'd' c1 = new c(0, 0, 0); break; case 6: // '\006' case 21: // '\025' case 23: // '\027' case 26: // '\032' case 27: // '\033' case 28: // '\034' case 29: // '\035' case 30: // '\036' case 31: // '\037' case 32: // ' ' case 33: // '!' case 34: // '"' case 35: // '#' case 36: // '$' case 37: // '%' case 38: // '&' case 39: // '\'' case 40: // '(' case 41: // ')' case 42: // '*' case 43: // '+' case 44: // ',' case 45: // '-' case 46: // '.' case 47: // '/' case 48: // '0' case 49: // '1' case 52: // '4' case 53: // '5' case 54: // '6' case 55: // '7' case 56: // '8' case 57: // '9' case 58: // ':' case 59: // ';' case 60: // '<' case 61: // '=' case 62: // '>' case 63: // '?' case 64: // '@' case 913: case 914: case 915: case 916: case 917: case 918: case 919: case 920: case 921: case 922: case 923: case 924: case 925: case 926: case 927: case 928: case 929: case 930: case 931: case 932: case 933: case 934: case 935: case 936: case 937: case 945: case 946: case 947: case 948: case 949: case 950: case 951: case 952: case 953: case 954: case 955: case 956: case 957: case 958: case 959: case 960: case 961: case 962: case 963: case 964: case 965: case 966: case 967: case 968: case 969:// GreekLetters (unicode) case 65: // 'A' case 66: // 'B' case 67: // 'C' case 68: // 'D' case 69: // 'E' case 70: // 'F' case 71: // 'G' case 72: // 'H' case 73: // 'I' case 74: // 'J' case 75: // 'K' case 76: // 'L' case 77: // 'M' case 78: // 'N' case 79: // 'O' case 80: // 'P' case 81: // 'Q' case 82: // 'R' case 83: // 'S' case 84: // 'T' case 85: // 'U' case 86: // 'V' case 87: // 'W' case 88: // 'X' case 89: // 'Y' case 90: // 'Z' case 91: // '[' case 92: // '\\' case 93: // ']' case 94: // '^' case 95: // '_' case 96: // '`' case 97: // 'a' case 98: // 'b' case 101:// 'e' case 102: // 'f' case 103: // 'g' case 104: // 'h' case 105: // 'i' case 106: // 'j' case 107: // 'k' case 111: // 'o' case 112: // 'p' case 114: // 'r' default: printStatus("Parser: unknown token: " + D.y + " " + D.w); break; } if (flag) { if (A) { if (!c && i1 + c2._flddo <= _fldelse && _fldelse <= i1 + c2._flddo + c1._flddo && j1 - c1._fldif <= _fldchar && _fldchar <= j1 + c1.a) { m = l = _fldelse; a = R = _fldchar; c = true; p = l1; o = l1; } if (!c && i1 + c2._flddo <= J && J <= i1 + c2._flddo + c1._flddo && j1 - c1._fldif <= I && I <= j1 + c1.a) { m = l = J; a = R = I; c = true; p = l1; o = l1; final int k2 = J; final int l2 = I; J = _fldelse; I = _fldchar; _fldelse = k2; _fldchar = l2; } if (c) { m = Math.min(m, i1 + c2._flddo); l = Math.max(l, i1 + c2._flddo + c1._flddo); a = Math.min(a, j1 - c1._fldif); R = Math.max(R, j1 + c1.a); if (F > k1) { F = k1; } switch (j2) { case 13: // '\r' case 15: // '\017' case 16: // '\020' case 50: // '2' case 123: // '{' case 124: // '|' flag5 = true; if (i2 > o) { o = i2; } if (i2 < p) { p = i2; } l1 = S._mthif(); break; } if (l1 > o) { o = l1; } if (l1 < p) { p = l1; } if (i1 + c2._flddo <= J && J <= i1 + c2._flddo + c1._flddo && j1 - c1._fldif <= I && I <= j1 + c1.a && F == k1) { A = false; c = false; } } } if (flag5) { m = Math.min(m, i1 + c2._flddo); l = Math.max(l, i1 + c2._flddo + c1._flddo); a = Math.min(a, j1 - c1._fldif); R = Math.max(R, j1 + c1.a); switch (j2) { case 13: // '\r' case 15: // '\017' case 16: // '\020' case 50: // '2' case 123: // '{' case 124: // '|' if (i2 > o) { o = i2; } if (i2 < p) { p = i2; } l1 = S._mthif(); break; } if (l1 > o) { o = l1; } if (l1 < p) { p = l1; } flag5 = false; } } c2._flddo += c1._flddo; c2._fldif = Math.max(c2._fldif, c1._fldif); c2.a = Math.max(c2.a, c1.a); if (!flag1 && !flag4) { flag2 = false; } } return c2; } private c _mthbyte(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { c c1 = new c(); int l1 = 0; final FontMetrics fontmetrics = g1.getFontMetrics(); final String s1 = D.w; if (flag) { l1 = S._mthif(); } c1 = _mthtry(i1, j1, false, g1, k1, false); final int i2 = Math.max(c1._flddo, fontmetrics.stringWidth(s1)); final int j2 = c1._fldif + fontmetrics.getAscent() / 2; final int k2 = c1.a; if (flag) { S.a(l1); _mthtry(i1, j1, true, g1, k1, false); final int l2 = 3 * ((i2 - fontmetrics.stringWidth(s1)) / 4); if (s1.equals(".") | s1.equals("..")) { g1.drawString(s1, i1 + l2, j1 - fontmetrics.getAscent()); } else if (s1.equals("\264") | s1.equals("`")) { g1.drawString(s1, i1 + l2, j1 - fontmetrics.getAscent() / 3); } else { g1.drawString(s1, i1 + l2, j1 - (fontmetrics.getAscent() * 2) / 3); } } return new c(i2, j2, k2); } private c a(final int i1, final int j1, final boolean flag, final Graphics2D g1) { new c(); final FontMetrics fontmetrics = g1.getFontMetrics(); final int k1 = g1.getFont().getSize() / 2; final int l1 = fontmetrics.getHeight() - fontmetrics.getDescent(); final int i2 = fontmetrics.getDescent(); if (flag) { final int j2 = (j1 - l1) + 1; final int k2 = (j1 + i2) - 1; final int l2 = (j2 + k2) / 2; if (D.w.equals("<")) { g1.drawLine(i1 + k1, j2, i1, l2); g1.drawLine(i1, l2, i1 + k1, k2); } else { g1.drawLine(i1, j2, i1 + k1, l2); g1.drawLine(i1 + k1, l2, i1, k2); } } return new c(k1, l1, i2); } private c _mthif(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { int l2 = 0; final int ai[] = new int[100]; final int ai1[] = new int[100]; final int ai2[] = new int[100]; new c(); int i3 = 0; final FontMetrics fontmetrics = g1.getFontMetrics(); final int j3 = g1.getFont().getSize(); if (flag) { i3 = S._mthif(); } if (!a(3, "ARRAY: BeginSym")) { return new c(0, 0, 0); } for (int k3 = 0; k3 < 99; k3++) { int i2 = 0; int k2 = 0; for (int l3 = 0; l3 < 99; l3++) { final c c2 = _mthnew(i1, j1, false, g1, k1); i2 = Math.max(i2, c2._fldif); k2 = Math.max(k2, c2.a); ai[l3] = Math.max(ai[l3], c2._flddo + j3); if (D.y == 8 || D.y == 4) { break; } } ai1[k3] = Math.max(ai1[k3], i2); ai2[k3] = Math.max(ai2[k3], k2); l2 += i2 + k2; if (D.y == 4) { break; } } int i4 = 0; for (int j4 = 0; j4 < 99; j4++) { i4 += ai[j4]; } if (flag) { S.a(i3); a(3, "ARRAY: Begin"); int j2 = 0; for (int k4 = 0; k4 < 99; k4++) { int l1 = 0; if (k4 == 0) { j2 = ai1[k4]; } else { j2 += ai2[k4 - 1] + ai1[k4]; } for (int l4 = 0; l4 < 99; l4++) { _mthnew(i1 + l1, (j1 - l2 / 2 - fontmetrics.getDescent()) + j2, true, g1, k1); l1 += ai[l4]; if (D.y == 8 || D.y == 4) { break; } } if (D.y == 4) { break; } } } return new c(i4 - j3, l2 / 2 + fontmetrics.getDescent(), l2 / 2 - fontmetrics.getDescent()); } private c _mthgoto(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { int i2 = 0; int j3 = 0; final int ai[] = new int[100]; final int ai1[] = new int[100]; final int ai2[] = new int[100]; final int ai3[] = new int[100]; final int ai4[] = new int[100]; int k3 = 0; int l3 = 0; int i4 = 0; new c(); int j4 = 0; final FontMetrics fontmetrics = g1.getFontMetrics(); final int k5 = g1.getFont().getSize(); int l5 = 0; boolean flag3 = false; boolean flag4 = true; boolean flag5 = true; if (!a(3)) { return new c(0, 0, 0); } if (S._mthint().w.equals("eqnarray")) { flag5 = false; } if (!a(4, "BEGIN: EndSym")) { return new c(0, 0, 0); } if (flag5) { j4 = S._mthif(); if (!a(3)) { flag4 = false; S.a(j4); } } if (flag5 && flag4) { new e(); for (e e2 = S._mthint(); e2.y != 4; e2 = S._mthint()) { final StringBuffer stringbuffer = new StringBuffer(e2.w); for (int i7 = 0; i7 < stringbuffer.length(); i7++) { switch (stringbuffer.charAt(i7)) { case 108: // 'l' ai3[l5] = 1; if (l5 < 99) { l5++; } break; case 99: // 'c' ai3[l5] = 2; if (l5 < 99) { l5++; } break; case 114: // 'r' ai3[l5] = 3; if (l5 < 99) { l5++; } break; case 64: // '@' ai3[l5] = 4; ai4[l5] = S._mthif(); final c c2 = _mthtry(i1, j1, false, g1, k1, false); k3 += c2._flddo; l3 = Math.max(l3, c2._fldif); i4 = Math.max(i4, c2.a); if (l5 < 99) { l5++; } break; case 42: // '*' a(3, "Begin *{"); int j6; try { j6 = Integer.parseInt(S._mthint().w); } catch (final NumberFormatException numberformatexception) { j6 = 0; } a(4, 3, "Begin }{"); final int l7 = S._mthif(); for (int j8 = 0; j8 < j6; j8++) { S.a(l7); for (e2 = S._mthint(); e2.y != 4; e2 = S._mthint()) { final StringBuffer stringbuffer1 = new StringBuffer( e2.w); for (int l8 = 0; l8 < stringbuffer1.length(); l8++) { switch (stringbuffer1.charAt(l8)) { case 108: // 'l' ai3[l5] = 1; if (l5 < 99) { l5++; } break; case 99: // 'c' ai3[l5] = 2; if (l5 < 99) { l5++; } break; case 114: // 'r' ai3[l5] = 3; if (l5 < 99) { l5++; } break; case 64: // '@' ai3[l5] = 4; ai4[l5] = S._mthif(); final c c3 = _mthtry(i1, j1, false, g1, k1, false); k3 += c3._flddo; l3 = Math.max(l3, c3._fldif); i4 = Math.max(i4, c3.a); if (l5 < 99) { l5++; } break; default: printStatus("P: begin: illegal format 2"); break; } } } } break; default: printStatus("P: begin: illegal format 1"); break; } } } } if (!flag5) { ai3[0] = 3; ai3[1] = 2; ai3[2] = 1; l5 = 3; } for (int k6 = 0; k6 < l5 - 1; k6++) { if (ai3[k6] != 4 && ai3[k6 + 1] != 4) { i2 += k5 / 2; } } if (flag) { j4 = S._mthif(); } for (int l6 = 0; l6 < 99; l6++) { int j2 = 0; int l2 = 0; for (int j7 = 0; j7 < 99; j7++) { final c c4 = _mthnew(i1, j1, false, g1, k1); j2 = Math.max(j2, c4._fldif); l2 = Math.max(l2, c4.a); ai[j7] = Math.max(ai[j7], c4._flddo); if (D.y == 8 || D.y == 51) { break; } } j2 = Math.max(j2, l3); l2 = Math.max(l2, i4); ai1[l6] = j2; ai2[l6] = l2; j3 += j2 + l2; if (D.y == 51) { break; } } for (int i6 = 0; i6 < 99; i6++) { i2 += ai[i6]; } i2 += (2 * k5) / 2; if (flag) { S.a(j4); int k2 = 0; final int i3 = j3 / 2 + fontmetrics.getDescent(); for (int k7 = 0; k7 < 99; k7++) { int l1 = k5 / 2; if (k7 == 0) { k2 = ai1[k7]; } else { k2 += ai2[k7 - 1] + ai1[k7]; } int i8 = 0; for (int k8 = 0; k8 < 99; k8++) { while (ai3[i8] == 4) { final int k4 = S._mthif(); S.a(ai4[i8]); final c c5 = _mthtry(i1 + l1, (j1 - i3) + k2, true, g1, k1, false); l1 += c5._flddo; S.a(k4); i8++; } switch (ai3[i8]) { case 0: // '\0' case 1: // '\001' _mthnew(i1 + l1, (j1 - i3) + k2, true, g1, k1); i8++; break; case 2: // '\002' final int l4 = S._mthif(); c c7 = _mthnew(i1, j1, false, g1, k1); S.a(l4); c7 = _mthnew(i1 + l1 + (ai[k8] - c7._flddo) / 2, (j1 - i3) + k2, true, g1, k1); i8++; break; case 3: // '\003' final int i5 = S._mthif(); c c8 = _mthnew(i1, j1, false, g1, k1); S.a(i5); c8 = _mthnew((i1 + l1 + ai[k8]) - c8._flddo, (j1 - i3) + k2, true, g1, k1); i8++; break; } if (ai3[i8] != 4) { l1 += k5 / 2; } l1 += ai[k8]; boolean flag2 = false; flag3 = false; if (D.y == 8) { flag2 = true; } else if (D.y == 51) { flag2 = true; flag3 = true; } for (; ai3[i8] == 4; i8++) { final int j5 = S._mthif(); S.a(ai4[i8]); final c c9 = _mthtry(i1 + l1, (j1 - i3) + k2, true, g1, k1, false); l1 += c9._flddo; S.a(j5); } if (flag2) { break; } } if (flag3) { break; } } } if (!a(3, "BEGIN 2: begin")) { return new c(0, 0, 0); } S._mthint(); if (!a(4, "BEGIN 2: end")) { return new c(0, 0, 0); } else { return new c(i2 + k3, j3 / 2 + fontmetrics.getDescent(), j3 / 2 - fontmetrics.getDescent()); } } private c _mthelse(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { c c1 = new c(); final int l1 = g1.getFont().getSize() / 2; c1 = _mthtry(i1 + l1, j1, flag, g1, k1, false); if (flag) { g1.drawRect(i1 + l1 / 2, j1 - c1._fldif - l1 / 2, c1._flddo + l1, c1._fldif + c1.a + l1); } return new c(c1._flddo + l1 + l1, c1._fldif + l1, c1.a + l1); } private c _mthfor(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1, final boolean flag1) { int l1 = 0; new c(); c c3 = new c(); c c4 = new c(); int i2 = 0; final Font font = g1.getFont(); font.getSize(); a(g1, k1 + 1); final FontMetrics fontmetrics = g1.getFontMetrics(); if (flag) { i2 = S._mthif(); } c3 = _mthtry(i1, j1, false, g1, k1 + 1, false); int k2 = c3._fldif + c3.a; c4 = _mthtry(i1, j1, false, g1, k1 + 1, false); int l2 = Math.max(c3._flddo, c4._flddo); int i3 = c4._fldif + c4.a; final Font font1 = g1.getFont(); final int j3 = (3 * font1.getSize()) / 18; l2 += 2 * j3; if (fontmetrics.getAscent() < i3) { l1 = fontmetrics.getAscent() / 2; } k2 += 2 + l1; i3 += 1 - l1; if (flag) { S.a(i2); if (flag1) { g1.drawLine(i1 + j3, j1 - l1, (i1 + l2) - j3, j1 - l1); } _mthtry(i1 + (l2 - c3._flddo) / 2, j1 - 2 - c3.a - l1, true, g1, k1 + 1, false); if (c && k1 < F) { F = k1; } _mthtry(i1 + (l2 - c4._flddo) / 2, (j1 + 1 + c4._fldif) - l1, true, g1, k1 + 1, false); } a(g1, k1); return new c(l2, k2, i3); } private c _mthnew(final int i1, final int j1, final boolean flag, final Graphics2D g1) { final FontMetrics fontmetrics = g1.getFontMetrics(); if (flag) { g1.drawString(D.w, i1, j1); // System.out.println(g1.getFont()); // System.out.println("5: "+D.w); } final int k1 = fontmetrics.stringWidth(D.w); final int l1 = fontmetrics.getHeight() - fontmetrics.getDescent(); final int i2 = fontmetrics.getDescent(); return new c(k1, l1, i2); } private void a(final Graphics2D g1, final int i1, final int j1, final int k1, final int l1, final int i2) { g1.drawArc(i1 - k1, j1 - k1, 2 * k1, 2 * k1, l1, i2); } private void a(final Graphics2D g1, final String s1, final int i1, final int j1, final int k1, final int l1, final int i2, final int j2) { final int k2 = j1 / 2; final int l2 = i1 + k2; final int i3 = i1 + j1; final int j3 = i1 + k2 / 2; final int k3 = l2 + k2 / 2; final int l3 = (k1 + l1) / 2; final int i4 = (int) ((double) k2 * 0.86602540378444004D); final int j4 = k1 + i4; final int k4 = l1 - i4; if (s1.equals("[")) { g1.drawLine(j3, k1, j3, l1); g1.drawLine(j3, l1, k3, l1); g1.drawLine(j3, k1, k3, k1); } else if (s1.equals("]")) { g1.drawLine(k3, k1, k3, l1); g1.drawLine(j3, l1, k3, l1); g1.drawLine(j3, k1, k3, k1); } else if (s1.equals("|")) { g1.drawLine(l2, k1, l2, l1); } else if (s1.equals("||")) { final int l4 = l2 + i2 / 4; g1.drawLine(l2, k1, l2, l1); g1.drawLine(l4, k1, l4, l1); } else if (s1.equals("(")) { for (int i5 = j2; i5 < 2 + j2; i5++) { final int i6 = j3 + i5; a(g1, k3 + i5, j4, k2, 180, -60); g1.drawLine(i6, j4, i6, k4); a(g1, k3 + i5, k4, k2, 180, 60); } } else if (s1.equals(")")) { for (int j5 = j2; j5 < 2 + j2; j5++) { final int j6 = k3 + j5; a(g1, j3 + j5, j4, k2, 0, 60); g1.drawLine(j6, j4, j6, k4); a(g1, j3 + j5, k4, k2, 0, -60); } } else if (s1.equals("<")) { g1.drawLine(j3, l3, k3, k1); g1.drawLine(j3, l3, k3, l1); } else if (s1.equals(">")) { g1.drawLine(k3, l3, j3, k1); g1.drawLine(k3, l3, j3, l1); } else if (s1.equals("{")) { for (int k5 = j2; k5 < 2 + j2; k5++) { final int k6 = l2 + k5; a(g1, i3 + k5, j4, k2, 180, -60); g1.drawLine(k6, j4, k6, l3 - k2); a(g1, i1 + k5, l3 - k2, k2, 0, -90); a(g1, i1 + k5, l3 + k2, k2, 0, 90); g1.drawLine(k6, l3 + k2, k6, k4); a(g1, i3 + k5, k4, k2, 180, 60); } } else if (s1.equals("}")) { for (int l5 = j2; l5 < 2 + j2; l5++) { final int l6 = l2 + l5; a(g1, i1 + l5, j4, k2, 0, 60); g1.drawLine(l6, j4, l6, l3 - k2); a(g1, i3 + l5, l3 - k2, k2, -180, 90); a(g1, i3 + l5, l3 + k2, k2, 180, -90); g1.drawLine(l6, l3 + k2, l6, k4); a(g1, i1 + l5, k4, k2, 0, -60); } } } private c _mthnull(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { int l1 = 0; int i2 = 0; c c1 = new c(); int j2 = 0; final Font font = g1.getFont(); final int k2 = font.getSize(); final int l2 = (int) (2.0F * (float) k2); int i3 = k2 / 9; if (flag) { j2 = S._mthif(); } final String s1 = S._mthint().w; c1 = _mthnew(i1, j1, false, g1, k1); final int j3 = c1._flddo; int k3 = c1._fldif; int l3 = c1.a; final int i4 = (j1 - k3) + 1; final int j4 = (j1 + l3) - 1; final String s3 = S._mthint().w; final int k4 = (k3 + l3) - 2; final Font font1 = new Font(font.getFamily(), font.getStyle(), k4); g1.setFont(font1); final FontMetrics fontmetrics = g1.getFontMetrics(); if (s1.equals("<") || s1.equals(">")) { l1 = k2; } else if (k4 < l2) { l1 = fontmetrics.stringWidth(s1); if ("([{)]}".indexOf(s1) >= 0) { l1 += i3; } } else { l1 = k2; } if (s3.equals("<") || s3.equals(">")) { i2 = k2; } else if (k4 < l2) { i2 = fontmetrics.stringWidth(s3); if ("([{)]}".indexOf(s3) >= 0) { i2 += i3; } } else { i2 = k2; } g1.setFont(font); final int l4 = S._mthif(); int j5 = 0; int k5 = 0; if (S._mthint().y == 11) { final c c2 = _mthdo(i1, j1, false, g1, k1, false); j5 = c2._flddo; k5 = (j4 + c2._fldif) - (c2._fldif + c2.a) / 2; l3 += (c2._fldif + c2.a) / 2; } else { S.a(l4); } final int l5 = S._mthif(); int j6 = 0; int k6 = 0; if (S._mthint().y == 10) { final c c3 = _mthint(i1, j1, false, g1, k1, false); j6 = c3._flddo; k6 = (i4 + c3._fldif) - (c3._fldif + c3.a) / 2; k3 += (c3._fldif + c3.a) / 2; } else { S.a(l5); } j5 = Math.max(j5, j6); if (flag) { S.a(j2); final String s2 = S._mthint().w; if (!s2.equals(".")) { if (k4 < l2 && !s2.equals("<") && !s2.equals(">")) { g1.setFont(font1); g1.drawString(s2, i1, j4 - fontmetrics.getDescent() - fontmetrics.getLeading() / 2); g1.setFont(font); } else { a(g1, s2, i1, l1, i4, j4, k2, 0); } } _mthnew(i1 + l1, j1, true, g1, k1); final String s4 = S._mthint().w; if (!s4.equals(".")) { if (k4 < l2 && !s4.equals("<") && !s4.equals(">")) { g1.setFont(font1); if ("([{)]}".indexOf(s4) < 0) { i3 = 0; } g1.drawString(s4, i1 + j3 + l1 + i3, j4 - fontmetrics.getDescent() - fontmetrics.getLeading() / 2); // System.out.println("2: "+s4); g1.setFont(font); } else { a(g1, s4, i1 + j3 + l1, i2, i4, j4, -k2, -1); } } final int i5 = S._mthif(); if (a(11)) { _mthdo(i1 + j3 + l1 + i2, k5, true, g1, k1, false); } else { S.a(i5); } final int i6 = S._mthif(); if (a(10)) { _mthint(i1 + j3 + l1 + i2, k6, true, g1, k1, false); } else { S.a(i6); } } return new c(j3 + l1 + i2 + j5, k3 + 2, l3 + 2); } private c _mthfor(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { int l1 = 0; new c(); int i2 = 0; int j2 = 0; final FontMetrics fontmetrics = g1.getFontMetrics(); final String s1 = D.w; final int k2 = S._mthif(); final int l2 = l1 = fontmetrics.stringWidth(s1); final int i3 = fontmetrics.getHeight() - fontmetrics.getDescent(); int j3 = fontmetrics.getDescent(); if (a(11)) { final c c2 = _mthdo(i1, j1, false, g1, k1, false); i2 = c2._flddo; l1 = Math.max(l1, c2._flddo); j2 = c2._fldif; j3 = c2._fldif + c2.a; } else { S.a(k2); } if (flag) { S.a(k2); g1.drawString(s1, i1 + (l1 - l2) / 2, j1); if (a(11)) { _mthdo(i1 + (l1 - i2) / 2, j1 + j2, true, g1, k1, false); } else { S.a(k2); } } return new c(l1, i3, j3); } private c _mthdo(final int i1, final int j1, final boolean flag, final Graphics2D g1) { int k1 = 0; int l1 = 0; int i2 = 0; new c(); if (!a(3)) { return new c(0, 0, 0); } while (!S._mthnew()) { D = S._mthint(); if (D.y == 4) { break; } final c c2 = _mthif(i1 + k1, j1, flag, g1); k1 += c2._flddo; l1 = Math.max(l1, c2._fldif); i2 = Math.max(i2, c2.a); } return new c(k1, l1, i2); } private c _mthtry(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { c c1 = new c(); c1 = _mthtry(i1, j1, flag, g1, k1, false); if (flag) { g1.drawLine(i1 + c1._flddo / 4, j1 + c1.a, i1 + (c1._flddo * 3) / 4, j1 - c1._fldif); } return c1; } private c _mthint(final int i1, final int j1, final boolean flag, final Graphics2D g1) { final FontMetrics fontmetrics = g1.getFontMetrics(); if (flag) { g1.drawString(D.w, i1 + 1, j1); // System.out.println("3: "+D.w); } return new c(fontmetrics.stringWidth(D.w) + 2, fontmetrics.getHeight() - fontmetrics.getDescent(), fontmetrics.getDescent()); } private c a(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { int l1 = 0; c c1 = new c(); final int i2 = g1.getFont().getSize() / 4; final int j2 = i2 / 2; int k2 = 0; int l2 = 0; int i3 = 0; if (flag) { l1 = S._mthif(); } c1 = _mthtry(i1, j1, false, g1, k1, false); int j3 = c1._flddo; final int k3 = j3 / 2; int l3 = k3; int i4 = c1._fldif; final int j4 = c1.a; final int k4 = S._mthif(); if (a(10)) { final c c2 = _mthint(i1, j1, false, g1, k1, false); k2 = c2._flddo; l3 = Math.max(l3, k2 / 2); l2 = i4 + c2.a; i3 = c2._fldif + c2.a; } else { S.a(k4); } if (flag) { S.a(l1); final int i5 = (i1 + l3) - k3; _mthtry(i5, j1, true, g1, k1, false); final int j5 = (int) ((double) i2 * 0.86602540378444004D); for (int k5 = 0; k5 < 2; k5++) { final int l5 = (j1 - i4 - j2) + k5; a(g1, i5 + j5, l5 + i2, i2, 90, 60); g1.drawLine(i5 + j5, l5, (i5 + k3) - i2, l5); a(g1, (i5 + k3) - i2, l5 - i2, i2, 0, -90); a(g1, i5 + k3 + i2, l5 - i2, i2, -90, -90); g1.drawLine(i5 + k3 + i2, l5, (i5 + j3) - j5, l5); a(g1, (i5 + j3) - j5, l5 + i2, i2, 90, -60); } final int l4 = S._mthif(); if (a(10)) { _mthint((i1 + l3) - k2 / 2, j1 - l2 - i2 - j2, true, g1, k1, false); } else { S.a(l4); } } i4 += i3 + i2 + j2; j3 = Math.max(j3, k2); return new c(j3, i4, j4); } private c _mthlong(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { int l1 = 0; c c1 = new c(); final int i2 = g1.getFont().getSize() / 4; final int j2 = i2 / 2; int k2 = 0; int l2 = 0; int i3 = 0; if (flag) { l1 = S._mthif(); } c1 = _mthtry(i1, j1, false, g1, k1, false); int j3 = c1._flddo; final int k3 = j3 / 2; int l3 = k3; final int i4 = c1._fldif; int j4 = c1.a; final int k4 = S._mthif(); if (a(11)) { final c c2 = _mthdo(i1, j1, false, g1, k1, false); k2 = c2._flddo; l3 = Math.max(l3, k2 / 2); l2 = j4 + c2._fldif; i3 = c2._fldif + c2.a; } else { S.a(k4); } if (flag) { S.a(l1); final int i5 = (i1 + l3) - k3; _mthtry(i5, j1, true, g1, k1, false); final int j5 = (int) ((double) i2 * 0.86602540378444004D); for (int k5 = 0; k5 < 2; k5++) { final int l5 = (j1 + j4 + j2) - k5; a(g1, i5 + j5, l5 - i2, i2, -90, -60); g1.drawLine(i5 + j5, l5, (i5 + k3) - i2, l5); a(g1, (i5 + k3) - i2, l5 + i2, i2, 90, -90); a(g1, i5 + k3 + i2, l5 + i2, i2, 90, 90); g1.drawLine(i5 + k3 + i2, l5, (i5 + j3) - j5, l5); a(g1, (i5 + j3) - j5, l5 - i2, i2, -90, 60); } final int l4 = S._mthif(); if (S._mthint().y == 11) { _mthdo((i1 + l3) - k2 / 2, j1 + l2 + i2 + j2, true, g1, k1, false); } else { S.a(l4); } } j4 += i3 + i2 + j2; j3 = Math.max(j3, k2); return new c(j3, i4, j4); } private c a(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1, final boolean flag1) { int l1 = 0; c c1 = new c(); if (flag) { l1 = S._mthif(); } c1 = _mthtry(i1, j1, false, g1, k1, false); if (flag1) { c1._fldif += 2; } else { c1.a += 2; } final int i2 = c1._fldif; final int j2 = c1.a; if (flag) { S.a(l1); if (flag1) { g1.drawLine(i1 + 1, (j1 - i2) + 2, (i1 + c1._flddo) - 1, (j1 - i2) + 2); } else { g1.drawLine(i1, (j1 + j2) - 2, i1 + c1._flddo, (j1 + j2) - 2); } c1 = _mthtry(i1, j1, true, g1, k1, false); } return new c(c1._flddo, i2, j2); } private c _mthtry(int i1, final int j1, final boolean flag, final Graphics2D g1) { final FontMetrics fontmetrics = g1.getFontMetrics(); final int k1 = g1.getFont().getSize() / 9; int l1 = fontmetrics.stringWidth(D.w); final int i2 = "([{)]}".indexOf(D.w); if (i2 >= 0) { l1 += k1; if (i2 > 2) { i1 += k1; } } if (flag) { g1.drawString(D.w, i1, j1); // System.out.println("2: "+D.w); } return new c(l1, fontmetrics.getHeight() - fontmetrics.getDescent(), fontmetrics.getDescent()); } private c _mthif(final int i1, final int j1, final boolean flag, final Graphics2D g1) { final FontMetrics fontmetrics = g1.getFontMetrics(); if (flag) { g1.drawString(D.w, i1, j1); // System.out.println(g1.getFont()); // System.out.println("1: "+D.w); } return new c(fontmetrics.stringWidth(D.w), fontmetrics.getHeight() - fontmetrics.getDescent(), fontmetrics.getDescent()); } private c _mthfor(final int i1, final int j1, final boolean flag, final Graphics2D g1) { int k1 = 0; final Font font = g1.getFont(); try { k1 = Integer.parseInt(D.w); } catch (final NumberFormatException numberformatexception) { k1 = 0; } k1 = (k1 * font.getSize()) / 18; return new c(k1, 0, 0); } private c _mthcase(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { c c1 = new c(); int l1 = 0; final FontMetrics fontmetrics = g1.getFontMetrics(); int i2 = 0; int k2 = 0; int l2 = 0; boolean flag2 = false; if (flag) { l1 = S._mthif(); } final int i3 = fontmetrics.stringWidth("A"); final int j3 = i3 / 2; final int k3 = S._mthif(); e e1 = new e(); e1 = S._mthint(); if (e1.w.equals("[")) { a(g1, k1 + 1); c1 = _mthtry(i1, j1, false, g1, k1 + 1, true); a(g1, k1); i2 = c1._flddo; final int j2 = c1._fldif; k2 = c1.a; l2 = k2 + j2; flag2 = true; } else { S.a(k3); } c1 = _mthtry(i1, j1, false, g1, k1, false); int l3 = c1._flddo + i3; int i4 = c1._fldif + 2; final int j4 = c1.a; if (flag2 & (i2 > j3)) { l3 += i2 - j3; } if (flag) { S.a(l1); int k4 = 0; if (flag2 & (i2 > j3)) { k4 = i2 - j3; } g1.drawLine(i1 + k4 + 1, j1 - i4 / 2, i1 + k4 + j3, (j1 + j4) - 1); g1.drawLine(i1 + k4 + j3, (j1 + j4) - 1, (i1 + k4 + i3) - 2, (j1 - i4) + 2); g1.drawLine((i1 + k4 + i3) - 2, (j1 - i4) + 2, i1 + l3, (j1 - i4) + 2); if (flag2) { S._mthint(); a(g1, k1 + 1); if (i2 >= j3) { g1.drawLine(i1 + 1, j1 - i4 / 2, i1 + k4 + 1, j1 - i4 / 2); _mthtry(i1 + 1, j1 - i4 / 2 - k2 - 1, true, g1, k1 + 1, true); } else { _mthtry(i1 + 1 + (j3 - i2), j1 - i4 / 2 - k2 - 1, true, g1, k1 + 1, true); } a(g1, k1); } _mthtry(i1 + k4 + i3, j1, true, g1, k1, false); } if (flag2 & (i4 / 2 < l2)) { i4 = i4 / 2 + l2; } return new c(l3, i4, j4); } private c _mthchar(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { c c1 = new c(); int l1 = 0; final int i2 = g1.getFontMetrics().getLeading(); if (flag) { l1 = S._mthif(); } c1 = _mthint(i1, j1, false, g1, k1, true); int j2 = c1._flddo; final int k2 = c1._flddo; int l2 = (c1._fldif + c1.a) - i2; int i3 = c1.a - i2; c1 = _mthtry(i1, j1, false, g1, k1, false); j2 = Math.max(j2, c1._flddo); final int j3 = j2 / 2; final int k3 = c1._flddo; l2 += c1._fldif; final int l3 = c1.a; i3 += c1._fldif; if (flag) { S.a(l1); _mthint((i1 + j3) - k2 / 2, j1 - i3, true, g1, k1, false); _mthtry((i1 + j3) - k3 / 2, j1, true, g1, k1, false); } return new c(j2, l2, l3); } private c _mthdo(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1, final boolean flag1) { int l1 = 0; int i2 = 0; c c1 = new c(); int j2 = 0; final int l2 = g1.getFontMetrics().getAscent() / 2; if (flag) { j2 = S._mthif(); } a(g1, k1 + 1); c1 = _mthtry(i1, j1, false, g1, k1 + 1, false); int i3 = c1._flddo; if (flag1) { l1 = l2 - 1; i2 = (c1._fldif + c1.a) - l1; } else { i2 = c1._fldif + c1.a; } if (flag) { S.a(j2); if (flag1) { c1 = _mthtry(i1, (j1 + c1._fldif) - l1, true, g1, k1 + 1, false); } else { c1 = _mthtry(i1, j1 + c1._fldif, true, g1, k1 + 1, false); } } a(g1, k1); if (flag1) { final int k2 = S._mthif(); if (a(10)) { final c c2 = _mthint(i1, j1, flag, g1, k1, true); i3 = Math.max(i3, c2._flddo); l1 = Math.max(l1, c2._fldif); } else { S.a(k2); } } return new c(i3, l1, i2); } private c _mthint(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1, final boolean flag1) { int l1 = 0; int i2 = 0; c c1 = new c(); int j2 = 0; final int l2 = g1.getFontMetrics().getAscent() / 2; if (flag) { j2 = S._mthif(); } a(g1, k1 + 1); c1 = _mthtry(i1, j1, false, g1, k1 + 1, false); int i3 = c1._flddo; if (flag1) { i2 = -l2 - 1; l1 = (c1._fldif + c1.a) - i2; } else { l1 = c1._fldif + c1.a; } if (flag) { S.a(j2); if (flag1) { c1 = _mthtry(i1, (j1 - c1.a) + i2, true, g1, k1 + 1, false); } else { c1 = _mthtry(i1, j1 - c1.a, true, g1, k1 + 1, false); } } a(g1, k1); if (flag1) { final int k2 = S._mthif(); if (a(11)) { final c c2 = _mthdo(i1, j1, flag, g1, k1, true); i3 = Math.max(i3, c2._flddo); i2 = Math.max(i2, c2.a); } else { S.a(k2); } } return new c(i3, l1, i2); } private Image _mthif(final Graphics2D g1, final int i1) { final String s1 = D.w + j[i1 - 1] + g1.getColor().getRGB(); if (!w.containsKey(s1)) { final String s2 = "Fonts/Greek" + j[i1 - 1] + "/" + D.w + ".gif"; final Image image = _flddo.a(s2, g1); final int j1 = S._mthif(); B.addImage(image, j1); a("Loading " + D.w); try { B.waitForID(j1, 10000L); } catch (final InterruptedException interruptedexception) { } if (B.isErrorID(j1)) { a("Error loading " + D.w); } else { w.put(s1, image); } return image; } else { return (Image) w.get(s1); } } private c _mthif(final int i1, final int j1, final boolean flag, final Graphics2D g1, int k1, final boolean flag1) { final FontMetrics fontmetrics = g1.getFontMetrics(); k1 = Math.min(k1, j.length); final Image image = _mthif(g1, k1); int l1 = image.getWidth(PC); if (l1 < 0) { l1 = fontmetrics.getMaxAdvance(); } if (flag) { int i2 = 0; if (flag1) { i2 = _fldfor[k1 - 1]; } g1.drawImage(image, i1, (j1 - image.getHeight(PC)) + i2, PC); } return new c(l1, fontmetrics.getHeight() - fontmetrics.getDescent(), fontmetrics.getDescent()); } private c _mthdo(final int i1, final int j1, final boolean flag, final Graphics2D g1, int k1) { int l1 = 0; new c(); int i2 = 0; int j2 = 0; int k2 = 0; int l2 = 0; int i3 = 0; final int j3 = g1.getFontMetrics().getAscent(); k1 = Math.min(k1, j.length); final Image image = _mthif(g1, k1); int k3 = l1 = image.getWidth(PC); int l3 = image.getHeight(PC); if (l3 < 0) { l3 = 2 * j3; k3 = l1 = j3; } int i4 = (int) ((double) (l3 / 2) - 0.40000000000000002D * (double) j3); int j4 = i3 = l3 - i4; final int k4 = S._mthif(); if (a(11)) { final c c2 = _mthdo(i1, j1, false, g1, k1, false); k2 = c2._flddo; l1 = Math.max(l1, c2._flddo); i2 = i4 + c2._fldif; i4 += c2._fldif + c2.a; } else { S.a(k4); } final int l4 = S._mthif(); if (a(10)) { final c c3 = _mthint(i1, j1, false, g1, k1, false); l2 = c3._flddo; l1 = Math.max(l1, c3._flddo); j2 = j4 + c3.a; j4 += c3._fldif + c3.a; } else { S.a(l4); } if (flag) { S.a(k4); g1.drawImage(image, i1 + (l1 - k3) / 2, j1 - i3, PC); if (a(11)) { _mthdo(i1 + (l1 - k2) / 2, j1 + i2, true, g1, k1, false); } else { S.a(k4); } final int i5 = S._mthif(); if (a(10)) { _mthint(i1 + (l1 - l2) / 2, j1 - j2, true, g1, k1, false); } else { S.a(i5); } } return new c(l1, j4, i4); } private c _mthint(final int i1, final int j1, final boolean flag, final Graphics2D g1, final int k1) { c c1 = new c(); final int l1 = g1.getFont().getSize(); final String s1 = D.w; c1 = _mthtry(i1, j1, flag, g1, k1, false); final int i2 = c1._flddo; final int j2 = i2 / 2; final int k2 = l1 / 4; final int l2 = c1._fldif + k2; final int i3 = c1.a; if (flag) { final int j3 = (j1 - l2) + k2; final int k3 = l1 / 8; final int l3 = i1 + i2; final int i4 = i1 + j2; if (s1.equals("")) { g1.drawLine(i1, j3, l3, j3); g1.drawLine(i1 + (int) ((double) i2 * 0.80000000000000004D), j3 - k3, l3, j3); g1.drawLine(i1 + (int) ((double) i2 * 0.80000000000000004D), j3 + k3, l3, j3); } else if (s1.equals("bar")) { g1.drawLine(i1, j3, l3, j3); } else if (s1.equals("widehat")) { g1.drawLine(i1, j3, i4, j3 - k2); g1.drawLine(i4, j3 - k2, l3, j3); } else if (s1.equals("widetilde")) { int k4 = 0; for (int l4 = 1; l4 < j2; l4++) { final int j4 = k4; k4 = (int) ((double) k3 * Math .sin((4.0840704496667311D * (double) l4) / (double) j2)); g1.drawLine((i4 + l4) - 1, j3 + j4, i4 + l4, j3 + k4); g1.drawLine((i4 - l4) + 1, j3 - j4, i4 - l4, j3 - k4); } } } return new c(i2, l2 + 2, i3); } private boolean a(final int i1) { return a(i1, ""); } private boolean a(final int i1, final String s1) { int j1; while ((j1 = S._mthint().y) == 25) { } if (j1 == i1) { return true; } if (!s1.equals("")) { printStatus("Parser: " + s1 + " not found"); } return false; } private boolean a(final int i1, final int j1, final String s1) { int k1; while ((k1 = S._mthint().y) == 25) { } boolean flag = k1 == i1; while ((k1 = S._mthint().y) == 25) { } flag = k1 == j1; if (!flag && !s1.equals("")) { printStatus("Parser: " + s1 + " not found"); } return flag; } private void a(final Graphics2D g1, final int i1) { if (i1 <= 1) { g1.setFont(d); } else if (i1 == 2) { g1.setFont(b); } else if (i1 == 3) { g1.setFont(_fldnull); } else { g1.setFont(_fldlong); } } }