home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Component;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.image.ImageObserver;
-
- public class TextDraw extends Component {
- public Image textIm;
- // $FF: renamed from: x int
- public int field_0;
- public int xOffset = 0;
- public double lineSpacing = (double)1.0F;
- public int tabWidth = 30;
- public String readableString = "";
- // $FF: renamed from: f java.awt.Font
- public Font field_1;
- public String name;
- public String tag;
- public String params;
- public int style;
- public int size;
- public int oldSize;
- public int xEnd;
- // $FF: renamed from: h int
- public int field_2;
- // $FF: renamed from: g java.awt.Graphics
- public Graphics field_3;
- public int[] fromStart = new int[100];
- public int nFroms = 0;
- public int[] byStart = new int[100];
- public int[] byEnd = new int[100];
- public int nBys = 0;
- public int[] sqXmin = new int[100];
- public int nSqs = 0;
- // $FF: renamed from: x0 int
- public int field_4;
- // $FF: renamed from: y int
- public int field_5;
- // $FF: renamed from: w int
- public int field_6;
- boolean doExtraTags = false;
- boolean doExtraJTags = false;
- TextDrawJPanel tdjp;
- TextDrawPanel tdp;
- int nTables = 0;
- int[] nRows = new int[50];
- int[] tableX = new int[50];
- int[] tableY = new int[50];
- int[] nCols = new int[50];
- int[][] rowY = new int[50][50];
- int[][] colX = new int[50][50];
-
- public String getReadableString() {
- return this.readableString;
- }
-
- public int getX() {
- return this.field_0;
- }
-
- public int getWidth(Graphics var1, String var2) {
- return var1.getFontMetrics().stringWidth(var2);
- }
-
- public void setTabWidth(int var1) {
- this.tabWidth = var1;
- }
-
- public int drawPara(Graphics var1, String var2, int var3, int var4, int var5) {
- this.field_3 = var1;
- this.field_0 = var3;
- this.field_4 = var3;
- this.field_5 = var4;
- this.field_6 = var5;
- var2 = " " + var2 + "<endPara> ";
- this.field_1 = this.field_3.getFont();
- this.name = this.field_1.getName();
- this.style = this.field_1.getStyle();
- this.size = this.field_1.getSize();
- this.oldSize = this.size;
- this.readableString = "";
- this.field_0 = this.field_4 + this.xOffset;
- this.xOffset = 0;
- this.xEnd = this.field_4 + this.field_6;
- this.field_2 = (int)((double)this.field_3.getFontMetrics().getHeight() * this.lineSpacing);
- boolean var6 = true;
- int var9 = 0;
-
- try {
- while(var9 >= 0) {
- int var10 = var2.indexOf(60, var9 + 1);
- int var11 = var2.indexOf(62, var9 + 1);
- int var12 = var2.indexOf(32, var10 + 1);
- String var8 = var2.substring(var9 + 1, var10) + " ";
- int var13 = 0;
- int var14 = var8.indexOf(32, var13 + 1);
-
- while(var14 > 0) {
- var14 = var8.indexOf(32, var13 + 1);
- if (var14 > 0) {
- String var7 = var8.substring(var13, var14);
- int var15 = this.getWidth(this.field_3, var7);
- if (this.field_0 + var15 > this.xEnd) {
- this.field_5 += this.field_2;
- this.field_0 = this.field_4 - this.field_3.getFontMetrics().stringWidth(" ");
- }
-
- if ((this.style & 2) != 0) {
- this.field_3.drawString(var7 + " ", this.field_0, this.field_5);
- } else {
- this.field_3.drawString(var7, this.field_0, this.field_5);
- }
-
- this.field_0 += var15;
- var13 = var14;
- }
- }
-
- this.readableString = this.readableString + var8;
- if (var12 < var11) {
- this.tag = var2.substring(var10 + 1, var12).toLowerCase();
- this.params = var2.substring(var12 + 1, var11).toLowerCase();
- } else {
- this.tag = var2.substring(var10 + 1, var11).toLowerCase();
- this.params = "";
- }
-
- this.doTags();
- if (this.doExtraJTags) {
- this.tdjp.extraTags();
- } else if (this.doExtraTags) {
- this.tdp.extraTags();
- }
-
- this.field_3.setFont(new Font(this.name, this.style, this.size));
- var9 = var11;
- if (this.tag.equals("endpara")) {
- var9 = -1;
- }
- }
- } catch (Exception var16) {
- System.out.println(var16);
- this.readableString = this.readableString + "Cannot format remaining text";
- this.field_3.drawString("Cannot format remaining text", this.field_0, this.field_5);
- }
-
- this.field_3.setFont(this.field_1);
- return this.field_5;
- }
-
- public void setExtraTagsEnabled(TextDrawJPanel var1, boolean var2) {
- this.tdjp = var1;
- this.doExtraJTags = var2;
- }
-
- public void setExtraTagsEnabled(TextDrawPanel var1, boolean var2) {
- this.tdp = var1;
- this.doExtraTags = var2;
- }
-
- public void doTags() {
- if (this.tag.equals("<")) {
- this.field_3.drawString("<", this.field_0, this.field_5);
- this.field_0 += this.size >> 2;
- }
-
- if (this.tag.equals("bar/")) {
- this.readableString = this.readableString + " bar ";
- this.field_3.drawString("¯", this.field_0 - (this.size >> 1), this.field_5);
- this.field_0 += 2;
- }
-
- if (this.tag.equals("i")) {
- this.style |= 2;
- }
-
- if (this.tag.equals("/i")) {
- this.style &= -3;
- }
-
- if (this.tag.equals("sup") || this.tag.equals("pow")) {
- this.readableString = this.readableString + (this.tag.charAt(0) == 'p' ? " to the power " : " superscript ");
- this.size -= 3;
- this.field_5 -= this.size >> 1;
- }
-
- if (this.tag.equals("/sup") || this.tag.equals("/pow")) {
- this.readableString = this.readableString + (this.tag.charAt(1) == 'p' ? " end power " : " unsuperscript ");
- this.field_5 += this.size >> 1;
- this.size += 3;
- }
-
- if (this.tag.equals("sub")) {
- this.readableString = this.readableString + " subscript ";
- this.size -= 3;
- this.field_5 += this.size >> 1;
- }
-
- if (this.tag.equals("/sub")) {
- this.readableString = this.readableString + " end subscript ";
- this.field_5 -= this.size >> 1;
- this.size += 3;
- }
-
- if (this.tag.equals("troman")) {
- this.name = "TimesRoman";
- }
-
- if (this.tag.equals("sserif")) {
- this.name = "SansSerif";
- }
-
- if (this.tag.equals("br/")) {
- this.readableString = this.readableString + " new line\n ";
- this.field_0 = this.field_4;
- this.field_5 += this.field_2;
- }
-
- if (this.tag.equals("back/")) {
- this.field_0 -= (int)((double)this.size * (double)0.5F);
- }
-
- if (this.tag.equals("b")) {
- this.style |= 1;
- }
-
- if (this.tag.equals("/b")) {
- this.style &= -2;
- }
-
- if (this.tag.equals("integral")) {
- this.readableString = this.readableString + " the integral ";
- this.field_0 += this.size >> 2;
- this.field_3.setFont(new Font(this.name, this.style, (int)((double)this.size * 1.3)));
- this.field_3.drawString("Γê½", this.field_0, this.field_5 + (this.size >> 3));
- this.field_3.setFont(new Font(this.name, this.style, this.size));
- this.field_0 += this.size >> 1;
- }
-
- if (this.tag.equals("sum")) {
- this.readableString = this.readableString + " the sum ";
- this.field_0 += this.size >> 2;
- this.field_3.drawString("Γêæ", this.field_0, this.field_5 - this.size / 7);
- }
-
- if (this.tag.equals("infinity/")) {
- this.readableString = this.readableString + " infinity ";
- this.field_3.drawString("∞", this.field_0, this.field_5);
- }
-
- if (this.tag.equals("minus/")) {
- this.readableString = this.readableString + " minus ";
- this.field_3.drawString("−", this.field_0, this.field_5);
- this.field_0 += (this.size >> 1) + 3;
- }
-
- if (this.tag.equals("from/")) {
- this.readableString = this.readableString + " from ";
- this.oldSize = this.size;
- this.size = (int)((double)this.size * (double)0.5F);
- this.field_5 += (int)((double)this.size * 0.8);
- this.fromStart[this.nFroms++] = this.field_0;
- }
-
- if (this.tag.equals("to/")) {
- this.readableString = this.readableString + " to ";
- this.field_5 -= (int)((double)this.size * 2.6);
- this.field_0 = this.fromStart[this.nFroms - 1];
- --this.nFroms;
- }
-
- if (this.tag.equals("/integral") || this.tag.equals("/sum")) {
- this.readableString = this.readableString + " of ";
- this.field_5 += (int)((double)this.size * 1.8);
- this.field_0 += (int)(1.1 * (double)this.size);
- this.size = this.oldSize;
- }
-
- if (this.tag.equals("larger") || this.tag.equals("/smaller")) {
- this.size += 2;
- }
-
- if (this.tag.equals("smaller") || this.tag.equals("/larger")) {
- this.size -= 2;
- }
-
- if (this.tag.equals("up") || this.tag.equals("/down")) {
- this.field_5 -= this.field_2 / 6;
- }
-
- if (this.tag.equals("down") || this.tag.equals("/up")) {
- this.field_5 += this.field_2 / 6;
- }
-
- if (this.tag.equals("draw image") && this.textIm != null) {
- this.field_3.drawImage(this.textIm, this.field_0, this.field_5 - this.field_2 * 3 / 4, (ImageObserver)null);
- this.field_0 += this.textIm.getWidth((ImageObserver)null);
- }
-
- if (this.tag.equals("tab/")) {
- this.field_0 = (this.field_0 + this.tabWidth) / this.tabWidth * this.tabWidth;
- }
-
- if (this.tag.equals("fraction")) {
- ++this.nBys;
- this.readableString = this.readableString + " fraction ";
- this.size -= 3;
- this.field_5 -= (int)((double)this.size * 0.7);
- this.byStart[this.nBys] = this.field_0;
- this.field_0 += this.size >> 2;
- }
-
- if (this.tag.equals("over/")) {
- this.readableString = this.readableString + " over ";
- this.field_5 += (int)((double)this.size * 1.4);
- this.byEnd[this.nBys] = this.field_0 + (this.size >> 2);
- this.field_0 = this.byStart[this.nBys] + (this.size >> 2);
- }
-
- if (this.tag.equals("/fraction")) {
- if (this.field_0 > this.byEnd[this.nBys]) {
- this.byEnd[this.nBys] = this.field_0;
- }
-
- int var1 = this.field_5 - this.size;
- this.field_3.drawLine(this.byEnd[this.nBys], var1, this.byStart[this.nBys], var1);
- this.readableString = this.readableString + " end fraction ";
- this.field_0 = this.byEnd[this.nBys] + (this.size >> 2);
- this.field_5 -= (int)((double)this.size * 0.7);
- this.size += 3;
- --this.nBys;
- }
-
- if (this.tag.equals("</")) {
- this.readableString = this.readableString + "<";
- this.field_3.drawString("<", this.field_0, this.field_5);
- this.field_0 += this.getWidth(this.field_3, "<");
- }
-
- if (this.tag.equals("sqrt")) {
- ++this.nSqs;
- this.sqXmin[this.nSqs] = this.field_0;
- }
-
- if (this.tag.equals("/sqrt")) {
- }
-
- if (this.tag.equals("table")) {
- ++this.nTables;
- this.tableX[this.nTables] = this.field_0;
- this.tableY[this.nTables] = this.field_5 - this.size;
- this.nRows[this.nTables] = 0;
- }
-
- if (this.tag.equals("tr")) {
- int var10002 = this.nRows[this.nTables]++;
- this.field_0 = this.tableX[this.nTables];
- this.field_5 += this.field_2;
- this.rowY[this.nTables][this.nRows[this.nTables]] = this.field_5;
- }
-
- if (this.tag.equals("/td")) {
- int var3 = this.nCols[this.nTables]++;
- this.colX[this.nTables][this.nCols[this.nTables]] = this.field_0;
- }
-
- if (this.tag.equals("td")) {
- int var2 = this.params.indexOf("width=");
- if (var2 > 0) {
- System.out.println(var2);
- }
-
- int var4 = this.nCols[this.nTables]++;
- this.colX[this.nTables][this.nCols[this.nTables]] = this.field_0;
- }
-
- }
- }
-