fixes to font inheritance

This commit is contained in:
John Jenko 2012-05-11 14:09:58 +00:00
parent 640d2f7313
commit 07fd6f3a4e

View File

@ -311,11 +311,17 @@ public class VE_Font
}
public VE_Font(XmlNode fxml)
{
XmlNode tmp = fxml.SelectSingleNode("Family");
// The "Family", "Size", and "Style" are attributes to the "Font" node
// We were trying to get this information by fxml.SelectSingleNode("Family")
// but this would always return a NULL because this items are Attributes not Nodes.
// thus the FontFamily, FontSize, and FontStyle was never set
XmlAttributeCollection ac = fxml.Attributes; // get the attributes from the passed in Font node
XmlNode tmp = ac.GetNamedItem("Family"); // get the Family attribute from the Font node
if (tmp!=null)FontFamily = tmp.InnerText;
tmp = fxml.SelectSingleNode("Size");
tmp = ac.GetNamedItem("Size"); // get the Size attribute from the Font node
if (tmp != null) FontSize = tmp.InnerText;
tmp = fxml.SelectSingleNode("Style");
tmp = ac.GetNamedItem("Style"); // get the Style attribute from the Font node
if (tmp != null) FontStyle = tmp.InnerText;
}
private string _FontFamily = null;
@ -1346,25 +1352,49 @@ namespace fmtxml
private bool GetPlantBaseDefaultFonts()
{
// read the xml files for the base & plant to get the default fonts and
// make a VE_font for each.
// make a VE_font for each. If we are processing a sub-format (A.K.A. User Format),
// then the "base" format is the parent plant format (ex. the "base" format for
// NSP_00ALL.xml is NSP_ALL.xml)
try
{
bool getFontFromBase = true;
XmlDocument xdoc = new XmlDocument();
xdoc.Load("fmt_xml\\basef.xml");
XmlNode xfont = xdoc.SelectSingleNode("FormatData/Font");
DefBaseFont = new VE_Font(xfont);
XmlNode xfont;
string lfmtName = fmtName;
// for subformats, make the name FMT_00 where FMT is format name & 00 is number
string parentOfSub = "";
// For sub-formats, make the name FMT_00 where FMT is format name & 00 is number
// from original name. This will allow the data load to know it's a sub.
int indx = fmtName.IndexOf('.');
if (indx > 0)
if (indx > 0) // we are working with a sub-format
{
parentOfSub = fmtName.Substring(0, fmtName.Length - 4); // name of sub format's parent
lfmtName = fmtName.Substring(0, fmtName.Length - 4) + "_" + fmtName.Substring(fmtName.Length - 2, 2);
getFontFromBase = false; // get the font from sub-format parent format
}
string parentName = "fmt_xml\\" + parentOfSub + "f.xml";
// if we have a valid parent format then use it to find the default font
if (!getFontFromBase && File.Exists(parentName))
{
xdoc.Load(parentName);
xfont = xdoc.SelectSingleNode("FormatData/Font");
if (xfont != null)
DefBaseFont = new VE_Font(xfont);
else
getFontFromBase = true; // font not found, use the font from base.xml
}
if (getFontFromBase)
{
xdoc.Load("fmt_xml\\basef.xml");
xfont = xdoc.SelectSingleNode("FormatData/Font");
DefBaseFont = new VE_Font(xfont);
}
// Get the font from the current plant format (or sub-format)
string fName = "fmt_xml\\" + lfmtName + "f.xml";
if (!File.Exists(fName)) return false;
xdoc.Load(fName);
xfont = xdoc.SelectSingleNode("FormatData/Font");
if (xfont!=null)DefPlantFont = new VE_Font(xfont);
if (xfont != null) DefPlantFont = new VE_Font(xfont);
}
catch (Exception ex)
{