protected void WriteBeamAndControlPoints(PlanSetup plan, XmlWriter writer, MLCSelector mlc) { writer.WriteStartElement("BeamAndControlPoints"); foreach (var beam in plan.Beams) { writer.WriteStartElement("Beam"); beam.WriteXml(writer); // ... and controlpoints writer.WriteStartElement("ControlPoints"); beam.ControlPoints.WriteXml(writer); foreach (var controlPoint in beam.ControlPoints) { writer.WriteStartElement("ControlPoint"); controlPoint.WriteXml(writer); if (mlc == MLCSelector.IncludeMLC) { float[,] lp = controlPoint.LeafPositions; if (lp.Length > 1) { writer.WriteStartElement("LeafPositions"); for (int i = 0; i <= lp.GetUpperBound(0); i++) { writer.WriteStartElement("Bank"); writer.WriteAttributeString("number", i.ToString()); for (int j = 0; j <= lp.GetUpperBound(1); j++) { float f = lp[i, j]; writer.WriteString(f.ToString() + " "); } writer.WriteEndElement(); //</Bank> } writer.WriteEndElement(); //</LeafPositions> } } writer.WriteEndElement(); //</ControlPoint> } writer.WriteEndElement(); //</ControlPoints> writer.WriteEndElement(); // </Beam> } writer.WriteEndElement(); // </BeamAndControlPoints> }
public void WritePlanXML(PlanSetup plan, XmlWriter writer, CtrlPtSelector writeCtrlPts = CtrlPtSelector.NoControlPoints, MLCSelector mlc = MLCSelector.NoMLC) { Course course = plan.Course; writer.WriteStartElement("Courses"); writer.WriteStartElement("Course"); writer.WriteAttributeString("Id", course.Id); writer.WriteAttributeString("Name", course.Name); writer.WriteAttributeString("Comment", course.Comment); writer.WriteElementString("StartDateTime", course.StartDateTime.ToString()); writer.WriteStartElement("PlanSetups"); writer.WriteStartElement("PlanSetup"); plan.WriteXml(writer); if (writeCtrlPts == CtrlPtSelector.IncludeControlPoints) { WriteBeamAndControlPoints(plan, writer, mlc); } writer.WriteEndElement(); // </PlanSetup> writer.WriteEndElement(); // </PlanSetups> writer.WriteEndElement(); // </Course> writer.WriteEndElement(); // </Courses> }