Exemplo n.º 1
0
        public ExpressionSyntax GenerateSyntax(object value, Type type)
        {
            var c = (SRGBColour)value;

            // SRGBColour has implicit conversion to Color4
            return(Color4ExpressionGenerator.GenerateSyntax(c));
        }
Exemplo n.º 2
0
        public static ExpressionSyntax GenerateSyntax(ColourInfo c)
        {
            // SingleColour
            if (c.TopLeft.Equals(c.TopRight) && c.TopLeft.Equals(c.BottomRight) && c.TopLeft.Equals(c.BottomLeft))
            {
                return(InvocationExpression(
                           expression: IdentifierName($"{typeof(ColourInfo).FullName}.{nameof(ColourInfo.SingleColour)}"),
                           argumentList: ArgumentList(SingletonSeparatedList <ArgumentSyntax>(
                                                          Argument(Color4ExpressionGenerator.GenerateSyntax(c.TopLeft))
                                                          ))
                           ));
            }

            // GradientHorizontal
            if (c.TopLeft.Equals(c.BottomLeft) && c.TopRight.Equals(c.BottomRight) && !c.TopLeft.Equals(c.TopRight))
            {
                return(InvocationExpression(
                           expression: IdentifierName($"{typeof(ColourInfo).FullName}.{nameof(ColourInfo.GradientHorizontal)}"),
                           argumentList: ArgumentList(SeparatedList <ArgumentSyntax>(new[]
                {
                    Argument(Color4ExpressionGenerator.GenerateSyntax(c.TopLeft)),
                    Argument(Color4ExpressionGenerator.GenerateSyntax(c.TopRight))
                }))
                           ));
            }

            // GradientVertical
            if (c.TopLeft.Equals(c.TopRight) && c.BottomLeft.Equals(c.BottomRight) && !c.TopLeft.Equals(c.BottomLeft))
            {
                return(InvocationExpression(
                           expression: IdentifierName($"{typeof(ColourInfo).FullName}.{nameof(ColourInfo.GradientVertical)}"),
                           argumentList: ArgumentList(SeparatedList <ArgumentSyntax>(new[]
                {
                    Argument(Color4ExpressionGenerator.GenerateSyntax(c.TopLeft)),
                    Argument(Color4ExpressionGenerator.GenerateSyntax(c.BottomLeft))
                }))
                           ));
            }

            // Full initialization
            return(ObjectCreationExpression(
                       type: ParseTypeName(typeof(ColourInfo).FullName),
                       argumentList: null,
                       initializer: InitializerExpression(
                           kind: SyntaxKind.ObjectInitializerExpression,
                           expressions: SeparatedList(new ExpressionSyntax[]
            {
                AssignmentExpression(
                    kind: SyntaxKind.SimpleAssignmentExpression,
                    left: IdentifierName(nameof(ColourInfo.TopLeft)),
                    right: Color4ExpressionGenerator.GenerateSyntax(c.TopLeft)
                    ),
                AssignmentExpression(
                    kind: SyntaxKind.SimpleAssignmentExpression,
                    left: IdentifierName(nameof(ColourInfo.TopRight)),
                    right: Color4ExpressionGenerator.GenerateSyntax(c.TopRight)
                    ),
                AssignmentExpression(
                    kind: SyntaxKind.SimpleAssignmentExpression,
                    left: IdentifierName(nameof(ColourInfo.BottomRight)),
                    right: Color4ExpressionGenerator.GenerateSyntax(c.BottomRight)
                    ),
                AssignmentExpression(
                    kind: SyntaxKind.SimpleAssignmentExpression,
                    left: IdentifierName(nameof(ColourInfo.BottomLeft)),
                    right: Color4ExpressionGenerator.GenerateSyntax(c.BottomLeft)
                    )
            })
                           )
                       ));
        }
Exemplo n.º 3
0
        public static ExpressionSyntax GenerateSyntax(EdgeEffectParameters p)
        {
            var list = new List <ExpressionSyntax>();

            list.Add(AssignmentExpression(
                         kind: SyntaxKind.SimpleAssignmentExpression,
                         left: IdentifierName(nameof(EdgeEffectParameters.Type)),
                         right: ParseTypeName($"{typeof(EdgeEffectType).FullName}.{p.Type}")
                         ));
            list.Add(AssignmentExpression(
                         kind: SyntaxKind.SimpleAssignmentExpression,
                         left: IdentifierName(nameof(EdgeEffectParameters.Colour)),
                         right: Color4ExpressionGenerator.GenerateSyntax(p.Colour)
                         ));

            if (p.Radius != default)
            {
                list.Add(AssignmentExpression(
                             kind: SyntaxKind.SimpleAssignmentExpression,
                             left: IdentifierName(nameof(EdgeEffectParameters.Radius)),
                             right: LiteralExpression(
                                 kind: SyntaxKind.NumericLiteralExpression,
                                 token: Literal(p.Radius)
                                 )
                             ));
            }
            if (p.Roundness != default)
            {
                list.Add(AssignmentExpression(
                             kind: SyntaxKind.SimpleAssignmentExpression,
                             left: IdentifierName(nameof(EdgeEffectParameters.Roundness)),
                             right: LiteralExpression(
                                 kind: SyntaxKind.NumericLiteralExpression,
                                 token: Literal(p.Roundness)
                                 )
                             ));
            }
            if (p.Offset != default)
            {
                list.Add(AssignmentExpression(
                             kind: SyntaxKind.SimpleAssignmentExpression,
                             left: IdentifierName(nameof(EdgeEffectParameters.Offset)),
                             right: Vector2ExpressionGenerator.GenerateSyntax(p.Offset)
                             ));
            }
            if (p.Hollow)
            {
                list.Add(AssignmentExpression(
                             kind: SyntaxKind.SimpleAssignmentExpression,
                             left: IdentifierName(nameof(EdgeEffectParameters.Hollow)),
                             right: LiteralExpression(
                                 kind: SyntaxKind.TrueLiteralExpression
                                 )
                             ));
            }

            return(ObjectCreationExpression(
                       type: ParseTypeName(typeof(EdgeEffectParameters).FullName),
                       argumentList: null,
                       initializer: InitializerExpression(
                           kind: SyntaxKind.ObjectInitializerExpression,
                           expressions: SeparatedList(list)
                           )
                       ));
        }