Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Print / Reach / Serialization / manager / ReachDocumentPageSerializer.cs / 1 / ReachDocumentPageSerializer.cs
/*++
Copyright (C) 2004- 2005 Microsoft Corporation
All rights reserved.
Module Name:
ReachDocumentPageSerializer.cs
Abstract:
Author:
[....] ([....]) January 2005
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.Printing;
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.Markup;
using System.Windows.Shapes;
namespace System.Windows.Xps.Serialization
{
///
///
///
internal class DocumentPageSerializer :
ReachSerializer
{
///
///
///
public
DocumentPageSerializer(
PackageSerializationManager manager
)
:
base(manager)
{
}
public
override
void
SerializeObject(
Object serializedObject
)
{
//
// Create the ImageTable required by the Type Converters
// The Image table at this time is shared / currentPage
//
((XpsSerializationManager)SerializationManager).ResourcePolicy.CurrentPageImageTable = new Dictionary();
//
// Create the ColorContextTable required by the Type Converters
// The Image table at this time is shared / currentPage
//
((XpsSerializationManager)SerializationManager).ResourcePolicy.CurrentPageColorContextTable = new Dictionary();
base.SerializeObject(serializedObject);
}
///
///
///
internal
override
void
SerializeObject(
SerializablePropertyContext serializedProperty
)
{
//
// Create the ImageTable required by the Type Converters
// The Image table at this time is shared / currentPage
//
((XpsSerializationManager)SerializationManager).ResourcePolicy.CurrentPageImageTable = new Dictionary();
//
// Create the ColorContextTable required by the Type Converters
// The Image table at this time is shared / currentPage
//
((XpsSerializationManager)SerializationManager).ResourcePolicy.CurrentPageColorContextTable = new Dictionary();
base.SerializeObject(serializedProperty);
}
///
///
///
internal
override
void
PersistObjectData(
SerializableObjectContext serializableObjectContext
)
{
if (SerializationManager is XpsSerializationManager)
{
(SerializationManager as XpsSerializationManager).RegisterPageStart();
}
//
// A DocumentPage is persisted as a FixedPage
//
DocumentPage dp = (DocumentPage)serializableObjectContext.TargetObject;
ReachTreeWalker treeWalker = new ReachTreeWalker(this);
treeWalker.SerializeLinksInDocumentPage(dp);
XmlWriter.WriteStartElement(XpsS0Markup.FixedPage);
String xmlnsForType = SerializationManager.GetXmlNSForType(typeof(FixedPage));
if (xmlnsForType != null)
{
XmlWriter.WriteAttributeString(XpsS0Markup.Xmlns, xmlnsForType);
XmlWriter.WriteAttributeString(XpsS0Markup.XmlnsX, XpsS0Markup.XmlnsXSchema);
if (SerializationManager.Language != null)
{
XmlWriter.WriteAttributeString(XpsS0Markup.XmlLang, SerializationManager.Language.ToString());
}
else
{
XmlWriter.WriteAttributeString(XpsS0Markup.XmlLang, XpsS0Markup.XmlLangValue);
}
}
XpsSerializationPrintTicketRequiredEventArgs e =
new XpsSerializationPrintTicketRequiredEventArgs(PrintTicketLevel.FixedPagePrintTicket,
0);
((XpsSerializationManager)SerializationManager).OnXPSSerializationPrintTicketRequired(e);
PrintTicket printTicket = null;
if(e.Modified)
{
printTicket = e.PrintTicket;
}
Size size = Toolbox.ValidateDocumentSize(dp.Size, printTicket);
((XpsSerializationManager)SerializationManager).FixedPageSize = size;
//
//write length and width elements
//
WriteAttribute(XmlWriter, XpsS0Markup.PageWidth, size.Width);
WriteAttribute(XmlWriter, XpsS0Markup.PageHeight, size.Height);
//
// Serialize the data for the PrintTicket
//
if(printTicket != null)
{
PrintTicketSerializer serializer = new PrintTicketSerializer(SerializationManager);
serializer.SerializeObject(printTicket);
}
SerializeChild(dp.Visual, serializableObjectContext);
((XpsSerializationManager)SerializationManager).PackagingPolicy.PreCommitCurrentPage();
//copy hyperlinks into stream
treeWalker.CommitHyperlinks();
XmlWriter.WriteEndElement();
XmlWriter = null;
//
// Free the image table in use for this page
//
((XpsSerializationManager)SerializationManager).ResourcePolicy.CurrentPageImageTable = null;
//
// Free the colorContext table in use for this page
//
((XpsSerializationManager)SerializationManager).ResourcePolicy.CurrentPageColorContextTable = null;
((XpsSerializationManager)SerializationManager).VisualSerializationService.ReleaseVisualTreeFlattener();
if( SerializationManager is XpsSerializationManager)
{
(SerializationManager as XpsSerializationManager).RegisterPageEnd();
}
//
// Signal to any registered callers that the Page has been serialized
//
XpsSerializationProgressChangedEventArgs progressEvent =
new XpsSerializationProgressChangedEventArgs(XpsWritingProgressChangeLevel.FixedPageWritingProgress,
0,
0,
null);
((XpsSerializationManager)SerializationManager).OnXPSSerializationProgressChanged(progressEvent);
}
private void SerializeChild(Visual child, SerializableObjectContext parentContext)
{
ReachSerializer serializer = SerializationManager.GetSerializer(child);
if (serializer != null)
{
serializer.SerializeObject(child);
}
}
private void WriteAttribute(XmlWriter writer, string name, object value)
{
writer.WriteAttributeString(name, TypeDescriptor.GetConverter(value).ConvertToInvariantString(value));
}
///
///
///
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));
}
}
};
}
// 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
- MembershipPasswordException.cs
- PagedDataSource.cs
- WebPartDescription.cs
- TypeSystem.cs
- ValidationErrorCollection.cs
- ToolstripProfessionalRenderer.cs
- StylusPlugin.cs
- FieldTemplateUserControl.cs
- DataGridViewButtonCell.cs
- HtmlTableCellCollection.cs
- CompressStream.cs
- TypeDescriptionProviderAttribute.cs
- Highlights.cs
- IntSecurity.cs
- HiddenField.cs
- ResourceProviderFactory.cs
- SmtpNegotiateAuthenticationModule.cs
- ExecutionContext.cs
- Intellisense.cs
- Help.cs
- VBIdentifierTrimConverter.cs
- IsolatedStorageFileStream.cs
- CultureTable.cs
- ColumnResizeAdorner.cs
- ContentTextAutomationPeer.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- PrinterResolution.cs
- StylusPoint.cs
- DocumentationServerProtocol.cs
- CompileXomlTask.cs
- BinaryFormatter.cs
- ElapsedEventArgs.cs
- MarshalByValueComponent.cs
- PageFunction.cs
- DataBinder.cs
- Interlocked.cs
- ImageKeyConverter.cs
- mactripleDES.cs
- XmlAnyAttributeAttribute.cs
- XmlCharCheckingWriter.cs
- SiteMapProvider.cs
- SqlBooleanMismatchVisitor.cs
- WebServiceErrorEvent.cs
- DirectoryNotFoundException.cs
- XslTransform.cs
- SafeRightsManagementPubHandle.cs
- BitmapEffectGroup.cs
- InProcStateClientManager.cs
- MessageQueueEnumerator.cs
- SectionUpdates.cs
- TextDecorationCollection.cs
- DbDataReader.cs
- TrackBarRenderer.cs
- ResXResourceReader.cs
- QueryCreatedEventArgs.cs
- SetStoryboardSpeedRatio.cs
- MultipleViewProviderWrapper.cs
- EventProperty.cs
- ProcessProtocolHandler.cs
- OleDbTransaction.cs
- securitycriticaldata.cs
- UnsafeNativeMethods.cs
- WebMessageEncoderFactory.cs
- BreakRecordTable.cs
- SqlGatherProducedAliases.cs
- NavigatingCancelEventArgs.cs
- HttpStreamXmlDictionaryWriter.cs
- BufferedWebEventProvider.cs
- WebScriptMetadataMessageEncoderFactory.cs
- BoundsDrawingContextWalker.cs
- Schedule.cs
- SchemaNotation.cs
- WebPartManagerDesigner.cs
- XsltLoader.cs
- NamedElement.cs
- TrackingValidationObjectDictionary.cs
- ButtonBase.cs
- MasterPage.cs
- Intellisense.cs
- PartialTrustValidationBehavior.cs
- CompositeActivityTypeDescriptor.cs
- DataTableReader.cs
- WebPartMovingEventArgs.cs
- IdentityValidationException.cs
- RuntimeResourceSet.cs
- SessionStateSection.cs
- Animatable.cs
- Tuple.cs
- XmlCharCheckingWriter.cs
- InternalDispatchObject.cs
- CompModHelpers.cs
- ImageField.cs
- DataControlHelper.cs
- ChannelTraceRecord.cs
- KeySplineConverter.cs
- CloudCollection.cs
- TabletDevice.cs
- EntityExpressionVisitor.cs
- XmlSchemaImport.cs
- SqlRewriteScalarSubqueries.cs