コード例 #1
0
ファイル: ResourceHelper.cs プロジェクト: radtek/Shopdrawing
 private static void FindAllReferencedResources(DocumentNode node, List <DocumentNode> foundResources, Stack <DocumentNodePath> resourceReferenceTree, ResourceHelper.PostOrderOperation postOrderOperation)
 {
     foreach (DocumentNode documentNode1 in node.SelectDescendantNodes(new Predicate <DocumentNode>(ResourceHelper.FilterResources)))
     {
         DocumentNodePath context1 = new DocumentNodePath(node.DocumentRoot.RootNode, documentNode1);
         resourceReferenceTree.Push(context1);
         DocumentNode documentNode2 = (DocumentNode)null;
         if (DocumentNodeUtilities.IsDynamicResource(documentNode1))
         {
             foreach (DocumentNodePath context2 in resourceReferenceTree)
             {
                 documentNode2 = new ExpressionEvaluator((IDocumentRootResolver)context2.Node.Context).EvaluateExpression(context2, documentNode1);
                 if (documentNode2 != null)
                 {
                     break;
                 }
             }
         }
         else
         {
             documentNode2 = new ExpressionEvaluator((IDocumentRootResolver)context1.Node.Context).EvaluateExpression(context1, documentNode1);
         }
         if (documentNode2 != null && !ResourceHelper.IsResourceCached(documentNode2, foundResources))
         {
             foundResources.Add(documentNode2);
             ResourceHelper.FindAllReferencedResources(documentNode2, foundResources, resourceReferenceTree, postOrderOperation);
             if (postOrderOperation != null)
             {
                 postOrderOperation(documentNode2);
             }
         }
         resourceReferenceTree.Pop();
     }
 }
コード例 #2
0
 private static IEnumerable <DocumentNode> FindPointAnimationDescendantNodes(this DocumentNode root)
 {
     return(root.SelectDescendantNodes((DocumentNode node) => {
         if (PlatformTypes.PointAnimationUsingKeyFrames.IsAssignableFrom(node.Type))
         {
             return true;
         }
         return PlatformTypes.PointAnimation.IsAssignableFrom(node.Type);
     }));
 }
コード例 #3
0
        protected override void ProcessDocument(SceneDocument document)
        {
            DocumentNode rootNode = document.DocumentRoot.RootNode;

            foreach (ReferenceRepairer referenceRepairer in this.referenceChangeModel.ReferenceRepairers)
            {
                foreach (DocumentNode node in rootNode.SelectDescendantNodes(referenceRepairer.AppliesTo))
                {
                    referenceRepairer.Repair(node);
                }
            }
        }
コード例 #4
0
ファイル: ResourceHelper.cs プロジェクト: radtek/Shopdrawing
 private static void FindReferencedResourcesInternal(DocumentNode root, Dictionary <DocumentNode, bool> visited, IList <DocumentCompositeNode> resources)
 {
     foreach (DocumentNode documentNode in root.SelectDescendantNodes(new Predicate <DocumentNode>(ResourceHelper.FilterResources)))
     {
         DocumentNode index = new ExpressionEvaluator((IDocumentRootResolver)null).EvaluateExpression(new DocumentNodePath(root.DocumentRoot.RootNode, documentNode), documentNode);
         if (index != null && !visited.ContainsKey(index) && !root.IsAncestorOf(index))
         {
             visited[index] = true;
             ResourceHelper.FindReferencedResourcesInternal(index, visited, resources);
             DocumentCompositeNode parent = index.Parent;
             resources.Add(parent);
         }
     }
 }
コード例 #5
0
        protected override void ProcessDocument(SceneDocument document)
        {
            DocumentNode rootNode = document.DocumentRoot.RootNode;

            foreach (ReferenceVerifier referenceVerifier in (IEnumerable <ReferenceVerifier>) this.referenceVerifiers)
            {
                foreach (DocumentNode node in rootNode.SelectDescendantNodes(referenceVerifier.ShouldVerify))
                {
                    if (!referenceVerifier.Verify(node))
                    {
                        this.invalidReferences.Add(referenceVerifier.CreateInvalidReferenceModel(node));
                    }
                }
            }
        }
コード例 #6
0
 public void ApplyAmbientProperties(SceneNode node)
 {
     if (node == null || !Enumerable.Any <ITypeId>((IEnumerable <ITypeId>)AmbientPropertyManager.SupportedTypes, (Func <ITypeId, bool>)(type => type.IsAssignableFrom((ITypeId)node.Type))) || this.suppressApplyCount > 0)
     {
         return;
     }
     foreach (ReferenceStep referenceStep in this.GetResolvedAmbientProperties())
     {
         bool strictTypeCheck = true;
         PropertyReference propertyReference = SceneNodeObjectSet.FilterProperty(node, new PropertyReference(referenceStep), strictTypeCheck);
         if (propertyReference != null)
         {
             object       valueToSet    = this.InternalGetAmbientValue(referenceStep, node);
             DocumentNode documentNode1 = valueToSet as DocumentNode;
             if (documentNode1 != null)
             {
                 DocumentNode          documentNode2         = documentNode1.Clone(node.DocumentContext);
                 DocumentCompositeNode documentCompositeNode = documentNode2 as DocumentCompositeNode;
                 if (documentCompositeNode != null)
                 {
                     documentCompositeNode.ClearValue((IPropertyId)documentCompositeNode.Type.Metadata.NameProperty);
                 }
                 foreach (DocumentNode documentNode3 in documentNode2.SelectDescendantNodes((Predicate <DocumentNode>)(nodePredicate => nodePredicate.Parent.IsNameProperty((IPropertyId)nodePredicate.SitePropertyKey))))
                 {
                     documentNode3.Parent.ClearValue((IPropertyId)documentNode3.SitePropertyKey);
                 }
                 valueToSet = (object)documentNode2;
             }
             if (valueToSet == DependencyProperty.UnsetValue)
             {
                 node.ClearValueAsWpf(propertyReference);
             }
             else
             {
                 node.SetValueAsWpf(propertyReference, valueToSet);
             }
         }
     }
 }