Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Print / Reach / Serialization / manager / ReachVisualSerializer.cs / 1 / ReachVisualSerializer.cs
/*++
Copyright (C) 2004- 2005 Microsoft Corporation
All rights reserved.
Module Name:
ReachVisualSerializer.cs
Abstract:
Author:
[....] ([....]) 1-December-2004
Revision History:
--*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Xml;
using System.IO;
using System.Security;
using System.Security.Permissions;
using System.ComponentModel.Design.Serialization;
using System.Windows.Xps.Packaging;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Media.Media3D;
using System.Windows.Markup;
namespace System.Windows.Xps.Serialization
{
///
///
///
internal class ReachVisualSerializer :
ReachSerializer
{
///
///
///
public
ReachVisualSerializer(
PackageSerializationManager manager
):
base(manager)
{
}
///
///
///
public
override
void
SerializeObject(
object serializedObject
)
{
Visual v = serializedObject as Visual;
if (v == null)
{
throw new ArgumentException(ReachSR.Get(ReachSRID.MustBeOfType, "serializedObject", typeof(Visual)));
}
XmlWriter pageWriter = ((XpsSerializationManager)SerializationManager).
PackagingPolicy.AcquireXmlWriterForPage();
XmlWriter resWriter = ((XpsSerializationManager)SerializationManager).
PackagingPolicy.AcquireXmlWriterForResourceDictionary();
SerializeTree(v, resWriter, pageWriter);
}
///
///
///
internal
override
void
SerializeObject(
SerializablePropertyContext serializedProperty
)
{
//
// Do nothing here.
// We do not support serializing visuals that come in as
// properties out of context of a FixedPage or a DocumentPage
//
}
private
void
SerializeTree(
Visual visual,
XmlWriter resWriter,
XmlWriter bodyWriter
)
{
Toolbox.StartEvent(Toolbox.DRXSERIALIZETREEGUID);
Size fixedPageSize = ((XpsSerializationManager)SerializationManager).FixedPageSize;
VisualTreeFlattener flattener = ((XpsSerializationManager)SerializationManager).
VisualSerializationService.AcquireVisualTreeFlattener(resWriter,
bodyWriter,
fixedPageSize);
Stack contextStack = new Stack();
if (flattener.StartVisual(visual))
{
contextStack.Push(new NodeContext(visual));
}
while (contextStack.Count > 0)
{
NodeContext ctx = contextStack.Peek();
Visual v = ctx.GetNextChild();
if (v != null)
{
if (flattener.StartVisual(v))
{
contextStack.Push(new NodeContext(v));
}
}
else
{
contextStack.Pop();
flattener.EndVisual();
}
}
Toolbox.EndEvent(Toolbox.DRXSERIALIZETREEGUID);
}
///
///
///
internal
override
void
PersistObjectData(
SerializableObjectContext serializableObjectContext
)
{
//
// Do nothing here
//
}
///
///
///
public
override
XmlWriter
XmlWriter
{
get
{
if(base.XmlWriter == null)
{
base.XmlWriter = SerializationManager.AcquireXmlWriter(typeof(FixedPage));
}
return base.XmlWriter;
}
set
{
base.XmlWriter = null;
SerializationManager.ReleaseXmlWriter(typeof(FixedPage));
}
}
#region Internal Methods
///
///
///
internal
bool
SerializeDisguisedVisual(
object serializedObject
)
{
Visual v = serializedObject as Visual;
if (v == null)
{
throw new ArgumentException(ReachSR.Get(ReachSRID.MustBeOfType, "serializedObject", typeof(Visual)));
}
XmlWriter pageWriter = ((XpsSerializationManager)SerializationManager).
PackagingPolicy.AcquireXmlWriterForPage();
XmlWriter resWriter = ((XpsSerializationManager)SerializationManager).
PackagingPolicy.AcquireXmlWriterForResourceDictionary();
Size fixedPageSize = ((XpsSerializationManager)SerializationManager).FixedPageSize;
VisualTreeFlattener flattener = ((XpsSerializationManager)SerializationManager).
VisualSerializationService.AcquireVisualTreeFlattener(resWriter,
pageWriter,
fixedPageSize);
return flattener.StartVisual(v);
}
#endregion Internal Methods
};
class NodeContext
{
#region Constructor
public NodeContext(Visual v)
{
nodeVisual = v;
index = 0;
}
#endregion Constructor
#region Public properties
public Visual NodeVisual
{
get
{
return nodeVisual;
}
}
#endregion Public properties
#region Public methods
public Visual GetNextChild()
{
Visual child = null;
if (index < VisualTreeHelper.GetChildrenCount(nodeVisual))
{
// VisualTreeFlattener will flatten Viewport3DVisual into an image. We shouldn't
// be attempting to walk Visual3D children.
child = (Visual) VisualTreeHelper.GetChild(nodeVisual, index);
index++;
}
return child;
}
#endregion Public methods
#region Private data
private Visual nodeVisual;
private int index;
#endregion Private data
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SmiConnection.cs
- ConfigurationManagerInternal.cs
- keycontainerpermission.cs
- PrintDocument.cs
- MetadataProperty.cs
- NamedPipeHostedTransportConfiguration.cs
- DataGridRow.cs
- BaseParser.cs
- MemberAccessException.cs
- OrderedDictionary.cs
- NotificationContext.cs
- ParameterBuilder.cs
- DocumentOrderQuery.cs
- MenuItemAutomationPeer.cs
- HttpSessionStateWrapper.cs
- SignatureHelper.cs
- XmlValidatingReaderImpl.cs
- DataControlFieldCell.cs
- XmlSchemaImport.cs
- DrawingCollection.cs
- OdbcStatementHandle.cs
- SqlReferenceCollection.cs
- DrawingGroup.cs
- XmlByteStreamReader.cs
- OleDbRowUpdatingEvent.cs
- CompilerHelpers.cs
- FormParameter.cs
- Win32KeyboardDevice.cs
- DispatcherExceptionFilterEventArgs.cs
- HealthMonitoringSection.cs
- SqlHelper.cs
- SoapFault.cs
- HeaderUtility.cs
- CharacterShapingProperties.cs
- HttpProtocolImporter.cs
- HttpRequestCacheValidator.cs
- Win32NamedPipes.cs
- PartialCachingAttribute.cs
- CorrelationValidator.cs
- FlowDocumentPage.cs
- DocumentSequenceHighlightLayer.cs
- ExceptionHandlersDesigner.cs
- ColumnMapVisitor.cs
- ElementUtil.cs
- PageCodeDomTreeGenerator.cs
- ExpressionBindings.cs
- BackoffTimeoutHelper.cs
- SchemaManager.cs
- DataObjectPastingEventArgs.cs
- SafeRightsManagementHandle.cs
- DataGridViewCheckBoxColumn.cs
- OlePropertyStructs.cs
- Content.cs
- RegexMatch.cs
- OpenTypeLayout.cs
- XappLauncher.cs
- Helpers.cs
- TextRangeEdit.cs
- DataBindingCollection.cs
- CultureInfoConverter.cs
- _FixedSizeReader.cs
- WebResponse.cs
- TemplateLookupAction.cs
- SpellerStatusTable.cs
- SspiSafeHandles.cs
- VisualBasicImportReference.cs
- ConversionHelper.cs
- DSACryptoServiceProvider.cs
- SystemIcons.cs
- DataGrid.cs
- XPathSingletonIterator.cs
- FtpWebResponse.cs
- CodeDirectionExpression.cs
- ParallelRangeManager.cs
- ObjectDataSourceDesigner.cs
- GlyphsSerializer.cs
- DataObjectEventArgs.cs
- ParenthesizePropertyNameAttribute.cs
- ScriptControl.cs
- QueryRewriter.cs
- DataGridColumnHeadersPresenter.cs
- DataSourceControlBuilder.cs
- ProfileService.cs
- UnicodeEncoding.cs
- SimpleModelProvider.cs
- UrlPath.cs
- GradientStopCollection.cs
- GestureRecognizer.cs
- RijndaelManaged.cs
- TextWriterEngine.cs
- StickyNoteHelper.cs
- UIntPtr.cs
- WaveHeader.cs
- ObjectCloneHelper.cs
- CrossContextChannel.cs
- SpinWait.cs
- SurrogateEncoder.cs
- NetMsmqSecurityElement.cs
- CompoundFileIOPermission.cs
- ObjectDataSourceDisposingEventArgs.cs