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

  1. package webeq3.schema;
  2.  
  3. import java.awt.Graphics;
  4. import webeq3.app.Equation;
  5.  
  6. public class MSubsup extends MScripts {
  7.    public MSubsup(Box var1) {
  8.       super(var1);
  9.       super.type = 8;
  10.    }
  11.  
  12.    public MSubsup() {
  13.       super.type = 8;
  14.    }
  15.  
  16.    public MSubsup(Equation var1) {
  17.       super(var1);
  18.       super.type = 8;
  19.    }
  20.  
  21.    public void setChildDepths() {
  22.       super.base.depth = super.depth;
  23.       super.low.depth = super.depth + 1;
  24.       super.high.depth = super.depth + 1;
  25.    }
  26.  
  27.    public void size() {
  28.       super.useLinearForm = false;
  29.       super.size();
  30.       if (super.my_view.linebreak && super.width > 3 * super.fm.charWidth('M')) {
  31.          Box var1 = ((Box)this).getChild(0);
  32.          Box var2 = ((Box)this).getChild(1);
  33.          Box var3 = ((Box)this).getChild(2);
  34.          if (!var1.isAtomic() || !var2.isAtomic() || !var3.isAtomic()) {
  35.             super.atomic = false;
  36.             int var4 = super.fm.charWidth('M');
  37.             if (var2.getWidth() > var4 && var3.getWidth() > var4) {
  38.                if ((double)super.width < 0.9 * (double)(super.my_view.getDisplayWidth() - super.my_view.indent)) {
  39.                   super.atomic = true;
  40.                } else {
  41.                   super.useLinearForm = true;
  42.                   if (super.lb_rewrite == null) {
  43.                      super.lb_rewrite = new MSup(super.parent);
  44.                      MSub var5 = new MSub(super.lb_rewrite);
  45.                      super.lb_rewrite.addChild(var5);
  46.                      ((Box)var5).addChild(var1);
  47.                      ((Box)var5).addChild(var2);
  48.                      super.lb_rewrite.addChild(var3);
  49.                   }
  50.  
  51.                   super.lb_rewrite.layout();
  52.                   var1.setParent(this);
  53.                   var2.setParent(this);
  54.                   var3.setParent(this);
  55.                   super.width = super.lb_rewrite.getWidth();
  56.                   super.ascent = super.lb_rewrite.getAscent();
  57.                   super.descent = super.lb_rewrite.getDescent();
  58.                   super.height = super.ascent + super.descent;
  59.                }
  60.             }
  61.          }
  62.       }
  63.  
  64.    }
  65.  
  66.    public void sizeScripts() {
  67.       ((MScripts)this).sizeSubSup();
  68.    }
  69.  
  70.    public void position() {
  71.       if (super.useLinearForm) {
  72.          super.lb_rewrite.setTop(0);
  73.          super.lb_rewrite.setLeft(0);
  74.       } else {
  75.          ((MScripts)this).positionSubSup();
  76.       }
  77.  
  78.    }
  79.  
  80.    public boolean stretchTo(int var1, int var2) {
  81.       if (super.useLinearForm) {
  82.          return super.lb_rewrite.stretchTo(var1, var2);
  83.       } else {
  84.          Box var3 = ((Box)this).getChild(0);
  85.          boolean var4 = false;
  86.          if (var3.embellished_op) {
  87.             var4 = var3.stretchTo(var1, var2);
  88.             ((MScripts)this).sizeSubSup();
  89.             ((MScripts)this).positionSubSup();
  90.          }
  91.  
  92.          return var4;
  93.       }
  94.    }
  95.  
  96.    public void paint(Graphics var1, int var2, int var3) {
  97.       ((Box)this).paintBackground(var1, var2, var3);
  98.       if (super.useLinearForm) {
  99.          super.lb_rewrite.paint(var1, var2 + super.left, var3 + super.top);
  100.       } else if (super.my_view.linebreak) {
  101.          int var4 = var2 + super.left + super.my_view.offsetx;
  102.          int var5 = super.my_view.getDisplayWidth();
  103.          int var6 = 0;
  104.          boolean var7 = false;
  105.          boolean var8 = false;
  106.          var6 = var3 + super.top + super.my_view.offsety;
  107.  
  108.          for(int var17 = var2 + super.left + super.my_view.offsetx + super.width - var5; var17 > 0; var8 = true) {
  109.             var6 += 5 + super.my_view.root.getHeight();
  110.             ((Box)this).rvPaint(var1, super.my_view.indent, var6, var5, super.height);
  111.             var17 -= var5 - super.my_view.indent;
  112.          }
  113.  
  114.          Box var9 = ((Box)this).getChild(0);
  115.          Box var10 = ((Box)this).getChild(1);
  116.          Box var11 = ((Box)this).getChild(2);
  117.          int var12 = super.fm.charWidth('M');
  118.          boolean var13 = false;
  119.          if ((Math.abs(var5 - (var4 + var9.getLeft() + var9.getWidth() + super.breakLookAhead)) < var12 || 0 < var5 - (var4 + var11.getLeft() + super.breakLookAhead) && var5 - (var4 + var11.getLeft() + super.breakLookAhead) < var11.getWidth() && var11.isAtomic() || 0 < var5 - (var4 + var10.getLeft() + super.breakLookAhead) && var5 - (var4 + var10.getLeft() + super.breakLookAhead) < var10.getWidth() && var10.isAtomic()) && var4 + super.width + super.breakLookAhead > var5) {
  120.             if (var9.isAtomic()) {
  121.                super.my_view.offsetx = super.my_view.indent - (var2 + super.left + var9.getLeft());
  122.                Equation var10000 = super.my_view;
  123.                var10000.offsety += 5 + super.my_view.root.getHeight();
  124.                Integer var20 = new Integer(var2 + super.left + var9.getLeft());
  125.                super.my_view.breaks.addElement(var20);
  126.             } else if (var5 - (var4 + var9.getLeft() + var9.getWidth() + super.breakLookAhead) + 2 <= 0 || (var5 - (var4 + var11.getLeft() + super.breakLookAhead) >= var11.getWidth() || !var11.isAtomic()) && (var5 - (var4 + var10.getLeft() + super.breakLookAhead) >= var10.getWidth() || !var10.isAtomic())) {
  127.                int var19 = var5 - (var4 + var9.getLeft() + var9.getWidth()) - super.breakLookAhead + var12 + 2;
  128.                var9.setLookAhead(super.breakLookAhead + var19);
  129.                var13 = true;
  130.             } else {
  131.                int var14 = var5 - (var4 + var9.getLeft() + var9.getWidth()) - super.breakLookAhead + 2;
  132.                var9.setLookAhead(super.breakLookAhead + var14);
  133.                var13 = true;
  134.             }
  135.          }
  136.  
  137.          var8 |= ((Box)this).paintBreakingChildren(var1, var2, var3, 0, super.children.size(), var6);
  138.          if (var8) {
  139.             ((Box)this).paintCleanup(var1, var2 + super.left + super.my_view.offsetx + super.width, var3 + super.top + super.my_view.offsety, super.my_view.size().width, super.height);
  140.          }
  141.  
  142.          if (var13) {
  143.             var9.setLookAhead(0);
  144.          }
  145.       } else {
  146.          for(int var15 = 0; var15 < super.children.size(); ++var15) {
  147.             ((Box)this).getChild(var15).paint(var1, var2 + super.left, var3 + super.top);
  148.          }
  149.       }
  150.  
  151.       super.absleft = var2 + super.left;
  152.       super.abstop = var3 + super.top;
  153.    }
  154. }
  155.