home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2002 June / INTERNET92.ISO / pc / software / windows / building / visual_dhtml / visualdhtmlwin2000.exe / PParse.___ (.txt) < prev    next >
Encoding:
Java Class File  |  2001-10-19  |  12.0 KB  |  915 lines

  1. import java.awt.Color;
  2. import java.awt.Component;
  3. import java.awt.Font;
  4. import java.awt.FontMetrics;
  5. import java.awt.Graphics;
  6. import java.awt.Image;
  7. import java.util.Vector;
  8.  
  9. class PParse {
  10.    private String[] hinder_links;
  11.    private int[] hinder_table;
  12.    private int num_hinders = 0;
  13.    // $FF: renamed from: p java.awt.Component
  14.    private Component field_0;
  15.    private int hinder_max_end_y = 0;
  16.    String[] imageUrls;
  17.    int[] imageMap;
  18.    int numOfImages = 0;
  19.    private Vector v_paraFormat = new Vector();
  20.    private Vector v_paraData = new Vector();
  21.    String[] paraFormatString;
  22.    int[] paraFormat;
  23.    String[] paraData;
  24.    int numParaFormats = 0;
  25.    private boolean was_image_tag = false;
  26.    private FontMetrics pfm;
  27.    private Font pfont;
  28.    private Graphics g_img;
  29.    Image img;
  30.    int paraImgHeight = 0;
  31.    int paraImgWidth = 0;
  32.    int paraPageStartY = 0;
  33.    private String temp_style = "0";
  34.    private String temp_value = "0";
  35.    private String tfont = null;
  36.    private String final_string;
  37.    String[] formatTable;
  38.    private int formatTableLength;
  39.    int numberOfTags;
  40.    private int numberOfLines = 1;
  41.    private Vector v_line = new Vector();
  42.    int[] line_table;
  43.    private Color linkColor;
  44.    int[] linkMap;
  45.    String[] linkData;
  46.    int numOfLinks;
  47.    boolean drawComplete = false;
  48.    boolean isLinks = false;
  49.    private Color bgColor;
  50.  
  51.    public int cMouseLink(int var1, int var2) {
  52.       int var3 = 0;
  53.  
  54.       for(int var4 = 0; var4 < this.numOfLinks; ++var4) {
  55.          var3 = var4 * 4;
  56.          if (var2 > this.linkMap[var3 + 1] && var2 < this.linkMap[var3 + 1] + this.linkMap[var3 + 3] && var1 > this.linkMap[var3] && var1 < this.linkMap[var3] + this.linkMap[var3 + 2]) {
  57.             return var4;
  58.          }
  59.       }
  60.  
  61.       return -1;
  62.    }
  63.  
  64.    private void ConvertParaTables() {
  65.       this.numParaFormats = this.v_paraFormat.size() / 9;
  66.       String[] var1 = new String[this.v_paraFormat.size()];
  67.       this.paraFormat = new int[this.v_paraFormat.size()];
  68.       this.v_paraFormat.copyInto(var1);
  69.  
  70.       for(int var2 = 0; var2 < var1.length; ++var2) {
  71.          Integer var3 = new Integer(var1[var2]);
  72.          this.paraFormat[var2] = var3;
  73.       }
  74.  
  75.       this.paraData = new String[this.v_paraData.size()];
  76.       this.v_paraData.copyInto(this.paraData);
  77.       this.v_paraFormat = null;
  78.       this.v_paraData = null;
  79.    }
  80.  
  81.    PParse(String var1, Color var2, Component var3) {
  82.       this.field_0 = var3;
  83.       this.bgColor = var2;
  84.       Object var4 = null;
  85.       int var5 = 0;
  86.       int var6 = 0;
  87.       int var7 = 0;
  88.       String var8 = var1;
  89.       boolean var11 = false;
  90.       Vector var12 = new Vector();
  91.       if (var1.indexOf("<") > 0 || var1.indexOf("<") == -1) {
  92.          var12.addElement("-1");
  93.          var12.addElement("0");
  94.          Integer var10 = new Integer(0);
  95.          var12.addElement(var10.toString());
  96.          ++this.numberOfTags;
  97.          ++this.numParaFormats;
  98.       }
  99.  
  100.       while(var5 != -1) {
  101.          var5 = var8.indexOf("<", var7);
  102.          if (var5 != -1) {
  103.             var6 = var8.indexOf(">", var5 + 1);
  104.             if (var6 != -1) {
  105.                var11 = true;
  106.                if (this.CheckTag("font", var8, var5, "1", var6, "")) {
  107.                   String var15 = var8.substring(var5, var6);
  108.                   this.temp_value = this.temp_value + vInTag.GetInternalTagValue("color", var15, 1, true);
  109.                   this.temp_value = this.temp_value + vInTag.GetInternalTagValue("size", var15, 2, true);
  110.                   this.temp_value = this.temp_value + vInTag.GetInternalTagValue("face", var15, 3, true);
  111.                } else if (!this.CheckTag("em", var8, var5, "6", var6, "0")) {
  112.                   if (this.CheckTag("a", var8, var5, "7", var6, "")) {
  113.                      String var14 = var8.substring(var5, var6);
  114.                      this.temp_value = this.temp_value + vInTag.GetInternalTagValue("href", var14, 3, true);
  115.                      this.temp_value = this.temp_value + vInTag.GetInternalTagValue("where", var14, 3, true);
  116.                      this.temp_value = this.temp_value + vInTag.GetInternalTagValue("color", var14, 1, true);
  117.                      this.temp_value = this.temp_value + vInTag.GetInternalTagValue("hcolor", var14, 1, true);
  118.                      this.temp_value = this.temp_value + vInTag.GetInternalTagValue("alt", var14, 3, true);
  119.                   } else if (!this.CheckTag("strong", var8, var5, "8", var6, "0") && !this.CheckTag("b>", var8, var5, "8", var6, "0")) {
  120.                      if (!this.CheckTag("img", var8, var5, "9", var6, "")) {
  121.                         if (!this.CheckTag("u", var8, var5, "10", var6, "0") && !this.CheckTag("br", var8, var5, "11", var6, "0") && !this.CheckTag("li", var8, var5, "11", var6, "0") && !this.CheckTag("/font", var8, var5, "1", var6, "-2|-2|-2") && !this.CheckTag("/br", var8, var5, "5", var6, "-1") && !this.CheckTag("/em", var8, var5, "6", var6, "-1") && !this.CheckTag("/a", var8, var5, "7", var6, "-1|-1|-1") && !this.CheckTag("/strong", var8, var5, "8", var6, "-1") && !this.CheckTag("/b>", var8, var5, "8", var6, "-1") && !this.CheckTag("/u", var8, var5, "10", var6, "-1") && !this.CheckTag("/li", var8, var5, "11", var6, "-1")) {
  122.                            var11 = false;
  123.                         }
  124.                      } else {
  125.                         String var13 = var8.substring(var5, var6);
  126.                         this.temp_value = this.temp_value + vInTag.GetInternalTagValue("align", var13, 3, true);
  127.                         if (this.temp_value.equalsIgnoreCase("left|") || this.temp_value.equalsIgnoreCase("right|")) {
  128.                            ++this.num_hinders;
  129.                         }
  130.  
  131.                         this.temp_value = this.temp_value + vInTag.GetInternalTagValue("src", var13, 3, true);
  132.                         this.temp_value = this.temp_value + vInTag.GetInternalTagValue("alt", var13, 3, true);
  133.                         this.temp_value = this.temp_value + vInTag.GetInternalTagValue("width", var13, 2, true);
  134.                         this.temp_value = this.temp_value + vInTag.GetInternalTagValue("height", var13, 2, true);
  135.                      }
  136.                   }
  137.                }
  138.  
  139.                if (var11) {
  140.                   var12.addElement(this.temp_style);
  141.                   var12.addElement(this.temp_value);
  142.                   Integer var18 = new Integer(var5);
  143.                   var12.addElement(var18.toString());
  144.                } else {
  145.                   var7 = var5 + 1;
  146.                }
  147.  
  148.                String var9 = var8;
  149.                var8 = var8.substring(0, var5);
  150.                if (var6 != var9.length() - 1) {
  151.                   var9 = var9.substring(var6 + 1, var9.length());
  152.                   var8 = var8 + var9;
  153.                }
  154.  
  155.                ++this.numberOfTags;
  156.             } else {
  157.                var7 = var5 + 1;
  158.             }
  159.          }
  160.       }
  161.  
  162.       this.formatTableLength = var12.size();
  163.       this.formatTable = new String[this.formatTableLength];
  164.       var12.copyInto(this.formatTable);
  165.       if (var8.length() < 1) {
  166.          var8 = " ";
  167.       }
  168.  
  169.       this.final_string = var8;
  170.       this.hinder_table = new int[this.num_hinders * 7];
  171.       this.hinder_links = new String[this.num_hinders * 5];
  172.       Object var20 = null;
  173.    }
  174.  
  175.    private int subtractHW(boolean var1, int var2, int var3) {
  176.       int var4 = 0;
  177.       int var5 = 0;
  178.       if (this.num_hinders > 0) {
  179.          for(int var6 = 0; var6 < this.num_hinders; ++var6) {
  180.             var4 = var6 * 7;
  181.             if (this.hinder_table[var4 + 6] == 1) {
  182.                if (var1) {
  183.                   if (this.hinder_table[var4 + 3] < var2 && this.hinder_table[var4 + 5] == 8) {
  184.                      var5 -= this.hinder_table[var4 + 1];
  185.                      this.hinder_table[var4 + 6] = 0;
  186.                   }
  187.                } else if (this.hinder_table[var4 + 3] < var2 && this.hinder_table[var4 + 5] == 7) {
  188.                   var5 -= this.hinder_table[var4 + 1];
  189.                   this.hinder_table[var4 + 6] = 0;
  190.                }
  191.             }
  192.          }
  193.       }
  194.  
  195.       return var5;
  196.    }
  197.  
  198.    private void SetLineTable(int var1, int var2, int var3, int var4, int var5, int var6) {
  199.       this.v_line.addElement((new Integer(var1)).toString());
  200.       this.v_line.addElement((new Integer(var2)).toString());
  201.       this.v_line.addElement((new Integer(var3)).toString());
  202.       this.v_line.addElement((new Integer(var4)).toString());
  203.       this.v_line.addElement((new Integer(var5)).toString());
  204.       this.v_line.addElement((new Integer(var6)).toString());
  205.    }
  206.  
  207.    private boolean CheckTag(String var1, String var2, int var3, String var4, int var5, String var6) {
  208.       if (var3 + var1.length() > var5) {
  209.          return false;
  210.       } else if (var2.substring(var3 + 1, var3 + var1.length() + 1).equalsIgnoreCase(var1)) {
  211.          this.temp_style = var4;
  212.          this.temp_value = var6;
  213.          return true;
  214.       } else {
  215.          return false;
  216.       }
  217.    }
  218.  
  219.    private void ConvertLineTable(int var1, int var2, Component var3) {
  220.       if (var2 == 0) {
  221.          var2 = 1;
  222.       }
  223.  
  224.       this.img = var3.createImage(var1, var2);
  225.       this.g_img = this.img.getGraphics();
  226.       this.g_img.setColor(this.bgColor);
  227.       this.g_img.fillRect(0, 0, var1, var2);
  228.       this.paraImgHeight = var2;
  229.       this.paraImgWidth = var1;
  230.       String[] var4 = new String[this.v_line.size()];
  231.       this.line_table = new int[this.v_line.size()];
  232.       this.v_line.copyInto(var4);
  233.  
  234.       for(int var5 = 0; var5 < var4.length; ++var5) {
  235.          Integer var6 = new Integer(var4[var5]);
  236.          this.line_table[var5] = var6;
  237.       }
  238.  
  239.       this.v_line = null;
  240.    }
  241.  
  242.    private int addHinderWidths(boolean var1, int var2, int var3, int var4) {
  243.       int var5 = 0;
  244.       int var6 = 0;
  245.       if (this.num_hinders > 0) {
  246.          for(int var7 = 0; var7 < this.num_hinders; ++var7) {
  247.             var5 = var7 * 7;
  248.             if (this.hinder_table[var5] == this.numberOfLines && this.hinder_table[var5 + 6] == 0) {
  249.                this.hinder_table[var5 + 3] = this.hinder_table[var5 + 2] + var2 + var4;
  250.                if (this.hinder_max_end_y < this.hinder_table[var5 + 3]) {
  251.                   this.hinder_max_end_y = this.hinder_table[var5 + 3];
  252.                }
  253.  
  254.                if (var1) {
  255.                   if (this.hinder_table[var5 + 5] == 8) {
  256.                      var6 += this.hinder_table[var5 + 1];
  257.                      this.hinder_table[var5 + 4] = this.paraImgWidth - var6 - var3 + this.hinder_table[var5 + 1];
  258.                      this.hinder_table[var5 + 6] = 1;
  259.                   }
  260.                } else if (this.hinder_table[var5 + 5] == 7) {
  261.                   var6 += this.hinder_table[var5 + 1];
  262.                   this.hinder_table[var5 + 4] = var3 + var6;
  263.                   this.hinder_table[var5 + 6] = 1;
  264.                }
  265.             }
  266.          }
  267.       }
  268.  
  269.       return var6;
  270.    }
  271.  
  272.    public void DrawText(int var1) {
  273.       int var2 = 0;
  274.       int var3 = 0;
  275.       int var4 = 0;
  276.       int var5 = 0;
  277.       int var6 = 0;
  278.       int var7 = 0;
  279.       int var8 = 0;
  280.       int var9 = 0;
  281.       int var10 = 0;
  282.       int var11 = 0;
  283.       int var12 = 0;
  284.       int var13 = 0;
  285.       int var14 = -1;
  286.       int var15 = 1;
  287.       boolean var16 = false;
  288.       int var17 = 0;
  289.  
  290.       for(int var18 = 0; var18 < this.num_hinders; ++var18) {
  291.          var4 = var18 * 7;
  292.          var5 = var18 * 4;
  293.          var6 = var18;
  294.          var8 = var18 * 5;
  295.          var9 = this.hinder_table[var4 + 4] - this.hinder_table[var4 + 1];
  296.          var10 = this.hinder_table[var4 + 3] - this.hinder_table[var4 + 2];
  297.          var11 = this.hinder_table[var4 + 1];
  298.          var12 = this.hinder_table[var4 + 2];
  299.          this.imageMap[var5] = var9;
  300.          this.imageMap[var5 + 1] = var10;
  301.          this.imageMap[var5 + 2] = var11;
  302.          this.imageMap[var5 + 3] = var12;
  303.          this.imageUrls[var18] = this.hinder_links[var8];
  304.          if (!this.hinder_links[var8 + 1].equals("-1")) {
  305.             this.linkMap[var13 * 4] = var9;
  306.             this.linkMap[var13 * 4 + 1] = var10;
  307.             this.linkMap[var13 * 4 + 2] = var11;
  308.             this.linkMap[var13 * 4 + 3] = var12;
  309.             this.linkData[var13 * 8] = this.hinder_links[var8 + 1];
  310.             this.linkData[var13 * 8 + 1] = this.hinder_links[var8 + 3];
  311.             this.linkData[var13 * 8 + 2] = this.hinder_links[var8 + 4];
  312.             this.linkData[var13 * 8 + 3] = this.hinder_links[var8 + 2];
  313.             this.linkData[var13 * 8 + 4] = "-1";
  314.             this.linkData[var13 * 8 + 5] = "-1";
  315.             this.linkData[var13 * 8 + 6] = "0";
  316.             this.linkData[var13 * 8 + 7] = "0";
  317.             ++var13;
  318.          }
  319.  
  320.          var16 = true;
  321.       }
  322.  
  323.       if (var16) {
  324.          var5 += 4;
  325.          ++var6;
  326.       }
  327.  
  328.       for(int var38 = 0; var38 < this.numParaFormats; ++var38) {
  329.          var7 = var38 * 6;
  330.          var2 = var38 * 9;
  331.          var3 = this.line_table[this.paraFormat[var2 + 8] * 6 + 2];
  332.          if (var1 == 1) {
  333.             var17 = (this.paraImgWidth - this.line_table[this.paraFormat[var2 + 8] * 6]) / 2;
  334.          }
  335.  
  336.          if (var1 == 2) {
  337.             var17 = this.paraImgWidth - this.line_table[this.paraFormat[var2 + 8] * 6];
  338.          }
  339.  
  340.          if (this.paraFormat[var2] == -1) {
  341.             var9 = this.paraFormat[var2 + 7] + var17;
  342.             var10 = var3 - this.paraFormat[var2 + 6];
  343.             var11 = this.paraFormat[var2 + 5];
  344.             var12 = this.paraFormat[var2 + 6];
  345.             this.imageMap[var5] = var9;
  346.             this.imageMap[var5 + 1] = var10;
  347.             this.imageMap[var5 + 2] = var11;
  348.             this.imageMap[var5 + 3] = var12;
  349.             var5 += 4;
  350.             this.imageUrls[var6] = this.paraData[var7 + 1];
  351.             ++var6;
  352.             if (!this.paraData[var7 + 2].equals("-1")) {
  353.                this.linkMap[var13 * 4] = var9;
  354.                this.linkMap[var13 * 4 + 1] = var10;
  355.                this.linkMap[var13 * 4 + 2] = var11;
  356.                this.linkMap[var13 * 4 + 3] = var12;
  357.                this.linkData[var13 * 8] = this.paraData[var7 + 2];
  358.                this.linkData[var13 * 8 + 1] = this.paraData[var7 + 4];
  359.                this.linkData[var13 * 8 + 2] = this.paraData[var7 + 5];
  360.                this.linkData[var13 * 8 + 3] = this.paraData[var7 + 3];
  361.                this.linkData[var13 * 8 + 4] = "-1";
  362.                this.linkData[var13 * 8 + 5] = "-1";
  363.                this.linkData[var13 * 8 + 6] = "0";
  364.                this.linkData[var13 * 8 + 7] = "0";
  365.                ++var13;
  366.             }
  367.          } else {
  368.             var9 = this.paraFormat[var2 + 7] + var17;
  369.             var10 = var3 - this.paraFormat[var2 + 6];
  370.             var11 = this.paraFormat[var2 + 5];
  371.             var12 = this.paraFormat[var2 + 6];
  372.             this.g_img.setColor(new Color(this.paraFormat[var2 + 3]));
  373.             this.pfont = new Font(HTMLFont.GetFontName(this.paraFormat[var2]), this.paraFormat[var2 + 1], HTMLFont.getSize(this.paraFormat[var2 + 2]));
  374.             this.g_img.setFont(this.pfont);
  375.             this.g_img.drawString(this.paraData[var7], var9, var3);
  376.             if (this.paraFormat[var2 + 4] == 1 && var9 != this.paraFormat[var2 + 5]) {
  377.                this.g_img.drawLine(var9, var3 + 2, var9 + this.paraFormat[var2 + 5], var3 + 2);
  378.             }
  379.  
  380.             if (!this.paraData[var7 + 2].equals("-1")) {
  381.                this.linkMap[var13 * 4] = var9;
  382.                this.linkMap[var13 * 4 + 1] = var10;
  383.                this.linkMap[var13 * 4 + 2] = var11;
  384.                this.linkMap[var13 * 4 + 3] = var12 + this.field_0.getFontMetrics(this.pfont).getDescent();
  385.                this.linkData[var13 * 8] = this.paraData[var7 + 2];
  386.                this.linkData[var13 * 8 + 1] = this.paraData[var7 + 4];
  387.                this.linkData[var13 * 8 + 2] = this.paraData[var7 + 5];
  388.                this.linkData[var13 * 8 + 3] = this.paraData[var7 + 3];
  389.                this.linkData[var13 * 8 + 4] = (new Integer(this.paraFormat[var2 + 3])).toString();
  390.                this.linkData[var13 * 8 + 5] = (new Integer(var15)).toString();
  391.                this.linkData[var13 * 8 + 6] = (new Integer(var38 - (var15 - 1))).toString();
  392.                this.linkData[var13 * 8 + 7] = (new Integer(var38 - (var15 - 1))).toString();
  393.                if (var14 == -1) {
  394.                   var14 = var13;
  395.                }
  396.  
  397.                ++var15;
  398.                ++var13;
  399.             } else {
  400.                if (var14 != -1) {
  401.                   for(int var19 = var14; var19 < var14 + (var15 - 1); ++var19) {
  402.                      this.linkData[var19 * 8 + 5] = (new Integer(var15 - 1)).toString();
  403.                   }
  404.  
  405.                   var14 = -1;
  406.                }
  407.  
  408.                var15 = 1;
  409.             }
  410.          }
  411.       }
  412.  
  413.       if (var14 != -1) {
  414.          for(int var39 = var14; var39 < var14 + (var15 - 1); ++var39) {
  415.             this.linkData[var39 * 8 + 5] = (new Integer(var15 - 1)).toString();
  416.          }
  417.  
  418.          var14 = -1;
  419.       }
  420.  
  421.       this.drawComplete = true;
  422.    }
  423.  
  424.    public void SizeText(int var1, String var2, int var3, Color var4, Color var5, Color var6) {
  425.       this.linkColor = var6;
  426.       int var7 = 0;
  427.       Vector var8 = new Vector();
  428.       Vector var9 = new Vector();
  429.       Vector var10 = new Vector();
  430.       this.paraImgWidth = var1;
  431.       int var11 = 0;
  432.       int var12 = 0;
  433.       byte var13 = 0;
  434.       byte var14 = 0;
  435.       String var15 = null;
  436.       String var16 = null;
  437.       int var17 = 0;
  438.       int var18 = 0;
  439.       int var19 = 0;
  440.       byte var20 = 3;
  441.       int var21 = 0;
  442.       int var22 = 0;
  443.       int var23 = 0;
  444.       String var24 = (new Integer(HTMLFont.SetFontID(var2))).toString();
  445.       int var25 = 0;
  446.       int var26 = var3;
  447.       Color var27 = var4;
  448.       Object var28 = null;
  449.       int var29 = 0;
  450.       int var30 = 0;
  451.       int var31 = 0;
  452.       Object var32 = null;
  453.       new Integer(0);
  454.       int var35 = 0;
  455.       int var36 = 0;
  456.       int var37 = 0;
  457.       int var38 = 0;
  458.       String var39 = null;
  459.       String var40 = null;
  460.       String var41 = null;
  461.       boolean var42 = false;
  462.  
  463.       for(int var43 = 0; var43 < this.formatTableLength; var43 += 3) {
  464.          var37 = var43 * 2;
  465.          var30 = Integer.parseInt(this.formatTable[var43 + 2]);
  466.          String var61;
  467.          if (var43 < this.formatTableLength - 3) {
  468.             var61 = this.final_string.substring(var30, Integer.parseInt(this.formatTable[var43 + 5]));
  469.             var29 = var61.length();
  470.          } else {
  471.             var61 = this.final_string.substring(var30, this.final_string.length());
  472.             var29 = var61.length();
  473.          }
  474.  
  475.          if (this.formatTable[var43].equals("1")) {
  476.             String[] var34 = vInTag.SecondParse(this.formatTable[var43 + 1], 3);
  477.             if (var34[0].equals("-1")) {
  478.                var9.addElement(Integer.toHexString(var27.getRGB()));
  479.             } else if (var34[0].equals("-2")) {
  480.                if (var9.size() < 2) {
  481.                   var9.removeAllElements();
  482.                   if (!var42) {
  483.                      var27 = var4;
  484.                   }
  485.                } else {
  486.                   var9.removeElementAt(var10.size() - 1);
  487.                   if (!var42) {
  488.                      var27 = new Color(Integer.parseInt(var9.lastElement().toString(), 16));
  489.                   }
  490.                }
  491.             } else {
  492.                var9.addElement(var34[0]);
  493.                if (!var42) {
  494.                   var27 = new Color(Integer.parseInt(var34[0], 16));
  495.                }
  496.             }
  497.  
  498.             if (var34[1].equals("-1")) {
  499.                Integer var33 = new Integer(var26);
  500.                var10.addElement(var33.toString());
  501.             } else if (var34[1].equals("-2")) {
  502.                if (var10.size() < 2) {
  503.                   var10.removeAllElements();
  504.                   var26 = var3;
  505.                } else {
  506.                   var10.removeElementAt(var10.size() - 1);
  507.                   var26 = Integer.parseInt(var10.lastElement().toString());
  508.                }
  509.             } else {
  510.                var26 = Integer.parseInt(var34[1]);
  511.                Integer var62 = new Integer(var26);
  512.                var10.addElement(var62.toString());
  513.             }
  514.  
  515.             if (var34[2].equals("-1")) {
  516.                var8.addElement(var24);
  517.             } else if (var34[2].equals("-2")) {
  518.                if (var8.size() < 2) {
  519.                   var8.removeAllElements();
  520.                   var24 = (new Integer(HTMLFont.SetFontID(var2))).toString();
  521.                } else {
  522.                   var8.removeElementAt(var8.size() - 1);
  523.                   var24 = var8.lastElement().toString();
  524.                }
  525.             } else {
  526.                var34[2] = (new Integer(HTMLFont.SetFontID(var34[2]))).toString();
  527.                var24 = var34[2];
  528.                var8.addElement(var34[2]);
  529.             }
  530.          } else if (this.formatTable[var43].equals("6")) {
  531.             if (this.formatTable[var43 + 1].equals("0")) {
  532.                if (var25 < 2) {
  533.                   var25 += 2;
  534.                }
  535.             } else if (var25 > 1) {
  536.                var25 -= 2;
  537.             }
  538.          } else if (this.formatTable[var43].equals("11")) {
  539.             if (var61.length() > 1) {
  540.                var61 = var61.substring(1);
  541.             }
  542.  
  543.             if (var61.equals(" ")) {
  544.                var61 = "";
  545.             }
  546.  
  547.             if (var43 == this.formatTableLength - 3) {
  548.                var31 += var36;
  549.                this.SetLineTable(var35 + var21 + var17, var36, var31, var18, var17, var1 - var21);
  550.                var36 = 0;
  551.             } else {
  552.                var31 += var36;
  553.                this.SetLineTable(var35, var36, var31, var18, var17, var1 - var21);
  554.                var22 = 0;
  555.                ++this.numberOfLines;
  556.                int var52 = var17 + this.subtractHW(false, var31 + var38, var17);
  557.                var21 += this.subtractHW(true, var31 + var38, var21);
  558.                var17 = var52 + this.addHinderWidths(false, var31, var52, var38);
  559.                var21 += this.addHinderWidths(true, var31, var21, var38);
  560.                var35 = var17;
  561.                var36 = 0;
  562.             }
  563.          } else if (this.formatTable[var43].equals("8")) {
  564.             if (this.formatTable[var43 + 1].equals("0")) {
  565.                if (var25 < 3) {
  566.                   ++var25;
  567.                }
  568.             } else if (var25 > 0) {
  569.                --var25;
  570.             }
  571.          } else if (this.formatTable[var43].equals("10")) {
  572.             if (this.formatTable[var43 + 1].equals("0")) {
  573.                var14 = 1;
  574.             } else {
  575.                var14 = 0;
  576.             }
  577.          } else if (this.formatTable[var43].equals("7")) {
  578.             String[] var63 = vInTag.SecondParse(this.formatTable[var43 + 1], 5);
  579.             if (var63[0].equals("-1")) {
  580.                var42 = false;
  581.                var14 = 0;
  582.                if (var9.size() > 0) {
  583.                   var27 = new Color(Integer.parseInt(var9.lastElement().toString(), 16));
  584.                } else {
  585.                   var27 = var4;
  586.                }
  587.             } else {
  588.                var42 = true;
  589.                this.isLinks = true;
  590.                var14 = 1;
  591.                var39 = var63[0];
  592.                if (var63[1].equals("-1")) {
  593.                   var40 = "applet";
  594.                } else {
  595.                   var40 = var63[1];
  596.                }
  597.  
  598.                if (var63[2].equals("-1")) {
  599.                   var27 = this.linkColor;
  600.                   Color var58 = this.linkColor;
  601.                } else {
  602.                   var27 = new Color(Integer.parseInt(var63[2], 16));
  603.                }
  604.  
  605.                if (var63[3].equals("-1")) {
  606.                   var41 = (new Integer(var5.getRGB())).toString();
  607.                } else {
  608.                   var41 = var63[3];
  609.                }
  610.  
  611.                if (var63[4].equals("-1")) {
  612.                   var16 = "-1";
  613.                } else {
  614.                   var16 = var63[3];
  615.                }
  616.             }
  617.          } else if (this.formatTable[var43].equals("9")) {
  618.             String[] var64 = vInTag.SecondParse(this.formatTable[var43 + 1], 5);
  619.             if (var64[0].equals("-1")) {
  620.                var13 = 0;
  621.             } else if (var64[0].equalsIgnoreCase("bottom")) {
  622.                var13 = 0;
  623.             } else if (var64[0].equalsIgnoreCase("middle")) {
  624.                var13 = 1;
  625.             } else if (var64[0].equalsIgnoreCase("top")) {
  626.                var13 = 2;
  627.             } else if (var64[0].equalsIgnoreCase("absbottom")) {
  628.                var13 = 3;
  629.             } else if (var64[0].equalsIgnoreCase("absmiddle")) {
  630.                var13 = 4;
  631.             } else if (var64[0].equalsIgnoreCase("texttop")) {
  632.                var13 = 5;
  633.             } else if (var64[0].equalsIgnoreCase("baseline")) {
  634.                var13 = 6;
  635.             } else if (var64[0].equalsIgnoreCase("left")) {
  636.                var13 = 7;
  637.             } else if (var64[0].equalsIgnoreCase("right")) {
  638.                var13 = 8;
  639.             } else {
  640.                var13 = 0;
  641.             }
  642.  
  643.             if (var64[1].equals("-1")) {
  644.                var15 = "";
  645.             } else {
  646.                var15 = var64[1];
  647.             }
  648.  
  649.             if (!var64[2].equals("-1")) {
  650.             }
  651.  
  652.             if (!var64[3].equals("-1")) {
  653.                var11 = Integer.parseInt(var64[3]);
  654.                if (var64[4].equals("-1")) {
  655.                   var11 = 0;
  656.                } else {
  657.                   this.was_image_tag = true;
  658.                   var12 = Integer.parseInt(var64[4]);
  659.                   if (var13 > 6) {
  660.                      if (var22 > 0) {
  661.                         this.hinder_table[var23] = this.numberOfLines + 1;
  662.                      } else {
  663.                         this.hinder_table[var23] = this.numberOfLines;
  664.                      }
  665.  
  666.                      this.hinder_table[var23 + 1] = var11;
  667.                      this.hinder_table[var23 + 2] = var12;
  668.                      this.hinder_table[var23 + 5] = var13;
  669.                      this.hinder_table[var23 + 6] = 0;
  670.                      this.hinder_links[var23] = var15;
  671.                      if (var42) {
  672.                         this.hinder_links[var23 + 1] = var39;
  673.                      } else {
  674.                         this.hinder_links[var23 + 1] = "-1";
  675.                      }
  676.  
  677.                      this.hinder_links[var23 + 2] = var41;
  678.                      this.hinder_links[var23 + 3] = var40;
  679.                      this.hinder_links[var23 + 4] = var16;
  680.                      var23 += 7;
  681.                   }
  682.                }
  683.             }
  684.          }
  685.  
  686.          if (this.was_image_tag) {
  687.             ++this.numOfImages;
  688.             if (var42) {
  689.                ++this.numOfLinks;
  690.             }
  691.  
  692.             if (var13 < 7) {
  693.                var7 = var35;
  694.                var35 += var11;
  695.                if (var35 > var1 - var21) {
  696.                   ++this.numberOfLines;
  697.                   int var53 = var17 + this.subtractHW(false, var31 + var38, var17);
  698.                   int var56 = var21 + this.subtractHW(true, var31 + var38, var21);
  699.                   var17 = var53 + this.addHinderWidths(false, var31, var53, var38);
  700.                   var21 = var56 + this.addHinderWidths(true, var31, var56, var38);
  701.                   var31 += var36;
  702.                   this.SetLineTable(var7, var36, var31, var18, var17, var1 - var21);
  703.                   var7 = var17;
  704.                   var35 = var17 + var11;
  705.                   var36 = var12;
  706.                } else if (var12 > var36) {
  707.                   var36 = var12;
  708.                }
  709.  
  710.                this.v_paraFormat.addElement("-1");
  711.                this.v_paraFormat.addElement("-1");
  712.                this.v_paraFormat.addElement("-1");
  713.                this.v_paraFormat.addElement((new Integer(var27.getRGB())).toString());
  714.                this.v_paraFormat.addElement("0");
  715.                this.v_paraFormat.addElement((new Integer(var11)).toString());
  716.                this.v_paraFormat.addElement((new Integer(var12)).toString());
  717.                this.v_paraFormat.addElement((new Integer(var7)).toString());
  718.                this.v_paraFormat.addElement((new Integer(this.numberOfLines - 1)).toString());
  719.                this.v_paraData.addElement("");
  720.                this.v_paraData.addElement(var15);
  721.                if (var42) {
  722.                   this.v_paraData.addElement(var39);
  723.                   ++this.numOfLinks;
  724.                } else {
  725.                   this.v_paraData.addElement("-1");
  726.                }
  727.  
  728.                this.v_paraData.addElement(var41);
  729.                this.v_paraData.addElement(var40);
  730.                this.v_paraData.addElement(var16);
  731.             } else if (this.numberOfLines == 1 && var22 == 0) {
  732.                var17 += this.addHinderWidths(false, var31, var17, var38);
  733.                var21 += this.addHinderWidths(true, var31, var21, var38);
  734.                var35 = var17;
  735.             }
  736.  
  737.             if (var43 == this.formatTableLength - 3) {
  738.                var31 += var36;
  739.                this.SetLineTable(var35 + var21 + var17, var36, var31, var18, var17, var1 - var21);
  740.             }
  741.  
  742.             this.was_image_tag = false;
  743.          }
  744.  
  745.          if (var29 == 0) {
  746.             if (var43 == this.formatTableLength - 3) {
  747.                var31 += var36;
  748.                this.SetLineTable(var35 + var21 + var17, var36, var31, var18, var17, var1 - var21);
  749.             }
  750.          } else {
  751.             var22 += var29;
  752.             this.pfm = this.field_0.getFontMetrics(this.pfont = new Font(HTMLFont.GetFontName(new Integer(var24)), var25, HTMLFont.getSize(var26)));
  753.             this.v_paraFormat.addElement(var24);
  754.             this.v_paraFormat.addElement((new Integer(var25)).toString());
  755.             this.v_paraFormat.addElement((new Integer(var26)).toString());
  756.             this.v_paraFormat.addElement((new Integer(var27.getRGB())).toString());
  757.             this.v_paraFormat.addElement((new Integer(var14)).toString());
  758.             var7 = var35;
  759.             var35 = var35 + this.pfm.stringWidth(var61) + 1;
  760.             if (this.pfm.getAscent() + var20 > var36) {
  761.                var36 = this.pfm.getAscent() + var20;
  762.             }
  763.  
  764.             if (var38 < this.pfm.getDescent()) {
  765.                var38 = this.pfm.getDescent();
  766.             }
  767.  
  768.             if (this.pfm.getAscent() + var20 > var19) {
  769.                var19 = this.pfm.getAscent() + var20;
  770.                var18 = var19;
  771.             }
  772.  
  773.             if (var35 < var1 - var21) {
  774.                this.v_paraFormat.addElement((new Integer(this.pfm.stringWidth(var61))).toString());
  775.                this.v_paraFormat.addElement((new Integer(this.pfm.getHeight())).toString());
  776.                this.v_paraFormat.addElement((new Integer(var7)).toString());
  777.                this.v_paraFormat.addElement((new Integer(this.numberOfLines - 1)).toString());
  778.                this.v_paraData.addElement(var61);
  779.                this.v_paraData.addElement("-1");
  780.                if (var42) {
  781.                   this.v_paraData.addElement(var39);
  782.                   ++this.numOfLinks;
  783.                } else {
  784.                   this.v_paraData.addElement("-1");
  785.                }
  786.  
  787.                this.v_paraData.addElement(var41);
  788.                this.v_paraData.addElement(var40);
  789.                this.v_paraData.addElement(var16);
  790.                if (var43 == this.formatTableLength - 3) {
  791.                   var31 += var36;
  792.                   this.SetLineTable(var35 + var21 + var17, var36, var31, var18, var17, var1 - var21);
  793.                }
  794.             } else {
  795.                var35 = var7;
  796.                String var44 = var61;
  797.                int var46 = 0;
  798.                int var47 = 0;
  799.                int var48 = 0;
  800.  
  801.                for(int var49 = 0; var48 < 4; var7 = var17) {
  802.                   ++var49;
  803.                   var46 = vInTag.NewLineTwo(var44, var35, var1 - var21, this.pfm);
  804.                   String var45 = var44.substring(0, var46);
  805.                   var44 = var44.substring(var46);
  806.                   if (var44.length() > 1) {
  807.                      if (var49 == 1) {
  808.                         if (var45.length() > 1 && var45.charAt(var45.length() - 1) == ' ') {
  809.                            var45 = var45.substring(0, var45.length() - 1);
  810.                         }
  811.                      } else {
  812.                         var45 = var45.trim();
  813.                      }
  814.                   } else if (var45.length() > 1) {
  815.                      if (var45.charAt(0) == ' ') {
  816.                         var45 = var45.substring(1);
  817.                      }
  818.                   } else if (var45.charAt(0) == ' ') {
  819.                      var45 = "";
  820.                   }
  821.  
  822.                   if (var44.length() == 1) {
  823.                      var45 = var45 + var44;
  824.                   }
  825.  
  826.                   if (!var45.equals(" ") && !var45.equals("") && var45 != null) {
  827.                      var48 = 0;
  828.                   } else {
  829.                      ++var48;
  830.                   }
  831.  
  832.                   if (var47 == 0) {
  833.                      this.v_paraFormat.addElement((new Integer(this.pfm.stringWidth(var45))).toString());
  834.                      this.v_paraFormat.addElement((new Integer(this.pfm.getHeight())).toString());
  835.                      this.v_paraFormat.addElement((new Integer(var7)).toString());
  836.                      this.v_paraFormat.addElement((new Integer(this.numberOfLines - 1)).toString());
  837.                      this.v_paraData.addElement(var45);
  838.                      this.v_paraData.addElement("-1");
  839.                      if (var42) {
  840.                         this.v_paraData.addElement(var39);
  841.                         ++this.numOfLinks;
  842.                      } else {
  843.                         this.v_paraData.addElement("-1");
  844.                      }
  845.  
  846.                      this.v_paraData.addElement(var41);
  847.                      this.v_paraData.addElement(var40);
  848.                      this.v_paraData.addElement(var16);
  849.                   } else {
  850.                      var36 = this.pfm.getAscent() + var20;
  851.                      var19 = var36;
  852.                      var18 = var36;
  853.                      var38 = this.pfm.getDescent();
  854.                      this.v_paraFormat.addElement(var24);
  855.                      this.v_paraFormat.addElement((new Integer(var25)).toString());
  856.                      this.v_paraFormat.addElement((new Integer(var26)).toString());
  857.                      this.v_paraFormat.addElement((new Integer(var27.getRGB())).toString());
  858.                      this.v_paraFormat.addElement((new Integer(var14)).toString());
  859.                      this.v_paraFormat.addElement((new Integer(this.pfm.stringWidth(var45))).toString());
  860.                      this.v_paraFormat.addElement((new Integer(this.pfm.getHeight())).toString());
  861.                      this.v_paraFormat.addElement((new Integer(var7)).toString());
  862.                      this.v_paraFormat.addElement((new Integer(this.numberOfLines - 1)).toString());
  863.                      this.v_paraData.addElement(var45);
  864.                      this.v_paraData.addElement("-1");
  865.                      if (var42) {
  866.                         this.v_paraData.addElement(var39);
  867.                         ++this.numOfLinks;
  868.                      } else {
  869.                         this.v_paraData.addElement("-1");
  870.                      }
  871.  
  872.                      this.v_paraData.addElement(var41);
  873.                      this.v_paraData.addElement(var40);
  874.                      this.v_paraData.addElement(var16);
  875.                   }
  876.  
  877.                   ++var47;
  878.                   if (var44.length() < 2) {
  879.                      var35 = var17 + this.pfm.stringWidth(var45);
  880.                      var22 = var45.length();
  881.                      if (var43 == this.formatTableLength - 3) {
  882.                         var31 += var36;
  883.                         this.SetLineTable(var21 + var17 + this.pfm.stringWidth(var45), var36, var31, var18, var17, var1 - var21);
  884.                      }
  885.                      break;
  886.                   }
  887.  
  888.                   var31 += var36;
  889.                   this.SetLineTable(var21 + var35 + this.pfm.stringWidth(var45), var36, var31, var18, var17, var1 - var21);
  890.                   var22 = 0;
  891.                   ++this.numberOfLines;
  892.                   int var54 = var17 + this.subtractHW(false, var31 + var38, var17);
  893.                   var21 += this.subtractHW(true, var31 + var38, var21);
  894.                   var17 = var54 + this.addHinderWidths(false, var31, var54, var38);
  895.                   var21 += this.addHinderWidths(true, var31, var21, var38);
  896.                   var35 = var17;
  897.                }
  898.             }
  899.          }
  900.       }
  901.  
  902.       this.imageUrls = new String[this.numOfImages];
  903.       this.imageMap = new int[this.numOfImages * 4];
  904.       this.linkMap = new int[this.numOfLinks * 4];
  905.       this.linkData = new String[this.numOfLinks * 8];
  906.       if (this.hinder_max_end_y > var31 + var38) {
  907.          this.ConvertLineTable(var1, this.hinder_max_end_y + 1, this.field_0);
  908.       } else {
  909.          this.ConvertLineTable(var1, var31 + var38, this.field_0);
  910.       }
  911.  
  912.       this.ConvertParaTables();
  913.    }
  914. }
  915.