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

  1. package webeq3.schema;
  2.  
  3. import java.awt.Graphics;
  4. import webeq3.app.Equation;
  5.  
  6. public class MUnderover extends MScripts {
  7.    boolean accent_over = false;
  8.    boolean accent_under = false;
  9.  
  10.    public MUnderover(Box var1) {
  11.       super(var1);
  12.       super.type = 8;
  13.    }
  14.  
  15.    public MUnderover() {
  16.       super.type = 8;
  17.    }
  18.  
  19.    public MUnderover(Equation var1) {
  20.       super(var1);
  21.       super.type = 8;
  22.    }
  23.  
  24.    public void size() {
  25.       super.useLinearForm = false;
  26.       super.size();
  27.       int var1 = super.fm.charWidth('M');
  28.       if (super.my_view.linebreak && super.width > 6 * var1) {
  29.          super.atomic = false;
  30.          Box var2 = ((Box)this).getChild(0);
  31.          Box var3 = ((Box)this).getChild(1);
  32.          Box var4 = ((Box)this).getChild(2);
  33.          if (var3.getWidth() > var1 && var4.getWidth() > var1) {
  34.             if (super.width < super.my_view.getDisplayWidth() - 2 * super.my_view.indent) {
  35.                super.atomic = true;
  36.             } else {
  37.                super.useLinearForm = true;
  38.                if (super.lb_rewrite == null) {
  39.                   super.lb_rewrite = new MSup(super.parent);
  40.                   MSub var5 = new MSub(super.lb_rewrite);
  41.                   super.lb_rewrite.addChild(var5);
  42.                   ((Box)var5).addChild(var2);
  43.                   var2.setParent(this);
  44.                   ((Box)var5).addChild(var3);
  45.                   var3.setParent(this);
  46.                   super.lb_rewrite.addChild(var4);
  47.                   var4.setParent(this);
  48.                }
  49.  
  50.                super.lb_rewrite.layout();
  51.                super.width = super.lb_rewrite.getWidth();
  52.                super.ascent = super.lb_rewrite.getAscent();
  53.                super.descent = super.lb_rewrite.getDescent();
  54.                super.height = super.ascent + super.descent;
  55.             }
  56.          }
  57.       }
  58.  
  59.    }
  60.  
  61.    public void setChildDepths() {
  62.       String var1 = ((Box)this).getAttributeByIndex(28);
  63.       if (!"true".equals(var1) && !"false".equals(var1)) {
  64.          Box var2;
  65.          for(var2 = ((Box)this).getChild(2); ((MScripts)this).base_check(var2); var2 = var2.getChild(0)) {
  66.          }
  67.  
  68.          this.accent_over = "true".equals(var2.getAttributeByIndex(28));
  69.       } else {
  70.          this.accent_over = "true".equals(var1);
  71.       }
  72.  
  73.       var1 = ((Box)this).getAttributeByIndex(27);
  74.       if (!"true".equals(var1) && !"false".equals(var1)) {
  75.          Box var4;
  76.          for(var4 = ((Box)this).getChild(1); ((MScripts)this).base_check(var4); var4 = var4.getChild(0)) {
  77.          }
  78.  
  79.          this.accent_under = "true".equals(var4.getAttributeByIndex(28));
  80.       } else {
  81.          this.accent_under = "true".equals(var1);
  82.       }
  83.  
  84.       super.base.depth = super.depth;
  85.       if (!this.accent_over) {
  86.          super.high.depth = super.depth + 1;
  87.       } else {
  88.          super.high.depth = super.depth;
  89.       }
  90.  
  91.       if (!this.accent_under) {
  92.          super.low.depth = super.depth + 1;
  93.       } else {
  94.          super.low.depth = super.depth;
  95.       }
  96.  
  97.    }
  98.  
  99.    public void sizeScripts() {
  100.       Box var1;
  101.       for(var1 = super.high; ((MScripts)this).base_check(var1); var1 = var1.getChild(0)) {
  102.       }
  103.  
  104.       if (var1 != null && var1 instanceof MO) {
  105.          ((MO)var1).widthTo(super.base.getWidth());
  106.          ((MO)var1).noLayout = true;
  107.          super.high.layout();
  108.       }
  109.  
  110.       for(var1 = super.low; ((MScripts)this).base_check(var1); var1 = var1.getChild(0)) {
  111.       }
  112.  
  113.       if (var1 != null && "webeq3.schema.MO".equals(var1.getClass().getName())) {
  114.          ((MO)var1).widthTo(super.base.getWidth());
  115.          ((MO)var1).noLayout = true;
  116.          super.low.layout();
  117.       }
  118.  
  119.       for(var1 = super.base; ((MScripts)this).base_check(var1); var1 = var1.getChild(0)) {
  120.       }
  121.  
  122.       if (var1 != null && "webeq3.schema.MO".equals(var1.getClass().getName())) {
  123.          int var2 = super.low.getWidth() > super.high.getWidth() ? super.low.getWidth() : super.high.getWidth();
  124.          ((MO)var1).widthTo(var2);
  125.          ((MO)var1).noLayout = true;
  126.          super.base.layout();
  127.          super.truebasewidth = super.base.getWidth();
  128.          if (super.base.getClass().getName().equals("webeq3.schema.MO")) {
  129.             super.truebasewidth = super.truebasewidth - super.lspace - super.rspace;
  130.          }
  131.  
  132.          if (super.itc == (double)0.0F) {
  133.             super.truebasewidth += (int)(0.2 * (double)super.xheight);
  134.          }
  135.       }
  136.  
  137.       if (super.move_scripts) {
  138.          ((MScripts)this).sizeSubSup();
  139.       } else {
  140.          int var6 = !this.accent_over && super.high.getHeight() != 0 ? (int)((double)0.25F * (double)super.xheight) : (int)(0.05 * (double)super.xheight);
  141.          int var3 = !this.accent_under && super.low.getHeight() != 0 ? (int)((double)0.25F * (double)super.xheight) + ((double)super.low.getHeight() < 0.6 * (double)super.xheight ? (int)(0.9 * (double)super.xheight - (double)super.low.getHeight()) : 0) : (int)(0.1 * (double)super.xheight);
  142.          ((MScripts)this).sizeUnderOver(var3, var6);
  143.       }
  144.  
  145.    }
  146.  
  147.    public void position() {
  148.       if (super.useLinearForm) {
  149.          super.lb_rewrite.setTop(0);
  150.          super.lb_rewrite.setLeft(0);
  151.       } else if (super.move_scripts) {
  152.          ((MScripts)this).positionSubSup();
  153.       } else {
  154.          ((MScripts)this).positionUnderOver();
  155.       }
  156.  
  157.    }
  158.  
  159.    public boolean stretchTo(int var1, int var2) {
  160.       if (super.useLinearForm) {
  161.          return super.lb_rewrite.stretchTo(var1, var2);
  162.       } else {
  163.          Box var3 = ((Box)this).getChild(0);
  164.          boolean var4 = false;
  165.          if (var3.embellished_op) {
  166.             if (super.ascent < var1 || super.descent < var2) {
  167.                var4 |= var3.stretchTo(var1, var2);
  168.             }
  169.  
  170.             if (super.move_scripts) {
  171.                ((MScripts)this).sizeSubSup();
  172.                ((MScripts)this).positionSubSup();
  173.             } else {
  174.                int var5 = !this.accent_over && super.high.getHeight() != 0 ? (int)((double)0.25F * (double)super.xheight) : 0;
  175.                int var6 = !this.accent_under && super.low.getHeight() != 0 ? (int)((double)0.25F * (double)super.xheight) : 0;
  176.                ((MScripts)this).sizeUnderOver(var6, var5);
  177.                ((MScripts)this).positionUnderOver();
  178.             }
  179.          }
  180.  
  181.          return var4;
  182.       }
  183.    }
  184.  
  185.    public void paint(Graphics var1, int var2, int var3) {
  186.       ((Box)this).paintBackground(var1, var2, var3);
  187.       if (super.useLinearForm) {
  188.          super.lb_rewrite.paint(var1, var2 + super.left, var3 + super.top);
  189.       } else {
  190.          super.paint(var1, var2, var3);
  191.       }
  192.  
  193.       super.absleft = var2 + super.left;
  194.       super.abstop = var3 + super.top;
  195.    }
  196. }
  197.