public override void WriteAttributesAndContent(XmlTextWriter xmloutput)
{
// Write attributes
xmloutput.WriteAttributeString("start-control", XmlConvert.ToString(controlId1.id));
xmloutput.WriteAttributeString("end-control", XmlConvert.ToString(controlId2.id));
// Write elements
if (flagging != FlaggingKind.None) {
// Flagging element. -- what kind of flagging and start/stop point.
string flagKind;
switch (flagging) {
case FlaggingKind.Begin: flagKind = "beginning-part"; break;
case FlaggingKind.End: flagKind = "end-part"; break;
case FlaggingKind.All: flagKind = "all"; break;
default: Debug.Fail("bad flagging kind"); flagKind = ""; break;
}
xmloutput.WriteStartElement("flagging");
xmloutput.WriteAttributeString("kind", flagKind);
if (flagging != FlaggingKind.All) {
xmloutput.WriteAttributeString("x", XmlConvert.ToString(flagStartStop.X));
xmloutput.WriteAttributeString("y", XmlConvert.ToString(flagStartStop.Y));
}
xmloutput.WriteEndElement();
}
if (bends != null && bends.Length > 0) {
// Bends
xmloutput.WriteStartElement("bends");
foreach (PointF location in bends) {
xmloutput.WriteStartElement("location");
xmloutput.WriteAttributeString("x", XmlConvert.ToString(location.X));
xmloutput.WriteAttributeString("y", XmlConvert.ToString(location.Y));
xmloutput.WriteEndElement();
}
xmloutput.WriteEndElement();
}
if (gaps != null && gaps.Length > 0) {
// Gaps
xmloutput.WriteStartElement("gaps");
for (int i = 0; i < gaps.Length; ++i) {
xmloutput.WriteStartElement("gap");
xmloutput.WriteAttributeString("start", XmlConvert.ToString(gaps[i].distanceFromStart));
xmloutput.WriteAttributeString("length", XmlConvert.ToString(gaps[i].length));
xmloutput.WriteEndElement();
}
xmloutput.WriteEndElement();
}
}