SerializeDisguisedVisual( object serializedObject ) { Visual v = serializedObject as Visual; if (v == null) { throw new ArgumentException(SR.Get(SRID.MustBeOfType, "serializedObject", typeof(Visual))); } // The new class XpsOMSerializationManager now also interacts with this class // the cast below is shorthand for cast to either XpsSerializationManager or XpsOMSerializationManager // we want this to throw an InvalidCastException if it fails to mantain compatibility. if ((IXpsSerializationManager)SerializationManager != null) { XmlWriter pageWriter = SerializationManager. PackagingPolicy.AcquireXmlWriterForPage(); XmlWriter resWriter = SerializationManager. PackagingPolicy.AcquireXmlWriterForResourceDictionary(); Size fixedPageSize = ((IXpsSerializationManager)SerializationManager).FixedPageSize; VisualTreeFlattener flattener = ((IXpsSerializationManager)SerializationManager). VisualSerializationService.AcquireVisualTreeFlattener(resWriter, pageWriter, fixedPageSize); return(flattener.StartVisual(v)); } return(false); }
SerializeNextTreeNode( ReachVisualSerializerContext context ) { if (context.ContextStack.Count > 0) { Stack <NodeContext> contextStack = context.ContextStack; VisualTreeFlattener flattener = context.VisualFlattener; ReachVisualSerializerContext nextContext = new ReachVisualSerializerContext(this, contextStack, flattener, SerializerAction.serializeNextTreeNode); ((IXpsSerializationManagerAsync)SerializationManager).OperationStack.Push(nextContext); 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(); } } }
SerializeDisguisedVisual( object serializedObject ) { Visual v = serializedObject as Visual; if (v == null) { throw new ArgumentException(SR.Get(SRID.MustBeOfType, "serializedObject", typeof(Visual))); } IXpsSerializationManagerAsync manager = (IXpsSerializationManagerAsync)SerializationManager; XmlWriter pageWriter = ((PackageSerializationManager)manager). PackagingPolicy.AcquireXmlWriterForPage(); XmlWriter resWriter = ((PackageSerializationManager)manager). PackagingPolicy.AcquireXmlWriterForResourceDictionary(); Size fixedPageSize = ((IXpsSerializationManager)SerializationManager).FixedPageSize; VisualTreeFlattener flattener = ((IXpsSerializationManager)SerializationManager). VisualSerializationService.AcquireVisualTreeFlattener(resWriter, pageWriter, fixedPageSize); return(flattener.StartVisual(v)); }
SerializeTree( Visual visual, XmlWriter resWriter, XmlWriter bodyWriter ) { Size fixedPageSize = ((IXpsSerializationManager)SerializationManager).FixedPageSize; VisualTreeFlattener flattener = ((IXpsSerializationManagerAsync)SerializationManager). VisualSerializationService.AcquireVisualTreeFlattener(resWriter, bodyWriter, fixedPageSize); if (flattener.StartVisual(visual)) { Stack <NodeContext> contextStack = new Stack <NodeContext>(); contextStack.Push(new NodeContext(visual)); ReachVisualSerializerContext context = new ReachVisualSerializerContext(this, contextStack, flattener, SerializerAction.serializeNextTreeNode); ((IXpsSerializationManagerAsync)SerializationManager).OperationStack.Push(context); } }
SerializeTree( Visual visual, XmlWriter resWriter, XmlWriter bodyWriter ) { Toolbox.EmitEvent(EventTrace.Event.WClientDRXSerializeTreeStart); Size fixedPageSize = ((IXpsSerializationManager)SerializationManager).FixedPageSize; VisualTreeFlattener flattener = ((IXpsSerializationManager)SerializationManager). VisualSerializationService.AcquireVisualTreeFlattener(resWriter, bodyWriter, fixedPageSize); Stack <NodeContext> contextStack = new Stack <NodeContext>(); 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.EmitEvent(EventTrace.Event.WClientDRXSerializeTreeEnd); }