home *** CD-ROM | disk | FTP | other *** search
- package webeq3.schema;
-
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.io.PrintStream;
- import java.util.EmptyStackException;
- import java.util.Hashtable;
- import java.util.Stack;
- import java.util.Vector;
- import org.w3c.dom.Attr;
- import org.w3c.dom.DOMException;
- import org.w3c.dom.Document;
- import org.w3c.dom.NamedNodeMap;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import webeq3.action.SyntaxInfo;
- import webeq3.app.EEquation;
- import webeq3.app.Equation;
- import webeq3.constants.AttributeConstants;
- import webeq3.constants.ColorDictionary;
- import webeq3.constants.EntityNames;
- import webeq3.constants.FontMapper;
- import webeq3.constants.SemanticConstants;
- import webeq3.dom.MathMLDOMAttribute;
- import webeq3.dom.MathMLDOMNamedNodeMap;
- import webeq3.dom.MathMLDOMNodeList;
- import webeq3.dom.MathMLElement;
- import webeq3.dom.MathMLMathElement;
- import webeq3.editor.Template;
- import webeq3.fonts.ExtendedChar;
- import webeq3.fonts.FontBroker;
- import webeq3.util.OutputHandler;
-
- public class Box implements AttributeConstants, SemanticConstants, MathMLMathElement {
- public MathMLDOMNamedNodeMap attribute_map;
- public int type = 1;
- public int kind = 0;
- static final int TO_EM = 0;
- static final int TO_EX = 1;
- static final int TO_PT = 2;
- public Stack[] attribute_stack;
- String[] attributes = new String[86];
- Box parent;
- Box backPtr;
- public Vector children;
- public Equation my_view;
- public Box ppeer = null;
- public ContentBox cpeer = null;
- public int box_id = 0;
- public String udata = "";
- private String udata_old = "";
- public String adata = "";
- ExtendedChar[] data = new ExtendedChar[0];
- protected int left = 0;
- protected int top = 0;
- protected int width = 0;
- protected int height = 0;
- protected int ascent = 0;
- protected int descent = 0;
- public int absleft = 0;
- public int abstop = 0;
- int baseleft = 0;
- int basetop = 0;
- protected int depth = 0;
- // $FF: renamed from: fn java.awt.Font
- protected Font field_0 = null;
- // $FF: renamed from: fm java.awt.FontMetrics
- protected FontMetrics field_1 = null;
- protected Color fgcolor = null;
- protected Color bgcolor = null;
- protected int xheight = 0;
- protected boolean italic = false;
- protected boolean reverse_video = false;
- protected boolean embellished_op = false;
- protected boolean is_spacelike = false;
- protected int semantic_type = 0;
- protected int semantic_form = 0;
- protected int semantic_prec = 0;
- protected int semantic_fencetype = 0;
- protected SyntaxInfo syntax_info = null;
- protected boolean atomic = true;
- public int breakLookAhead = 0;
- int debug = 0;
- // $FF: renamed from: o java.io.PrintStream
- PrintStream field_2;
- protected static Hashtable baseCheck = new Hashtable();
-
- public void setSyntaxInfo(SyntaxInfo var1) {
- this.syntax_info = var1;
- }
-
- public SyntaxInfo getSyntaxInfo() {
- return this.syntax_info;
- }
-
- void stack_init() {
- for(int var1 = 0; var1 < 86; ++var1) {
- this.attribute_stack[var1] = new Stack();
- }
-
- this.attribute_stack[0].push("X");
- }
-
- public Box(Equation var1) {
- this.field_2 = System.out;
- this.my_view = var1;
- this.children = new Vector();
- this.parent = null;
- this.attribute_stack = new Stack[86];
- this.stack_init();
- this.type = 68;
- }
-
- public Box(Box var1) {
- this.field_2 = System.out;
- this.children = new Vector();
- this.parent = var1;
- this.my_view = var1.my_view;
- this.attribute_stack = var1.attribute_stack;
- this.makeAttributeMap();
- this.type = 68;
- }
-
- public Box() {
- this.field_2 = System.out;
- this.children = new Vector();
- this.parent = null;
- this.attribute_stack = null;
- this.type = 68;
- }
-
- public final Box getChild(int var1) {
- try {
- return (Box)this.children.elementAt(var1);
- } catch (Exception var3) {
- return null;
- }
- }
-
- public Box getDisplayChild(int var1) {
- return this.getChild(var1);
- }
-
- public void insertChildAt(Box var1, int var2) {
- var1.setParent(this);
- var1.box_id = var2;
- this.children.insertElementAt(var1, var2);
-
- for(int var3 = var2 + 1; var3 < this.children.size(); this.getChild(var3).box_id = var3++) {
- }
-
- }
-
- public void addChild(Box var1) {
- var1.parent = this;
- var1.box_id = this.children.size();
- this.children.addElement(var1);
- }
-
- public Box removeChildAt(int var1) {
- Box var2 = null;
-
- try {
- if (this.children.size() <= 0) {
- return null;
- }
-
- var2 = this.getChild(var1);
- this.children.removeElementAt(var1);
-
- for(int var3 = var1; var3 < this.children.size(); this.getChild(var3).box_id = var3++) {
- }
- } catch (Exception var4) {
- ((Throwable)var4).printStackTrace();
- }
-
- return var2;
- }
-
- public Box removeChild() {
- return this.removeChildAt(this.children.size() - 1);
- }
-
- public Box setChild(Box var1, int var2) {
- Box var3 = null;
-
- try {
- if (var2 < 0 || this.children.size() <= 0) {
- return null;
- }
-
- var3 = (Box)this.children.elementAt(var2);
- var1.box_id = var2;
- this.children.setElementAt(var1, var2);
- } catch (Exception var5) {
- ((Throwable)var5).printStackTrace();
- }
-
- return var3;
- }
-
- private void moveTail(Box var1, int var2, Box var3) {
- Vector var4 = new Vector();
- Box var5 = null;
- int var6 = var1.getNumChildren();
-
- for(int var7 = var2; var7 < var6; ++var7) {
- var5 = var1.removeChild();
- var5.setParent(var3);
- var4.addElement(var5);
- }
-
- for(int var8 = var4.size() - 1; var8 >= 0; --var8) {
- var3.addChild((Box)var4.elementAt(var8));
- }
-
- }
-
- public Box getParent() {
- return this.parent;
- }
-
- public final void setParent(Box var1) {
- this.parent = var1;
- }
-
- public Box getBackPtr() {
- return this.backPtr;
- }
-
- public Box getCopy() {
- Box var2 = null;
-
- try {
- var2 = (Box)this.getClass().newInstance();
- } catch (Exception var5) {
- System.out.println(var5);
- ((Throwable)var5).printStackTrace();
- }
-
- var2.parent = this.parent;
- var2.backPtr = this;
- var2.my_view = this.my_view;
- var2.attribute_stack = this.attribute_stack;
- var2.attributes = new String[86];
-
- for(int var3 = 0; var3 < 86; ++var3) {
- var2.attributes[var3] = this.attributes[var3];
- }
-
- var2.makeAttributeMap();
- var2.udata = this.udata;
- var2.adata = this.adata;
- var2.semantic_type = this.semantic_type;
- var2.semantic_form = this.semantic_form;
- var2.semantic_prec = this.semantic_prec;
- var2.semantic_fencetype = this.semantic_fencetype;
- var2.embellished_op = this.embellished_op;
- var2.is_spacelike = this.is_spacelike;
- var2.reverse_video = this.reverse_video;
-
- for(int var4 = 0; var4 < this.getNumChildren(); ++var4) {
- Box var1 = this.getChild(var4).getCopy();
- var1.setParent(var2);
- var2.addChild(var1);
- }
-
- return var2;
- }
-
- public static void normalize(Box var0) {
- for(int var1 = 0; var1 < var0.children.size(); ++var1) {
- normalize(var0.getChild(var1));
- }
-
- if (var0.children.size() == 1 && var0.getParent() != null && var0.getClass().getName().equals("webeq3.schema.MRow")) {
- int var2 = var0.box_id;
- var0.getParent().removeChildAt(var0.box_id);
- Box var3 = var0.removeChildAt(0);
-
- for(int var4 = 0; var4 < 86; ++var4) {
- if (var3.attributes[var4] == null || "".equals(var3.attributes[var4])) {
- var3.attributes[var4] = var0.attributes[var4];
- }
- }
-
- var0.getParent().insertChildAt(var3, var2);
- }
-
- }
-
- public void addData(String var1) {
- StringBuffer var3 = new StringBuffer();
- this.adata = this.adata + var1;
-
- for(int var4 = 0; var4 < var1.length(); ++var4) {
- char var2 = var1.charAt(var4);
- if (var2 == '&') {
- int var5 = var1.indexOf(59, var4);
- var3.append(EntityNames.get(var1.substring(var4 + 1, var5)));
- var4 = var5;
- } else {
- var3.append(var2);
- }
- }
-
- this.udata = this.udata + var3;
- }
-
- public int insertData(String var1, int var2) {
- StringBuffer var4 = new StringBuffer();
- if (var2 <= 0) {
- this.adata = var1 + this.adata;
- } else if (var2 >= this.getDataLength()) {
- this.adata = this.adata + var1;
- } else {
- this.adata = this.adata.substring(0, var2) + var1 + this.adata.substring(var2);
- }
-
- for(int var5 = 0; var5 < var1.length(); ++var5) {
- char var3 = var1.charAt(var5);
- if (var3 == '&') {
- int var6 = var1.indexOf(59, var5);
- var4.append(EntityNames.get(var1.substring(var5 + 1, var6)));
- var5 = var6;
- } else {
- var4.append(var3);
- }
- }
-
- if (var2 <= 0) {
- this.udata = var4.toString() + this.udata;
- } else if (var2 >= this.getDataLength()) {
- this.udata = this.udata + var4.toString();
- } else {
- this.udata = this.udata.substring(0, var2) + var4.toString() + this.udata.substring(var2);
- }
-
- return var4.length();
- }
-
- public void setAData(String var1) {
- this.adata = var1;
- }
-
- public void setUData(String var1) {
- this.udata = var1;
- }
-
- public void setData() {
- if (this.udata.length() != this.data.length || !this.udata_old.equals(this.udata)) {
- this.data = new ExtendedChar[this.udata.length()];
-
- for(int var1 = 0; var1 < this.udata.length(); ++var1) {
- this.data[var1] = FontMapper.get(this.udata.charAt(var1));
- }
-
- this.udata_old = this.udata;
- }
-
- if (this.data.length > 10) {
- this.atomic = false;
- }
-
- }
-
- public boolean remove_datum(int var1) {
- if (this.udata.length() <= var1) {
- return false;
- } else {
- ExtendedChar[] var2 = new ExtendedChar[this.data.length - 1];
- System.arraycopy(this.data, 0, var2, 0, var1);
- System.arraycopy(this.data, var1 + 1, var2, var1, this.data.length - 1 - var1);
- this.data = var2;
- String var3 = this.udata.substring(0, var1);
- var3 = var3 + this.udata.substring(var1 + 1);
- this.udata = var3;
- int var4 = 0;
- int var5 = 0;
-
- for(int var7 = 0; var7 < var1; ++var7) {
- char var6 = this.adata.charAt(var4);
- if (var6 == '&') {
- var4 = this.adata.indexOf(59, var4);
- }
-
- ++var4;
- }
-
- char var13 = this.adata.charAt(var4);
- if (var13 == '&') {
- var5 = this.adata.indexOf(59, var4);
- } else {
- var5 = var4;
- }
-
- ++var5;
- var3 = this.adata.substring(0, var4);
- var3 = var3 + this.adata.substring(var5);
- this.adata = var3;
- return true;
- }
- }
-
- public final int getLeft() {
- return this.left;
- }
-
- public final int getTop() {
- return this.top;
- }
-
- public final int getWidth() {
- return this.width;
- }
-
- public final int getHeight() {
- return this.height;
- }
-
- public final int getAscent() {
- return this.ascent;
- }
-
- public final int getDescent() {
- return this.descent;
- }
-
- public final int getXHeight() {
- return this.xheight;
- }
-
- public final int getNumChildren() {
- return this.children.size();
- }
-
- public final int getDataLength() {
- return this.children.size() > 0 ? 1 : this.udata.length();
- }
-
- public final Color getFG() {
- return this.fgcolor;
- }
-
- public final Color getBG() {
- return this.bgcolor;
- }
-
- public final int getBoxID() {
- return this.box_id;
- }
-
- public boolean isItalic() {
- return this.italic;
- }
-
- public boolean isAtomic() {
- return this.atomic;
- }
-
- public boolean isEmbellishedOp() {
- return this.embellished_op;
- }
-
- public boolean isSpaceLike() {
- return this.is_spacelike;
- }
-
- public boolean getReverseVideo() {
- return this.reverse_video;
- }
-
- public boolean isAFence() {
- return this.semantic_type == 6;
- }
-
- public boolean isLFence() {
- return this.semantic_type == 2;
- }
-
- public boolean isRFence() {
- return this.semantic_type == 3;
- }
-
- public boolean isOperand() {
- return this.semantic_type == 5;
- }
-
- public boolean isOperator() {
- return this.semantic_type == 1;
- }
-
- public int getNumDisplayChildren() {
- return this.children.size();
- }
-
- public final void setLeft(int var1) {
- this.left = var1;
- }
-
- public final void setTop(int var1) {
- this.top = var1;
- }
-
- public final void setAttribute(int var1, String var2) {
- if (var1 > -1) {
- this.attributes[var1] = var2;
- MathMLDOMAttribute var3 = new MathMLDOMAttribute(this.my_view, AttributeConstants.attribute_names[var1], var1);
- var3.setValue(var2);
- if (this.attribute_map != null) {
- this.attribute_map.setNamedItem(var3);
- } else {
- this.makeAttributeMap();
- }
- }
-
- }
-
- public final void setAttributeVec(String[] var1) {
- this.attributes = var1;
- this.makeAttributeMap();
- }
-
- public final String[] getAttributeVec() {
- return this.attributes;
- }
-
- public void setReverseVideo(boolean var1) {
- this.reverse_video = var1;
- if (this.backPtr != null) {
- this.backPtr.setReverseVideo(var1);
- }
-
- }
-
- public final int getDataWidth(int var1) {
- int var2 = 0;
- if (var1 <= this.data.length && var1 >= 0) {
- for(int var3 = 0; var3 < var1; ++var3) {
- var2 += this.data[var3].getWidth();
- }
-
- return var2;
- } else {
- System.out.println("Bad position inside Box!: " + var1 + " is not between 0 and " + this.data.length);
- return 0;
- }
- }
-
- Box processMatrixSelection(boolean var1) {
- int var5 = 1000;
- MTable var6 = null;
- int var7 = 1000;
- int var8 = 1000;
- int var9 = -1;
- int var10 = -1;
-
- for(int var11 = this.getNumChildren() - 1; var11 >= 0; --var11) {
- Box var2 = this.getChild(var11);
- boolean var3 = true;
- if (var2.getNumChildren() < var5) {
- var5 = var2.getNumChildren();
- }
-
- for(int var12 = 0; var12 < var2.getNumChildren(); ++var12) {
- if (var2.getChild(var12).getReverseVideo()) {
- var7 = var12 < var7 ? var12 : var7;
- var8 = var11 < var8 ? var11 : var8;
- var9 = var12 > var9 ? var12 : var9;
- var10 = var11 > var10 ? var11 : var10;
- var3 &= true;
- } else {
- var3 = false;
- }
- }
-
- if (var3) {
- if (var6 == null) {
- var6 = new MTable(this);
- }
-
- if (var1) {
- ((Box)var6).insertChildAt(this.removeChildAt(var11), 0);
- } else {
- ((Box)var6).insertChildAt(this.getChild(var11).getCopy(), 0);
- }
- }
- }
-
- if (var6 != null) {
- this.my_view.root.clearSelection();
- var6.savedCursorLeft = var7;
- var6.savedCursorTop = var8;
- return var6;
- } else {
- for(int var17 = var5 - 1; var17 >= 0; --var17) {
- boolean var4 = true;
-
- for(int var13 = 0; var13 < this.getNumChildren(); ++var13) {
- var4 &= this.getChild(var13).getChild(var17).getReverseVideo();
- }
-
- if (var4) {
- if (var6 == null) {
- var6 = new MTable(this);
-
- for(int var14 = 0; var14 < this.getNumChildren(); ++var14) {
- ((Box)var6).addChild(new MTr(var6));
- }
- }
-
- for(int var20 = 0; var20 < this.getNumChildren(); ++var20) {
- if (var1) {
- ((Box)var6).getChild(var20).insertChildAt(this.getChild(var20).removeChildAt(var17), 0);
- } else {
- ((Box)var6).getChild(var20).insertChildAt(this.getChild(var20).getChild(var17).getCopy(), 0);
- }
- }
- }
- }
-
- if (var6 != null) {
- var6.savedCursorLeft = var7;
- var6.savedCursorTop = var8;
- return var6;
- } else if (var7 >= 1000) {
- return null;
- } else {
- if (var6 == null) {
- var6 = new MTable(this);
-
- for(int var18 = 0; var18 <= var10 - var8; ++var18) {
- ((Box)var6).addChild(new MTr(var6));
- }
- }
-
- for(int var19 = var8; var19 <= var10; ++var19) {
- for(int var21 = var7; var21 <= var9; ++var21) {
- if (var1) {
- MTd var15 = new MTd(this.getChild(var19));
- Template var16 = new Template(var15);
- ((Box)var15).addChild(var16);
- ((EEquation)this.my_view).addTemplate(var16);
- ((EEquation)this.my_view).setCurrentTemplate(var16);
- ((Box)var6).getChild(var19 - var8).addChild(this.getChild(var19).setChild(var15, var21));
- } else {
- ((Box)var6).getChild(var19 - var8).addChild(this.getChild(var19).getChild(var21).getCopy());
- }
- }
- }
-
- var6.savedCursorLeft = var7;
- var6.savedCursorTop = var8;
- return var6;
- }
- }
- }
-
- public Box cutSelected() {
- if (this.getReverseVideo() && this.getParent() != null) {
- return this.getParent().removeChildAt(this.box_id);
- } else {
- if (this instanceof MTable) {
- Box var1 = this.processMatrixSelection(true);
- if (var1 != null) {
- return var1;
- }
- } else {
- Vector var7 = new Vector();
- int var3 = this.getNumChildren();
-
- for(int var4 = this.getNumChildren() - 1; var4 >= 0; --var4) {
- Box var2 = this.getChild(var4).cutSelected();
- if (var2 != null) {
- var7.addElement(var2);
- var3 = var4;
- }
- }
-
- if (var7.size() > 0) {
- if (var7.size() <= 1) {
- Box var8 = (Box)var7.elementAt(0);
- return var8;
- }
-
- MRow var5 = new MRow(this);
-
- for(int var6 = var7.size() - 1; var6 >= 0; --var6) {
- ((Box)var5).addChild((Box)var7.elementAt(var6));
- }
-
- var5.box_id = var3;
- return var5;
- }
- }
-
- return null;
- }
- }
-
- public Box copySelected() {
- if (this.getReverseVideo()) {
- return this.getCopy();
- } else {
- if (this instanceof MTable) {
- Box var1 = this.processMatrixSelection(false);
- if (var1 != null) {
- return var1;
- }
- } else {
- Box var5 = this.getParent();
- var5 = var5 == null ? this : var5;
- MRow var2 = new MRow(var5);
-
- for(int var4 = 0; var4 < this.getNumChildren(); ++var4) {
- Box var3 = this.getChild(var4).copySelected();
- if (var3 != null) {
- ((Box)var2).addChild(var3);
- }
- }
-
- if (((Box)var2).getNumChildren() > 0) {
- if (((Box)var2).getNumChildren() > 1) {
- return var2;
- }
-
- return ((Box)var2).removeChild();
- }
- }
-
- return null;
- }
- }
-
- public void clearSelection() {
- this.setReverseVideo(false);
-
- for(int var1 = 0; var1 < this.children.size(); ++var1) {
- this.getChild(var1).clearSelection();
- }
-
- this.my_view.haveSelection = false;
- this.my_view.leftmostSelection = null;
- this.my_view.rightmostSelection = null;
- }
-
- public void print(String var1, OutputHandler var2) {
- this.printSelected(var1, var2, false, false, "", true);
- }
-
- public void print(String var1, OutputHandler var2, boolean var3, String var4) {
- this.printSelected(var1, var2, false, var3, var4, true);
- }
-
- public void printSelected(String var1, OutputHandler var2) {
- this.printSelected(var1, var2, true, false, "", true);
- }
-
- public void printSelected(String var1, OutputHandler var2, boolean var3) {
- this.printSelected(var1, var2, var3, false, "", true);
- }
-
- public void printSelected(String var1, OutputHandler var2, boolean var3, boolean var4, String var5) {
- this.printSelected(var1, var2, var3, var4, var5, false);
- }
-
- public void printSelected(String var1, OutputHandler var2, boolean var3, boolean var4, String var5, boolean var6) {
- this.printSelected(var1, var2, var3, var4, var5, var6, 0);
- }
-
- public void printSelected(String var1, OutputHandler var2, boolean var3, boolean var4, String var5, boolean var6, int var7) {
- if (var3 && !this.reverse_video) {
- for(int var10 = 0; var10 < this.getNumDisplayChildren(); ++var10) {
- this.getDisplayChild(var10).printSelected(var1, var2, var3, var4, var5, var6, var7);
- }
- } else if (var6 && this.cpeer != null) {
- this.cpeer.printSelected(var1, var2, var3, var4, var5, var6, var7);
- } else if (this.children.size() == 0) {
- var2.println(var1 + this.make_head(var4, var5) + "</" + this.make_tag(var5) + ">");
- } else {
- var2.println(var1 + this.make_head(var4, var5));
- String var8 = var1 + " ";
-
- for(int var9 = 0; var9 < this.getNumChildren(); ++var9) {
- this.getChild(var9).printSelected(var8, var2, var3, var4, var5, var6, var7);
- }
-
- var2.println(var1 + "</" + this.make_tag(var5) + ">");
- }
-
- }
-
- public String make_head() {
- return this.make_head(false, "");
- }
-
- public String make_head(boolean var1, String var2) {
- String var3 = "<" + this.make_tag(var2);
- String var4 = this.getClass().getName();
- if (var4.equals("webeq3.schema.Box") && var1) {
- if (!"".equals(var2)) {
- var3 = var3 + " xmlns:" + var2 + "='http://www.w3.org/1998/Math/MathML' ";
- } else {
- var3 = var3 + " xmlns='http://www.w3.org/1998/Math/MathML' ";
- }
- }
-
- for(int var5 = 0; var5 < 86; ++var5) {
- if (this.attributes[var5] != null && !this.attributes[var5].equals("")) {
- var3 = var3 + " " + AttributeConstants.attribute_names[var5] + "='" + this.attributes[var5] + "'";
- }
- }
-
- return var3 + ">";
- }
-
- public String make_tag() {
- return this.make_tag("");
- }
-
- public String make_tag(String var1) {
- String var2 = this.getClass().getName();
- if (!"".equals(var1) && var1.charAt(var1.length() - 1) != ':') {
- var1 = var1 + ":";
- }
-
- return var2.equals("webeq3.schema.Box") ? var1 + "math" : var1 + var2.substring("webeq3.schema.".length()).toLowerCase();
- }
-
- public String unicodeData(int var1) {
- if (var1 == 2) {
- return this.udata;
- } else if (var1 != 1) {
- return this.adata;
- } else {
- String var2 = "";
-
- for(int var6 = 0; var6 < this.udata.length(); ++var6) {
- char var4 = this.udata.charAt(var6);
- if (var4 > ' ' && var4 < 128) {
- var2 = var2 + var4;
- } else {
- String var3 = "0000" + Integer.toHexString(var4);
- var3 = var3.substring(var3.length() - 4);
- var2 = var2 + "" + var3 + ";";
- }
- }
-
- return var2;
- }
- }
-
- public void printDebug(OutputHandler var1) {
- this.printDebug("", var1);
- }
-
- public void printDebug(String var1, OutputHandler var2) {
- if (this.children.size() == 0) {
- if (!this.getClass().getName().equals("webeq3.schema.MI") && !this.getClass().getName().equals("webeq3.schema.MN") && !this.getClass().getName().equals("webeq3.schema.MO") && !this.getClass().getName().equals("webeq3.schema.MS")) {
- if (this.children.size() == 0) {
- var2.println(var1 + "</" + this.make_tag("") + "> (sf=" + this.semanticForm() + ")");
- }
- } else {
- var2.println(var1 + this.make_head() + this.adata + "</" + this.make_tag() + "> (sf=" + this.semanticForm() + ")");
- }
- } else {
- var2.println(var1 + this.make_head() + " (sf=" + this.semanticForm() + ")");
- String var3 = var1 + " ";
-
- for(int var4 = 0; var4 < this.getNumChildren(); ++var4) {
- this.getChild(var4).printDebug(var3, var2);
- }
-
- var2.println(var1 + "</" + this.make_tag("") + ">");
- }
-
- }
-
- public void printDebug() {
- this.printDebug("");
- }
-
- public void printDebug(String var1) {
- String var2 = this.getClass().getName();
- var2 = var2.substring(14);
- if (this.children.size() == 0) {
- System.out.print(var1 + "<" + this);
- if (!"".equals(this.adata)) {
- System.out.print(" [" + this.adata + "]");
- }
-
- if (this instanceof ContentBox) {
- System.out.println(" " + ((ContentBox)this).name + "> (color=" + this.getAttributeByIndex(17) + ")");
- } else {
- System.out.println("> (color=" + this.getAttributeByIndex(17) + ")");
- }
- } else {
- System.out.print(var1 + "<" + this);
- if (!"".equals(this.adata)) {
- System.out.print(" [" + this.adata + "]");
- }
-
- if (this instanceof ContentBox) {
- System.out.println(" " + ((ContentBox)this).name + "> (color=" + this.getAttributeByIndex(17) + ")");
- } else {
- System.out.println("> (color=" + this.getAttributeByIndex(17) + ")");
- }
-
- String var3 = var1 + " ";
-
- for(int var4 = 0; var4 < this.getNumDisplayChildren(); ++var4) {
- this.getDisplayChild(var4).printDebug(var3);
- }
-
- System.out.println(var1 + "</" + var2 + ">");
- }
-
- }
-
- public void diagnostic(Graphics var1, int var2, int var3, int var4) {
- int var5 = var2 + this.my_view.offsetx;
- int var6 = var3 + this.my_view.offsety;
- if (this.debug > 1) {
- switch (var4) {
- case 1:
- var1.setColor(Color.red);
- break;
- case 2:
- var1.setColor(Color.green);
- break;
- case 3:
- var1.setColor(Color.blue);
- break;
- case 4:
- var1.setColor(Color.white);
- break;
- default:
- var1.setColor(Color.black);
- }
-
- var1.drawLine(var5 + this.left, var6 + this.top, var5 + this.left + this.width, var6 + this.top);
- var1.drawLine(var5 + this.left + this.width, var6 + this.top, var5 + this.left + this.width, var6 + this.top + this.height);
- var1.drawLine(var5 + this.left + this.width, var6 + this.top + this.height, var5 + this.left, var6 + this.top + this.height);
- var1.drawLine(var5 + this.left, var6 + this.top + this.height, var5 + this.left, var6 + this.top);
- if (this.debug > 2) {
- System.out.println("-----------------------------------------");
- System.out.print(this.getClass().getName());
- System.out.print(" nchld = " + this.children.size());
- System.out.print(" left = " + this.left);
- System.out.print(" baseleft = " + var2);
- System.out.println(" ofx = " + this.my_view.offsetx);
- System.out.print("width = " + this.width);
- System.out.print(" height = " + this.height);
- System.out.print(" ascent = " + this.ascent);
- System.out.println(" descent = " + this.descent);
- }
-
- var1.setColor(Color.black);
- }
-
- }
-
- public void layout() {
- this.left = 0;
- this.top = 0;
- this.width = 0;
- this.ascent = 0;
- this.descent = 0;
- this.embellished_op = false;
- this.is_spacelike = false;
- this.size();
- this.position();
- }
-
- public void size() {
- this.bgcolor = this.resolveColor(17);
- this.fgcolor = this.resolveColor(4);
- this.setfont(this.depth);
- int var2 = this.children.size();
- if (var2 > 0) {
- this.descent = -1000;
- }
-
- for(int var3 = 0; var3 < var2; ++var3) {
- Box var1 = this.getChild(var3);
- var1.depth = this.depth;
- var1.layout();
- if (this.ascent < var1.getAscent()) {
- this.ascent = var1.getAscent();
- }
-
- if (this.descent < var1.getDescent()) {
- this.descent = var1.getDescent();
- }
-
- this.width += var1.getWidth();
- }
-
- this.height = this.ascent + this.descent;
- }
-
- public void position() {
- int var2 = 0;
- boolean var3 = false;
- int var4 = this.children.size();
-
- for(int var5 = 0; var5 < var4; ++var5) {
- Box var1 = this.getChild(var5);
- var1.setLeft(var2);
- var1.setTop(this.ascent - var1.getAscent());
- var2 += var1.getWidth();
- }
-
- }
-
- public boolean stretchTo(int var1, int var2) {
- int var4 = this.children.size();
- boolean var5 = false;
-
- for(int var6 = 0; var6 < var4; ++var6) {
- Box var3 = this.getChild(var6);
- if (var3.embellished_op) {
- var5 |= var3.stretchTo(var1, var2);
- if (this.ascent < var3.getAscent()) {
- this.ascent = var3.getAscent();
- }
-
- if (this.descent < var3.getDescent()) {
- this.descent = var3.getDescent();
- }
-
- if (var5 && var3 instanceof MO) {
- ((MO)var3).noLayout = true;
- }
- }
- }
-
- this.height = this.ascent + this.descent;
- return var5;
- }
-
- public boolean widthTo(int var1) {
- boolean var3 = false;
- int var4 = this.children.size();
-
- for(int var5 = 0; var5 < var4; ++var5) {
- Box var2 = this.getChild(var5);
- if (var2.embellished_op) {
- var3 |= var2.widthTo(var1);
- if (var3 && var2 instanceof MO) {
- ((MO)var2).noLayout = true;
- }
- }
- }
-
- return var3;
- }
-
- public void paint(Graphics var1, int var2, int var3) {
- int var5 = 0;
- int var6 = 0;
- boolean var7 = false;
- boolean var8 = false;
- this.paintBackground(var1, var2, var3);
- if (!MStyle.allowForcedBreaks && !this.my_view.linebreak) {
- for(int var9 = 0; var9 < this.children.size(); ++var9) {
- this.getChild(var9).paint(var1, var2 + this.left, var3 + this.top);
- }
- } else {
- if (this.needBGPaint()) {
- var5 = var3 + this.top + this.my_view.offsety;
- var6 = this.my_view.getDisplayWidth();
-
- for(int var11 = var2 + this.left + this.my_view.offsetx + this.width - var6; var11 > 0; var8 = true) {
- var5 += 5 + this.my_view.root.getHeight();
- this.rvPaint(var1, 0, var5, var6, this.height);
- var11 -= var6 - this.my_view.indent;
- }
- }
-
- var8 |= this.paintBreakingChildren(var1, var2, var3, 0, this.children.size(), var5);
- if (var8) {
- this.paintCleanup(var1, var2 + this.left + this.my_view.offsetx + this.width, var3 + this.top + this.my_view.offsety, this.my_view.getSize().width, this.height);
- }
- }
-
- this.absleft = var2 + this.left;
- this.abstop = var3 + this.top;
- }
-
- boolean paintBreakingChildren(Graphics var1, int var2, int var3, int var4, int var5, int var6) {
- int var11 = this.my_view.getDisplayWidth();
- boolean var12 = false;
-
- for(int var14 = var4; var14 < var5; ++var14) {
- int var8 = this.my_view.offsety;
- int var7 = this.my_view.offsetx;
- int var9 = this.my_view.breaks.size();
- int var10 = this.getChild(var14).breakLookAhead;
- Box var13 = this.getChild(var14);
- var13.paint(var1, var2 + this.left, var3 + this.top);
- if ((MStyle.allowForcedBreaks || this.my_view.linebreak) && var6 < this.my_view.offsety && this.needBGPaint()) {
- if (this.bgcolor != null) {
- if (this.reverse_video) {
- var1.setColor(this.fgcolor);
- } else {
- var1.setColor(this.bgcolor);
- }
- } else if (this.reverse_video) {
- var1.setColor(Color.black);
- }
-
- for(int var15 = var3 + this.top + var8; var15 <= var6; var15 += 5 + this.my_view.root.getHeight()) {
- var1.fillRect(var2 + this.left + var7 + var13.getLeft(), var15, var11, this.height);
- }
-
- for(; var6 < this.my_view.offsety; var12 = true) {
- var6 += 5 + this.my_view.root.getHeight();
- int var16 = 0;
-
- for(int var17 = 0; var17 < this.my_view.breaks.size(); ++var17) {
- if (var13.absleft < Math.abs((Integer)this.my_view.breaks.elementAt(var17))) {
- var16 = var17;
- }
- }
-
- if ((Integer)this.my_view.breaks.elementAt(var16) < 0) {
- var1.fillRect(0, var6, var11, this.height);
- } else {
- var1.fillRect(0, var6, var11, this.height);
- }
- }
-
- this.my_view.offsetx = var7;
- this.my_view.offsety = var8;
-
- for(int var18 = this.my_view.breaks.size() - 1; var18 >= var9; --var18) {
- this.my_view.breaks.removeElementAt(var18);
- }
-
- var13.setLookAhead(var10);
- var13.paint(var1, var2 + this.left, var3 + this.top);
- }
- }
-
- return var12;
- }
-
- void paintCleanup(Graphics var1, int var2, int var3, int var4, int var5) {
- Box var6 = this.getParent();
- Color var7 = var6 == null ? this.bgcolor : var6.bgcolor;
- if (var6 == null) {
- Color var10000 = this.fgcolor;
- } else {
- Color var10 = var6.fgcolor;
- }
-
- boolean var9 = var6 == null ? this.reverse_video : var6.reverse_video;
- if (!var7.equals(this.bgcolor) || var9 != this.reverse_video || var6 == null) {
- if (var6 != null) {
- if (var9) {
- var1.setColor(this.fgcolor);
- } else {
- var1.setColor(var7);
- }
- } else if (var9) {
- var1.setColor(var7);
- }
-
- var1.fillRect(var2, var3, var4, var5);
- }
-
- }
-
- public boolean needBGPaint() {
- Color var1;
- boolean var2;
- if (this.parent == null) {
- var1 = this.bgcolor;
- var2 = false;
- } else {
- var1 = this.parent.bgcolor == null ? this.bgcolor : this.parent.bgcolor;
- var2 = this.parent.reverse_video;
- }
-
- return !var1.equals(this.bgcolor) || this.reverse_video != var2;
- }
-
- public void paintBackground(Graphics var1, int var2, int var3) {
- this.rvPaint(var1, var2 + this.left + this.my_view.offsetx, var3 + this.top + this.my_view.offsety, this.width, this.height);
- }
-
- void rvPaint(Graphics var1, int var2, int var3, int var4, int var5) {
- if (this.needBGPaint()) {
- if (this.bgcolor != null) {
- if (this.reverse_video) {
- var1.setColor(this.fgcolor);
- } else {
- var1.setColor(this.bgcolor);
- }
- } else if (this.reverse_video) {
- var1.setColor(Color.black);
- }
-
- var1.fillRect(var2, var3, var4, var5);
- }
-
- }
-
- public void setLookAhead(int var1) {
- this.breakLookAhead = var1;
-
- for(int var2 = 0; var2 < this.children.size(); ++var2) {
- this.getChild(var2).setLookAhead(var1);
- }
-
- }
-
- public String getAttributeString(int var1) {
- Object var2 = null;
- String var5;
- if (this.attributes[var1] != null && this.attributes[var1].length() > 0) {
- var5 = this.attributes[var1];
- } else {
- try {
- var5 = (String)this.attribute_stack[var1].peek();
- } catch (EmptyStackException var4) {
- return AttributeConstants.defaultValue[var1];
- }
- }
-
- if (var5 != null) {
- var5.toLowerCase();
- }
-
- return var5.trim();
- }
-
- public String getDefaultAttributeString(int var1) {
- Object var2 = null;
-
- try {
- var5 = (String)this.attribute_stack[var1].peek();
- } catch (EmptyStackException var4) {
- return AttributeConstants.defaultValue[var1];
- }
-
- if (var5 != null) {
- var5.toLowerCase();
- }
-
- return var5;
- }
-
- public String getRawAttribute(int var1) {
- return this.attributes[var1];
- }
-
- public String getAttributeByIndex(int var1) {
- String var2 = this.getAttributeString(var1);
- if (AttributeConstants.hasUnits[var1] == 'v') {
- var2 = this.processUnits(var2, 1, var1);
- } else if (AttributeConstants.hasUnits[var1] == 'h') {
- var2 = this.processUnits(var2, 0, var1);
- } else if (AttributeConstants.hasUnits[var1] == 'p') {
- var2 = this.processUnits(var2, 2, var1);
- }
-
- return var2;
- }
-
- public String getDefaultAttribute(int var1) {
- String var2 = this.getDefaultAttributeString(var1);
- if (AttributeConstants.hasUnits[var1] == 'v') {
- var2 = this.processUnits(var2, 1, var1);
- } else if (AttributeConstants.hasUnits[var1] == 'h') {
- var2 = this.processUnits(var2, 0, var1);
- } else if (AttributeConstants.hasUnits[var1] == 'p') {
- var2 = this.processUnits(var2, 2, var1);
- }
-
- return var2;
- }
-
- public void setfont(int var1) {
- var1 = this.resolveDepth(var1);
- this.set_font_internal(this.my_view.standardPointsize(var1));
- }
-
- public void setrawfont(int var1) {
- int[] var2 = new int[2];
- this.my_view.getPointsize(var1, var2);
- this.set_font_internal(var2[0]);
- }
-
- private void set_font_internal(int var1) {
- String var2 = null;
- String var3 = null;
- String var4 = null;
- String var5 = this.attributes[82];
- if (var5 == null || var5.length() == 0) {
- try {
- var5 = (String)this.attribute_stack[82].peek();
- } catch (EmptyStackException var13) {
- var5 = "";
- }
- }
-
- if (var5 != null && var5.length() > 0) {
- if ("normal".equals(var5)) {
- var2 = "TimesRoman";
- var3 = "";
- var4 = "normal";
- } else if ("bold".equals(var5)) {
- var2 = "TimesRoman";
- var3 = "bold";
- var4 = "normal";
- } else if ("italic".equals(var5)) {
- var2 = "TimesRoman";
- var3 = "normal";
- var4 = "italic";
- } else if ("bold-italic".equals(var5)) {
- var2 = "TimesRoman";
- var3 = "bold";
- var4 = "italic";
- } else if ("sans-serif".equals(var5)) {
- var2 = "Helvetica";
- var3 = "normal";
- var4 = "normal";
- } else if ("bold-sans-serif".equals(var5)) {
- var2 = "Helvetica";
- var3 = "bold";
- var4 = "normal";
- } else if ("sans-serif-italic".equals(var5)) {
- var2 = "Helvetica";
- var3 = "normal";
- var4 = "italic";
- } else if ("sans-serif-bold-italic".equals(var5)) {
- var2 = "Helvetica";
- var3 = "bold";
- var4 = "italic";
- } else if ("monospace".equals(var5)) {
- var2 = "Courier";
- var3 = "normal";
- var4 = "normal";
- } else if (!"script".equals(var5) && !"bold-script".equals(var5)) {
- if (!"fraktur".equals(var5) && !"bold-fraktur".equals(var5)) {
- if ("double-struck".equals(var5)) {
- var2 = "double-struck";
- var3 = "normal";
- var4 = "normal";
- }
- } else {
- var2 = "fraktur";
- var4 = "normal";
- var3 = "bold-fraktur".equals(var5) ? "bold" : "normal";
- }
- } else {
- var2 = "script";
- var4 = "normal";
- var3 = "bold-script".equals(var5) ? "bold" : "normal";
- }
- } else {
- try {
- var2 = "" + (String)this.attribute_stack[3].peek();
- } catch (EmptyStackException var12) {
- var2 = AttributeConstants.defaultValue[3];
- }
-
- try {
- var3 = "" + (String)this.attribute_stack[1].peek();
- } catch (EmptyStackException var11) {
- var3 = AttributeConstants.defaultValue[1];
- }
-
- try {
- var4 = "" + (String)this.attribute_stack[2].peek();
- } catch (EmptyStackException var10) {
- var4 = AttributeConstants.defaultValue[2];
- }
- }
-
- if (this.attributes[82] == null || this.attributes[82].length() == 0) {
- String var6 = this.attributes[3];
- if (var6 != null && var6.length() > 0) {
- var2 = var6;
- }
-
- var6 = this.attributes[1];
- if (var6 != null && var6.length() > 0) {
- var3 = var6;
- }
-
- var6 = this.attributes[2];
- if (var6 != null && var6.length() > 0) {
- var4 = var6;
- }
- }
-
- if ("script".equals(var2)) {
- this.convertFont(0);
- var2 = "TimesRoman";
- } else if ("fraktur".equals(var2)) {
- this.convertFont(1);
- var2 = "TimesRoman";
- } else if ("double-struck".equals(var2)) {
- this.convertFont(2);
- var2 = "TimesRoman";
- }
-
- int var16 = 0;
- if ("bold".equals(var3)) {
- var16 = 1;
- }
-
- if ("italic".equals(var4)) {
- var16 += 2;
- } else if (!"normal".equals(var4) && this.data != null && this.data.length == 1) {
- var16 += 2;
- }
-
- char var7 = this.data != null && this.data.length > 0 ? this.data[0].getChar() : 97;
- String var8 = var2 + "-p" + var1 + "-s" + var16;
- if ((var7 < 'A' || var7 > 'Z') && (var7 < 'a' || var7 > 'z') && (!"italic".equals(var4) || var7 < '0' || var7 > '9') && (var7 <= 945 || var7 >= 969)) {
- int var9 = var16 & -3;
- var8 = var2 + "-p" + var1 + "-s" + var9;
- this.field_0 = FontBroker.getFont(var8);
- } else {
- this.field_0 = FontBroker.getFont(var8);
- }
-
- if (this.field_0.isItalic()) {
- this.italic = true;
- }
-
- this.field_1 = this.my_view.getHandler().getComponent().getFontMetrics(this.field_0);
- this.xheight = (int)(0.63 * (double)this.field_1.getAscent());
- }
-
- private void convertFont(int var1) {
- int var2 = var1 == 1 ? '\ue4c3' : (var1 == 2 ? '\ue4f7' : (var1 == 0 ? '\ue45b' : 0));
- int var3 = var1 == 1 ? '\ue4bd' : 0;
- StringBuffer var4 = new StringBuffer();
-
- for(int var5 = 0; var5 < this.udata.length(); ++var5) {
- if (Character.isUpperCase(this.udata.charAt(var5))) {
- var4.append((char)(this.udata.charAt(var5) + var2));
- } else if (var1 == 1 && Character.isLowerCase(this.udata.charAt(var5))) {
- var4.append((char)(this.udata.charAt(var5) + var3));
- } else {
- var4.append(this.udata.charAt(var5));
- }
- }
-
- this.setUData(var4.toString());
- this.setData();
- }
-
- public Color resolveColor(int var1) {
- Color var2 = null;
- if (this.syntax_info != null) {
- if ((var1 == 4 || var1 == 79) && this.syntax_info.getFGcolor() != null) {
- return this.syntax_info.getFGcolor();
- }
-
- if ((var1 == 17 || var1 == 80) && this.syntax_info.getBGcolor() != null) {
- return this.syntax_info.getBGcolor();
- }
- }
-
- String var3 = null;
- if (var1 == 4 || var1 == 79) {
- var3 = this.getDeprecatedAttributePair(4, 79);
- }
-
- if (var1 == 17 || var1 == 80) {
- var3 = this.getDeprecatedAttributePair(17, 80);
- }
-
- try {
- if (ColorDictionary.attribTable.containsKey(var3.toLowerCase())) {
- var2 = (Color)ColorDictionary.attribTable.get(var3.toLowerCase());
- } else if (var3.length() == 7 && var3.startsWith("#")) {
- var2 = new Color(Integer.parseInt(var3.substring(1), 16));
- ColorDictionary.attribTable.put(var3, var2);
- } else if (var3.length() == 4 && var3.startsWith("#")) {
- String var4 = var3.charAt(1) + "0" + var3.charAt(2) + "0" + var3.charAt(3) + "0";
- var2 = new Color(Integer.parseInt(var4, 16));
- ColorDictionary.attribTable.put(var3, var2);
- } else {
- if (!ColorDictionary.ColorTable.containsKey(var3.toLowerCase())) {
- var2 = Color.gray;
- System.out.println("Strange color format: " + var3 + " for attrib " + var1);
- throw new Exception();
- }
-
- var2 = new Color(Integer.parseInt((String)ColorDictionary.ColorTable.get(var3.toLowerCase()), 16));
- ColorDictionary.attribTable.put(var3, var2);
- }
- } catch (NumberFormatException var6) {
- System.out.println(var6);
- } catch (Exception var7) {
- }
-
- return var2;
- }
-
- public String getDeprecatedAttributePair(int var1, int var2) {
- String var3 = null;
- if (this.attributes[var2] != null && this.attributes[var2].length() > 0) {
- var3 = this.attributes[var2];
- } else if (this.attributes[var1] != null && this.attributes[var1].length() > 0) {
- var3 = this.attributes[var1];
- } else {
- try {
- var3 = (String)this.attribute_stack[var2].peek();
- } catch (EmptyStackException var5) {
- }
-
- if (var3 == null || var3.length() == 0) {
- try {
- var3 = (String)this.attribute_stack[var1].peek();
- } catch (EmptyStackException var6) {
- var3 = AttributeConstants.defaultValue[var2];
- if (var3 == null || var3.length() == 0) {
- var3 = AttributeConstants.defaultValue[var1];
- }
- }
- }
- }
-
- if (var3 != null) {
- var3.toLowerCase();
- }
-
- return var3.trim();
- }
-
- public int resolveDepth(int var1) {
- String var2 = this.getAttributeByIndex(20);
- if (var2.length() > 0) {
- try {
- var1 = Integer.parseInt(var2);
- } catch (NumberFormatException var4) {
- }
- }
-
- return var1;
- }
-
- public String processUnits(String var1, int var2, int var3) {
- if ("".equals(var1)) {
- return "";
- } else {
- String var5 = "";
- float var6 = 1.0F;
- if (var3 == 9 && var1.trim().equals("infinity")) {
- return var1;
- } else {
- int var4;
- for(var4 = 0; var4 < var1.length() && !Character.isLetter(var1.charAt(var4)) && var1.charAt(var4) != '%'; ++var4) {
- }
-
- if (var4 == 0) {
- var5 = var1.toString();
- } else if (var4 == var1.length()) {
- var6 = Float.valueOf(var1.trim());
- var5 = " ";
- } else {
- var5 = var1.substring(var4);
- var6 = Float.valueOf(var1.substring(0, var4).trim());
- }
-
- return var2 == 2 ? Integer.toString((int)this.convertToEM(var6, var5, var2, var3)) : Float.toString(this.convertToEM(var6, var5, var2, var3));
- }
- }
- }
-
- public float convertToEM(float var1, String var2, int var3, int var4) {
- float var6;
- int var9;
- float var5 = 0.0F;
- var6 = var1;
- var9 = this.my_view.standardPointsize(this.depth);
- label127:
- switch (var2.charAt(0)) {
- case ' ':
- return var1;
- case '%':
- if (var4 != 14 && var4 != 15 && var4 != 16 && var4 != 5) {
- String var24 = this.getDefaultAttributeString(var4);
- if (var24.equals("infinity")) {
- return 10000.0F;
- }
-
- var6 = 0.01F * var1 * Float.valueOf(this.getDefaultAttribute(var4));
- return var6;
- }
-
- int var10;
- for(var10 = 1; var10 < var2.length() && var2.charAt(var10) == ' '; ++var10) {
- }
-
- if (var2.length() == 1) {
- var10 = 0;
- }
-
- switch (var2.charAt(var10)) {
- case 'd':
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var19 = this.field_1.charWidth('M');
- var6 = 0.01F * var1 * (float)this.descent / (float)var19;
- break label127;
- case 'h':
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var18 = this.field_1.charWidth('M');
- var6 = 0.01F * var1 * (float)this.ascent / (float)var18;
- break label127;
- case 'l':
- var6 = 0.0F;
- break label127;
- case 'w':
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var17 = this.field_1.charWidth('M');
- var6 = 0.01F * var1 * (float)this.width / (float)var17;
- break label127;
- default:
- switch (var4) {
- case 5:
- var6 = 0.0F;
- break label127;
- case 14:
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var22 = this.field_1.charWidth('M');
- var6 = 0.01F * var1 * (float)this.width / (float)var22;
- break label127;
- case 15:
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var21 = this.field_1.charWidth('M');
- var6 = 0.01F * var1 * (float)this.ascent / (float)var21;
- break label127;
- case 16:
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var20 = this.field_1.charWidth('M');
- var6 = 0.01F * var1 * (float)this.descent / (float)var20;
- default:
- break label127;
- }
- }
- case 'c':
- var6 = 28.3F * var1 / (float)var9;
- break;
- case 'd':
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var16 = this.field_1.charWidth('M');
- var6 = var1 * (float)this.descent / (float)var16;
- break;
- case 'e':
- switch (var2.charAt(1)) {
- case 'm':
- var6 = var1;
- break label127;
- case 'x':
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var15 = this.field_1.charWidth('M');
- int var7 = this.getXHeight();
- var6 = var1 * (float)var7 / (float)var15;
- default:
- break label127;
- }
- case 'h':
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var14 = this.field_1.charWidth('M');
- var6 = var1 * (float)this.ascent / (float)var14;
- break;
- case 'i':
- var6 = 72.0F * var1 / (float)var9;
- break;
- case 'm':
- var6 = 2.83F * var1 / (float)var9;
- break;
- case 'p':
- switch (var2.charAt(1)) {
- case 'c':
- var6 = 12.0F * var1 / (float)var9;
- break label127;
- case 't':
- var6 = 1.0F * var1 / (float)var9;
- break label127;
- case 'x':
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var13 = this.field_1.charWidth('M');
- var6 = var1 / (float)var13;
- default:
- break label127;
- }
- case 'w':
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var8 = this.field_1.charWidth('M');
- var6 = var1 * (float)this.width / (float)var8;
- break;
- default:
- var6 = var1;
- }
-
- switch (var3) {
- case 0:
- return var6;
- case 1:
- if (this.field_1 == null) {
- this.set_font_internal(this.my_view.standardPointsize(0));
- }
-
- int var23 = this.field_1.charWidth('M');
- int var12 = this.getXHeight();
- return var6 * (float)var23 / (float)var12;
- case 2:
- return var6 * (float)var9;
- default:
- return var6;
- }
- }
-
- public void setSemanticType(int var1) {
- this.semantic_type = var1;
- }
-
- public void setSemanticForm(int var1) {
- this.semantic_form = var1;
- }
-
- public void setSemanticPrecedence(int var1) {
- this.semantic_prec = var1;
- }
-
- public void setSemanticFenceType(int var1) {
- this.semantic_fencetype = var1;
- }
-
- public int semanticType() {
- return this.semantic_type;
- }
-
- public int semanticForm() {
- return this.semantic_form;
- }
-
- public int semanticPrecedence() {
- return this.semantic_prec;
- }
-
- public int semanticFenceType() {
- return this.semantic_fencetype;
- }
-
- public String semanticString() {
- return "{" + this.semantic_type + "}";
- }
-
- protected boolean base_check(Box var1) {
- String var2 = var1.getClass().getName();
- return "webeq3.schema.MRow".equals(var2) && var1.embellished_op ? true : baseCheck.containsKey(var2);
- }
-
- public String opLookupString() {
- Box var1 = this;
- if (this.embellished_op) {
- while(this.base_check(var1)) {
- var1 = var1.getChild(0);
- }
- }
-
- String var2 = var1.udata;
- if ("".equals(var1.udata)) {
- Character var3 = new Character('�');
- var2 = var3.toString();
- }
-
- return var2;
- }
-
- public Node appendChild(Node var1) throws DOMException {
- if (!(var1 instanceof Box)) {
- throw new DOMException((short)3, "Appended node must be of type Box.");
- } else if (this.findChildInTree(this, (Box)var1)) {
- throw new DOMException((short)3, "This node is already in the tree.");
- } else {
- ((Box)var1).my_view = this.my_view;
- ((Box)var1).parent = this;
- ((Box)var1).attribute_stack = this.attribute_stack;
- this.addChild((Box)var1);
- this.my_view.redraw();
- this.my_view.applet.repaint();
- return var1;
- }
- }
-
- public Node cloneNode(boolean var1) {
- Box var2 = this.getCopy();
- if (!var1) {
- var2.children.removeAllElements();
- }
-
- return var2;
- }
-
- public MathMLElement createMathMLElement(String var1) {
- return null;
- }
-
- public String getAttribute(String var1) {
- MathMLDOMAttribute var2 = null;
- if (this.attribute_map != null) {
- var2 = (MathMLDOMAttribute)this.attribute_map.getNamedItem(var1);
- }
-
- return var2 != null ? var2.getValue() : "no such attribute";
- }
-
- public void setAttribute(String var1, String var2) throws DOMException {
- this.setAttributeByName(var1, var2);
- this.my_view.redraw();
- this.my_view.applet.repaint();
- }
-
- public void removeAttribute(String var1) throws DOMException {
- if (this.attribute_map != null && this.attribute_map.getNamedItem(var1) != null) {
- int var2 = this.my_view.lookupIndex(var1);
- if (var2 > -1) {
- AttributeConstants.attribute_names[var2] = "";
- }
-
- if (this.attribute_map != null) {
- this.attribute_map.removeNamedItem(var1);
- }
-
- } else {
- throw new DOMException((short)8, "Can't remove attribute: not in attribute list");
- }
- }
-
- public NamedNodeMap getAttributes() {
- return this.attribute_map;
- }
-
- public String getAttributeNS(String var1, String var2) {
- return null;
- }
-
- public void setAttributeNS(String var1, String var2, String var3) throws DOMException {
- }
-
- public void removeAttributeNS(String var1, String var2) throws DOMException {
- }
-
- public Attr getAttributeNode(String var1) {
- return this.attribute_map != null ? (Attr)this.attribute_map.getNamedItem(var1) : null;
- }
-
- public Attr setAttributeNode(Attr var1) throws DOMException {
- if (var1 != null) {
- if (this.my_view.attributeInUse((MathMLDOMAttribute)var1)) {
- throw new DOMException((short)10, "This attribute node is already in use.");
- } else {
- this.setAttributeByName(var1.getName(), var1.getValue());
- this.my_view.redraw();
- this.my_view.applet.repaint();
- return (Attr)this.attribute_map.getNamedItem(var1.getName());
- }
- } else {
- return null;
- }
- }
-
- public Attr removeAttributeNode(Attr var1) throws DOMException {
- if (this.attribute_map != null && this.attribute_map.getNamedItem(var1.getName()) != null) {
- return this.attribute_map != null ? (Attr)this.attribute_map.removeNamedItem(var1.getName()) : null;
- } else {
- throw new DOMException((short)8, "Can't remove attribute: not in attribute list");
- }
- }
-
- public Attr getAttributeNodeNS(String var1, String var2) {
- return null;
- }
-
- public Attr setAttributeNodeNS(Attr var1) throws DOMException {
- return null;
- }
-
- public NodeList getChildNodes() {
- MathMLDOMNodeList var1 = new MathMLDOMNodeList();
- int var2 = this.children.size();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- var1.addNode((Node)this.children.elementAt(var3));
- }
-
- return var1;
- }
-
- public NodeList getElementsByTagName(String var1) {
- boolean var2 = false;
- if (var1.equals("*")) {
- var2 = true;
- }
-
- MathMLDOMNodeList var3 = new MathMLDOMNodeList();
- this.makeElementList(this, var3, var1, var2);
- return var3;
- }
-
- public NodeList getElementsByTagNameNS(String var1, String var2) {
- return null;
- }
-
- public final Node getFirstChild() {
- return this.children.size() > 0 ? (Node)this.children.firstElement() : null;
- }
-
- public final Node getLastChild() {
- return this.children.size() > 0 ? (Node)this.children.lastElement() : null;
- }
-
- public String getLocalName() {
- return "#element";
- }
-
- public String getNamespaceURI() {
- return null;
- }
-
- public final Node getNextSibling() {
- if (this.parent != null) {
- return this.box_id < this.parent.getNumChildren() - 1 ? this.parent.getChild(this.box_id + 1) : null;
- } else {
- return null;
- }
- }
-
- public String getNodeName() {
- return "#element";
- }
-
- public final short getNodeType() {
- return 1;
- }
-
- public String getNodeValue() throws DOMException {
- return this.adata;
- }
-
- public void setNodeValue(String var1) throws DOMException {
- this.adata = var1;
- this.udata = var1;
- this.setData();
- }
-
- public final Document getOwnerDocument() {
- return this.my_view;
- }
-
- public final Node getParentNode() {
- return this.parent;
- }
-
- public final Node getPreviousSibling() {
- if (this.parent != null) {
- return this.box_id > 0 ? this.parent.getChild(this.box_id - 1) : null;
- } else {
- return null;
- }
- }
-
- public String getPrefix() {
- return null;
- }
-
- public void setPrefix(String var1) throws DOMException {
- }
-
- public String getTagName() {
- return this.make_tag("");
- }
-
- public boolean hasAttribute(String var1) {
- return this.attribute_map != null && this.attribute_map.getNamedItem(var1) != null;
- }
-
- public boolean hasAttributeNS(String var1, String var2) {
- return false;
- }
-
- public final boolean hasChildNodes() {
- return this.children.size() > 0;
- }
-
- public Node insertBefore(Node var1, Node var2) throws DOMException {
- for(Box var3 = this.parent; var3 != null; var3 = var3.parent) {
- if (var3 == var1) {
- throw new DOMException((short)3, "Attempting to insert an ancestor of this node");
- }
- }
-
- if (var2 != null) {
- boolean var4 = false;
-
- for(int var5 = 0; var5 < this.children.size() && !var4; ++var5) {
- if (this.children.elementAt(var5) == var2) {
- var4 = true;
- }
- }
-
- if (!var4) {
- throw new DOMException((short)3, "Reference node is not a child of this node");
- }
- }
-
- if (var2 == null) {
- return this.appendChild(var1);
- } else {
- this.removeChildFromTree(this, (Box)var1);
- this.children.insertElementAt(var1, this.children.indexOf(var2));
- this.my_view.redraw();
- this.my_view.applet.repaint();
- return var1;
- }
- }
-
- public void normalize() {
- }
-
- public Node removeChild(Node var1) throws DOMException {
- if (this.children.removeElement(var1)) {
- this.my_view.redraw();
- this.my_view.applet.repaint();
- return var1;
- } else {
- throw new DOMException((short)8, "Child not found");
- }
- }
-
- public Node replaceChild(Node var1, Node var2) throws DOMException {
- for(Box var3 = this.parent; var3 != null; var3 = var3.parent) {
- if (var3 == var1) {
- throw new DOMException((short)3, "Attempting to replace with an ancestor of this node");
- }
- }
-
- boolean var4 = false;
-
- for(int var5 = 0; var5 < this.children.size() && !var4; ++var5) {
- if (this.children.elementAt(var5) == var2) {
- var4 = true;
- }
- }
-
- if (!var4) {
- throw new DOMException((short)3, "Node to replace is not a child of this node");
- } else {
- this.children.setElementAt(var1, ((Box)var2).box_id);
- this.my_view.redraw();
- this.my_view.applet.repaint();
- return var1;
- }
- }
-
- public boolean supports(String var1, String var2) {
- return false;
- }
-
- public MathMLElement getArgument(long var1) {
- return null;
- }
-
- public MathMLElement setArgument(MathMLElement var1, long var2) {
- return null;
- }
-
- public MathMLElement insertArgument(MathMLElement var1, long var2) {
- return null;
- }
-
- public void deleteArgument(long var1) {
- }
-
- public MathMLElement removeArgument(long var1) {
- return null;
- }
-
- private void makeAttributeMap() {
- this.attribute_map = new MathMLDOMNamedNodeMap();
- Object var1 = null;
-
- for(int var2 = 0; var2 < 86; ++var2) {
- String var4;
- if (this.attributes[var2] != null && this.attributes[var2].length() > 0) {
- var4 = this.attributes[var2];
- } else {
- var4 = null;
- }
-
- if (var4 != null && var4.length() > 0) {
- MathMLDOMAttribute var3 = new MathMLDOMAttribute(this.my_view, AttributeConstants.attribute_names[var2], var2);
- var3.setValue(var4);
- this.attribute_map.addNode(var3);
- }
- }
-
- }
-
- public final void setAttributeByName(String var1, String var2) {
- if (var1 != null) {
- int var3 = this.my_view.lookupIndex(var1);
- if (var3 > -1) {
- this.setAttribute(var3, var2);
- } else {
- MathMLDOMAttribute var4 = new MathMLDOMAttribute(this.my_view, var1, -1);
- var4.setValue(var2);
- if (this.attribute_map != null) {
- this.attribute_map.setNamedItem(var4);
- } else {
- this.makeAttributeMap();
- this.attribute_map.setNamedItem(var4);
- }
- }
- }
-
- }
-
- private void makeElementList(Box var1, MathMLDOMNodeList var2, String var3, boolean var4) {
- if (var1 != null) {
- if (var4 || var1.make_tag("").equals(var3)) {
- var2.addNode(var1);
- }
-
- if (var1.children.size() > 0) {
- for(int var5 = 0; var5 < var1.children.size(); ++var5) {
- Box var6 = (Box)var1.children.elementAt(var5);
- this.makeElementList(var6, var2, var3, var4);
- }
- }
- }
-
- }
-
- private void removeChildFromTree(Box var1, Box var2) throws DOMException {
- if (var2 == var1) {
- if (var2.parent == null) {
- throw new DOMException((short)3, "Can't remove a node that doesn't have a parent");
- }
-
- this.parent.removeChild(var2);
- } else {
- for(int var3 = 0; var3 < var1.children.size(); ++var3) {
- Box var4 = (Box)this.children.elementAt(var3);
- this.removeChildFromTree(var4, var2);
- }
- }
-
- }
-
- private boolean findChildInTree(Box var1, Box var2) {
- if (var2 == var1) {
- if (var2.parent != null) {
- return true;
- }
- } else {
- for(int var3 = 0; var3 < var1.children.size(); ++var3) {
- Box var4 = (Box)this.children.elementAt(var3);
- if (this.findChildInTree(var4, var2)) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- static {
- baseCheck.put("webeq3.schema.MSubsup", baseCheck);
- baseCheck.put("webeq3.schema.MSub", baseCheck);
- baseCheck.put("webeq3.schema.MSup", baseCheck);
- baseCheck.put("webeq3.schema.MUnderover", baseCheck);
- baseCheck.put("webeq3.schema.MUnder", baseCheck);
- baseCheck.put("webeq3.schema.MOver", baseCheck);
- baseCheck.put("webeq3.schema.MFrac", baseCheck);
- }
- }
-