home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2001 December / dppcpro1201.iso / Extras / maple / Viewer / WebEQ / MMLViewerInstall.cab / MMLViewerApplet.cab / webeq3 / array / ArrayDims.class (.txt) next >
Encoding:
Java Class File  |  2001-05-24  |  12.1 KB  |  906 lines

  1. package webeq3.array;
  2.  
  3. import java.awt.Graphics;
  4. import java.io.PrintStream;
  5. import java.util.Vector;
  6. import webeq3.constants.ArrayConstants;
  7. import webeq3.schema.Box;
  8. import webeq3.schema.MTd;
  9.  
  10. public class ArrayDims implements ArrayConstants {
  11.    // $FF: renamed from: o java.io.PrintStream
  12.    PrintStream field_0;
  13.    int xwidth;
  14.    int xheight;
  15.    int height;
  16.    int width;
  17.    int ascent;
  18.    int descent;
  19.    int num_rows;
  20.    int num_cols;
  21.    Vector col_info;
  22.    Vector row_info;
  23.    Vector row_list;
  24.    Vector cSep_info;
  25.    Vector rSep_info;
  26.    int matrix_align;
  27.    int align_row;
  28.    int frame;
  29.    int frame_x_spacing;
  30.    int frame_y_spacing;
  31.    boolean equal_rows;
  32.    boolean equal_cols;
  33.    int frame_sepSize;
  34.    public Vector RowAlignValues;
  35.    public Vector ColAlignValues;
  36.    public Vector RowSpacingValues;
  37.    public Vector ColSpacingValues;
  38.    public Vector RowLinesValues;
  39.    public Vector ColLinesValues;
  40.    public Vector MTrColAlignValues;
  41.  
  42.    public ArrayDims() {
  43.       this.field_0 = System.out;
  44.       this.xwidth = 0;
  45.       this.xheight = 0;
  46.       this.height = 0;
  47.       this.width = 0;
  48.       this.ascent = 0;
  49.       this.descent = 0;
  50.       this.num_rows = 0;
  51.       this.num_cols = 0;
  52.       this.col_info = new Vector();
  53.       this.row_info = new Vector();
  54.       this.row_list = new Vector();
  55.       this.cSep_info = new Vector();
  56.       this.rSep_info = new Vector();
  57.       this.matrix_align = 0;
  58.       this.align_row = 0;
  59.       this.frame = 0;
  60.       this.frame_x_spacing = 0;
  61.       this.frame_y_spacing = 0;
  62.       this.equal_rows = true;
  63.       this.equal_cols = true;
  64.       this.frame_sepSize = 1;
  65.       this.RowAlignValues = new Vector();
  66.       this.ColAlignValues = new Vector();
  67.       this.RowSpacingValues = new Vector();
  68.       this.ColSpacingValues = new Vector();
  69.       this.RowLinesValues = new Vector();
  70.       this.ColLinesValues = new Vector();
  71.       this.MTrColAlignValues = new Vector();
  72.    }
  73.  
  74.    public void setMatrixAlign(int var1, int var2) {
  75.       this.matrix_align = var1;
  76.       this.align_row = var2;
  77.    }
  78.  
  79.    public void setFrame(int var1) {
  80.       this.frame = var1;
  81.    }
  82.  
  83.    public void setFrameSpacing(int var1, int var2) {
  84.       this.frame_x_spacing = var1;
  85.       this.frame_y_spacing = var2;
  86.    }
  87.  
  88.    public void setEqualRows(boolean var1) {
  89.       this.equal_rows = var1;
  90.    }
  91.  
  92.    public void setEqualCols(boolean var1) {
  93.       this.equal_cols = var1;
  94.    }
  95.  
  96.    public void setXDims(int var1, int var2) {
  97.       this.xwidth = var1;
  98.       this.xheight = var2;
  99.    }
  100.  
  101.    public void setColLayout(int var1, int var2) {
  102.       if (var1 >= this.col_info.size()) {
  103.          ColumnInfo var3 = new ColumnInfo();
  104.          var3.layout = var2;
  105.          this.col_info.addElement(var3);
  106.       } else {
  107.          ColumnInfo var4 = (ColumnInfo)this.col_info.elementAt(var1);
  108.          if (var4.layout == 0) {
  109.             var4.layout = var2;
  110.          }
  111.       }
  112.  
  113.    }
  114.  
  115.    public void setColWidth(int var1, int var2) {
  116.       ColumnInfo var3 = (ColumnInfo)this.col_info.elementAt(var1);
  117.       var3.width = var2;
  118.    }
  119.  
  120.    public void setColSepStyle(int var1, int var2) {
  121.       Object var3 = null;
  122.       SepInfo var4;
  123.       if (var1 >= this.cSep_info.size()) {
  124.          var4 = new SepInfo();
  125.          this.cSep_info.addElement(var4);
  126.       } else {
  127.          var4 = (SepInfo)this.cSep_info.elementAt(var1);
  128.       }
  129.  
  130.       var4.sep_style = var2;
  131.    }
  132.  
  133.    public void setColSpacing(int var1, int var2) {
  134.       SepInfo var3 = (SepInfo)this.cSep_info.elementAt(var1);
  135.       var3.size = var2;
  136.    }
  137.  
  138.    public void setRowAlign(int var1, int var2) {
  139.       Object var3 = null;
  140.       RowInfo var4;
  141.       if (var1 >= this.row_info.size()) {
  142.          var4 = new RowInfo();
  143.          this.row_info.addElement(var4);
  144.       } else {
  145.          var4 = (RowInfo)this.row_info.elementAt(var1);
  146.       }
  147.  
  148.       var4.align = var2;
  149.    }
  150.  
  151.    public void setRowSepStyle(int var1, int var2) {
  152.       Object var3 = null;
  153.       SepInfo var4;
  154.       if (var1 >= this.rSep_info.size()) {
  155.          var4 = new SepInfo();
  156.          this.rSep_info.addElement(var4);
  157.       } else {
  158.          var4 = (SepInfo)this.rSep_info.elementAt(var1);
  159.       }
  160.  
  161.       var4.sep_style = var2;
  162.    }
  163.  
  164.    public void setRowSpacing(int var1, int var2) {
  165.       SepInfo var3 = (SepInfo)this.rSep_info.elementAt(var1);
  166.       var3.size = var2;
  167.    }
  168.  
  169.    public void setCellSpan(int var1, int var2, int var3, int var4) {
  170.       if (var1 + var3 - 1 >= this.row_list.size()) {
  171.          for(int var5 = this.row_list.size(); var5 < var1 + var3; ++var5) {
  172.             this.row_list.addElement(new Vector());
  173.             this.setRowAlign(var5, this.getRAfromMtable(var5));
  174.             if (var5 > 0) {
  175.                if (var5 <= this.RowLinesValues.size()) {
  176.                   this.setRowSepStyle(var5 - 1, this.sepValueToType((String)this.RowLinesValues.elementAt(var5 - 1)));
  177.                } else {
  178.                   this.setRowSepStyle(var5 - 1, this.sepValueToType((String)this.RowLinesValues.lastElement()));
  179.                }
  180.  
  181.                if (var5 <= this.RowSpacingValues.size()) {
  182.                   this.setRowSpacing(var5 - 1, (int)(Float)this.RowSpacingValues.elementAt(var5 - 1));
  183.                } else {
  184.                   this.setRowSpacing(var5 - 1, (int)(Float)this.RowSpacingValues.lastElement());
  185.                }
  186.             }
  187.  
  188.             for(int var6 = 0; var6 < this.num_cols; ++var6) {
  189.                ((Vector)this.row_list.elementAt(var5)).addElement(new CellInfo());
  190.             }
  191.          }
  192.  
  193.          this.num_rows = var1 + var3;
  194.       }
  195.  
  196.       if (var2 + var4 - 1 >= this.num_cols) {
  197.          for(int var7 = this.num_cols; var7 < var2 + var4; ++var7) {
  198.             if (var7 < this.ColAlignValues.size()) {
  199.                this.setColLayout(var7, this.colValueToType((String)this.ColAlignValues.elementAt(var7)));
  200.             } else {
  201.                this.setColLayout(var7, this.colValueToType((String)this.ColAlignValues.lastElement()));
  202.             }
  203.  
  204.             if (var7 > 0) {
  205.                if (var7 <= this.ColLinesValues.size()) {
  206.                   this.setColSepStyle(var7 - 1, this.sepValueToType((String)this.ColLinesValues.elementAt(var7 - 1)));
  207.                } else {
  208.                   this.setColSepStyle(var7 - 1, this.sepValueToType((String)this.ColLinesValues.lastElement()));
  209.                }
  210.  
  211.                if (var7 <= this.ColSpacingValues.size()) {
  212.                   this.setColSpacing(var7 - 1, (int)(Float)this.ColSpacingValues.elementAt(var7 - 1));
  213.                } else {
  214.                   this.setColSpacing(var7 - 1, (int)(Float)this.ColSpacingValues.lastElement());
  215.                }
  216.             }
  217.  
  218.             for(int var9 = 0; var9 < this.row_list.size(); ++var9) {
  219.                ((Vector)this.row_list.elementAt(var9)).addElement(new CellInfo());
  220.             }
  221.          }
  222.  
  223.          this.num_cols = var2 + var4;
  224.       }
  225.  
  226.       this.getCell(var1, var2).rspan = var3;
  227.       this.getCell(var1, var2).cspan = var4;
  228.  
  229.       for(int var8 = var1; var8 < var1 + var3; ++var8) {
  230.          for(int var10 = var2; var10 < var2 + var4; ++var10) {
  231.             if (var8 < this.RowAlignValues.size()) {
  232.                this.getCell(var8, var10).ra = this.rowValueToType((String)this.RowAlignValues.elementAt(var8));
  233.             } else {
  234.                this.getCell(var8, var10).ra = this.rowValueToType((String)this.RowAlignValues.lastElement());
  235.             }
  236.  
  237.             if (var10 < this.ColAlignValues.size()) {
  238.                this.getCell(var8, var10).ca = this.colValueToType((String)this.ColAlignValues.elementAt(var10));
  239.             } else {
  240.                this.getCell(var8, var10).ca = this.colValueToType((String)this.ColAlignValues.lastElement());
  241.             }
  242.  
  243.             this.getCell(var8, var10).occupied = true;
  244.             if (var8 == 0) {
  245.                this.getCell(var8, var10).draw_rSep = false;
  246.             }
  247.  
  248.             if (var10 == 0) {
  249.                this.getCell(var8, var10).draw_cSep = false;
  250.             }
  251.  
  252.             if (var8 > var1) {
  253.                this.getCell(var8, var10).draw_rSep = false;
  254.             }
  255.  
  256.             if (var10 > var2) {
  257.                this.getCell(var8, var10).draw_cSep = false;
  258.             }
  259.          }
  260.       }
  261.  
  262.    }
  263.  
  264.    public void setCellAlign(int var1, int var2, int var3, int var4) {
  265.       CellInfo var5 = this.getCell(var1, var2);
  266.       var5.ra = var3 != 0 ? var3 : ((RowInfo)this.row_info.elementAt(var1)).align;
  267.       var5.ca = var4 != 0 ? var4 : ((ColumnInfo)this.col_info.elementAt(var2)).layout;
  268.    }
  269.  
  270.    public void setCellDims(int var1, int var2, MTd var3) {
  271.       CellInfo var4 = this.getCell(var1, var2);
  272.       int var5 = ((Box)var3).getHeight() % var4.rspan;
  273.       int var6 = ((Box)var3).getWidth() % var4.cspan;
  274.       int var7 = ((Box)var3).getHeight() / var4.rspan;
  275.       int var8 = ((Box)var3).getWidth() / var4.cspan;
  276.  
  277.       for(int var9 = var1; var9 < var1 + var4.rspan; ++var9) {
  278.          for(int var10 = var2; var10 < var2 + var4.cspan; ++var10) {
  279.             CellInfo var11 = this.getCell(var9, var10);
  280.             if (var9 - var1 < var5) {
  281.                var11.height = var7 + 1;
  282.             } else {
  283.                var11.height = var7;
  284.             }
  285.  
  286.             if (var10 - var2 < var6) {
  287.                var11.width = var8 + 1;
  288.             } else {
  289.                var11.width = var8;
  290.             }
  291.  
  292.             if (var4.rspan == 1) {
  293.                var11.ascent = ((Box)var3).getAscent();
  294.                var11.descent = ((Box)var3).getDescent();
  295.             }
  296.          }
  297.       }
  298.  
  299.    }
  300.  
  301.    public int getRowSepHeight(int var1) {
  302.       return var1 >= this.rSep_info.size() ? 0 : ((SepInfo)this.rSep_info.elementAt(var1)).sep_size + ((SepInfo)this.rSep_info.elementAt(var1)).size;
  303.    }
  304.  
  305.    public int getColSepWidth(int var1) {
  306.       return var1 >= this.cSep_info.size() ? 0 : ((SepInfo)this.cSep_info.elementAt(var1)).sep_size + ((SepInfo)this.cSep_info.elementAt(var1)).size;
  307.    }
  308.  
  309.    public int getRowAscent(int var1) {
  310.       return ((RowInfo)this.row_info.elementAt(var1)).ascent;
  311.    }
  312.  
  313.    public int getRowDescent(int var1) {
  314.       return ((RowInfo)this.row_info.elementAt(var1)).descent;
  315.    }
  316.  
  317.    public int getRowHeight(int var1) {
  318.       return ((RowInfo)this.row_info.elementAt(var1)).height;
  319.    }
  320.  
  321.    public int getRowAlign(int var1) {
  322.       return ((RowInfo)this.row_info.elementAt(var1)).align;
  323.    }
  324.  
  325.    public int getRAfromMtable(int var1) {
  326.       return var1 < this.RowAlignValues.size() ? this.rowValueToType((String)this.RowAlignValues.elementAt(var1)) : this.rowValueToType((String)this.RowAlignValues.lastElement());
  327.    }
  328.  
  329.    public int getColWidth(int var1) {
  330.       return ((ColumnInfo)this.col_info.elementAt(var1)).width;
  331.    }
  332.  
  333.    public int getColAlign(int var1) {
  334.       return ((ColumnInfo)this.col_info.elementAt(var1)).layout;
  335.    }
  336.  
  337.    public int getCellTop(int var1, int var2) {
  338.       return this.getCell(var1, var2).top;
  339.    }
  340.  
  341.    public int getCellLeft(int var1, int var2) {
  342.       return this.getCell(var1, var2).left;
  343.    }
  344.  
  345.    public int getCellWidth(int var1, int var2) {
  346.       return this.getCell(var1, var2).width;
  347.    }
  348.  
  349.    public int getCellAscent(int var1, int var2) {
  350.       return this.getCell(var1, var2).ascent;
  351.    }
  352.  
  353.    public int getCellDescent(int var1, int var2) {
  354.       return this.getCell(var1, var2).descent;
  355.    }
  356.  
  357.    public int getCellLayout(int var1, int var2) {
  358.       return this.getCell(var1, var2).ca;
  359.    }
  360.  
  361.    public int getCellAlign(int var1, int var2) {
  362.       return this.getCell(var1, var2).ra;
  363.    }
  364.  
  365.    public int getFrameHeight() {
  366.       return this.frame_y_spacing + this.frame_sepSize;
  367.    }
  368.  
  369.    public int getWidth() {
  370.       return this.width;
  371.    }
  372.  
  373.    public int getAscent() {
  374.       return this.ascent;
  375.    }
  376.  
  377.    public int getDescent() {
  378.       return this.descent;
  379.    }
  380.  
  381.    public void process() {
  382.       int var1 = 0;
  383.       this.width = 0;
  384.       this.height = 0;
  385.       this.ascent = 0;
  386.       this.descent = 0;
  387.       int var2 = (int)(0.6 * (double)this.xheight);
  388.       int var3 = 0;
  389.       SepInfo var4 = new SepInfo();
  390.       new SepInfo();
  391.  
  392.       try {
  393.          for(int var6 = 0; var6 < this.num_cols; ++var6) {
  394.             var1 = 0;
  395.  
  396.             for(int var7 = 0; var7 < this.num_rows; ++var7) {
  397.                int var8 = this.getCell(var7, var6).width;
  398.                var1 = var8 > var1 ? var8 : var1;
  399.             }
  400.  
  401.             ColumnInfo var25 = (ColumnInfo)this.col_info.elementAt(var6);
  402.             if (var1 > var25.width) {
  403.                var25.width = var1;
  404.             }
  405.  
  406.             if (var25.width > var3) {
  407.                var3 = var25.width;
  408.             }
  409.  
  410.             this.width += var1;
  411.             if (var6 > 0) {
  412.                SepInfo var5 = (SepInfo)this.cSep_info.elementAt(var6 - 1);
  413.                var5.sep_size = (double)1.0F > 0.2 * (double)this.xwidth ? 1 : (int)(0.2 * (double)this.xwidth);
  414.                this.width += var5.size + var5.sep_size;
  415.             }
  416.          }
  417.  
  418.          if (this.equal_cols) {
  419.             for(int var24 = 0; var24 < this.num_cols; ++var24) {
  420.                ColumnInfo var26 = (ColumnInfo)this.col_info.elementAt(var24);
  421.                if (var26.width != 0) {
  422.                   this.width += var3 - var26.width;
  423.                   var26.width = var3;
  424.                }
  425.             }
  426.          }
  427.  
  428.          this.width += 2 * (this.frame_x_spacing + this.frame_sepSize);
  429.          var3 = 0;
  430.          int var27 = 0;
  431.  
  432.          for(int var9 = 0; var9 < this.num_rows; ++var9) {
  433.             int var10 = 0;
  434.             int var11 = 0;
  435.             int var12 = 0;
  436.             RowInfo var13 = (RowInfo)this.row_info.elementAt(var9);
  437.             if (var9 > 0) {
  438.                var4 = (SepInfo)this.rSep_info.elementAt(var9 - 1);
  439.                var4.sep_size = (double)1.0F > 0.2 * (double)this.xwidth ? 1 : (int)(0.2 * (double)this.xwidth);
  440.             }
  441.  
  442.             for(int var14 = 0; var14 < this.num_cols; ++var14) {
  443.                CellInfo var15 = this.getCell(var9, var14);
  444.                int var16 = var15.ascent;
  445.                int var17 = var15.descent;
  446.                int var18 = var16 + var17;
  447.                int var19 = var13.align;
  448.                if (var15.ra != 0) {
  449.                   var19 = var15.ra;
  450.                }
  451.  
  452.                switch (var19) {
  453.                   case 2:
  454.                   case 10:
  455.                   case 11:
  456.                      if (var18 > var12) {
  457.                         var12 = var18;
  458.                      }
  459.                   case 3:
  460.                   case 4:
  461.                   case 5:
  462.                   case 6:
  463.                   case 7:
  464.                   case 8:
  465.                   case 9:
  466.                   default:
  467.                      break;
  468.                   case 12:
  469.                      if (var16 > var10) {
  470.                         var10 = var16;
  471.                      }
  472.  
  473.                      if (var17 > var11) {
  474.                         var11 = var17;
  475.                      }
  476.                      break;
  477.                   case 13:
  478.                      int var28 = var16 - var2;
  479.                      var11 = var17 + var2;
  480.                      var11 = var10 = var28 > var11 ? var28 : var11;
  481.                }
  482.  
  483.                if (var19 == 12) {
  484.                   var13.ascent = var13.ascent > var10 ? var13.ascent : var10;
  485.                   var13.descent = var13.descent > var11 ? var13.descent : var11;
  486.                   var13.height = var13.ascent + var13.descent;
  487.                } else if (var19 == 13) {
  488.                   var13.ascent = var13.descent = var13.descent > var11 ? var13.descent : var11;
  489.                   var13.height = var13.ascent + var13.descent;
  490.                } else if (var12 > var13.height) {
  491.                   var13.height = var12;
  492.                   var13.ascent = var16;
  493.                   var13.descent = var17;
  494.                }
  495.             }
  496.  
  497.             if (var13.ascent > var3) {
  498.                var3 = var13.ascent;
  499.             }
  500.  
  501.             if (var13.descent > var27) {
  502.                var27 = var13.descent;
  503.             }
  504.  
  505.             this.height += var13.height;
  506.             if (var9 > 0) {
  507.                this.height += var4.size + var4.sep_size;
  508.             }
  509.          }
  510.  
  511.          if (this.equal_rows) {
  512.             for(int var29 = 0; var29 < this.num_rows; ++var29) {
  513.                RowInfo var31 = (RowInfo)this.row_info.elementAt(var29);
  514.                if (var29 > 0) {
  515.                   var4 = (SepInfo)this.rSep_info.elementAt(var29 - 1);
  516.                }
  517.  
  518.                var31.ascent = var3;
  519.                var31.descent = var27;
  520.                this.height += var3 + var27 - var31.height;
  521.                var31.height = var3 + var27;
  522.             }
  523.          }
  524.  
  525.          this.height += 2 * (this.frame_y_spacing + this.frame_sepSize);
  526.  
  527.          for(int var32 = 0; var32 < this.num_rows; ++var32) {
  528.             int var33 = this.frame_x_spacing + this.frame_sepSize;
  529.  
  530.             for(int var37 = 0; var37 < this.num_cols; ++var37) {
  531.                CellInfo var39 = this.getCell(var32, var37);
  532.                int var40 = 0;
  533.                switch (var39.ra) {
  534.                   case 2:
  535.                      int var41 = 0;
  536.  
  537.                      for(; var41 < var39.rspan; ++var41) {
  538.                         var40 += ((RowInfo)this.row_info.elementAt(var32 + var41)).height;
  539.                         if (var41 > 0) {
  540.                            var40 += this.getRowSepHeight(var32 + var41 - 1);
  541.                         }
  542.                      }
  543.  
  544.                      var39.top += (var40 - this.getSpanCellHeight(var32, var37, var39)) / 2;
  545.                   case 3:
  546.                   case 4:
  547.                   case 5:
  548.                   case 6:
  549.                   case 7:
  550.                   case 8:
  551.                   case 9:
  552.                   default:
  553.                      break;
  554.                   case 10:
  555.                      var39.top += 0;
  556.                      break;
  557.                   case 11:
  558.                      for(int var42 = 0; var42 < var39.rspan; ++var42) {
  559.                         var40 += ((RowInfo)this.row_info.elementAt(var32 + var42)).height;
  560.                         if (var42 > 0) {
  561.                            var40 += this.getRowSepHeight(var32 + var42 - 1);
  562.                         }
  563.                      }
  564.  
  565.                      var39.top += var40 - this.getSpanCellHeight(var32, var37, var39);
  566.                      break;
  567.                   case 12:
  568.                      if (var39.rspan == 1) {
  569.                         var39.top += ((RowInfo)this.row_info.elementAt(var32)).ascent - var39.ascent;
  570.                         break;
  571.                      }
  572.  
  573.                      for(int var44 = 0; var44 < var39.rspan; ++var44) {
  574.                         var40 += ((RowInfo)this.row_info.elementAt(var32 + var44)).height;
  575.                         if (var44 > 0) {
  576.                            var40 += this.getRowSepHeight(var32 + var44 - 1);
  577.                         }
  578.                      }
  579.  
  580.                      var39.top += (var40 - this.getSpanCellHeight(var32, var37, var39)) / 2;
  581.                      break;
  582.                   case 13:
  583.                      if (var39.rspan == 1) {
  584.                         var39.top += ((RowInfo)this.row_info.elementAt(var32)).ascent - (var39.ascent - var2);
  585.                      } else {
  586.                         for(int var43 = 0; var43 < var39.rspan; ++var43) {
  587.                            var40 += ((RowInfo)this.row_info.elementAt(var32 + var43)).height;
  588.                            if (var43 > 0) {
  589.                               var40 += this.getRowSepHeight(var32 + var43 - 1);
  590.                            }
  591.                         }
  592.  
  593.                         var39.top += (var40 - this.getSpanCellHeight(var32, var37, var39)) / 2;
  594.                      }
  595.                }
  596.  
  597.                if (var37 > 0) {
  598.                   var33 += ((SepInfo)this.cSep_info.elementAt(var37 - 1)).sep_size + ((SepInfo)this.cSep_info.elementAt(var37 - 1)).size;
  599.                }
  600.  
  601.                int var45 = 0;
  602.  
  603.                for(int var46 = 0; var46 < var39.cspan; ++var46) {
  604.                   var45 += ((ColumnInfo)this.col_info.elementAt(var37 + var46)).width;
  605.                   if (var46 > 0) {
  606.                      var45 += ((SepInfo)this.cSep_info.elementAt(var37 + var46 - 1)).sep_size + ((SepInfo)this.cSep_info.elementAt(var37 + var46 - 1)).size;
  607.                   }
  608.                }
  609.  
  610.                switch (var39.ca) {
  611.                   case 1:
  612.                      var39.left = var33;
  613.                      break;
  614.                   case 2:
  615.                      var39.left = var33 + (var45 - this.getSpanCellWidth(var32, var37, var39)) / 2;
  616.                      break;
  617.                   case 3:
  618.                      var39.left = var33 + var45 - this.getSpanCellWidth(var32, var37, var39);
  619.                }
  620.  
  621.                var33 += ((ColumnInfo)this.col_info.elementAt(var37)).width;
  622.             }
  623.          }
  624.  
  625.          if (this.align_row < 0) {
  626.             this.align_row = this.num_rows + this.align_row + 1;
  627.          }
  628.  
  629.          if (this.align_row < 1 || this.align_row > this.num_rows + 1) {
  630.             this.align_row = 0;
  631.          }
  632.  
  633.          if (this.align_row == 0) {
  634.             switch (this.matrix_align) {
  635.                case 2:
  636.                case 12:
  637.                   this.ascent = this.height / 2;
  638.                case 3:
  639.                case 4:
  640.                case 5:
  641.                case 6:
  642.                case 7:
  643.                case 8:
  644.                case 9:
  645.                default:
  646.                   break;
  647.                case 10:
  648.                   this.ascent = this.frame_y_spacing + this.frame_sepSize;
  649.                   break;
  650.                case 11:
  651.                   this.ascent = this.height - this.frame_y_spacing - this.frame_sepSize;
  652.                   break;
  653.                case 13:
  654.                   this.ascent = this.height / 2 + var2;
  655.             }
  656.          } else {
  657.             this.ascent = this.frame_y_spacing + this.frame_sepSize;
  658.             Object var34 = null;
  659.  
  660.             for(int var38 = 1; var38 < this.align_row; ++var38) {
  661.                RowInfo var35 = (RowInfo)this.row_info.elementAt(var38 - 1);
  662.                this.ascent += var35.height;
  663.                if (var38 < this.num_rows) {
  664.                   this.ascent += this.getRowSepHeight(var38 - 1);
  665.                }
  666.             }
  667.  
  668.             RowInfo var36 = (RowInfo)this.row_info.elementAt(this.align_row - 1);
  669.             switch (this.matrix_align) {
  670.                case 2:
  671.                   this.ascent += var36.height / 2;
  672.                case 3:
  673.                case 4:
  674.                case 5:
  675.                case 6:
  676.                case 7:
  677.                case 8:
  678.                case 9:
  679.                case 10:
  680.                default:
  681.                   break;
  682.                case 11:
  683.                   this.ascent += var36.height;
  684.                   break;
  685.                case 12:
  686.                   this.ascent += var36.ascent;
  687.                   break;
  688.                case 13:
  689.                   this.ascent += var36.height / 2 + var2;
  690.             }
  691.          }
  692.  
  693.          this.descent = this.height - this.ascent;
  694.       } catch (Exception var20) {
  695.          System.out.println("Error processing array; check for indices out of range");
  696.          ((Throwable)var20).printStackTrace();
  697.       }
  698.  
  699.    }
  700.  
  701.    public void drawSeps(Graphics var1, int var2, int var3) {
  702.       new RowInfo();
  703.       new ColumnInfo();
  704.       int var6 = var3 + this.frame_y_spacing + this.frame_sepSize;
  705.       int var8 = 0;
  706.       int[] var7 = new int[this.num_cols + 1];
  707.       var7[0] = var2 + this.frame_x_spacing + this.frame_sepSize;
  708.  
  709.       for(int var9 = 1; var9 < this.num_cols + 1; ++var9) {
  710.          ColumnInfo var5 = (ColumnInfo)this.col_info.elementAt(var9 - 1);
  711.          if (var9 == 1) {
  712.             if (1 < this.num_cols) {
  713.                var7[1] = var7[0] + var5.width + this.getColSepWidth(var9 - 1) / 2;
  714.             } else {
  715.                var7[1] = var7[0] + var5.width;
  716.             }
  717.          }
  718.  
  719.          if (var9 > 1 && var9 < this.num_cols) {
  720.             var7[var9] = var7[var9 - 1] + var5.width + this.getColSepWidth(var9 - 2) - this.getColSepWidth(var9 - 2) / 2 + this.getColSepWidth(var9 - 1) / 2;
  721.          }
  722.  
  723.          if (var9 > 1 && var9 == this.num_cols) {
  724.             var7[var9] = var7[var9 - 1] + var5.width + this.getColSepWidth(var9 - 2) - this.getColSepWidth(var9 - 2) / 2;
  725.          }
  726.       }
  727.  
  728.       for(int var10 = 0; var10 < this.num_rows; ++var10) {
  729.          RowInfo var4 = (RowInfo)this.row_info.elementAt(var10);
  730.          if (var10 == 0) {
  731.             if (1 < this.num_rows) {
  732.                var8 = var6 + var4.height + this.getRowSepHeight(var10) / 2;
  733.             } else {
  734.                var8 = var6 + var4.height;
  735.             }
  736.          }
  737.  
  738.          if (var10 > 0 && var10 < this.num_rows - 1) {
  739.             var8 = var6 + var4.height + this.getRowSepHeight(var10 - 1) - this.getRowSepHeight(var10 - 1) / 2 + this.getRowSepHeight(var10) / 2;
  740.          } else if (var10 > 0 && var10 == this.num_rows - 1) {
  741.             var8 = var6 + var4.height + this.getRowSepHeight(var10 - 1) - this.getRowSepHeight(var10 - 1) / 2;
  742.          }
  743.  
  744.          for(int var11 = 0; var11 < this.num_cols; ++var11) {
  745.             if (var11 > 0 && this.getCell(var10, var11).draw_cSep) {
  746.                switch (((SepInfo)this.cSep_info.elementAt(var11 - 1)).sep_style) {
  747.                   case 5:
  748.                      var1.drawLine(var7[var11], var6, var7[var11], var8);
  749.                      break;
  750.                   case 6:
  751.                      this.drawVdash(var1, var7[var11], var6, var8 - var6);
  752.                   case 7:
  753.                }
  754.             }
  755.  
  756.             if (var10 > 0 && this.getCell(var10, var11).draw_rSep) {
  757.                switch (((SepInfo)this.rSep_info.elementAt(var10 - 1)).sep_style) {
  758.                   case 5:
  759.                      var1.drawLine(var7[var11], var6, var7[var11 + 1], var6);
  760.                      break;
  761.                   case 6:
  762.                      this.drawHdash(var1, var7[var11], var6, var7[var11 + 1] - var7[var11]);
  763.                   case 7:
  764.                }
  765.             }
  766.          }
  767.  
  768.          var6 = var8;
  769.       }
  770.  
  771.       int var13 = this.frame_x_spacing < 3 ? 0 : 1;
  772.       int var12 = this.frame_y_spacing < 3 ? 0 : 1;
  773.       switch (this.frame) {
  774.          case 5:
  775.             var1.drawRect(var2 + var13, var3 + var12, this.width - 1 - 2 * var13, this.height - 1 - 2 * var12);
  776.             break;
  777.          case 6:
  778.             this.drawHdash(var1, var2 + var13, var3 + var12, this.width - 1 - 2 * var13);
  779.             this.drawHdash(var1, var2 + var13, var3 + this.height - var12, this.width - 1 - 2 * var13);
  780.             this.drawVdash(var1, var2 + var13, var3 + var12, this.height - 1 - 2 * var13);
  781.             this.drawVdash(var1, var2 + this.width - var13, var3 + var12, this.height - 1 - 2 * var13);
  782.          case 7:
  783.       }
  784.  
  785.    }
  786.  
  787.    public CellInfo getCell(int var1, int var2) {
  788.       return (CellInfo)((Vector)this.row_list.elementAt(var1)).elementAt(var2);
  789.    }
  790.  
  791.    public int getSpanCellHeight(int var1, int var2, CellInfo var3) {
  792.       int var4 = 0;
  793.  
  794.       for(int var5 = var1; var5 < var1 + var3.rspan; ++var5) {
  795.          var4 += this.getCell(var5, var2).height;
  796.       }
  797.  
  798.       return var4;
  799.    }
  800.  
  801.    public int getSpanCellWidth(int var1, int var2, CellInfo var3) {
  802.       int var4 = 0;
  803.  
  804.       for(int var5 = var2; var5 < var2 + var3.cspan; ++var5) {
  805.          var4 += this.getCell(var1, var5).width;
  806.       }
  807.  
  808.       return var4;
  809.    }
  810.  
  811.    public void drawVdash(Graphics var1, int var2, int var3, int var4) {
  812.       int var5 = (int)((double)var4 / ((double)0.5F * (double)this.xheight));
  813.       if (var5 % 2 == 0) {
  814.          ++var5;
  815.       }
  816.  
  817.       double var6 = (double)var4 / (double)var5;
  818.  
  819.       for(int var8 = 0; var8 < var5; ++var8) {
  820.          if (var8 % 2 == 0) {
  821.             var1.drawLine(var2, (int)((double)var3 + (double)var8 * var6), var2, (int)((double)var3 + (double)(var8 + 1) * var6));
  822.          }
  823.       }
  824.  
  825.    }
  826.  
  827.    public void drawHdash(Graphics var1, int var2, int var3, int var4) {
  828.       int var5 = (int)((double)var4 / ((double)0.5F * (double)this.xheight));
  829.       if (var5 % 2 == 0) {
  830.          ++var5;
  831.       }
  832.  
  833.       double var6 = (double)var4 / (double)var5;
  834.  
  835.       for(int var8 = 0; var8 < var5; ++var8) {
  836.          if (var8 % 2 == 0) {
  837.             var1.drawLine((int)((double)var2 + (double)var8 * var6), var3, (int)((double)var2 + (double)(var8 + 1) * var6), var3);
  838.          }
  839.       }
  840.  
  841.    }
  842.  
  843.    public int getCurNumCols() {
  844.       return this.num_cols;
  845.    }
  846.  
  847.    public int rowValueToType(String var1) {
  848.       byte var2 = 12;
  849.       if (var1.equals("top")) {
  850.          var2 = 10;
  851.       }
  852.  
  853.       if (var1.equals("bottom")) {
  854.          var2 = 11;
  855.       }
  856.  
  857.       if (var1.equals("center")) {
  858.          var2 = 2;
  859.       }
  860.  
  861.       if (var1.equals("baseline")) {
  862.          var2 = 12;
  863.       }
  864.  
  865.       if (var1.equals("axis")) {
  866.          var2 = 13;
  867.       }
  868.  
  869.       return var2;
  870.    }
  871.  
  872.    public int colValueToType(String var1) {
  873.       byte var2 = 2;
  874.       if (var1.equals("left")) {
  875.          var2 = 1;
  876.       }
  877.  
  878.       if (var1.equals("center")) {
  879.          var2 = 2;
  880.       }
  881.  
  882.       if (var1.equals("right")) {
  883.          var2 = 3;
  884.       }
  885.  
  886.       return var2;
  887.    }
  888.  
  889.    public int sepValueToType(String var1) {
  890.       byte var2 = 7;
  891.       if (var1.equals("none")) {
  892.          var2 = 7;
  893.       }
  894.  
  895.       if (var1.equals("solid")) {
  896.          var2 = 5;
  897.       }
  898.  
  899.       if (var1.equals("dashed")) {
  900.          var2 = 6;
  901.       }
  902.  
  903.       return var2;
  904.    }
  905. }
  906.