/// <summary>
        /// Compiles a <see cref="UvssStoryboard"/> from the specified syntax node.
        /// </summary>
        private static UvssStoryboard CompileStoryboard(UvssStoryboardSyntax node, CultureInfo culture)
        {
            var name =
                node.NameIdentifier.Text;

            var loopBehavior =
                ParseOptionalLoopBehavior(node.LoopIdentifier);

            var targets = new List <UvssStoryboardTarget>();

            for (int i = 0; i < node.Body.Content.Count; i++)
            {
                var targetNode = (UvssStoryboardTargetSyntax)node.Body.Content[i];
                var target     = CompileStoryboardTarget(targetNode, culture);
                targets.Add(target);
            }

            return(new UvssStoryboard(
                       name,
                       loopBehavior,
                       new UvssStoryboardTargetCollection(targets)));
        }
Exemplo n.º 2
0
        /// <inheritdoc/>
        public override SyntaxNode VisitStoryboard(UvssStoryboardSyntax node)
        {
            var unchanged = true;

            var newAtSignToken = (SyntaxToken)Visit(node.AtSignToken);

            if (newAtSignToken != node.AtSignToken)
            {
                unchanged = false;
            }

            var newNameIdentifier = (UvssIdentifierBaseSyntax)Visit(node.NameIdentifier);

            if (newNameIdentifier != node.NameIdentifier)
            {
                unchanged = false;
            }

            var newLoopIdentifier = (UvssIdentifierBaseSyntax)Visit(node.LoopIdentifier);

            if (newLoopIdentifier != node.LoopIdentifier)
            {
                unchanged = false;
            }

            var newBody = (UvssBlockSyntax)Visit(node.Body);

            if (newBody != node.Body)
            {
                unchanged = false;
            }

            return(unchanged ? node : new UvssStoryboardSyntax(
                       newAtSignToken,
                       newNameIdentifier,
                       newLoopIdentifier,
                       newBody));
        }
 /// <summary>
 /// Visits the specified storyboard node.
 /// </summary>
 /// <param name="node">The node to visit.</param>
 /// <returns>A node which should replace the visited node, or a reference to the visited node
 /// itself if no changes were made.</returns>
 public virtual SyntaxNode VisitStoryboard(UvssStoryboardSyntax node)
 {
     return(VisitSyntaxNode(node));
 }
Exemplo n.º 4
0
 /// <summary>
 /// Visits a storyboard declaration node.
 /// </summary>
 /// <param name="storyboard">The storyboard declaration node to visit.</param>
 private void VisitStoryboard(UvssStoryboardSyntax storyboard)
 {
     Style(storyboard.AtSignToken, typeUvssStoryboard);
     Style(storyboard.NameIdentifier, typeUvssStoryboard);
     Style(storyboard.LoopIdentifier, typeUvssStoryboard);
 }