Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
Surrogates.cs
Package: SharpMap-20976.zip [view]
Upload User: sex100000
Upload Date: 2013-11-09
Package Size: 1377k
Code Size: 9k
Category:
GIS program
Development Platform:
C#
- // Copyright 2005, 2006 - Morten Nielsen (www.iter.dk)
- //
- // This file is part of SharpMap.
- // SharpMap is free software; you can redistribute it and/or modify
- // it under the terms of the GNU Lesser General Public License as published by
- // the Free Software Foundation; either version 2 of the License, or
- // (at your option) any later version.
- //
- // SharpMap is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU Lesser General Public License for more details.
- // You should have received a copy of the GNU Lesser General Public License
- // along with SharpMap; if not, write to the Free Software
- // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Runtime.Serialization;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- namespace SharpMap.Utilities
- {
- /// <summary>
- /// Helper class for serializing System.Drawing.Pen and System.Drawing.Brush
- /// </summary>
- public class Surrogates
- {
- /// <summary>
- /// Gets the surrogate selecteds for System.Drawing.Pen and System.Drawing.Brush
- /// </summary>
- /// <returns>SurrogateSelector</returns>
- public static SurrogateSelector GetSurrogateSelectors()
- {
- System.Runtime.Serialization.SurrogateSelector ss = new System.Runtime.Serialization.SurrogateSelector();
- ss.AddSurrogate(typeof(Pen), new StreamingContext(StreamingContextStates.All), new SharpMap.Utilities.Surrogates.PenSurrogate());
- ss.AddSurrogate(typeof(SolidBrush), new StreamingContext(StreamingContextStates.All), new SharpMap.Utilities.Surrogates.SolidBrushSurrogate());
- ss.AddSurrogate(typeof(System.Drawing.TextureBrush), new StreamingContext(StreamingContextStates.All), new SharpMap.Utilities.Surrogates.TextureBrushSurrogate());
- ss.AddSurrogate(typeof(Matrix), new StreamingContext(StreamingContextStates.All), new SharpMap.Utilities.Surrogates.MatrixSurrogate());
- return ss;
- }
- /// <summary>
- /// Surrogate class used for serializing System.Drawing.SolidBrush
- /// </summary>
- public class SolidBrushSurrogate : ISerializationSurrogate
- {
- /// <summary>
- /// Populates the provided SerializationInfo with the data needed to serialize the object.
- /// </summary>
- /// <param name="obj">The object to serialize.</param>
- /// <param name="info">The SerializationInfo to populate with data.</param>
- /// <param name="context">The destination for this serialization.</param>
- public void GetObjectData(Object obj, SerializationInfo info, StreamingContext context)
- {
- System.Drawing.SolidBrush brush = (System.Drawing.SolidBrush)obj;
- info.AddValue("Color", brush.Color);
- }
- /// <summary>
- /// Populates the object using the information in the SerializationInfo
- /// </summary>
- /// <param name="obj">The object to populate.</param>
- /// <param name="info">The information to populate the object.</param>
- /// <param name="context">The source from which the object is deserialized.</param>
- /// <param name="selector">The surrogate selector where the search for a compatible surrogate begins.</param>
- /// <returns></returns>
- public Object SetObjectData(Object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
- {
- SolidBrush brush = new SolidBrush((Color)info.GetValue("Color", typeof(Color)));
- return null;
- }
- }
- /// <summary>
- /// Surrogate class used for serializing System.Drawing.TextureBrush
- /// </summary>
- public class TextureBrushSurrogate : ISerializationSurrogate
- {
- /// <summary>
- /// Populates the provided SerializationInfo with the data needed to serialize the object.
- /// </summary>
- /// <param name="obj">The object to serialize.</param>
- /// <param name="info">The SerializationInfo to populate with data.</param>
- /// <param name="context">The destination for this serialization.</param>
- public void GetObjectData(Object obj, SerializationInfo info, StreamingContext context)
- {
- TextureBrush brush = (TextureBrush)obj;
- info.AddValue("Image",brush.Image);
- info.AddValue("Transform", brush.Transform);
- info.AddValue("WrapMode", brush.WrapMode);
- }
- /// <summary>
- /// Populates the object using the information in the SerializationInfo
- /// </summary>
- /// <param name="obj">The object to populate.</param>
- /// <param name="info">The information to populate the object.</param>
- /// <param name="context">The source from which the object is deserialized.</param>
- /// <param name="selector">The surrogate selector where the search for a compatible surrogate begins.</param>
- /// <returns></returns>
- public Object SetObjectData(Object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
- {
- TextureBrush brush = new TextureBrush((Image)info.GetValue("Image", typeof(Image)));
- brush.Transform = (Matrix)info.GetValue("Transform", typeof(Matrix));
- brush.WrapMode = (WrapMode)info.GetValue("WrapMode", typeof(WrapMode));
- return null;
- }
- }
- /// <summary>
- /// Surrogate class used for serializing System.Drawing.Pen
- /// </summary>
- public class PenSurrogate : ISerializationSurrogate
- {
- /// <summary>
- /// Populates the provided SerializationInfo with the data needed to serialize the object.
- /// </summary>
- /// <param name="obj">The object to serialize.</param>
- /// <param name="info">The SerializationInfo to populate with data.</param>
- /// <param name="context">The destination for this serialization.</param>
- public void GetObjectData(Object obj, SerializationInfo info, StreamingContext context)
- {
- System.Drawing.Pen pen = (System.Drawing.Pen)obj;
- if (pen.Color != Color.Empty)
- {
- info.AddValue("Color", pen.Color);
- info.AddValue("Width", pen.Width);
- info.AddValue("Alignment", pen.Alignment);
- //info.AddValue("Brush", pen.Brush);
- info.AddValue("CompoundArray", pen.CompoundArray);
- //Todo:
- //info.AddValue("CustomEndCap", pen.CustomEndCap);
- //info.AddValue("CustomStartCap", pen.CustomStartCap);
- //pen.DashCap;
- //pen.DashOffset;
- info.AddValue("DashPattern", pen.DashPattern);
- //pen.DashStyle;
- //pen.EndCap;
- //pen.LineJoin;
- //pen.MiterLimit;
- //pen.PenType;
- //pen.StartCap;
- info.AddValue("Transform", pen.Transform);
- }
- }
- /// <summary>
- /// Populates the object using the information in the SerializationInfo
- /// </summary>
- /// <param name="obj">The object to populate.</param>
- /// <param name="info">The information to populate the object.</param>
- /// <param name="context">The source from which the object is deserialized.</param>
- /// <param name="selector">The surrogate selector where the search for a compatible surrogate begins.</param>
- /// <returns></returns>
- public Object SetObjectData(Object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
- {
- Pen pen = new Pen((Color)info.GetValue("Color", typeof(Color)));
- pen.Width = (float)info.GetValue("Width", typeof(float));
- pen.Alignment = (PenAlignment)info.GetValue("Alignment", typeof(PenAlignment));
- //pen.Brush = (Brush)info.GetValue("Brush", typeof(Brush));
- try { pen.CompoundArray = (float[])info.GetValue("CompoundArray", typeof(float[])); } catch { }
- //pen.CustomEndCap = (CustomLineCap)info.GetValue("CustomEndCap", typeof(CustomLineCap));
- //pen.CustomStartCap = (CustomLineCap)info.GetValue("CustomStartCap", typeof(CustomLineCap));
- pen.DashPattern = (float[])info.GetValue("DashPattern", typeof(float[]));
- try { pen.Transform = (Matrix)info.GetValue("Transform", typeof(Matrix)); } catch { }
- return null;
- }
- }
- /// <summary>
- /// Surrogate class used for serializing System.Drawing.Drawing2D.Matrix
- /// </summary>
- public class MatrixSurrogate : ISerializationSurrogate
- {
- /// <summary>
- /// Populates the provided SerializationInfo with the data needed to serialize the object.
- /// </summary>
- /// <param name="obj">The object to serialize.</param>
- /// <param name="info">The SerializationInfo to populate with data.</param>
- /// <param name="context">The destination for this serialization.</param>
- public void GetObjectData(Object obj, SerializationInfo info, StreamingContext context)
- {
- Matrix mat = (Matrix)obj;
- info.AddValue("Elements", mat.Elements);
- }
- /// <summary>
- /// Populates the object using the information in the SerializationInfo
- /// </summary>
- /// <param name="obj">The object to populate.</param>
- /// <param name="info">The information to populate the object.</param>
- /// <param name="context">The source from which the object is deserialized.</param>
- /// <param name="selector">The surrogate selector where the search for a compatible surrogate begins.</param>
- /// <returns></returns>
- public Object SetObjectData(Object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
- {
- float[] elements = (float[])info.GetValue("Elements", typeof(float[]));
- Matrix mat = new Matrix(elements[0], elements[1], elements[2], elements[3], elements[4], elements[5]);
- return null;
- }
- }
- }
- }