コード例 #1
0
 public SceneDescendantTraversalEnumerator(SceneNode node, ISearchPredicate continueTester)
 {
     this.sceneNodes = new Stack <SceneNode>();
     this.children   = new Stack <IEnumerator>();
     this.sceneNodes.Push(node);
     this.children.Push(this.GetChildEnumerator(node));
 }
コード例 #2
0
ファイル: SearchStep.cs プロジェクト: radtek/Shopdrawing
 public SearchStep(SearchAxis axis, ISearchPredicate predicate, ISearchPredicate continuePredicate)
 {
     this.axis              = axis;
     this.predicate         = predicate;
     this.continuePredicate = continuePredicate;
 }
コード例 #3
0
ファイル: SearchStep.cs プロジェクト: radtek/Shopdrawing
 public SearchStep(SearchAxis axis, ISearchPredicate predicate)
     : this(axis, predicate, (ISearchPredicate)null)
 {
 }
コード例 #4
0
 protected FileFinderBase(string searchDirectories, ISearchPredicate searchPredicate)
 {
     _searchDirectories = searchDirectories;
     _searchPredicate   = searchPredicate;
 }
コード例 #5
0
 public BooleanAndPredicate(ISearchPredicate lhs, ISearchPredicate rhs)
 {
     this.lhs = lhs;
     this.rhs = rhs;
 }
コード例 #6
0
        private static IEnumerable <DocumentNode> TraverseDocumentDescendants(DocumentNode node, ISearchPredicate continueTester, SceneViewModel viewModel)
        {
            if (node.ChildNodesCount != 0)
            {
                IEnumerator <DocumentNode> descendantEnumerator = node.DescendantNodes.GetEnumerator();
                while (descendantEnumerator.MoveNext())
                {
                    DocumentNode current = descendantEnumerator.Current;
                    yield return(current);

                    if (continueTester != null && !continueTester.Test(viewModel.GetSceneNode(current)))
                    {
                        IDescendantEnumerator descendantEnumerator1 = descendantEnumerator as IDescendantEnumerator;
                        if (descendantEnumerator1 != null)
                        {
                            descendantEnumerator1.SkipPastDescendants(current);
                        }
                    }
                }
            }
        }
コード例 #7
0
        protected static IEnumerable <SceneNode> Enumerate(SceneNode pivot, SearchAxis axis, ISearchPredicate continueTester)
        {
            SceneViewModel viewModel = pivot.ViewModel;

            switch (axis.axisType)
            {
            case SearchAxis.AxisType.DocumentAncestor:
                foreach (DocumentNode node in pivot.DocumentNode.AncestorNodes)
                {
                    SceneNode sceneNode = viewModel.GetSceneNode(node);
                    yield return(sceneNode);

                    if (continueTester != null && !continueTester.Test(sceneNode))
                    {
                        break;
                    }
                }
                break;

            case SearchAxis.AxisType.DocumentParent:
                DocumentNode parentNode = (DocumentNode)pivot.DocumentNode.Parent;
                if (parentNode == null)
                {
                    break;
                }
                yield return(viewModel.GetSceneNode(parentNode));

                break;

            case SearchAxis.AxisType.DocumentChild:
                foreach (DocumentNode node in pivot.DocumentNode.ChildNodes)
                {
                    SceneNode sceneNode = viewModel.GetSceneNode(node);
                    yield return(sceneNode);
                }
                break;

            case SearchAxis.AxisType.DocumentDescendant:
                foreach (DocumentNode node in SearchAxis.TraverseDocumentDescendants(pivot.DocumentNode, continueTester, viewModel))
                {
                    yield return(viewModel.GetSceneNode(node));
                }
                break;

            case SearchAxis.AxisType.DocumentSelfAndDescendant:
                yield return(pivot);

                foreach (DocumentNode node in SearchAxis.TraverseDocumentDescendants(pivot.DocumentNode, continueTester, viewModel))
                {
                    yield return(viewModel.GetSceneNode(node));
                }
                break;

            case SearchAxis.AxisType.Self:
                yield return(pivot);

                break;

            case SearchAxis.AxisType.Root:
                yield return(viewModel.GetSceneNode(pivot.DocumentNode.DocumentRoot.RootNode));

                break;

            case SearchAxis.AxisType.StoryboardContainer:
                SceneNode thisStoryboardContainer = (SceneNode)pivot.StoryboardContainer;
                if (thisStoryboardContainer == null)
                {
                    break;
                }
                yield return(thisStoryboardContainer);

                break;

            case SearchAxis.AxisType.StoryboardAncestor:
                for (IStoryboardContainer cur = pivot.StoryboardContainer; cur != null; cur = cur.TargetElement.StoryboardContainer)
                {
                    yield return((SceneNode)cur);

                    if (continueTester != null && !continueTester.Test((SceneNode)cur))
                    {
                        break;
                    }
                }
                break;

            case SearchAxis.AxisType.ActiveStoryboard:
                if (pivot.ViewModel.ActiveStoryboardTimeline == null)
                {
                    break;
                }
                yield return((SceneNode)pivot.ViewModel.ActiveStoryboardTimeline);

                break;

            case SearchAxis.AxisType.Animations:
                StoryboardTimelineSceneNode storyboard = pivot as StoryboardTimelineSceneNode;
                if (storyboard == null)
                {
                    break;
                }
                foreach (TimelineSceneNode timelineSceneNode in (IEnumerable <TimelineSceneNode>)storyboard.Children)
                {
                    yield return((SceneNode)timelineSceneNode);
                }
                break;

            case SearchAxis.AxisType.KeyFrames:
                KeyFrameAnimationSceneNode keyFrameAnimation = pivot as KeyFrameAnimationSceneNode;
                if (keyFrameAnimation == null)
                {
                    break;
                }
                foreach (KeyFrameSceneNode keyFrameSceneNode in keyFrameAnimation.KeyFrames)
                {
                    yield return((SceneNode)keyFrameSceneNode);
                }
                break;

            case SearchAxis.AxisType.SceneAncestor:
                for (SceneNode parent = pivot.Parent; parent != null; parent = parent.Parent)
                {
                    yield return(parent);

                    if (continueTester != null && !continueTester.Test(parent))
                    {
                        break;
                    }
                }
                break;

            case SearchAxis.AxisType.SceneParent:
                SceneNode node1 = pivot.Parent;
                if (node1 == null)
                {
                    break;
                }
                yield return(node1);

                break;

            case SearchAxis.AxisType.SceneChild:
                DocumentCompositeNode docNode = pivot.DocumentNode as DocumentCompositeNode;
                if (docNode == null)
                {
                    break;
                }
                if (docNode.SupportsChildren)
                {
                    ISceneNodeCollection <SceneNode> children = pivot.GetChildren();
                    for (int i = 0; i < children.Count; ++i)
                    {
                        yield return(children[i]);
                    }
                    break;
                }
                foreach (IPropertyId propertyKey in (IEnumerable <IProperty>)docNode.Properties.Keys)
                {
                    SceneNode subNode = pivot.GetLocalValueAsSceneNode(propertyKey);
                    yield return(subNode);
                }
                break;

            case SearchAxis.AxisType.SceneDescendant:
                IEnumerator <SceneNode> descendantEnumerator = (IEnumerator <SceneNode>) new SearchAxis.SceneDescendantTraversalEnumerator(pivot, continueTester);
                while (descendantEnumerator.MoveNext())
                {
                    yield return(descendantEnumerator.Current);
                }
                break;

            case SearchAxis.AxisType.Property:
                IProperty resolvedProperty = pivot.ProjectContext.ResolveProperty(axis.Property);
                if (resolvedProperty == null)
                {
                    break;
                }
                SceneNode node2 = pivot.GetLocalValueAsSceneNode((IPropertyId)resolvedProperty);
                if (node2 == null)
                {
                    break;
                }
                yield return(node2);

                break;

            case SearchAxis.AxisType.CollectionChild:
                SceneNode node3 = pivot.GetChildren()[axis.ChildIndex];
                if (node3 == null)
                {
                    break;
                }
                yield return(node3);

                break;
            }
        }
コード例 #8
0
 public virtual IEnumerable <SceneNode> Enumerate(SceneNode pivot, ISearchPredicate continueTester)
 {
     return(SearchAxis.Enumerate(pivot, this, continueTester));
 }
コード例 #9
0
 public BooleanNotPredicate(ISearchPredicate predicate)
 {
     this.predicate = predicate;
 }
コード例 #10
0
 public FileFinder(string searchDirectories, ISearchPredicate searchPredicate)
     : base(searchDirectories, searchPredicate)
 {
 }
コード例 #11
0
ファイル: DelegateAxis.cs プロジェクト: radtek/Shopdrawing
 public override IEnumerable <SceneNode> Enumerate(SceneNode pivot, ISearchPredicate continueTester)
 {
     return(this.enumerationHandler(pivot));
 }