public void WriteXml(XmlWriter w, SerializationFilter filter) { foreach (Spotlight spot in spotlights) { DrawingSerializer.Serialize(w, spot as IKvaSerializable, filter); } }
private void ParseDrawings(XmlReader r, PointF scale) { // Note: // We do not do a metadata.AddDrawing at this point, only add the drawing internally to the keyframe without side-effects. // We wait for the complete keyframe to be parsed and ready, and then merge-insert it into the existing collection. // The drawing post-initialization will only be done at that point. // This prevents doing post-initializations too early when the keyframe is not yet added to the metadata collection. bool isEmpty = r.IsEmptyElement; r.ReadStartElement(); if (isEmpty) { return; } while (r.NodeType == XmlNodeType.Element) { AbstractDrawing drawing = DrawingSerializer.Deserialize(r, scale, TimeHelper.IdentityTimestampMapper, metadata); if (drawing == null || !drawing.IsValid) { continue; } AddDrawing(drawing); drawing.InfosFading.ReferenceTimestamp = this.Position; drawing.InfosFading.AverageTimeStampsPerFrame = metadata.AverageTimeStampsPerFrame; } r.ReadEndElement(); }
public override HistoryMemento PerformUndo() { HistoryMemento redoMemento = new HistoryMementoModifyDrawing(metadata, managerId, drawingId, drawingName, filter); DrawingSerializer.DeserializeModifyMemento(managerId, drawingId, data, metadata); metadata.ModifiedDrawing(managerId, drawingId); return(redoMemento); }
public override HistoryMemento PerformUndo() { HistoryMemento redoMemento = new HistoryMementoAddDrawing(metadata, managerId, drawingId, drawingName); redoMemento.CommandName = commandName; AbstractDrawing drawing = DrawingSerializer.DeserializeMemento(data, metadata); metadata.AddDrawing(managerId, drawing); return(redoMemento); }
private void ParseTracks(XmlReader r, PointF scale) { // TODO: catch empty tag <Tracks/>. r.ReadStartElement(); while (r.NodeType == XmlNodeType.Element) { AbstractDrawing drawing = DrawingSerializer.Deserialize(r, scale, RemapTimestamp, metadata); metadata.AddDrawing(metadata.TrackManager.Id, drawing); } r.ReadEndElement(); }
private void ParseChronos(XmlReader r, PointF scale) { // TODO: catch empty tag <Chronos/>. r.ReadStartElement(); while (r.NodeType == XmlNodeType.Element) { AbstractDrawing drawing = DrawingSerializer.Deserialize(r, scale, TimeHelper.IdentityTimestampMapper, metadata); metadata.AddDrawing(metadata.ChronoManager.Id, drawing); } r.ReadEndElement(); }
public void WriteXml(XmlWriter w, SerializationFilter filter) { foreach (AutoNumber number in autoNumbers) { DrawingSerializer.Serialize(w, number as IKvaSerializable, filter); } if ((filter & SerializationFilter.Style) == SerializationFilter.Style) { w.WriteStartElement("DrawingStyle"); style.WriteXml(w); w.WriteEndElement(); } }
public HistoryMementoDeleteDrawing(Metadata metadata, Guid managerId, Guid drawingId, string drawingName) { this.metadata = metadata; this.managerId = managerId; this.drawingId = drawingId; this.drawingName = drawingName; commandName = string.Format("{0} ({1})", ScreenManagerLang.CommandDeleteDrawing_FriendlyName, drawingName); AbstractDrawingManager manager = metadata.GetDrawingManager(managerId); if (manager != null) { data = DrawingSerializer.SerializeMemento(metadata, manager.GetDrawing(drawingId), SerializationFilter.All, true); } }
public HistoryMementoModifyDrawing(Metadata metadata, Guid managerId, Guid drawingId, string drawingName, SerializationFilter filter) { this.metadata = metadata; this.managerId = managerId; this.drawingId = drawingId; this.drawingName = drawingName; this.filter = filter; UpdateCommandName(drawingName); AbstractDrawingManager manager = metadata.GetDrawingManager(managerId); if (manager != null) { data = DrawingSerializer.SerializeMemento(metadata, manager.GetDrawing(drawingId), filter, false); } }
public void WriteXml(XmlWriter w) { w.WriteStartElement("Position"); if (metadata.TimeCodeBuilder != null) { string userTime = metadata.TimeCodeBuilder(position, TimeType.UserOrigin, TimecodeFormat.Unknown, false); w.WriteAttributeString("UserTime", userTime); } w.WriteString(position.ToString()); w.WriteEndElement(); if (!string.IsNullOrEmpty(Title)) { w.WriteElementString("Title", Title); } if (!string.IsNullOrEmpty(comments)) { w.WriteElementString("Comment", comments); } if (drawings.Count == 0) { return; } // Drawings are written in reverse order to match order of addition. w.WriteStartElement("Drawings"); for (int i = drawings.Count - 1; i >= 0; i--) { IKvaSerializable serializableDrawing = drawings[i] as IKvaSerializable; if (serializableDrawing == null) { continue; } DrawingSerializer.Serialize(w, serializableDrawing, SerializationFilter.All); } w.WriteEndElement(); }
public static string SerializeMemento(Metadata metadata, AbstractMultiDrawing manager, AbstractMultiDrawingItem item, SerializationFilter filter) { IKvaSerializable kvaDrawing = item as IKvaSerializable; if (kvaDrawing == null) { return(""); } string result = ""; XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = false; settings.CloseOutput = true; StringBuilder builder = new StringBuilder(); using (XmlWriter w = XmlWriter.Create(builder, settings)) { w.WriteStartElement("DrawingMemento"); DrawingSerializer.Serialize(w, kvaDrawing, filter); if (item is ITrackable) { metadata.TrackabilityManager.WriteTracker(w, item.Id); } w.WriteEndElement(); w.Flush(); result = builder.ToString(); } return(result); }