using System;
using System.Diagnostics;
using System.Drawing;
using System.Runtime.Serialization;
using System.Xml.Schema;
using System.Xml.Serialization;
namespace Netron.Diagramming.Core {
///
/// Complementary partial class related to (de)serialization.
///
[Serializable]
public partial class Page : ISerializable, IXmlSerializable, IDeserializationCallback {
#region Deserialization constructor
///
/// Deserialization constructor
///
/// The info.
/// The context.
protected Page(SerializationInfo info, StreamingContext context) {
if (Tracing.BinaryDeserializationSwitch.Enabled)
Trace.WriteLine("Deserializing the fields of 'Page'.");
double version = info.GetDouble("PageVersion");
Ambience = info.GetValue(
"Ambience",
typeof(Ambience)) as Ambience;
//mDefaultLayer = info.GetValue("DefaultLayer", typeof(ILayer)) as ILayer;
mLayers = info.GetValue(
"Layers",
typeof(CollectionBase)) as CollectionBase;
mName = (string)info.GetValue(
"Name",
typeof(string));
mOrigin = (Point)info.GetValue(
"Origin",
typeof(Point));
mMagnification = (SizeF)info.GetValue(
"Magnification",
typeof(SizeF));
}
#endregion
#region Serialization events
/*
[OnSerializing]
void OnSerializing(StreamingContext context)
{
Trace.Indent();
Trace.WriteLine("Starting to serializing the 'Page' class...");
}
[OnSerialized]
void OnSerialized(StreamingContext context)
{
Trace.WriteLine("...serialization of 'Page' finished");
Trace.Indent();
}
*/
#endregion
#region Deserialization events
/*
[OnDeserializing]
void OnDeserializing(StreamingContext context)
{
Trace.Indent();
Trace.WriteLine("Starting deserializing the 'Page' class...");
}
*/
[OnDeserialized]
void OnDeserialized(StreamingContext context) {
Init();
if (Tracing.BinaryDeserializationSwitch.Enabled)
Trace.WriteLine("...deserialization of 'Page' finished");
}
#endregion
#region Serialization
///
/// Populates a with the data needed to serialize the target object.
///
/// The to populate with data.
/// The destination (see ) for this serialization.
/// The caller does not have the required permission.
public void GetObjectData(SerializationInfo info, StreamingContext context) {
if (Tracing.BinarySerializationSwitch.Enabled)
Trace.WriteLine("Serializing the fields of 'Page'.");
info.AddValue("PageVersion", pageVersion);
//for the full version there will be a collection of pages here
info.AddValue(
"Ambience",
this.Ambience,
typeof(Ambience));
//info.AddValue("DefaultLayer", this.DefaultLayer, typeof(ILayer));
info.AddValue(
"Layers",
this.mLayers,
typeof(CollectionBase));
info.AddValue(
"Name",
mName,
typeof(string));
info.AddValue(
"Magnification",
mMagnification,
typeof(SizeF));
info.AddValue(
"Origin",
mOrigin,
typeof(Point));
}
#endregion
#region Xml serialization
///
/// This property is reserved, apply the to the class instead.
///
///
/// An that describes the XML representation of the object that is produced by the method and consumed by the method.
///
public XmlSchema GetSchema() {
throw new NotImplementedException("The method or operation is not implemented.");
}
///
/// Generates an object from its XML representation.
///
/// The stream from which the object is deserialized.
public void ReadXml(System.Xml.XmlReader reader) {
throw new NotImplementedException("The method or operation is not implemented.");
}
///
/// Converts an object into its XML representation.
///
/// The stream to which the object is serialized.
public void WriteXml(System.Xml.XmlWriter writer) {
throw new NotImplementedException("The method or operation is not implemented.");
}
#endregion
#region IDeserializationCallback Members
///
/// Runs when the entire object graph has been deserialized.
///
/// The object that initiated the callback. The functionality for this parameter is not currently implemented.
public void OnDeserialization(object sender) {
if (Tracing.BinaryDeserializationSwitch.Enabled)
Trace.WriteLine("IDeserializationCallback of 'Page' called.");
}
#endregion
}
}