/// <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))); }
/// <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)); }
/// <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); }