home *** CD-ROM | disk | FTP | other *** search
- package webeq3.schema;
-
- import java.awt.Graphics;
- import java.util.StringTokenizer;
- import webeq3.app.Equation;
- import webeq3.array.ArrayDims;
- import webeq3.constants.ArrayConstants;
- import webeq3.constants.AttributeConstants;
-
- public class MTr extends LineBreakRewriter implements ArrayConstants, AttributeConstants {
- ArrayDims dims = null;
- int row = 0;
- int[] COL;
-
- public MTr(Box var1) {
- super(var1);
- super.type = 68;
- super.kind = 5;
- }
-
- public MTr() {
- super.type = 68;
- super.kind = 5;
- }
-
- public MTr(Equation var1) {
- super(var1);
- super.type = 68;
- super.kind = 5;
- }
-
- public void layout() {
- super.left = 0;
- super.top = 0;
- super.width = 0;
- super.ascent = 0;
- super.descent = 0;
- super.embellished_op = false;
- super.is_spacelike = false;
- this.size();
- if (super.useLinearForm) {
- this.position();
- }
-
- }
-
- public void size() {
- super.bgcolor = ((Box)this).resolveColor(17);
- super.fgcolor = ((Box)this).resolveColor(4);
- if (super.useLinearForm) {
- super.lb_rewrite.left = 0;
- super.lb_rewrite.top = 0;
- super.lb_rewrite.width = 0;
- super.lb_rewrite.ascent = 0;
- super.lb_rewrite.descent = 0;
- super.lb_rewrite.embellished_op = false;
- super.lb_rewrite.is_spacelike = false;
- super.lb_rewrite.size();
- super.width = super.lb_rewrite.getWidth();
- super.ascent = super.lb_rewrite.getAscent();
- super.descent = super.lb_rewrite.getDescent();
- super.height = super.ascent + super.descent;
- } else {
- int var2 = 0;
- this.storeColAlign();
- int var3 = this.fetchRowAlign();
- if (super.children.size() == 0) {
- this.dims.setCellSpan(this.row, this.fitCol(this.row, 0, 1), 1, 1);
- } else {
- this.COL = new int[super.children.size()];
-
- for(int var4 = 0; var4 < super.children.size(); ++var4) {
- MTd var1 = (MTd)((Box)this).getChild(var4);
- this.COL[var4] = this.fitCol(this.row, var2, var1.getCellCspan());
- var2 = this.COL[var4] + var1.getCellCspan();
- var1.setIndex(this.row, this.COL[var4]);
- var1.depth = super.depth;
- ((Box)var1).layout();
- this.dims.setCellDims(this.row, this.COL[var4], var1);
- this.updateColAlign(this.row, this.COL[var4], var1);
- }
- }
-
- this.updateRowAlign(var3);
-
- for(int var6 = 0; var6 < super.children.size(); ++var6) {
- MTd var5 = (MTd)((Box)this).getChild(var6);
- var5.setCellAlign();
- }
- }
-
- }
-
- public void position() {
- if (super.useLinearForm) {
- super.lb_rewrite.setTop(0);
- super.lb_rewrite.setLeft(0);
- super.lb_rewrite.position();
- } else {
- for(int var2 = 0; var2 < super.children.size(); ++var2) {
- MTd var1 = (MTd)((Box)this).getChild(var2);
- ((Box)var1).setTop(this.dims.getCellTop(this.row, this.COL[var2]));
- ((Box)var1).setLeft(this.dims.getCellLeft(this.row, this.COL[var2]));
- }
- }
-
- }
-
- public void setDims(ArrayDims var1, int var2) {
- this.dims = var1;
- this.row = var2;
- }
-
- private int fitCol(int var1, int var2, int var3) {
- int var4 = 0;
-
- for(int var5 = 0; var5 < var3; ++var5) {
- var4 = var2 + var5;
- if (var4 <= this.dims.getCurNumCols() - 1) {
- try {
- this.dims.getCell(var1, var4);
- if (this.dims.getCell(var1, var4).occupied) {
- var2 = var4 + 1;
- return this.fitCol(var1, var2, var3);
- }
- } catch (ArrayIndexOutOfBoundsException var7) {
- }
- }
-
- if (var5 > this.dims.getCurNumCols() - 1) {
- return var2;
- }
- }
-
- return var2;
- }
-
- private int fetchRowAlign() {
- boolean var1 = false;
- String var2 = super.attributes[30] == null ? "" : super.attributes[30].trim();
- if (var2.equals("top")) {
- return 10;
- } else if (var2.equals("bottom")) {
- return 11;
- } else if (var2.equals("center")) {
- return 2;
- } else if (var2.equals("baseline")) {
- return 12;
- } else {
- return var2.equals("axis") ? 13 : this.dims.getRAfromMtable(this.row);
- }
- }
-
- private void updateRowAlign(int var1) {
- this.dims.setRowAlign(this.row, var1);
-
- for(int var2 = 0; var2 < this.dims.getCurNumCols(); ++var2) {
- this.dims.getCell(this.row, var2).ra = var1;
- }
-
- }
-
- private void storeColAlign() {
- Object var1 = null;
- this.dims.MTrColAlignValues.removeAllElements();
- String var2 = super.attributes[31] == null ? "" : super.attributes[31];
- StringTokenizer var3 = new StringTokenizer(var2.toLowerCase());
-
- while(var3.hasMoreTokens()) {
- String var4 = var3.nextToken();
- this.dims.MTrColAlignValues.addElement(var4);
- }
-
- }
-
- private void updateColAlign(int var1, int var2, MTd var3) {
- if (this.dims.MTrColAlignValues.size() != 0) {
- this.dims.getCell(var1, var2).ca = var2 < this.dims.MTrColAlignValues.size() ? this.dims.colValueToType((String)this.dims.MTrColAlignValues.elementAt(var2)) : this.dims.colValueToType((String)this.dims.MTrColAlignValues.lastElement());
- }
- }
-
- protected void rewrite() {
- super.lb_rewrite = new MRow(((Box)this).getParent());
- MO var1 = new MO(super.lb_rewrite);
- ((Box)var1).addData("[");
- super.lb_rewrite.addChild(var1);
-
- for(int var4 = 0; var4 < super.children.size() - 1; ++var4) {
- MTd var2 = (MTd)((Box)this).getChild(var4);
- super.lb_rewrite.addChild(var2);
- ((Box)var2).setParent(this);
- var2.rewrite();
- MO var3 = new MO(super.lb_rewrite);
- ((Box)var3).addData(",");
- super.lb_rewrite.addChild(var3);
- }
-
- MTd var6 = (MTd)((Box)this).getChild(super.children.size() - 1);
- super.lb_rewrite.addChild(var6);
- ((Box)var6).setParent(this);
- var6.rewrite();
- var1 = new MO(super.lb_rewrite);
- ((Box)var1).addData("]");
- super.lb_rewrite.addChild(var1);
- }
-
- public void paint(Graphics var1, int var2, int var3) {
- if (super.useLinearForm) {
- super.lb_rewrite.paint(var1, var2 + super.left, var3 + super.top);
- } else {
- super.paint(var1, var2, var3);
- }
-
- super.absleft = var2 + super.left;
- super.abstop = var3 + super.top;
- }
- }
-