home *** CD-ROM | disk | FTP | other *** search
- package webeq3.schema;
-
- import java.awt.Graphics;
- import webeq3.app.Equation;
-
- public class MStyle extends Box {
- public static boolean allowForcedBreaks = true;
-
- public MStyle(Box var1) {
- super(var1);
- super.type = 68;
- super.kind = 6;
- }
-
- public MStyle(Equation var1) {
- super(var1);
- super.type = 68;
- }
-
- public MStyle() {
- super.type = 68;
- }
-
- 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;
-
- for(int var2 = 0; var2 < 86; ++var2) {
- if (super.attributes[var2] != null) {
- super.attribute_stack[var2].push(super.attributes[var2]);
- }
- }
-
- if (super.attributes[20] != null && super.attributes[20].length() > 0) {
- char var3 = super.attributes[20].trim().charAt(0);
- if (var3 == '+' || var3 == '-') {
- try {
- byte var4 = 1;
- if (var3 == '-') {
- var4 = -1;
- }
-
- super.attribute_stack[20].pop();
- int var5 = Integer.parseInt(super.attributes[20].substring(super.attributes[20].indexOf(var3) + 1).trim());
- String var6 = ((Box)this).getDefaultAttributeString(20).trim();
- if (var6 == "") {
- var6 = "0";
- }
-
- super.attribute_stack[20].push(Integer.toString(var4 * var5 + Integer.parseInt(var6)));
- } catch (Exception var7) {
- System.out.println("MStyle Error: SCRIPTLEVEL attribute not specified correctly.");
- }
- }
- }
-
- this.size();
- ((Box)this).position();
-
- for(int var8 = 0; var8 < 86; ++var8) {
- if (super.attributes[var8] != null) {
- super.attribute_stack[var8].pop();
- }
- }
-
- }
-
- public void size() {
- super.bgcolor = ((Box)this).resolveColor(17);
- super.fgcolor = ((Box)this).resolveColor(4);
- ((Box)this).setfont(super.depth);
- int var2 = 0;
- int var3 = 0;
- int var4 = super.children.size();
- if (var4 > 0) {
- super.descent = -1000;
- }
-
- for(int var5 = 0; var5 < var4; ++var5) {
- Box var1 = ((Box)this).getChild(var5);
- var1.depth = super.depth;
- var1.layout();
- if (super.ascent < var1.getAscent()) {
- super.ascent = var1.getAscent();
- }
-
- if (super.descent < var1.getDescent()) {
- super.descent = var1.getDescent();
- }
-
- super.width += var1.getWidth();
- if (var1.is_spacelike) {
- ++var2;
- }
-
- if (var1.embellished_op) {
- ++var3;
- }
- }
-
- super.height = super.ascent + super.descent;
- if (var2 == var4) {
- super.is_spacelike = true;
- }
-
- if (var2 == var4 - 1 && var3 == 1) {
- super.embellished_op = true;
- }
-
- switch (var4) {
- case 0:
- super.atomic = true;
- break;
- case 1:
- Box var6 = ((Box)this).getChild(0);
- super.italic = var6.isItalic();
- super.atomic = var6.isAtomic();
- break;
- default:
- super.atomic = false;
- }
-
- }
-
- public void paint(Graphics var1, int var2, int var3) {
- if ((allowForcedBreaks || super.my_view.linebreak) && ((Box)this).getParent() != null) {
- Box var31 = null;
- Object var32 = null;
- Object var6 = null;
- Object var7 = null;
- int var9 = var2 + super.left + super.my_view.offsetx;
- int var10 = super.my_view.getDisplayWidth();
- int var11 = super.my_view.indent;
- int var12 = 0;
- int var13 = 0;
- int var14 = 0;
- int var15 = 0;
- boolean var16 = false;
- int[] var17 = new int[super.children.size()];
- boolean var18 = false;
- int var19 = 0;
- int var22 = var3 + super.top + super.my_view.offsety;
-
- for(int var23 = 0; var23 < super.children.size(); ++var23) {
- Box var41 = var31;
- var31 = ((Box)this).getChild(var23);
- var16 = false;
- if (super.my_view.linebreak) {
- if (var31 instanceof MO) {
- char var8 = var31.udata.length() > 0 ? var31.udata.charAt(0) : 0;
- if (var8 != ',' && var8 != ']' && var8 != ')' && var8 != '}' && var8 != ';' && var8 != '!' && var8 != 12297 && var8 != 8969 && var8 != 8971) {
- if (var8 != '[' && var8 != '(' && var8 != '{' && var8 != 12296 && var8 != 8968 && var8 != 8970) {
- if (var41 instanceof MO) {
- int var66 = var17[var23]--;
- } else if (((MO)var31).isBinary()) {
- int var67 = var17[var23]--;
- if (var23 + 1 < super.children.size()) {
- --var17[var23 + 1];
- }
- } else if (var8 == '') {
- if (super.children.size() > 0) {
- var17[var23 - 1] += 3;
- }
- } else {
- var17[var23] += 2;
- }
- } else {
- int var10002 = var17[var23]++;
- if (var23 + 1 < super.children.size() && ((Box)this).getChild(var23 + 1).isAtomic()) {
- var17[var23 + 1] -= 2;
- }
- }
- } else {
- if (var23 < super.children.size() - 1) {
- ++var17[var23 + 1];
- if (var8 == ',' || var8 == ';') {
- var17[var23 + 1] += 2;
- }
- }
-
- if (var23 > 0 && ((Box)this).getChild(var23 - 1).isAtomic()) {
- var17[var23] -= 2;
- }
- }
- }
-
- if (!var31.isAtomic() && var17[var23] <= 0) {
- int var68 = var17[var23]++;
- }
-
- if (var31 instanceof MI && var41 instanceof MI) {
- int var69 = var17[var23]++;
- }
- }
-
- if (var31 instanceof MI || var31 instanceof MText) {
- char var43 = var31.udata.length() > 0 ? var31.udata.charAt(0) : 0;
- byte var24 = 0;
- if (var43 == '\uf385' || var43 == '\uf386') {
- var24 = 10;
- }
-
- if (super.my_view.linebreak) {
- if (var43 == '\uf387') {
- var24 = -10;
- }
-
- if (var43 == '\uf388') {
- var24 = 3;
- }
-
- if (var43 == '\uf389') {
- var24 = -2;
- }
- }
-
- if (var24 >= 0) {
- if (var23 < super.children.size() - 1) {
- var17[var23 + 1] += var24;
- } else {
- var17[var23] += var24;
- }
- } else {
- if (var23 < super.children.size() - 1) {
- var17[var23 + 1] += var24;
- }
-
- var17[var23] += var24;
- }
- }
-
- if (var17[var23] > 7) {
- var16 = true;
- }
-
- if (super.my_view.linebreak) {
- if (super.breakLookAhead > 0 && var31.getLeft() + var31.getWidth() + super.breakLookAhead > super.width && var9 + var31.getLeft() + var31.getWidth() + super.breakLookAhead > var10) {
- var16 = true;
- }
-
- if (var9 + var31.getLeft() + var31.getWidth() > var10) {
- var16 = true;
- }
- }
-
- if (var16) {
- var18 = true;
- int var59 = 0;
-
- for(int var25 = var15; var25 <= var23; ++var25) {
- if (var17[var25] >= var59) {
- var59 = var17[var25];
- var14 = var25;
- }
- }
-
- if (var59 < 3 && !var31.isAtomic()) {
- var14 = var23;
- }
-
- var17[var14] = 0;
- if (var14 >= var15 && var14 < var23) {
- var31 = ((Box)this).getChild(var14);
- } else {
- var14 = var23;
- }
-
- boolean var26 = false;
- boolean var27 = false;
- var11 = super.my_view.indent;
- if (var14 > 0) {
- Box var33 = ((Box)this).getChild(var14 - 1);
- if (!(var33 instanceof MI) && !(var33 instanceof MText)) {
- if (var2 + super.left + ((Box)this).getChild(var14).getLeft() > super.my_view.indent) {
- var26 = true;
- }
- } else {
- char var44 = var33.udata.length() > 0 ? var33.udata.charAt(0) : 0;
- if (var44 == '\uf385' || var44 == '\uf386') {
- var27 = true;
- }
-
- if (var44 == '\uf385') {
- var11 = 0;
- } else {
- var26 = true;
- }
- }
- }
-
- if (var31.isAtomic()) {
- if (super.breakLookAhead > 0 && (double)(super.width - ((Box)this).getChild(var14).getLeft()) < 0.8 * (double)var10) {
- super.my_view.root.setLookAhead(0);
- }
-
- Box var36 = ((Box)this).getChild(var15);
- if (var36 instanceof MO) {
- if (((MO)var36).marginTweak && var15 < var14) {
- var19 = ((MO)var36).op.lspace;
- } else {
- var19 = 0;
- }
- }
-
- var12 = var36.getLeft() + var2 + super.left + super.my_view.offsetx + var19;
- ((Box)this).rvPaint(var1, var12, var3 + super.top + super.my_view.offsety, var10 - var12, super.height);
- int var63 = super.my_view.offsety;
- ((Box)this).paintBreakingChildren(var1, var2, var3, var15, var14, var3 + super.top + super.my_view.offsety);
- var36 = ((Box)this).getChild(var14);
- var19 = 0;
- if (var36 instanceof MO) {
- var19 = ((MO)var36).op.lspace;
- ((MO)var36).setMarginTweak(true);
- }
-
- if (var26) {
- var1.setColor(super.my_view.root.bgcolor);
- var1.fillRect(0, super.my_view.offsety + 5 + super.my_view.root.getHeight(), super.my_view.indent, super.my_view.root.getHeight());
- }
-
- if (var63 != super.my_view.offsety && !var27) {
- if (((Box)this).getChild(var14) instanceof MO) {
- ((MO)((Box)this).getChild(var14)).setMarginTweak(false);
- }
- } else {
- var36 = ((Box)this).getChild(var14);
- super.my_view.offsetx = var11 - (var2 + super.left + var36.getLeft() + var19);
- Equation var65 = super.my_view;
- var65.offsety += 5 + super.my_view.root.getHeight();
- if (var11 == 0) {
- super.my_view.breaks.addElement(new Integer(-(var2 + super.left + var36.getLeft() + var19)));
- } else {
- super.my_view.breaks.addElement(new Integer(var2 + super.left + var36.getLeft() + var19));
- }
- }
-
- var15 = var14;
- var9 = var2 + super.left + super.my_view.offsetx;
- } else {
- Box var34 = ((Box)this).getChild(var15);
- var12 = var34.getLeft() + var2 + super.left + super.my_view.offsetx;
- if (var34 instanceof MO) {
- if (((MO)var34).marginTweak) {
- var19 = ((MO)var34).op.lspace;
- } else {
- var19 = 0;
- }
- }
-
- ((Box)this).rvPaint(var1, var12 + var19, var3 + super.top + super.my_view.offsety, var10 - var12, super.height);
- var34 = ((Box)this).getChild(var14);
- var12 = var34.getLeft() + var2 + super.left + super.my_view.offsetx;
- int var20 = var34.getWidth() - (var10 - var12);
- int var21 = var20 / var10 + 1;
- var22 = var3 + super.top + super.my_view.offsety;
- int var10000 = var10 - super.my_view.indent;
-
- for(int var28 = 0; var28 < var21; ++var28) {
- var22 += 5 + super.my_view.root.getHeight();
- ((Box)this).rvPaint(var1, 0, var22, var10, super.height);
- }
-
- int var29 = var2 + super.left + super.my_view.offsetx + var34.getLeft() + var34.getWidth();
- int var30 = var10 - var29 + 2;
- if (var30 > 0) {
- var34.setLookAhead(var30);
- }
-
- if (var27) {
- ((Box)this).paintBreakingChildren(var1, var2, var3, var15, var14, var22);
- Box var42 = ((Box)this).getChild(var14);
- super.my_view.offsetx = var11 - (var2 + super.left + var42.getLeft() + var19);
- Equation var64 = super.my_view;
- var64.offsety += 5 + super.my_view.root.getHeight();
- if (var11 == 0) {
- super.my_view.breaks.addElement(new Integer(-(var2 + super.left + var42.getLeft() + var19)));
- } else {
- super.my_view.breaks.addElement(new Integer(var2 + super.left + var42.getLeft() + var19));
- }
-
- ((Box)this).paintBreakingChildren(var1, var2, var3, var14, var14 + 1, var22);
- } else {
- ((Box)this).paintBreakingChildren(var1, var2, var3, var15, var14 + 1, var22);
- }
-
- var12 = var2 + super.left + var34.getLeft() + var34.getWidth() + super.my_view.offsetx;
- var20 = var10 - var12;
- ((Box)this).paintCleanup(var1, var12, var3 + super.top + super.my_view.offsety, var20, super.height);
- var15 = var14 + 1;
- var9 = var2 + super.left + super.my_view.offsetx;
- }
- }
- }
-
- if (var15 < super.children.size()) {
- Box var39 = ((Box)this).getChild(var15);
- var12 = var39.getLeft() + var2 + super.left + super.my_view.offsetx;
- var13 = var2 + super.left + super.my_view.offsetx + super.width - var12;
- if (var39 instanceof MO) {
- if (((MO)var39).marginTweak) {
- var19 = ((MO)var39).op.lspace;
- } else {
- var19 = 0;
- }
- }
-
- ((Box)this).rvPaint(var1, var12 + var19, var3 + super.top + super.my_view.offsety, var13 - var19, super.height);
- var22 = var3 + super.top + super.my_view.offsety;
- var18 |= ((Box)this).paintBreakingChildren(var1, var2, var3, var15, super.children.size(), var22);
- var39 = ((Box)this).getChild(super.children.size() - 1);
- var12 = var2 + super.left + var39.getLeft() + var39.getWidth() + super.my_view.offsetx;
- int var55 = var2 + super.left + super.my_view.offsetx + super.width - var12 - var19;
- var22 = var3 + super.top + super.my_view.offsety;
- ((Box)this).paintCleanup(var1, var12, var22, var55, super.height);
- }
-
- if (var18) {
- int var60 = var2 + super.left + super.width + super.my_view.offsetx;
- int var61 = var3 + super.top + super.my_view.offsety;
- int var62 = var10 - var60;
- ((Box)this).paintCleanup(var1, var60, var61, var62, super.height);
- }
- } else {
- ((Box)this).paintBackground(var1, var2, var3);
-
- for(int var5 = 0; var5 < super.children.size(); ++var5) {
- Box var4 = ((Box)this).getChild(var5);
- var4.paint(var1, var2 + super.left, var3 + super.top);
- }
- }
-
- super.absleft = var2 + super.left;
- super.abstop = var3 + super.top;
- }
- }
-