public static void ApplyAttrs(Node node, FractionAttributes fractionAttributes)
 {
     if (((node != null) && (node.type_ != null)) && ((node.type_.type == ElementType.Mfrac) && (fractionAttributes != null)))
     {
         if (fractionAttributes.isBevelled)
         {
             if (node.attrs == null)
             {
                 node.attrs = new AttributeList();
             }
             node.attrs.Add("bevelled", "true");
         }
         else if (node.attrs != null)
         {
             Nodes.Attribute attribute = node.attrs.Get("bevelled");
             if (attribute != null)
             {
                 node.attrs.Remove(attribute);
             }
         }
         if (fractionAttributes.lineThickness != 1)
         {
             if (node.attrs == null)
             {
                 node.attrs = new AttributeList();
             }
             node.attrs.Add("linethickness", fractionAttributes.lineThickness.ToString());
         }
         else if (node.attrs != null)
         {
             Nodes.Attribute attribute = node.attrs.Get("linethickness");
             if (attribute != null)
             {
                 node.attrs.Remove(attribute);
             }
         }
         if (fractionAttributes.denomAlign != FractionAlign.CENTER)
         {
             if (node.attrs == null)
             {
                 node.attrs = new AttributeList();
             }
             if (fractionAttributes.denomAlign == FractionAlign.LEFT)
             {
                 node.attrs.Add("denomalign", "left");
             }
             else if (fractionAttributes.denomAlign == FractionAlign.RIGHT)
             {
                 node.attrs.Add("denomalign", "right");
             }
             else
             {
                 node.attrs.Add("denomalign", "center");
             }
         }
         else if (node.attrs != null)
         {
             Nodes.Attribute attribute = node.attrs.Get("denomalign");
             if (attribute != null)
             {
                 node.attrs.Remove(attribute);
             }
         }
         if (fractionAttributes.numAlign != FractionAlign.CENTER)
         {
             if (node.attrs == null)
             {
                 node.attrs = new AttributeList();
             }
             if (fractionAttributes.numAlign == FractionAlign.LEFT)
             {
                 node.attrs.Add("numalign", "left");
             }
             else if (fractionAttributes.numAlign == FractionAlign.RIGHT)
             {
                 node.attrs.Add("numalign", "right");
             }
             else
             {
                 node.attrs.Add("numalign", "center");
             }
         }
         else if (node.attrs != null)
         {
             Nodes.Attribute attribute = node.attrs.Get("numalign");
             if (attribute != null)
             {
                 node.attrs.Remove(attribute);
             }
         }
     }
 }
 public static FractionAttributes FractionAttrsFromNode(Node node)
 {
     Nodes.Attribute attribute = null;
     FractionAttributes fractionAttributes = null;
     try
     {
         if (node.attrs == null)
         {
             return fractionAttributes;
         }
         node.attrs.Reset();
         for (attribute = node.attrs.Next(); attribute != null; attribute = node.attrs.Next())
         {
             string s = attribute.val.Trim();
             if (attribute.name == "linethickness")
             {
                 if (s.Length > 0)
                 {
                     int lineThickness = 1;
                     if (s.ToUpper() == "THIN")
                     {
                         lineThickness = 1;
                     }
                     else if (s.ToUpper() == "MEDIUM")
                     {
                         lineThickness = 2;
                     }
                     else if (s.ToUpper() == "THICK")
                     {
                         lineThickness = 3;
                     }
                     else
                     {
                         bool isInteger = true;
                         for (int i = 0; i < s.Length; i++)
                         {
                             if (s[i] == '.')
                             {
                                 isInteger = false;
                             }
                         }
                         if (isInteger)
                         {
                             try
                             {
                                 lineThickness = Convert.ToInt32(s);
                             }
                             catch
                             {
                                 lineThickness = 1;
                             }
                         }
                         else
                         {
                             lineThickness = 1;
                         }
                     }
                     if (fractionAttributes == null)
                     {
                         fractionAttributes = new FractionAttributes();
                     }
                     fractionAttributes.lineThickness = lineThickness;
                 }
             }
             else if (attribute.name == "numalign")
             {
                 if (s.Length > 0)
                 {
                     if (fractionAttributes == null)
                     {
                         fractionAttributes = new FractionAttributes();
                     }
                     if (s.ToUpper() == "LEFT")
                     {
                         fractionAttributes.numAlign = FractionAlign.LEFT;
                     }
                     else if (s.ToUpper() == "CENTER")
                     {
                         fractionAttributes.numAlign = FractionAlign.CENTER;
                     }
                     else if (s.ToUpper() == "RIGHT")
                     {
                         fractionAttributes.numAlign = FractionAlign.RIGHT;
                     }
                 }
             }
             else if (attribute.name == "denomalign")
             {
                 if (s.Length > 0)
                 {
                     if (fractionAttributes == null)
                     {
                         fractionAttributes = new FractionAttributes();
                     }
                     if (s.ToUpper() == "LEFT")
                     {
                         fractionAttributes.denomAlign = FractionAlign.LEFT;
                     }
                     else if (s.ToUpper() == "CENTER")
                     {
                         fractionAttributes.denomAlign = FractionAlign.CENTER;
                     }
                     else if (s.ToUpper() == "RIGHT")
                     {
                         fractionAttributes.denomAlign = FractionAlign.RIGHT;
                     }
                 }
             }
             else if ((attribute.name == "bevelled") && (s.Length > 0))
             {
                 if (fractionAttributes == null)
                 {
                     fractionAttributes = new FractionAttributes();
                 }
                 if (s.ToUpper() == "TRUE")
                 {
                     fractionAttributes.isBevelled = true;
                 }
                 else
                 {
                     fractionAttributes.isBevelled = false;
                 }
             }
         }
         node.attrs.Reset();
     }
     catch
     {
     }
     return fractionAttributes;
 }
 public static FractionAttributes FractionAttrsFromNode(float emHeight, float DPI, Node node)
 {
     Nodes.Attribute attribute = null;
     FractionAttributes attributes = null;
     try
     {
         if (node.attrs == null)
         {
             return attributes;
         }
         node.attrs.Reset();
         for (attribute = node.attrs.Next(); attribute != null; attribute = node.attrs.Next())
         {
             string s = attribute.val.Trim();
             if (attribute.name == "linethickness")
             {
                 if (s.Length > 0)
                 {
                     int lineThickness = 1;
                     if (s.ToUpper() == "THIN")
                     {
                         lineThickness = 1;
                     }
                     else if (s.ToUpper() == "MEDIUM")
                     {
                         lineThickness = 2;
                     }
                     else if (s.ToUpper() == "THICK")
                     {
                         lineThickness = 3;
                     }
                     else
                     {
                         bool isInteger = true;
                         for (int i = 0; i < s.Length; i++)
                         {
                             if (s[i] == '.')
                             {
                                 isInteger = false;
                             }
                         }
                         if (isInteger)
                         {
                             try
                             {
                                 lineThickness = Convert.ToInt32(s);
                             }
                             catch
                             {
                                 try
                                 {
                                     if (!char.IsLetter(s[s.Length - 1]))
                                     {
                                         s = s + "ex";
                                     }
                                     lineThickness = AttributeBuilder.FontWidth(emHeight, DPI, s, 1);
                                 }
                                 catch
                                 {
                                     lineThickness = 1;
                                 }
                             }
                         }
                         else
                         {
                             try
                             {
                                 if (!char.IsLetter(s[s.Length - 1]))
                                 {
                                     s = s + "ex";
                                 }
                                 lineThickness = AttributeBuilder.FontWidth(emHeight, DPI, s, 1);
                             }
                             catch
                             {
                                 lineThickness = 1;
                             }
                         }
                     }
                     if (attributes == null)
                     {
                         attributes = new FractionAttributes();
                     }
                     attributes.lineThickness = lineThickness;
                 }
             }
             else if (attribute.name == "numalign")
             {
                 if (s.Length > 0)
                 {
                     if (attributes == null)
                     {
                         attributes = new FractionAttributes();
                     }
                     if (s.ToUpper() == "LEFT")
                     {
                         attributes.numAlign = FractionAlign.LEFT;
                     }
                     else if (s.ToUpper() == "CENTER")
                     {
                         attributes.numAlign = FractionAlign.CENTER;
                     }
                     else if (s.ToUpper() == "RIGHT")
                     {
                         attributes.numAlign = FractionAlign.RIGHT;
                     }
                 }
             }
             else if (attribute.name == "denomalign")
             {
                 if (s.Length > 0)
                 {
                     if (attributes == null)
                     {
                         attributes = new FractionAttributes();
                     }
                     if (s.ToUpper() == "LEFT")
                     {
                         attributes.denomAlign = FractionAlign.LEFT;
                     }
                     else if (s.ToUpper() == "CENTER")
                     {
                         attributes.denomAlign = FractionAlign.CENTER;
                     }
                     else if (s.ToUpper() == "RIGHT")
                     {
                         attributes.denomAlign = FractionAlign.RIGHT;
                     }
                 }
             }
             else if ((attribute.name == "bevelled") && (s.Length > 0))
             {
                 if (attributes == null)
                 {
                     attributes = new FractionAttributes();
                 }
                 if (s.ToUpper() == "TRUE")
                 {
                     attributes.isBevelled = true;
                 }
                 else
                 {
                     attributes.isBevelled = false;
                 }
             }
         }
         node.attrs.Reset();
     }
     catch
     {
     }
     return attributes;
 }
 //
 public bool ApplyFractionAttrs (Node node, FractionAttributes FractionAttributes)
 {
     try
     {
         this.OnInsert (false);
         AttributeBuilder.ApplyAttrs (node, FractionAttributes);
     }
     catch
     {
     }
     return true;
 }