Skip to content

Commit e2e1c64

Browse files
authored
Merge branch 'master' into codegen/convert-length
2 parents 349169a + e0a5d28 commit e2e1c64

File tree

3 files changed

+89
-75
lines changed

3 files changed

+89
-75
lines changed

Microsoft.Toolkit.Uwp.UI.Animations/Expressions/ExpressionFunctions.cs

Lines changed: 74 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,80 +1253,80 @@ public ExpressionNodeInfo(OperationType nodeOperationKind, string operationStrin
12531253
/// </summary>
12541254
private static readonly Dictionary<ExpressionNodeType, ExpressionNodeInfo> _expressionNodeInfo = new Dictionary<ExpressionNodeType, ExpressionNodeInfo>
12551255
{
1256-
{ ExpressionNodeType.ConstantValue, new ExpressionNodeInfo(OperationType.Constant, null) },
1257-
{ ExpressionNodeType.ConstantParameter, new ExpressionNodeInfo(OperationType.Constant, null) },
1258-
{ ExpressionNodeType.CurrentValueProperty, new ExpressionNodeInfo(OperationType.Reference, null) },
1259-
{ ExpressionNodeType.Reference, new ExpressionNodeInfo(OperationType.Reference, null) },
1260-
{ ExpressionNodeType.ReferenceProperty, new ExpressionNodeInfo(OperationType.Reference, null) },
1261-
{ ExpressionNodeType.StartingValueProperty, new ExpressionNodeInfo(OperationType.Reference, null) },
1262-
{ ExpressionNodeType.TargetReference, new ExpressionNodeInfo(OperationType.Reference, null) },
1263-
{ ExpressionNodeType.Conditional, new ExpressionNodeInfo(OperationType.Conditional, null) },
1264-
{ ExpressionNodeType.Swizzle, new ExpressionNodeInfo(OperationType.Swizzle, null) },
1265-
{ ExpressionNodeType.Add, new ExpressionNodeInfo(OperationType.Operator, "+") },
1266-
{ ExpressionNodeType.And, new ExpressionNodeInfo(OperationType.Operator, "&&") },
1267-
{ ExpressionNodeType.Divide, new ExpressionNodeInfo(OperationType.Operator, "/") },
1268-
{ ExpressionNodeType.Equals, new ExpressionNodeInfo(OperationType.Operator, "==") },
1269-
{ ExpressionNodeType.GreaterThan, new ExpressionNodeInfo(OperationType.Operator, ">") },
1270-
{ ExpressionNodeType.GreaterThanEquals, new ExpressionNodeInfo(OperationType.Operator, ">=") },
1271-
{ ExpressionNodeType.LessThan, new ExpressionNodeInfo(OperationType.Operator, "<") },
1272-
{ ExpressionNodeType.LessThanEquals, new ExpressionNodeInfo(OperationType.Operator, "<=") },
1273-
{ ExpressionNodeType.Multiply, new ExpressionNodeInfo(OperationType.Operator, "*") },
1274-
{ ExpressionNodeType.Not, new ExpressionNodeInfo(OperationType.Operator, "!") },
1275-
{ ExpressionNodeType.NotEquals, new ExpressionNodeInfo(OperationType.Operator, "!=") },
1276-
{ ExpressionNodeType.Or, new ExpressionNodeInfo(OperationType.Operator, "||") },
1277-
{ ExpressionNodeType.Subtract, new ExpressionNodeInfo(OperationType.Operator, "-") },
1278-
{ ExpressionNodeType.Absolute, new ExpressionNodeInfo(OperationType.Function, "abs") },
1279-
{ ExpressionNodeType.Acos, new ExpressionNodeInfo(OperationType.Function, "acos") },
1280-
{ ExpressionNodeType.Asin, new ExpressionNodeInfo(OperationType.Function, "asin") },
1281-
{ ExpressionNodeType.Atan, new ExpressionNodeInfo(OperationType.Function, "atan") },
1282-
{ ExpressionNodeType.Cos, new ExpressionNodeInfo(OperationType.Function, "cos") },
1283-
{ ExpressionNodeType.Ceil, new ExpressionNodeInfo(OperationType.Function, "ceil") },
1284-
{ ExpressionNodeType.Clamp, new ExpressionNodeInfo(OperationType.Function, "clamp") },
1285-
{ ExpressionNodeType.ColorHsl, new ExpressionNodeInfo(OperationType.Function, "colorhsl") },
1286-
{ ExpressionNodeType.ColorRgb, new ExpressionNodeInfo(OperationType.Function, "colorrgb") },
1287-
{ ExpressionNodeType.ColorLerp, new ExpressionNodeInfo(OperationType.Function, "colorlerp") },
1288-
{ ExpressionNodeType.ColorLerpHsl, new ExpressionNodeInfo(OperationType.Function, "colorhsllerp") },
1289-
{ ExpressionNodeType.ColorLerpRgb, new ExpressionNodeInfo(OperationType.Function, "colorrgblerp") },
1290-
{ ExpressionNodeType.Concatenate, new ExpressionNodeInfo(OperationType.Function, "concatenate") },
1291-
{ ExpressionNodeType.Distance, new ExpressionNodeInfo(OperationType.Function, "distance") },
1292-
{ ExpressionNodeType.DistanceSquared, new ExpressionNodeInfo(OperationType.Function, "distancesquared") },
1293-
{ ExpressionNodeType.Floor, new ExpressionNodeInfo(OperationType.Function, "floor") },
1294-
{ ExpressionNodeType.Inverse, new ExpressionNodeInfo(OperationType.Function, "inverse") },
1295-
{ ExpressionNodeType.Length, new ExpressionNodeInfo(OperationType.Function, "length") },
1296-
{ ExpressionNodeType.LengthSquared, new ExpressionNodeInfo(OperationType.Function, "lengthsquared") },
1297-
{ ExpressionNodeType.Lerp, new ExpressionNodeInfo(OperationType.Function, "lerp") },
1298-
{ ExpressionNodeType.Ln, new ExpressionNodeInfo(OperationType.Function, "ln") },
1299-
{ ExpressionNodeType.Log10, new ExpressionNodeInfo(OperationType.Function, "log10") },
1300-
{ ExpressionNodeType.Max, new ExpressionNodeInfo(OperationType.Function, "max") },
1301-
{ ExpressionNodeType.Matrix3x2FromRotation, new ExpressionNodeInfo(OperationType.Function, "matrix3x2.createrotation") },
1302-
{ ExpressionNodeType.Matrix3x2FromScale, new ExpressionNodeInfo(OperationType.Function, "matrix3x2.createscale") },
1303-
{ ExpressionNodeType.Matrix3x2FromSkew, new ExpressionNodeInfo(OperationType.Function, "matrix3x2.createskew") },
1304-
{ ExpressionNodeType.Matrix3x2FromTranslation, new ExpressionNodeInfo(OperationType.Function, "matrix3x2.createtranslation") },
1305-
{ ExpressionNodeType.Matrix3x2, new ExpressionNodeInfo(OperationType.Function, "matrix3x2") },
1306-
{ ExpressionNodeType.Matrix4x4FromAxisAngle, new ExpressionNodeInfo(OperationType.Function, "matrix4x4.createfromaxisangle") },
1307-
{ ExpressionNodeType.Matrix4x4FromScale, new ExpressionNodeInfo(OperationType.Function, "matrix4x4.createscale") },
1308-
{ ExpressionNodeType.Matrix4x4FromTranslation, new ExpressionNodeInfo(OperationType.Function, "matrix4x4.createtranslation") },
1309-
{ ExpressionNodeType.Matrix4x4, new ExpressionNodeInfo(OperationType.Function, "matrix4x4") },
1310-
{ ExpressionNodeType.Min, new ExpressionNodeInfo(OperationType.Function, "min") },
1311-
{ ExpressionNodeType.Modulus, new ExpressionNodeInfo(OperationType.Function, "mod") },
1312-
{ ExpressionNodeType.Negate, new ExpressionNodeInfo(OperationType.Function, "-") },
1313-
{ ExpressionNodeType.Normalize, new ExpressionNodeInfo(OperationType.Function, "normalize") },
1314-
{ ExpressionNodeType.Pow, new ExpressionNodeInfo(OperationType.Function, "pow") },
1315-
{ ExpressionNodeType.QuaternionFromAxisAngle, new ExpressionNodeInfo(OperationType.Function, "quaternion.createfromaxisangle") },
1316-
{ ExpressionNodeType.Quaternion, new ExpressionNodeInfo(OperationType.Function, "quaternion") },
1317-
{ ExpressionNodeType.Round, new ExpressionNodeInfo(OperationType.Function, "round") },
1318-
{ ExpressionNodeType.Scale, new ExpressionNodeInfo(OperationType.Function, "scale") },
1319-
{ ExpressionNodeType.Sin, new ExpressionNodeInfo(OperationType.Function, "sin") },
1320-
{ ExpressionNodeType.Slerp, new ExpressionNodeInfo(OperationType.Function, "slerp") },
1321-
{ ExpressionNodeType.Sqrt, new ExpressionNodeInfo(OperationType.Function, "sqrt") },
1322-
{ ExpressionNodeType.Square, new ExpressionNodeInfo(OperationType.Function, "square") },
1323-
{ ExpressionNodeType.Tan, new ExpressionNodeInfo(OperationType.Function, "tan") },
1324-
{ ExpressionNodeType.ToDegrees, new ExpressionNodeInfo(OperationType.Function, "todegrees") },
1325-
{ ExpressionNodeType.ToRadians, new ExpressionNodeInfo(OperationType.Function, "toradians") },
1326-
{ ExpressionNodeType.Transform, new ExpressionNodeInfo(OperationType.Function, "transform") },
1327-
{ ExpressionNodeType.Vector2, new ExpressionNodeInfo(OperationType.Function, "vector2") },
1328-
{ ExpressionNodeType.Vector3, new ExpressionNodeInfo(OperationType.Function, "vector3") },
1329-
{ ExpressionNodeType.Vector4, new ExpressionNodeInfo(OperationType.Function, "vector4") },
1256+
{ ExpressionNodeType.ConstantValue, new ExpressionNodeInfo(OperationType.Constant, null) },
1257+
{ ExpressionNodeType.ConstantParameter, new ExpressionNodeInfo(OperationType.Constant, null) },
1258+
{ ExpressionNodeType.CurrentValueProperty, new ExpressionNodeInfo(OperationType.Reference, null) },
1259+
{ ExpressionNodeType.Reference, new ExpressionNodeInfo(OperationType.Reference, null) },
1260+
{ ExpressionNodeType.ReferenceProperty, new ExpressionNodeInfo(OperationType.Reference, null) },
1261+
{ ExpressionNodeType.StartingValueProperty, new ExpressionNodeInfo(OperationType.Reference, null) },
1262+
{ ExpressionNodeType.TargetReference, new ExpressionNodeInfo(OperationType.Reference, null) },
1263+
{ ExpressionNodeType.Conditional, new ExpressionNodeInfo(OperationType.Conditional, null) },
1264+
{ ExpressionNodeType.Swizzle, new ExpressionNodeInfo(OperationType.Swizzle, null) },
1265+
{ ExpressionNodeType.Add, new ExpressionNodeInfo(OperationType.Operator, "+") },
1266+
{ ExpressionNodeType.And, new ExpressionNodeInfo(OperationType.Operator, "&&") },
1267+
{ ExpressionNodeType.Divide, new ExpressionNodeInfo(OperationType.Operator, "/") },
1268+
{ ExpressionNodeType.Equals, new ExpressionNodeInfo(OperationType.Operator, "==") },
1269+
{ ExpressionNodeType.GreaterThan, new ExpressionNodeInfo(OperationType.Operator, ">") },
1270+
{ ExpressionNodeType.GreaterThanEquals, new ExpressionNodeInfo(OperationType.Operator, ">=") },
1271+
{ ExpressionNodeType.LessThan, new ExpressionNodeInfo(OperationType.Operator, "<") },
1272+
{ ExpressionNodeType.LessThanEquals, new ExpressionNodeInfo(OperationType.Operator, "<=") },
1273+
{ ExpressionNodeType.Multiply, new ExpressionNodeInfo(OperationType.Operator, "*") },
1274+
{ ExpressionNodeType.Not, new ExpressionNodeInfo(OperationType.UnaryOperator, "!") },
1275+
{ ExpressionNodeType.NotEquals, new ExpressionNodeInfo(OperationType.Operator, "!=") },
1276+
{ ExpressionNodeType.Or, new ExpressionNodeInfo(OperationType.Operator, "||") },
1277+
{ ExpressionNodeType.Subtract, new ExpressionNodeInfo(OperationType.Operator, "-") },
1278+
{ ExpressionNodeType.Absolute, new ExpressionNodeInfo(OperationType.Function, "abs") },
1279+
{ ExpressionNodeType.Acos, new ExpressionNodeInfo(OperationType.Function, "acos") },
1280+
{ ExpressionNodeType.Asin, new ExpressionNodeInfo(OperationType.Function, "asin") },
1281+
{ ExpressionNodeType.Atan, new ExpressionNodeInfo(OperationType.Function, "atan") },
1282+
{ ExpressionNodeType.Cos, new ExpressionNodeInfo(OperationType.Function, "cos") },
1283+
{ ExpressionNodeType.Ceil, new ExpressionNodeInfo(OperationType.Function, "ceil") },
1284+
{ ExpressionNodeType.Clamp, new ExpressionNodeInfo(OperationType.Function, "clamp") },
1285+
{ ExpressionNodeType.ColorHsl, new ExpressionNodeInfo(OperationType.Function, "colorhsl") },
1286+
{ ExpressionNodeType.ColorRgb, new ExpressionNodeInfo(OperationType.Function, "colorrgb") },
1287+
{ ExpressionNodeType.ColorLerp, new ExpressionNodeInfo(OperationType.Function, "colorlerp") },
1288+
{ ExpressionNodeType.ColorLerpHsl, new ExpressionNodeInfo(OperationType.Function, "colorhsllerp") },
1289+
{ ExpressionNodeType.ColorLerpRgb, new ExpressionNodeInfo(OperationType.Function, "colorrgblerp") },
1290+
{ ExpressionNodeType.Concatenate, new ExpressionNodeInfo(OperationType.Function, "concatenate") },
1291+
{ ExpressionNodeType.Distance, new ExpressionNodeInfo(OperationType.Function, "distance") },
1292+
{ ExpressionNodeType.DistanceSquared, new ExpressionNodeInfo(OperationType.Function, "distancesquared") },
1293+
{ ExpressionNodeType.Floor, new ExpressionNodeInfo(OperationType.Function, "floor") },
1294+
{ ExpressionNodeType.Inverse, new ExpressionNodeInfo(OperationType.Function, "inverse") },
1295+
{ ExpressionNodeType.Length, new ExpressionNodeInfo(OperationType.Function, "length") },
1296+
{ ExpressionNodeType.LengthSquared, new ExpressionNodeInfo(OperationType.Function, "lengthsquared") },
1297+
{ ExpressionNodeType.Lerp, new ExpressionNodeInfo(OperationType.Function, "lerp") },
1298+
{ ExpressionNodeType.Ln, new ExpressionNodeInfo(OperationType.Function, "ln") },
1299+
{ ExpressionNodeType.Log10, new ExpressionNodeInfo(OperationType.Function, "log10") },
1300+
{ ExpressionNodeType.Max, new ExpressionNodeInfo(OperationType.Function, "max") },
1301+
{ ExpressionNodeType.Matrix3x2FromRotation, new ExpressionNodeInfo(OperationType.Function, "matrix3x2.createrotation") },
1302+
{ ExpressionNodeType.Matrix3x2FromScale, new ExpressionNodeInfo(OperationType.Function, "matrix3x2.createscale") },
1303+
{ ExpressionNodeType.Matrix3x2FromSkew, new ExpressionNodeInfo(OperationType.Function, "matrix3x2.createskew") },
1304+
{ ExpressionNodeType.Matrix3x2FromTranslation, new ExpressionNodeInfo(OperationType.Function, "matrix3x2.createtranslation") },
1305+
{ ExpressionNodeType.Matrix3x2, new ExpressionNodeInfo(OperationType.Function, "matrix3x2") },
1306+
{ ExpressionNodeType.Matrix4x4FromAxisAngle, new ExpressionNodeInfo(OperationType.Function, "matrix4x4.createfromaxisangle") },
1307+
{ ExpressionNodeType.Matrix4x4FromScale, new ExpressionNodeInfo(OperationType.Function, "matrix4x4.createscale") },
1308+
{ ExpressionNodeType.Matrix4x4FromTranslation, new ExpressionNodeInfo(OperationType.Function, "matrix4x4.createtranslation") },
1309+
{ ExpressionNodeType.Matrix4x4, new ExpressionNodeInfo(OperationType.Function, "matrix4x4") },
1310+
{ ExpressionNodeType.Min, new ExpressionNodeInfo(OperationType.Function, "min") },
1311+
{ ExpressionNodeType.Modulus, new ExpressionNodeInfo(OperationType.Function, "mod") },
1312+
{ ExpressionNodeType.Negate, new ExpressionNodeInfo(OperationType.Function, "-") },
1313+
{ ExpressionNodeType.Normalize, new ExpressionNodeInfo(OperationType.Function, "normalize") },
1314+
{ ExpressionNodeType.Pow, new ExpressionNodeInfo(OperationType.Function, "pow") },
1315+
{ ExpressionNodeType.QuaternionFromAxisAngle, new ExpressionNodeInfo(OperationType.Function, "quaternion.createfromaxisangle") },
1316+
{ ExpressionNodeType.Quaternion, new ExpressionNodeInfo(OperationType.Function, "quaternion") },
1317+
{ ExpressionNodeType.Round, new ExpressionNodeInfo(OperationType.Function, "round") },
1318+
{ ExpressionNodeType.Scale, new ExpressionNodeInfo(OperationType.Function, "scale") },
1319+
{ ExpressionNodeType.Sin, new ExpressionNodeInfo(OperationType.Function, "sin") },
1320+
{ ExpressionNodeType.Slerp, new ExpressionNodeInfo(OperationType.Function, "slerp") },
1321+
{ ExpressionNodeType.Sqrt, new ExpressionNodeInfo(OperationType.Function, "sqrt") },
1322+
{ ExpressionNodeType.Square, new ExpressionNodeInfo(OperationType.Function, "square") },
1323+
{ ExpressionNodeType.Tan, new ExpressionNodeInfo(OperationType.Function, "tan") },
1324+
{ ExpressionNodeType.ToDegrees, new ExpressionNodeInfo(OperationType.Function, "todegrees") },
1325+
{ ExpressionNodeType.ToRadians, new ExpressionNodeInfo(OperationType.Function, "toradians") },
1326+
{ ExpressionNodeType.Transform, new ExpressionNodeInfo(OperationType.Function, "transform") },
1327+
{ ExpressionNodeType.Vector2, new ExpressionNodeInfo(OperationType.Function, "vector2") },
1328+
{ ExpressionNodeType.Vector3, new ExpressionNodeInfo(OperationType.Function, "vector3") },
1329+
{ ExpressionNodeType.Vector4, new ExpressionNodeInfo(OperationType.Function, "vector4") },
13301330
};
13311331
}
13321332
}

Microsoft.Toolkit.Uwp.UI.Animations/Expressions/ExpressionNodes/ExpressionNode.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,15 @@ private string ToExpressionStringInternal()
502502
ret = $"({Children[0].ToExpressionStringInternal()} {GetOperationString()} {Children[1].ToExpressionStringInternal()})";
503503
break;
504504

505+
case OperationType.UnaryOperator:
506+
if (Children.Count != 1)
507+
{
508+
throw new Exception("Can't have an unary operator that doesn't have exactly one params");
509+
}
510+
511+
ret = $"( {GetOperationString()} {Children[0].ToExpressionStringInternal()} )";
512+
break;
513+
505514
case OperationType.Constant:
506515
if (Children.Count == 0)
507516
{

Microsoft.Toolkit.Uwp.UI.Animations/Expressions/OperationType.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,15 @@ internal enum OperationType
1515
Function,
1616

1717
/// <summary>
18-
/// The operator
18+
/// The operator (takes two operands)
1919
/// </summary>
2020
Operator,
2121

22+
/// <summary>
23+
/// The operator that only takes one operand
24+
/// </summary>
25+
UnaryOperator,
26+
2227
/// <summary>
2328
/// The constant
2429
/// </summary>

0 commit comments

Comments
 (0)