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 SimpleShapeBase :
ISerializable,
IXmlSerializable,
IDeserializationCallback {
#region Deserialization constructor
// -------------------------------------------------------------------
///
/// Deserialization constructor
///
/// The info.
/// The context.
// -------------------------------------------------------------------
protected SimpleShapeBase(
SerializationInfo info,
StreamingContext context)
: base(info, context) {
if (Tracing.BinaryDeserializationSwitch.Enabled) {
Trace.WriteLine(
"Deserializing the fields of 'SimpleShapeBase'.");
}
double version = info.GetDouble("SimpleShapeBaseVersion");
mText = info.GetString("Text");
mAutoSize = info.GetBoolean("AutoSize");
mAllowTextEditing = info.GetBoolean("AllowTextEditing");
mEditTextClicks = info.GetInt32("EditTextClicks");
mTextArea = (Rectangle)info.GetValue(
"TextArea",
typeof(Rectangle));
mTextStyle = (ITextStyle)info.GetValue(
"TextStyle",
typeof(ITextStyle));
}
#endregion
#region Serialization events
/*
[OnSerializing]
void OnSerializing(StreamingContext context)
{
Trace.WriteLine("Starting to serializing the 'SimpleShapeBase' class...");
}
[OnSerialized]
void OnSerialized(StreamingContext context)
{
Trace.WriteLine("...serialization of 'SimpleShapeBase' finished");
}
*/
#endregion
#region Deserialization events
/*
[OnDeserializing]
void OnDeserializing(StreamingContext context)
{
Trace.Indent();
Trace.WriteLine("Starting deserializing the 'SimpleShapeBase' class...");
}
[OnDeserialized]
void OnDeserialized(StreamingContext context)
{
Trace.WriteLine("...deserialization of 'SimpleShapeBase' finished");
Trace.Unindent();
}
*/
#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 override void GetObjectData(
SerializationInfo info,
StreamingContext context) {
if (Tracing.BinarySerializationSwitch.Enabled) {
Trace.WriteLine(
"Serializing the fields of 'SimpleShapeBase'.");
}
base.GetObjectData(info, context);
info.AddValue("SimpleShapeBaseVersion", simpleShapeBaseVersion);
info.AddValue("Text", mText);
info.AddValue("AutoSize", mAutoSize);
info.AddValue("AllowTextEditing", mAllowTextEditing);
info.AddValue("EditTextClicks", mEditTextClicks);
info.AddValue("TextArea", mTextArea, typeof(Rectangle));
info.AddValue("TextStyle", mTextStyle, typeof(ITextStyle));
}
#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 override 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 override 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 override void WriteXml(System.Xml.XmlWriter writer) {
throw new NotImplementedException("The method or operation is not implemented.");
}
#endregion
// -------------------------------------------------------------------
///
/// 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 override void OnDeserialization(object sender) {
base.OnDeserialization(sender);
if (Tracing.BinaryDeserializationSwitch.Enabled) {
Trace.WriteLine(
"IDeserializationCallback of 'SimpleShapeBase' called.");
}
}
}
}