private void xmlcamera(bool write, string filename)
{
bool exists = File.Exists(filename);
if (write || !exists)
{
try
{
XmlTextWriter xmlwriter = new XmlTextWriter(filename, Encoding.ASCII);
xmlwriter.Formatting = Formatting.Indented;
xmlwriter.WriteStartDocument();
xmlwriter.WriteStartElement("Cameras");
foreach (string key in cameras.Keys)
{
try
{
if (key == "")
continue;
xmlwriter.WriteStartElement("Camera");
xmlwriter.WriteElementString("name", cameras[key].name);
xmlwriter.WriteElementString("flen", cameras[key].focallen.ToString(new System.Globalization.CultureInfo("en-US")));
xmlwriter.WriteElementString("imgh", cameras[key].imageheight.ToString(new System.Globalization.CultureInfo("en-US")));
xmlwriter.WriteElementString("imgw", cameras[key].imagewidth.ToString(new System.Globalization.CultureInfo("en-US")));
xmlwriter.WriteElementString("senh", cameras[key].sensorheight.ToString(new System.Globalization.CultureInfo("en-US")));
xmlwriter.WriteElementString("senw", cameras[key].sensorwidth.ToString(new System.Globalization.CultureInfo("en-US")));
xmlwriter.WriteEndElement();
}
catch { }
}
xmlwriter.WriteEndElement();
xmlwriter.WriteEndDocument();
xmlwriter.Close();
}
catch (Exception ex) { CustomMessageBox.Show(ex.ToString()); }
}
else
{
try
{
using (XmlTextReader xmlreader = new XmlTextReader(filename))
{
while (xmlreader.Read())
{
xmlreader.MoveToElement();
try
{
switch (xmlreader.Name)
{
case "Camera":
{
camerainfo camera = new camerainfo();
while (xmlreader.Read())
{
bool dobreak = false;
xmlreader.MoveToElement();
switch (xmlreader.Name)
{
case "name":
camera.name = xmlreader.ReadString();
break;
case "imgw":
camera.imagewidth = float.Parse(xmlreader.ReadString(), new System.Globalization.CultureInfo("en-US"));
break;
case "imgh":
camera.imageheight = float.Parse(xmlreader.ReadString(), new System.Globalization.CultureInfo("en-US"));
break;
case "senw":
camera.sensorwidth = float.Parse(xmlreader.ReadString(), new System.Globalization.CultureInfo("en-US"));
break;
case "senh":
camera.sensorheight = float.Parse(xmlreader.ReadString(), new System.Globalization.CultureInfo("en-US"));
break;
case "flen":
camera.focallen = float.Parse(xmlreader.ReadString(), new System.Globalization.CultureInfo("en-US"));
break;
case "Camera":
cameras[camera.name] = camera;
dobreak = true;
break;
}
if (dobreak)
break;
}
string temp = xmlreader.ReadString();
}
break;
case "Config":
break;
case "xml":
break;
default:
if (xmlreader.Name == "") // line feeds
break;
//config[xmlreader.Name] = xmlreader.ReadString();
break;
}
}
catch (Exception ee) { Console.WriteLine(ee.Message); } // silent fail on bad entry
}
}
}
catch (Exception ex) { Console.WriteLine("Bad Camera File: " + ex.ToString()); } // bad config file
// populate list
foreach (var camera in cameras.Values)
{
if (!CMB_camera.Items.Contains(camera.name))
CMB_camera.Items.Add(camera.name);
}
}
}