Example #1
0
        public override SerializableValue Clone()
        {
            var result = new TransformValue();

            Array.Copy(_data, result._data, 21);
            Array.Copy(_hasData, result._hasData, 21);
            return(result);
        }
Example #2
0
        public Task <SerializableValue> Execute(PluginExecuteContext context)
        {
            var transformProperty = new TransformValue();

            foreach (var(key, value) in context.StringParameters)
            {
                AnalyzePropertyTo(key.ConvertToString(context.Language), value, transformProperty, context.Language);
            }
            return(Task.FromResult <SerializableValue>(transformProperty));
        }
Example #3
0
        public static void AnalyzePropertyTo(string key, SerializableValue value, TransformValue transformProperty, string language)
        {
            float?x, y, z;

            switch (key)
            {
            case "AnchorMinX":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, FloatValue.TryParse(value, language));
                break;

            case "AnchorMinY":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, FloatValue.TryParse(value, language));
                break;

            case "AnchorMin":
                (x, y, _) = GetVectorComponents(value, language);
                if (x.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.AnchorMinX, x);
                }
                if (y.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.AnchorMinY, y);
                }
                break;

            case "AnchorMaxX":
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, FloatValue.TryParse(value, language));
                break;

            case "AnchorMaxY":
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, FloatValue.TryParse(value, language));
                break;

            case "AnchorMax":
                (x, y, _) = GetVectorComponents(value, language);
                if (x.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, x);
                }
                if (y.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, y);
                }
                break;

            case "PositionX":
                transformProperty.Set(TransformValue.PropertyName.PositionX, FloatValue.TryParse(value, language));
                break;

            case "PositionY":
                transformProperty.Set(TransformValue.PropertyName.PositionY, FloatValue.TryParse(value, language));
                break;

            case "PositionZ":
                transformProperty.Set(TransformValue.PropertyName.PositionZ, FloatValue.TryParse(value, language));
                break;

            case "Position":
                (x, y, z) = GetVectorComponents(value, language);
                if (x.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.PositionX, x);
                }
                if (y.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.PositionY, y);
                }
                if (z.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.PositionZ, z);
                }
                break;

            case "Width":
                transformProperty.Set(TransformValue.PropertyName.Width, FloatValue.TryParse(value, language));
                break;

            case "Height":
                transformProperty.Set(TransformValue.PropertyName.Height, FloatValue.TryParse(value, language));
                break;

            case "Top":
                transformProperty.Set(TransformValue.PropertyName.Top, FloatValue.TryParse(value, language));
                break;

            case "Bottom":
                transformProperty.Set(TransformValue.PropertyName.Bottom, FloatValue.TryParse(value, language));
                break;

            case "Left":
                transformProperty.Set(TransformValue.PropertyName.Left, FloatValue.TryParse(value, language));
                break;

            case "Right":
                transformProperty.Set(TransformValue.PropertyName.Right, FloatValue.TryParse(value, language));
                break;

            case "PivotX":
                transformProperty.Set(TransformValue.PropertyName.PivotX, FloatValue.TryParse(value, language));
                break;

            case "PivotY":
                transformProperty.Set(TransformValue.PropertyName.PivotY, FloatValue.TryParse(value, language));
                break;

            case "Pivot":
                (x, y, _) = GetVectorComponents(value, language);
                if (x.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.PivotX, x);
                }
                if (y.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.PivotY, y);
                }
                break;

            case "ScaleX":
                transformProperty.Set(TransformValue.PropertyName.ScaleX, FloatValue.TryParse(value, language));
                break;

            case "ScaleY":
                transformProperty.Set(TransformValue.PropertyName.ScaleY, FloatValue.TryParse(value, language));
                break;

            case "ScaleZ":
                transformProperty.Set(TransformValue.PropertyName.ScaleZ, FloatValue.TryParse(value, language));
                break;

            case "Scale":
                (x, y, z) = GetVectorComponents(value, language);
                if (x.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.ScaleX, x);
                }
                if (y.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.ScaleY, y);
                }
                if (z.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.ScaleZ, z);
                }
                break;

            case "RotationX":
                transformProperty.Set(TransformValue.PropertyName.RotationX, FloatValue.TryParse(value, language));
                break;

            case "RotationY":
                transformProperty.Set(TransformValue.PropertyName.RotationY, FloatValue.TryParse(value, language));
                break;

            case "RotationZ":
                transformProperty.Set(TransformValue.PropertyName.RotationZ, FloatValue.TryParse(value, language));
                break;

            case "Rotation":
                (x, y, z) = GetVectorComponents(value, language);
                if (x.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.RotationX, x);
                }
                if (y.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.RotationY, y);
                }
                if (z.HasValue)
                {
                    transformProperty.Set(TransformValue.PropertyName.RotationZ, z);
                }
                break;

            case "AnchorTopLeft":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 1.0F);
                break;

            case "AnchorTopCenter":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 1.0F);
                break;

            case "AnchorTopRight":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 1.0F);
                break;

            case "AnchorCenterLeft":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 0.5F);
                break;

            case "AnchorCenter":
            case "AnchorCenterCenter":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 0.5F);
                break;

            case "AnchorCenterRight":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 0.5F);
                break;

            case "AnchorBottomLeft":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 0.0F);
                break;

            case "AnchorBottomCenter":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 0.0F);
                break;

            case "AnchorBottomRight":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 0.0F);
                break;

            case "AnchorTopAuto":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 1.0F);
                break;

            case "AnchorHorizontalAuto":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 0.5F);
                break;

            case "AnchorBottomAuto":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 0.0F);
                break;

            case "AnchorLeftAuto":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 1.0F);
                break;

            case "AnchorVerticalAuto":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 1.0F);
                break;

            case "AnchorRightAuto":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 1.0F);
                break;

            case "AnchorAuto":
            case "AnchorAllAuto":
                transformProperty.Set(TransformValue.PropertyName.AnchorMinX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMinY, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.AnchorMaxY, 1.0F);
                break;

            case "PivotCenter":
                transformProperty.Set(TransformValue.PropertyName.PivotX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.PivotY, 0.5F);
                break;

            case "PivotTopLeft":
                transformProperty.Set(TransformValue.PropertyName.PivotX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.PivotY, 1.0F);
                break;

            case "PivotTopCenter":
                transformProperty.Set(TransformValue.PropertyName.PivotX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.PivotY, 1.0F);
                break;

            case "PivotTopRight":
                transformProperty.Set(TransformValue.PropertyName.PivotX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.PivotY, 1.0F);
                break;

            case "PivotBottomLeft":
                transformProperty.Set(TransformValue.PropertyName.PivotX, 0.0F);
                transformProperty.Set(TransformValue.PropertyName.PivotY, 0.0F);
                break;

            case "PivotBottomCenter":
                transformProperty.Set(TransformValue.PropertyName.PivotX, 0.5F);
                transformProperty.Set(TransformValue.PropertyName.PivotY, 0.0F);
                break;

            case "PivotBottomRight":
                transformProperty.Set(TransformValue.PropertyName.PivotX, 1.0F);
                transformProperty.Set(TransformValue.PropertyName.PivotY, 0.0F);
                break;
            }
        }