home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / kepler / kepler.jar / TextDraw.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-12-09  |  7.7 KB  |  379 lines

  1. import java.awt.Component;
  2. import java.awt.Font;
  3. import java.awt.Graphics;
  4. import java.awt.Image;
  5. import java.awt.image.ImageObserver;
  6.  
  7. public class TextDraw extends Component {
  8.    public Image textIm;
  9.    // $FF: renamed from: x int
  10.    public int field_0;
  11.    public int xOffset = 0;
  12.    public double lineSpacing = (double)1.0F;
  13.    public int tabWidth = 30;
  14.    public String readableString = "";
  15.    // $FF: renamed from: f java.awt.Font
  16.    public Font field_1;
  17.    public String name;
  18.    public String tag;
  19.    public String params;
  20.    public int style;
  21.    public int size;
  22.    public int oldSize;
  23.    public int xEnd;
  24.    // $FF: renamed from: h int
  25.    public int field_2;
  26.    // $FF: renamed from: g java.awt.Graphics
  27.    public Graphics field_3;
  28.    public int[] fromStart = new int[100];
  29.    public int nFroms = 0;
  30.    public int[] byStart = new int[100];
  31.    public int[] byEnd = new int[100];
  32.    public int nBys = 0;
  33.    public int[] sqXmin = new int[100];
  34.    public int nSqs = 0;
  35.    // $FF: renamed from: x0 int
  36.    public int field_4;
  37.    // $FF: renamed from: y int
  38.    public int field_5;
  39.    // $FF: renamed from: w int
  40.    public int field_6;
  41.    boolean doExtraTags = false;
  42.    boolean doExtraJTags = false;
  43.    TextDrawJPanel tdjp;
  44.    TextDrawPanel tdp;
  45.    int nTables = 0;
  46.    int[] nRows = new int[50];
  47.    int[] tableX = new int[50];
  48.    int[] tableY = new int[50];
  49.    int[] nCols = new int[50];
  50.    int[][] rowY = new int[50][50];
  51.    int[][] colX = new int[50][50];
  52.  
  53.    public String getReadableString() {
  54.       return this.readableString;
  55.    }
  56.  
  57.    public int getX() {
  58.       return this.field_0;
  59.    }
  60.  
  61.    public int getWidth(Graphics var1, String var2) {
  62.       return var1.getFontMetrics().stringWidth(var2);
  63.    }
  64.  
  65.    public void setTabWidth(int var1) {
  66.       this.tabWidth = var1;
  67.    }
  68.  
  69.    public int drawPara(Graphics var1, String var2, int var3, int var4, int var5) {
  70.       this.field_3 = var1;
  71.       this.field_0 = var3;
  72.       this.field_4 = var3;
  73.       this.field_5 = var4;
  74.       this.field_6 = var5;
  75.       var2 = " " + var2 + "<endPara> ";
  76.       this.field_1 = this.field_3.getFont();
  77.       this.name = this.field_1.getName();
  78.       this.style = this.field_1.getStyle();
  79.       this.size = this.field_1.getSize();
  80.       this.oldSize = this.size;
  81.       this.readableString = "";
  82.       this.field_0 = this.field_4 + this.xOffset;
  83.       this.xOffset = 0;
  84.       this.xEnd = this.field_4 + this.field_6;
  85.       this.field_2 = (int)((double)this.field_3.getFontMetrics().getHeight() * this.lineSpacing);
  86.       boolean var6 = true;
  87.       int var9 = 0;
  88.  
  89.       try {
  90.          while(var9 >= 0) {
  91.             int var10 = var2.indexOf(60, var9 + 1);
  92.             int var11 = var2.indexOf(62, var9 + 1);
  93.             int var12 = var2.indexOf(32, var10 + 1);
  94.             String var8 = var2.substring(var9 + 1, var10) + " ";
  95.             int var13 = 0;
  96.             int var14 = var8.indexOf(32, var13 + 1);
  97.  
  98.             while(var14 > 0) {
  99.                var14 = var8.indexOf(32, var13 + 1);
  100.                if (var14 > 0) {
  101.                   String var7 = var8.substring(var13, var14);
  102.                   int var15 = this.getWidth(this.field_3, var7);
  103.                   if (this.field_0 + var15 > this.xEnd) {
  104.                      this.field_5 += this.field_2;
  105.                      this.field_0 = this.field_4 - this.field_3.getFontMetrics().stringWidth(" ");
  106.                   }
  107.  
  108.                   if ((this.style & 2) != 0) {
  109.                      this.field_3.drawString(var7 + " ", this.field_0, this.field_5);
  110.                   } else {
  111.                      this.field_3.drawString(var7, this.field_0, this.field_5);
  112.                   }
  113.  
  114.                   this.field_0 += var15;
  115.                   var13 = var14;
  116.                }
  117.             }
  118.  
  119.             this.readableString = this.readableString + var8;
  120.             if (var12 < var11) {
  121.                this.tag = var2.substring(var10 + 1, var12).toLowerCase();
  122.                this.params = var2.substring(var12 + 1, var11).toLowerCase();
  123.             } else {
  124.                this.tag = var2.substring(var10 + 1, var11).toLowerCase();
  125.                this.params = "";
  126.             }
  127.  
  128.             this.doTags();
  129.             if (this.doExtraJTags) {
  130.                this.tdjp.extraTags();
  131.             } else if (this.doExtraTags) {
  132.                this.tdp.extraTags();
  133.             }
  134.  
  135.             this.field_3.setFont(new Font(this.name, this.style, this.size));
  136.             var9 = var11;
  137.             if (this.tag.equals("endpara")) {
  138.                var9 = -1;
  139.             }
  140.          }
  141.       } catch (Exception var16) {
  142.          System.out.println(var16);
  143.          this.readableString = this.readableString + "Cannot format remaining text";
  144.          this.field_3.drawString("Cannot format remaining text", this.field_0, this.field_5);
  145.       }
  146.  
  147.       this.field_3.setFont(this.field_1);
  148.       return this.field_5;
  149.    }
  150.  
  151.    public void setExtraTagsEnabled(TextDrawJPanel var1, boolean var2) {
  152.       this.tdjp = var1;
  153.       this.doExtraJTags = var2;
  154.    }
  155.  
  156.    public void setExtraTagsEnabled(TextDrawPanel var1, boolean var2) {
  157.       this.tdp = var1;
  158.       this.doExtraTags = var2;
  159.    }
  160.  
  161.    public void doTags() {
  162.       if (this.tag.equals("<")) {
  163.          this.field_3.drawString("<", this.field_0, this.field_5);
  164.          this.field_0 += this.size >> 2;
  165.       }
  166.  
  167.       if (this.tag.equals("bar/")) {
  168.          this.readableString = this.readableString + " bar ";
  169.          this.field_3.drawString("┬»", this.field_0 - (this.size >> 1), this.field_5);
  170.          this.field_0 += 2;
  171.       }
  172.  
  173.       if (this.tag.equals("i")) {
  174.          this.style |= 2;
  175.       }
  176.  
  177.       if (this.tag.equals("/i")) {
  178.          this.style &= -3;
  179.       }
  180.  
  181.       if (this.tag.equals("sup") || this.tag.equals("pow")) {
  182.          this.readableString = this.readableString + (this.tag.charAt(0) == 'p' ? " to the power " : " superscript ");
  183.          this.size -= 3;
  184.          this.field_5 -= this.size >> 1;
  185.       }
  186.  
  187.       if (this.tag.equals("/sup") || this.tag.equals("/pow")) {
  188.          this.readableString = this.readableString + (this.tag.charAt(1) == 'p' ? " end power " : " unsuperscript ");
  189.          this.field_5 += this.size >> 1;
  190.          this.size += 3;
  191.       }
  192.  
  193.       if (this.tag.equals("sub")) {
  194.          this.readableString = this.readableString + " subscript ";
  195.          this.size -= 3;
  196.          this.field_5 += this.size >> 1;
  197.       }
  198.  
  199.       if (this.tag.equals("/sub")) {
  200.          this.readableString = this.readableString + " end subscript ";
  201.          this.field_5 -= this.size >> 1;
  202.          this.size += 3;
  203.       }
  204.  
  205.       if (this.tag.equals("troman")) {
  206.          this.name = "TimesRoman";
  207.       }
  208.  
  209.       if (this.tag.equals("sserif")) {
  210.          this.name = "SansSerif";
  211.       }
  212.  
  213.       if (this.tag.equals("br/")) {
  214.          this.readableString = this.readableString + " new line\n ";
  215.          this.field_0 = this.field_4;
  216.          this.field_5 += this.field_2;
  217.       }
  218.  
  219.       if (this.tag.equals("back/")) {
  220.          this.field_0 -= (int)((double)this.size * (double)0.5F);
  221.       }
  222.  
  223.       if (this.tag.equals("b")) {
  224.          this.style |= 1;
  225.       }
  226.  
  227.       if (this.tag.equals("/b")) {
  228.          this.style &= -2;
  229.       }
  230.  
  231.       if (this.tag.equals("integral")) {
  232.          this.readableString = this.readableString + " the integral ";
  233.          this.field_0 += this.size >> 2;
  234.          this.field_3.setFont(new Font(this.name, this.style, (int)((double)this.size * 1.3)));
  235.          this.field_3.drawString("Γê½", this.field_0, this.field_5 + (this.size >> 3));
  236.          this.field_3.setFont(new Font(this.name, this.style, this.size));
  237.          this.field_0 += this.size >> 1;
  238.       }
  239.  
  240.       if (this.tag.equals("sum")) {
  241.          this.readableString = this.readableString + " the sum ";
  242.          this.field_0 += this.size >> 2;
  243.          this.field_3.drawString("Γêæ", this.field_0, this.field_5 - this.size / 7);
  244.       }
  245.  
  246.       if (this.tag.equals("infinity/")) {
  247.          this.readableString = this.readableString + " infinity ";
  248.          this.field_3.drawString("Γê₧", this.field_0, this.field_5);
  249.       }
  250.  
  251.       if (this.tag.equals("minus/")) {
  252.          this.readableString = this.readableString + " minus ";
  253.          this.field_3.drawString("ΓêÆ", this.field_0, this.field_5);
  254.          this.field_0 += (this.size >> 1) + 3;
  255.       }
  256.  
  257.       if (this.tag.equals("from/")) {
  258.          this.readableString = this.readableString + " from ";
  259.          this.oldSize = this.size;
  260.          this.size = (int)((double)this.size * (double)0.5F);
  261.          this.field_5 += (int)((double)this.size * 0.8);
  262.          this.fromStart[this.nFroms++] = this.field_0;
  263.       }
  264.  
  265.       if (this.tag.equals("to/")) {
  266.          this.readableString = this.readableString + " to ";
  267.          this.field_5 -= (int)((double)this.size * 2.6);
  268.          this.field_0 = this.fromStart[this.nFroms - 1];
  269.          --this.nFroms;
  270.       }
  271.  
  272.       if (this.tag.equals("/integral") || this.tag.equals("/sum")) {
  273.          this.readableString = this.readableString + " of ";
  274.          this.field_5 += (int)((double)this.size * 1.8);
  275.          this.field_0 += (int)(1.1 * (double)this.size);
  276.          this.size = this.oldSize;
  277.       }
  278.  
  279.       if (this.tag.equals("larger") || this.tag.equals("/smaller")) {
  280.          this.size += 2;
  281.       }
  282.  
  283.       if (this.tag.equals("smaller") || this.tag.equals("/larger")) {
  284.          this.size -= 2;
  285.       }
  286.  
  287.       if (this.tag.equals("up") || this.tag.equals("/down")) {
  288.          this.field_5 -= this.field_2 / 6;
  289.       }
  290.  
  291.       if (this.tag.equals("down") || this.tag.equals("/up")) {
  292.          this.field_5 += this.field_2 / 6;
  293.       }
  294.  
  295.       if (this.tag.equals("draw image") && this.textIm != null) {
  296.          this.field_3.drawImage(this.textIm, this.field_0, this.field_5 - this.field_2 * 3 / 4, (ImageObserver)null);
  297.          this.field_0 += this.textIm.getWidth((ImageObserver)null);
  298.       }
  299.  
  300.       if (this.tag.equals("tab/")) {
  301.          this.field_0 = (this.field_0 + this.tabWidth) / this.tabWidth * this.tabWidth;
  302.       }
  303.  
  304.       if (this.tag.equals("fraction")) {
  305.          ++this.nBys;
  306.          this.readableString = this.readableString + " fraction ";
  307.          this.size -= 3;
  308.          this.field_5 -= (int)((double)this.size * 0.7);
  309.          this.byStart[this.nBys] = this.field_0;
  310.          this.field_0 += this.size >> 2;
  311.       }
  312.  
  313.       if (this.tag.equals("over/")) {
  314.          this.readableString = this.readableString + " over ";
  315.          this.field_5 += (int)((double)this.size * 1.4);
  316.          this.byEnd[this.nBys] = this.field_0 + (this.size >> 2);
  317.          this.field_0 = this.byStart[this.nBys] + (this.size >> 2);
  318.       }
  319.  
  320.       if (this.tag.equals("/fraction")) {
  321.          if (this.field_0 > this.byEnd[this.nBys]) {
  322.             this.byEnd[this.nBys] = this.field_0;
  323.          }
  324.  
  325.          int var1 = this.field_5 - this.size;
  326.          this.field_3.drawLine(this.byEnd[this.nBys], var1, this.byStart[this.nBys], var1);
  327.          this.readableString = this.readableString + " end fraction ";
  328.          this.field_0 = this.byEnd[this.nBys] + (this.size >> 2);
  329.          this.field_5 -= (int)((double)this.size * 0.7);
  330.          this.size += 3;
  331.          --this.nBys;
  332.       }
  333.  
  334.       if (this.tag.equals("</")) {
  335.          this.readableString = this.readableString + "<";
  336.          this.field_3.drawString("<", this.field_0, this.field_5);
  337.          this.field_0 += this.getWidth(this.field_3, "<");
  338.       }
  339.  
  340.       if (this.tag.equals("sqrt")) {
  341.          ++this.nSqs;
  342.          this.sqXmin[this.nSqs] = this.field_0;
  343.       }
  344.  
  345.       if (this.tag.equals("/sqrt")) {
  346.       }
  347.  
  348.       if (this.tag.equals("table")) {
  349.          ++this.nTables;
  350.          this.tableX[this.nTables] = this.field_0;
  351.          this.tableY[this.nTables] = this.field_5 - this.size;
  352.          this.nRows[this.nTables] = 0;
  353.       }
  354.  
  355.       if (this.tag.equals("tr")) {
  356.          int var10002 = this.nRows[this.nTables]++;
  357.          this.field_0 = this.tableX[this.nTables];
  358.          this.field_5 += this.field_2;
  359.          this.rowY[this.nTables][this.nRows[this.nTables]] = this.field_5;
  360.       }
  361.  
  362.       if (this.tag.equals("/td")) {
  363.          int var3 = this.nCols[this.nTables]++;
  364.          this.colX[this.nTables][this.nCols[this.nTables]] = this.field_0;
  365.       }
  366.  
  367.       if (this.tag.equals("td")) {
  368.          int var2 = this.params.indexOf("width=");
  369.          if (var2 > 0) {
  370.             System.out.println(var2);
  371.          }
  372.  
  373.          int var4 = this.nCols[this.nTables]++;
  374.          this.colX[this.nTables][this.nCols[this.nTables]] = this.field_0;
  375.       }
  376.  
  377.    }
  378. }
  379.