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

  1. package webeq3.schema;
  2.  
  3. import java.awt.Graphics;
  4. import webeq3.app.Equation;
  5. import webeq3.fonts.CharRender;
  6. import webeq3.fonts.ExtendedChar;
  7.  
  8. public class MRoot extends LineBreakRewriter {
  9.    int pad = 0;
  10.    int rad_ascent = 0;
  11.    int rad_left = 0;
  12.    int sqr_left = 2;
  13.    ExtendedChar sqr = new ExtendedChar('ΓêÜ', -1);
  14.  
  15.    public MRoot(Box var1) {
  16.       super(var1);
  17.       super.type = 4;
  18.    }
  19.  
  20.    public MRoot() {
  21.    }
  22.  
  23.    public MRoot(Equation var1) {
  24.       super(var1);
  25.       super.type = 4;
  26.    }
  27.  
  28.    public void size() {
  29.       Box var1 = ((Box)this).getChild(0);
  30.       Box var2 = ((Box)this).getChild(1);
  31.       super.fgcolor = ((Box)this).resolveColor(4);
  32.       super.bgcolor = ((Box)this).resolveColor(17);
  33.       var1.depth = super.depth;
  34.       var1.layout();
  35.       var2.depth = super.depth + 2;
  36.       var2.layout();
  37.       ((Box)this).setfont(super.depth);
  38.       this.sqr.setFont(super.fn, super.my_view.getHandler().getComponent());
  39.       this.pad = (int)((double)0.5F * (double)super.xheight);
  40.       super.width = this.sqr.getWidth() + this.pad + var1.getWidth();
  41.       if (var2.getWidth() > (int)(0.7 * (double)this.sqr.getWidth())) {
  42.          this.sqr_left = var2.getWidth() - (int)(0.7 * (double)this.sqr.getWidth());
  43.          super.width += this.sqr_left;
  44.       } else {
  45.          this.rad_left = (int)(0.7 * (double)this.sqr.getWidth()) - var2.getWidth();
  46.       }
  47.  
  48.       super.useLinearForm = false;
  49.       if (super.my_view.linebreak && (double)super.width > 0.85 * (double)super.my_view.getDisplayWidth()) {
  50.          super.useLinearForm = true;
  51.          if (super.lb_rewrite == null) {
  52.             super.lb_rewrite = new MSup(super.parent);
  53.             MRow var3 = new MRow(super.lb_rewrite);
  54.             super.lb_rewrite.addChild(var3);
  55.             MO var4 = new MO(var3);
  56.             ((Box)var4).addData("(");
  57.             ((Box)var3).addChild(var4);
  58.             ((Box)var3).addChild(var1);
  59.             var4 = new MO(var3);
  60.             ((Box)var4).addData(")");
  61.             ((Box)var3).addChild(var4);
  62.             MFrac var5 = new MFrac(super.lb_rewrite);
  63.             super.lb_rewrite.addChild(var5);
  64.             MN var6 = new MN(var5);
  65.             ((Box)var6).addData("1");
  66.             ((Box)var5).addChild(var6);
  67.             Object var7;
  68.             if (var2.getClass().getName().equals("webeq3.schema.Box")) {
  69.                var7 = new MN(var5);
  70.                ((Box)var7).addData("2");
  71.             } else {
  72.                var7 = var2;
  73.             }
  74.  
  75.             ((Box)var5).addChild((Box)var7);
  76.          }
  77.  
  78.          super.lb_rewrite.layout();
  79.          super.width = super.lb_rewrite.width;
  80.          super.ascent = super.lb_rewrite.ascent;
  81.          super.descent = super.lb_rewrite.descent;
  82.          super.height = super.ascent + super.descent;
  83.       } else {
  84.          super.ascent = (int)((double)var1.getAscent() + 0.15 * (double)super.xheight);
  85.          if (super.ascent < this.sqr.getAscent()) {
  86.             super.ascent = this.sqr.getAscent();
  87.          }
  88.  
  89.          this.rad_ascent = super.ascent;
  90.          if (var2.getHeight() + (int)((double)1.0F * (double)super.xheight) > super.ascent) {
  91.             super.ascent += var2.getHeight() + (int)((double)1.0F * (double)super.xheight) - super.ascent;
  92.          }
  93.  
  94.          super.descent = (int)((double)var1.getDescent() + 0.2 * (double)super.xheight);
  95.          if ((double)super.descent < 0.6 * (double)super.xheight) {
  96.             super.descent = (int)(0.6 * (double)super.xheight);
  97.          }
  98.  
  99.          super.height = super.ascent + super.descent;
  100.       }
  101.  
  102.    }
  103.  
  104.    public void position() {
  105.       if (super.useLinearForm) {
  106.          super.lb_rewrite.setTop(0);
  107.          super.lb_rewrite.setLeft(0);
  108.       } else {
  109.          Box var1 = ((Box)this).getChild(0);
  110.          Box var2 = ((Box)this).getChild(1);
  111.          var2.setTop(super.ascent - var2.getHeight() - (int)((double)1.0F * (double)super.xheight));
  112.          var2.setLeft(this.rad_left);
  113.          var1.setTop(super.ascent - var1.getAscent());
  114.          var1.setLeft(super.width - var1.getWidth() - this.pad / 5);
  115.       }
  116.  
  117.    }
  118.  
  119.    public void paint(Graphics var1, int var2, int var3) {
  120.       if (super.useLinearForm) {
  121.          super.lb_rewrite.paint(var1, var2 + super.left, var3 + super.top);
  122.       } else {
  123.          int var4 = super.left + var2 + super.my_view.offsetx;
  124.          int var5 = super.top + var3 + super.my_view.offsety;
  125.          super.paint(var1, var2, var3);
  126.          this.sqr.setHeight(super.descent + this.rad_ascent);
  127.          if (super.reverse_video) {
  128.             CharRender.paint(var1, this.sqr, var4 + this.sqr_left, var5 + super.height, super.bgcolor, super.fgcolor, super.my_view.getHandler().getComponent());
  129.          } else {
  130.             CharRender.paint(var1, this.sqr, var4 + this.sqr_left, var5 + super.height, super.fgcolor, super.bgcolor, super.my_view.getHandler().getComponent());
  131.          }
  132.  
  133.          if (super.reverse_video) {
  134.             var1.setColor(super.bgcolor);
  135.          } else {
  136.             var1.setColor(super.fgcolor);
  137.          }
  138.  
  139.          int var6 = var5 + super.ascent - this.rad_ascent > 0 ? var5 + super.ascent - this.rad_ascent : 0;
  140.          var1.drawLine(var4 + this.sqr_left + this.sqr.getWidth(), var6, var4 + super.width, var6);
  141.          if (this.sqr.getSize() > 18) {
  142.             var1.drawLine(var4 + this.sqr_left + this.sqr.getWidth(), var6 + 1, var4 + super.width, var6 + 1);
  143.          }
  144.       }
  145.  
  146.       super.absleft = var2 + super.left;
  147.       super.abstop = var3 + super.top;
  148.    }
  149. }
  150.