EndPersistObjectData(bool needEndVisual, ReachTreeWalker treeWalker) { if (needEndVisual) { XmlWriter pageWriter = SerializationManager. PackagingPolicy.AcquireXmlWriterForPage(); XmlWriter resWriter = SerializationManager. PackagingPolicy.AcquireXmlWriterForResourceDictionary(); Size fixedPageSize = _xpsOMSerializationManager.FixedPageSize; VisualTreeFlattener flattener = _xpsOMSerializationManager. VisualSerializationService.AcquireVisualTreeFlattener(resWriter, pageWriter, fixedPageSize); flattener.EndVisual(); } SerializationManager.PackagingPolicy.PreCommitCurrentPage(); // // Copy hyperlinks into stream // treeWalker.CommitHyperlinks(); XmlWriter.WriteEndElement(); // //Release used resources // XmlWriter = null; // // Free the image table in use for this page // _xpsOMSerializationManager.ResourcePolicy.CurrentPageImageTable = null; // // Free the colorContext table in use for this page // _xpsOMSerializationManager.ResourcePolicy.CurrentPageColorContextTable = null; // // Free the resourceDictionary table in use for this page // _xpsOMSerializationManager.ResourcePolicy.CurrentPageResourceDictionaryTable = null; _xpsOMSerializationManager.VisualSerializationService.ReleaseVisualTreeFlattener(); _xpsOMSerializationManager.RegisterPageEnd(); // // Signal to any registered callers that the Page has been serialized // XpsSerializationProgressChangedEventArgs progressEvent = new XpsSerializationProgressChangedEventArgs(XpsWritingProgressChangeLevel.FixedPageWritingProgress, 0, 0, null); _xpsOMSerializationManager.OnXPSSerializationProgressChanged(progressEvent); }
ReachFixedPageSerializerContext( ReachSerializerAsync serializer, SerializableObjectContext objectContext, SerializerAction action, bool endVisual, ReachTreeWalker treeWalker ) : base(serializer, objectContext, action) { this._treeWalker = treeWalker; this._endVisual = endVisual; }
PersistObjectData( SerializableObjectContext serializableObjectContext ) { DocumentPage dp = (DocumentPage)serializableObjectContext.TargetObject; ReachTreeWalker treeWalker = BeginSerializeDocumentPage(serializableObjectContext); SerializeChild(dp.Visual, serializableObjectContext); EndSerializeDocumentPage(treeWalker); }
PersistObjectData( SerializableObjectContext serializableObjectContext ) { DocumentPage dp = (DocumentPage)serializableObjectContext.TargetObject; ReachTreeWalker treeWalker = _syncSerializer.BeginSerializeDocumentPage(serializableObjectContext); ReachSerializerContext context = new ReachFixedPageSerializerContext(this, serializableObjectContext, SerializerAction.endSerializeDocumentPage, false, treeWalker); _xpsOMSerializationManagerAsync.OperationStack.Push(context); _syncSerializer.SerializeChild(dp.Visual, serializableObjectContext); }
EndSerializeDocumentPage( ReachTreeWalker treeWalker ) { _xpsOMSerializationManager.PackagingPolicy.PreCommitCurrentPage(); //copy hyperlinks into stream treeWalker.CommitHyperlinks(); XmlWriter.WriteEndElement(); XmlWriter = null; // // Free the image table in use for this page // _xpsOMSerializationManager.ResourcePolicy.CurrentPageImageTable = null; // // Free the colorContext table in use for this page // _xpsOMSerializationManager.ResourcePolicy.CurrentPageColorContextTable = null; IXpsSerializationManager xpsSerializationManager = ((IXpsSerializationManager)SerializationManager); xpsSerializationManager.VisualSerializationService.ReleaseVisualTreeFlattener(); xpsSerializationManager.RegisterPageEnd(); // // Signal to any registered callers that the Page has been serialized // XpsSerializationProgressChangedEventArgs progressEvent = new XpsSerializationProgressChangedEventArgs(XpsWritingProgressChangeLevel.FixedPageWritingProgress, 0, 0, null); xpsSerializationManager.OnXPSSerializationProgressChanged(progressEvent); }
PersistObjectData( SerializableObjectContext serializableObjectContext ) { if (SerializationManager is IXpsSerializationManager) { (SerializationManager as IXpsSerializationManager).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); ((IXpsSerializationManager)SerializationManager).OnXPSSerializationPrintTicketRequired(e); PrintTicket printTicket = null; if (e.Modified) { printTicket = e.PrintTicket; } Size size = Toolbox.ValidateDocumentSize(dp.Size, printTicket); ((IXpsSerializationManager)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; ((IXpsSerializationManager)SerializationManager).VisualSerializationService.ReleaseVisualTreeFlattener(); if (SerializationManager is IXpsSerializationManager) { (SerializationManager as IXpsSerializationManager).RegisterPageEnd(); } // // Signal to any registered callers that the Page has been serialized // XpsSerializationProgressChangedEventArgs progressEvent = new XpsSerializationProgressChangedEventArgs(XpsWritingProgressChangeLevel.FixedPageWritingProgress, 0, 0, null); ((IXpsSerializationManager)SerializationManager).OnXPSSerializationProgressChanged(progressEvent); }
PersistObjectData( SerializableObjectContext serializableObjectContext ) { if (serializableObjectContext == null) { throw new ArgumentNullException("serializableObjectContext"); } FixedPage fixedPage = serializableObjectContext.TargetObject as FixedPage; if (SerializationManager is IXpsSerializationManager) { (SerializationManager as IXpsSerializationManager).RegisterPageStart(); } ReachTreeWalker treeWalker = new ReachTreeWalker(this); treeWalker.SerializeLinksInFixedPage((FixedPage)serializableObjectContext.TargetObject); String xmlnsForType = SerializationManager.GetXmlNSForType(serializableObjectContext.TargetObject.GetType()); if (xmlnsForType == null) { XmlWriter.WriteStartElement(serializableObjectContext.Name); } else { XmlWriter.WriteStartElement(serializableObjectContext.Name); XmlWriter.WriteAttributeString(XpsS0Markup.Xmlns, xmlnsForType); XmlWriter.WriteAttributeString(XpsS0Markup.XmlnsX, XpsS0Markup.XmlnsXSchema); XmlLanguage language = fixedPage.Language; if (language == null) { //If the language property is null, assign the language to the default language = XmlLanguage.GetLanguage(XpsS0Markup.XmlLangValue); } SerializationManager.Language = language; XmlWriter.WriteAttributeString(XpsS0Markup.XmlLang, language.ToString()); } { Size fixedPageSize = new Size(fixedPage.Width, fixedPage.Height); ((IXpsSerializationManager)SerializationManager).FixedPageSize = fixedPageSize; // // Before we serialize any properties on the FixedPage, we need to // serialize the FixedPage as a Visual // Visual fixedPageAsVisual = serializableObjectContext.TargetObject as Visual; bool needEndVisual = false; if (fixedPageAsVisual != null) { needEndVisual = SerializePageAsVisual(fixedPageAsVisual); } if (serializableObjectContext.IsComplexValue) { ReachSerializerContext context = new ReachFixedPageSerializerContext(this, serializableObjectContext, SerializerAction.endSerializeReachFixedPage, needEndVisual, treeWalker); ((IXpsSerializationManagerAsync)SerializationManager).OperationStack.Push(context); PrintTicket printTicket = ((IXpsSerializationManager)SerializationManager).FixedPagePrintTicket; if (printTicket != null) { PrintTicketSerializer serializer = new PrintTicketSerializer(SerializationManager); serializer.SerializeObject(printTicket); ((IXpsSerializationManager)SerializationManager).FixedPagePrintTicket = null; } SerializeObjectCore(serializableObjectContext); } else { throw new XpsSerializationException(SR.Get(SRID.ReachSerialization_WrongPropertyTypeForFixedPage)); } } }
SimulateBeginFixedPage( ) { XmlWriter xmlWriter = null; (_serializationManager as IXpsSerializationManager)?.RegisterPageStart(); // // Build the current Page Image Table // _serializationManager.ResourcePolicy.CurrentPageImageTable = new Dictionary <int, Uri>(); // // Build the current Page ColorContext Table // _serializationManager.ResourcePolicy.CurrentPageColorContextTable = new Dictionary <int, Uri>(); // // Get the correct namespace // String xmlnsForType = _serializationManager.GetXmlNSForType(typeof(FixedPage)); // // Pick the correct XmlWriter // xmlWriter = _serializationManager.AcquireXmlWriter(typeof(FixedPage)); Visual visual = _serializedObject as Visual; if (visual != null) { _treeWalker = new ReachTreeWalker(xmlWriter, _serializationManager); _treeWalker.SerializeLinksInVisual(visual); } // // Write the start element and the namespace // if (xmlnsForType == null) { xmlWriter.WriteStartElement(XpsS0Markup.FixedPage); } else { xmlWriter.WriteStartElement(XpsS0Markup.FixedPage); xmlWriter.WriteAttributeString(XpsS0Markup.Xmlns, xmlnsForType); xmlWriter.WriteAttributeString(XpsS0Markup.XmlnsX, XpsS0Markup.XmlnsXSchema); xmlWriter.WriteAttributeString(XpsS0Markup.XmlLang, XpsS0Markup.XmlLangValue); } // // Simulating the PrintTicket // XpsSerializationPrintTicketRequiredEventArgs e = new XpsSerializationPrintTicketRequiredEventArgs(PrintTicketLevel.FixedPagePrintTicket, 0); SimulatePrintTicketRaisingEvent(e); // // Adding Width and Height being mandatory attributes on the FixedPage // Size size = SimulateFixedPageSize(visual, e.PrintTicket); ((IXpsSerializationManager)_serializationManager).FixedPageSize = size; xmlWriter.WriteAttributeString(XpsS0Markup.PageWidth, TypeDescriptor.GetConverter(size.Width).ConvertToInvariantString(size.Width)); xmlWriter.WriteAttributeString(XpsS0Markup.PageHeight, TypeDescriptor.GetConverter(size.Height).ConvertToInvariantString(size.Height)); return(xmlWriter); }
PersistObjectData( SerializableObjectContext serializableObjectContext ) { Toolbox.EmitEvent(EventTrace.Event.WClientDRXSerializationBegin); if (serializableObjectContext == null) { throw new ArgumentNullException("serializableObjectContext"); } if (SerializationManager is IXpsSerializationManager) { (SerializationManager as IXpsSerializationManager).RegisterPageStart(); } FixedPage fixedPage = serializableObjectContext.TargetObject as FixedPage; ReachTreeWalker treeWalker = new ReachTreeWalker(this); treeWalker.SerializeLinksInFixedPage((FixedPage)serializableObjectContext.TargetObject); String xmlnsForType = SerializationManager.GetXmlNSForType(serializableObjectContext.TargetObject.GetType()); if (xmlnsForType == null) { XmlWriter.WriteStartElement(serializableObjectContext.Name); } else { XmlWriter.WriteStartElement(serializableObjectContext.Name); XmlWriter.WriteAttributeString(XpsS0Markup.Xmlns, xmlnsForType); XmlWriter.WriteAttributeString(XpsS0Markup.XmlnsX, XpsS0Markup.XmlnsXSchema); XmlLanguage language = fixedPage.Language; if (language == null) { //If the language property is null, assign the language to the default language = XmlLanguage.GetLanguage(XpsS0Markup.XmlLangValue); } SerializationManager.Language = language; XmlWriter.WriteAttributeString(XpsS0Markup.XmlLang, language.ToString()); } { Size fixedPageSize = new Size(fixedPage.Width, fixedPage.Height); ((IXpsSerializationManager)SerializationManager).FixedPageSize = fixedPageSize; // // Before we serialize any properties on the FixedPage, we need to // serialize the FixedPage as a Visual // Visual fixedPageAsVisual = serializableObjectContext.TargetObject as Visual; bool needEndVisual = false; if (fixedPageAsVisual != null) { needEndVisual = SerializePageAsVisual(fixedPageAsVisual); } if (serializableObjectContext.IsComplexValue) { PrintTicket printTicket = ((IXpsSerializationManager)SerializationManager).FixedPagePrintTicket; if (printTicket != null) { PrintTicketSerializer serializer = new PrintTicketSerializer(SerializationManager); serializer.SerializeObject(printTicket); ((IXpsSerializationManager)SerializationManager).FixedPagePrintTicket = null; } SerializeObjectCore(serializableObjectContext); } else { throw new XpsSerializationException(SR.Get(SRID.ReachSerialization_WrongPropertyTypeForFixedPage)); } if (needEndVisual) { XmlWriter pageWriter = ((XpsSerializationManager)SerializationManager). PackagingPolicy.AcquireXmlWriterForPage(); XmlWriter resWriter = ((XpsSerializationManager)SerializationManager). PackagingPolicy.AcquireXmlWriterForResourceDictionary(); VisualTreeFlattener flattener = ((IXpsSerializationManager)SerializationManager). VisualSerializationService.AcquireVisualTreeFlattener(resWriter, pageWriter, fixedPageSize); flattener.EndVisual(); } } ((XpsSerializationManager)SerializationManager).PackagingPolicy.PreCommitCurrentPage(); // // Copy hyperlinks into stream // treeWalker.CommitHyperlinks(); XmlWriter.WriteEndElement(); // //Release used resources // 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; // // Free the resourceDictionary table in use for this page // ((XpsSerializationManager)SerializationManager).ResourcePolicy.CurrentPageResourceDictionaryTable = null; ((IXpsSerializationManager)SerializationManager).VisualSerializationService.ReleaseVisualTreeFlattener(); if (SerializationManager is IXpsSerializationManager) { (SerializationManager as IXpsSerializationManager).RegisterPageEnd(); } // // Signal to any registered callers that the Page has been serialized // XpsSerializationProgressChangedEventArgs progressEvent = new XpsSerializationProgressChangedEventArgs(XpsWritingProgressChangeLevel.FixedPageWritingProgress, 0, 0, null); ((IXpsSerializationManager)SerializationManager).OnXPSSerializationProgressChanged(progressEvent); Toolbox.EmitEvent(EventTrace.Event.WClientDRXSerializationEnd); }
PersistObjectData( SerializableObjectContext serializableObjectContext ) { if (SerializationManager is IXpsSerializationManager) { (SerializationManager as IXpsSerializationManager).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); ((IXpsSerializationManager)SerializationManager).OnXPSSerializationPrintTicketRequired(e); PrintTicket printTicket = null; if(e.Modified) { printTicket = e.PrintTicket; } Size size = Toolbox.ValidateDocumentSize(dp.Size, printTicket); ((IXpsSerializationManager)SerializationManager).FixedPageSize = size; // //write length and width elements // WriteAttribute(XmlWriter, XpsS0Markup.PageWidth, size.Width); WriteAttribute(XmlWriter, XpsS0Markup.PageHeight, size.Height); ReachSerializerContext context = new ReachFixedPageSerializerContext(this, serializableObjectContext, SerializerAction.endSerializeDocumentPage, false, treeWalker); ((IXpsSerializationManagerAsync)SerializationManager).OperationStack.Push(context); // // Serialize the data for the PrintTicket // if (printTicket != null) { PrintTicketSerializerAsync serializer = new PrintTicketSerializerAsync(SerializationManager); serializer.SerializeObject(printTicket); } SerializeChild(dp.Visual, serializableObjectContext); }
BeginSerializeDocumentPage( SerializableObjectContext serializableObjectContext ) { PrintTicket printTicket = null; _xpsOMSerializationManager.RegisterPageStart(); XpsSerializationPrintTicketRequiredEventArgs e = new XpsSerializationPrintTicketRequiredEventArgs(PrintTicketLevel.FixedPagePrintTicket, 0); _xpsOMSerializationManager.OnXPSSerializationPrintTicketRequired(e); if (e.Modified) { printTicket = e.PrintTicket; } // // Serialize the data for the PrintTicket // if (printTicket != null) { PrintTicketSerializer serializer = new PrintTicketSerializer(SerializationManager); serializer.SerializeObject(printTicket); } // // 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); } } Size size = Toolbox.ValidateDocumentSize(dp.Size, printTicket); _xpsOMSerializationManager.FixedPageSize = size; // //write length and width elements // WriteAttribute(XmlWriter, XpsS0Markup.PageWidth, size.Width); WriteAttribute(XmlWriter, XpsS0Markup.PageHeight, size.Height); return(treeWalker); }
BeginPersistObjectData(SerializableObjectContext serializableObjectContext, out ReachTreeWalker treeWalker) { if (serializableObjectContext == null) { throw new ArgumentNullException("serializableObjectContext"); } _xpsOMSerializationManager.RegisterPageStart(); if (serializableObjectContext.IsComplexValue) { PrintTicket printTicket = _xpsOMSerializationManager.FixedPagePrintTicket; if (printTicket != null) { PrintTicketSerializer serializer = new PrintTicketSerializer(SerializationManager); serializer.SerializeObject(printTicket); _xpsOMSerializationManager.FixedPagePrintTicket = null; } } FixedPage fixedPage = serializableObjectContext.TargetObject as FixedPage; treeWalker = new ReachTreeWalker(this); treeWalker.SerializeLinksInFixedPage((FixedPage)serializableObjectContext.TargetObject); String xmlnsForType = SerializationManager.GetXmlNSForType(serializableObjectContext.TargetObject.GetType()); if (xmlnsForType == null) { XmlWriter.WriteStartElement(serializableObjectContext.Name); } else { XmlWriter.WriteStartElement(serializableObjectContext.Name); XmlWriter.WriteAttributeString(XpsS0Markup.Xmlns, xmlnsForType); XmlWriter.WriteAttributeString(XpsS0Markup.XmlnsX, XpsS0Markup.XmlnsXSchema); XmlLanguage language = fixedPage.Language; if (language == null) { //If the language property is null, assign the language to the default language = XmlLanguage.GetLanguage(XpsS0Markup.XmlLangValue); } SerializationManager.Language = language; XmlWriter.WriteAttributeString(XpsS0Markup.XmlLang, language.ToString()); } Size fixedPageSize = new Size(fixedPage.Width, fixedPage.Height); _xpsOMSerializationManager.FixedPageSize = fixedPageSize; // // Before we serialize any properties on the FixedPage, we need to // serialize the FixedPage as a Visual // Visual fixedPageAsVisual = serializableObjectContext.TargetObject as Visual; bool needEndVisual = false; if (fixedPageAsVisual != null) { needEndVisual = SerializePageAsVisual(fixedPageAsVisual); } return(needEndVisual); }