Ejemplo n.º 1
0
        private void ScaleRect(RectFigure rf, Point pos)
        {
            if (_nowScaling == null)
            {
                _originalW = rf.Width.CachedValue.AsDouble;
                _originalH = rf.Height.CachedValue.AsDouble;
                var snappedTo = StepManager.SnapTo(pos, rf.GetMagnets(), rf.Center);
                if ((snappedTo == rf.Left) && (Math.Abs(_originalW) > Utils.Tolerance))
                {
                    _nowScaling = new ScaleRectStep(rf, ScaleRectStep.Side.Right,
                                                    1 - (pos.X - _downPos.X) / _originalW);
                }
                else if ((snappedTo == rf.Right) && (Math.Abs(_originalW) > Utils.Tolerance))
                {
                    _nowScaling = new ScaleRectStep(rf, ScaleRectStep.Side.Left,
                                                    1 + (pos.X - _downPos.X) / _originalW);
                }
                else if ((snappedTo == rf.Top) && (Math.Abs(_originalH) > Utils.Tolerance))
                {
                    _nowScaling = new ScaleRectStep(rf, ScaleRectStep.Side.Bottom,
                                                    1 - (pos.Y - _downPos.Y) / _originalH);
                }
                else if ((snappedTo == rf.Bottom) && (Math.Abs(_originalH) > Utils.Tolerance))
                {
                    _nowScaling = new ScaleRectStep(rf, ScaleRectStep.Side.Top,
                                                    1 + (pos.Y - _downPos.Y) / _originalH);
                }
                if (_nowScaling == null)
                {
                    return;
                }
                StepManager.InsertNext(_nowScaling);
            }
            else
            {
                var srs = (ScaleRectStep)_nowScaling;

                if (srs.ScaleAround == ScaleRectStep.Side.Right)
                {
                    srs.Scale(1 - (pos.X - _downPos.X) / _originalW);
                }
                else if (srs.ScaleAround == ScaleRectStep.Side.Left)
                {
                    srs.Scale(1 + (pos.X - _downPos.X) / _originalW);
                }
                else if (srs.ScaleAround == ScaleRectStep.Side.Top)
                {
                    srs.Scale(1 + (pos.Y - _downPos.Y) / _originalH);
                }
                else if (srs.ScaleAround == ScaleRectStep.Side.Bottom)
                {
                    srs.Scale(1 - (pos.Y - _downPos.Y) / _originalH);
                }
            }
        }
Ejemplo n.º 2
0
        public override void CopyStaticFigure()
        {
            if ((Iterations == -1) || Figure.IsGuide)
            {
                return;
            }

            var rf = new RectFigure
            {
                X           = new ScalarExpression("a", "a", RectFigure.X.CachedValue.Str),
                Y           = new ScalarExpression("a", "a", RectFigure.Y.CachedValue.Str),
                Width       = new ScalarExpression("a", "a", RectFigure.Width.CachedValue.Str),
                Height      = new ScalarExpression("a", "a", RectFigure.Height.CachedValue.Str),
                FigureColor = RectFigure.FigureColor.Copy()
            };

            Figure.StaticLoopFigures.Add(rf);
            StepManager.Figures.Add(rf);
        }
Ejemplo n.º 3
0
 public ScaleRectStep(RectFigure figure, Side scaleAround, double factor)
     : this(figure, scaleAround, factor.Str())
 {
 }
Ejemplo n.º 4
0
 public ScaleRectStep(RectFigure figure, Side scaleAround, string factor) : this(figure, scaleAround)
 {
     Scale(factor);
 }
Ejemplo n.º 5
0
 private ScaleRectStep(RectFigure figure, Side scaleAround)
 {
     Figure      = figure;
     RectFigure  = figure;
     ScaleAround = scaleAround;
 }
Ejemplo n.º 6
0
 private void MoveRect(RectFigure rf, Point pos)
 {
     if (_nowMoving == null)
     {
         _nowMoving = new MoveRectStep(rf, pos.X - _downPos.X, pos.Y - _downPos.Y);
         StepManager.InsertNext(_nowMoving);
     }
     else
     {
         var    snapped = StepManager.Snap(pos, _nowMoving.Figure);
         Magnet snappedBy;
         if ((snapped != null) &&
             ((snappedBy = StepManager.SnapTo(pos, _nowMoving.Figure.GetMagnets())) != null))
         {
             if (snappedBy.EqualExprStrings(rf.TopLeft))
             {
                 ((MoveRectStep)_nowMoving).Move(
                     "(" + snapped.X.ExprString + ") - (" + _nowMoving.Figure.Name + ".x)",
                     "(" + snapped.Y.ExprString + ") - (" + _nowMoving.Figure.Name + ".y)", snappedBy.Def,
                     snapped.Def);
             }
             else if (snappedBy.EqualExprStrings(rf.TopRight))
             {
                 ((MoveRectStep)_nowMoving).Move(
                     "((" + snapped.X.ExprString + ") - (" + rf.Name + ".width)) - (" + _nowMoving.Figure.Name +
                     ".x)",
                     "(" + snapped.Y.ExprString + ") - (" + _nowMoving.Figure.Name + ".y)", snappedBy.Def,
                     snapped.Def);
             }
             else if (snappedBy.EqualExprStrings(rf.BottomLeft))
             {
                 ((MoveRectStep)_nowMoving).Move(
                     "(" + snapped.X.ExprString + ") - (" + _nowMoving.Figure.Name + ".x)",
                     "((" + snapped.Y.ExprString + ") - (" + rf.Name + ".height)) - (" + _nowMoving.Figure.Name +
                     ".y)", snappedBy.Def, snapped.Def);
             }
             else if (snappedBy.EqualExprStrings(rf.BottomRight))
             {
                 ((MoveRectStep)_nowMoving).Move(
                     "((" + snapped.X.ExprString + ") - (" + rf.Name + ".width)) - (" + _nowMoving.Figure.Name +
                     ".x)",
                     "((" + snapped.Y.ExprString + ") - (" + rf.Name + ".height)) - (" + _nowMoving.Figure.Name +
                     ".y)", snappedBy.Def, snapped.Def);
             }
             else if (snappedBy.EqualExprStrings(rf.Center))
             {
                 ((MoveRectStep)_nowMoving).Move(
                     "((" + snapped.X.ExprString + ") - (" + rf.Name + ".width/2)) - (" +
                     _nowMoving.Figure.Name +
                     ".x)",
                     "((" + snapped.Y.ExprString + ") - (" + rf.Name + ".height/2)) - (" +
                     _nowMoving.Figure.Name +
                     ".y)", snappedBy.Def, snapped.Def);
             }
         }
         else
         {
             ((MoveRectStep)_nowMoving).Move(pos.X - _downPos.X, pos.Y - _downPos.Y);
         }
     }
 }
Ejemplo n.º 7
0
 public ResizeRectStep(RectFigure figure, Side resizeAround, double value)
     : this(figure, resizeAround, value.Str())
 {
 }
Ejemplo n.º 8
0
 public ResizeRectStep(RectFigure figure, Side resizeAround, string value, string where = null)
     : this(figure, resizeAround)
 {
     Resize(value, where);
 }
Ejemplo n.º 9
0
 private ResizeRectStep(RectFigure figure, Side resizeAround)
 {
     Figure       = figure;
     RectFigure   = figure;
     ResizeAround = resizeAround;
 }
Ejemplo n.º 10
0
 private void ResizeRect(RectFigure rf, Point pos)
 {
     if (_nowResizing == null)
     {
         var snappedTo = StepManager.SnapTo(pos, rf.GetMagnets(), rf.Center);
         if (snappedTo == rf.Left)
         {
             _nowResizing = new ResizeRectStep(rf, ResizeRectStep.Side.Right, pos.X - _downPos.X);
         }
         else if (snappedTo == rf.Right)
         {
             _nowResizing = new ResizeRectStep(rf, ResizeRectStep.Side.Left, pos.X - _downPos.X);
         }
         else if (snappedTo == rf.Top)
         {
             _nowResizing = new ResizeRectStep(rf, ResizeRectStep.Side.Bottom, pos.Y - _downPos.Y);
         }
         else if (snappedTo == rf.Bottom)
         {
             _nowResizing = new ResizeRectStep(rf, ResizeRectStep.Side.Top, pos.Y - _downPos.Y);
         }
         if (_nowResizing == null)
         {
             return;
         }
         StepManager.InsertNext(_nowResizing);
     }
     else
     {
         var rrs     = (ResizeRectStep)_nowResizing;
         var snapped = StepManager.Snap(pos, _nowResizing.Figure);
         if (snapped != null)
         {
             if (rrs.ResizeAround == ResizeRectStep.Side.Right)
             {
                 rrs.Resize("(" + snapped.X.ExprString + ") - " + rrs.Figure.Name + ".x", snapped.Def);
             }
             else if (rrs.ResizeAround == ResizeRectStep.Side.Left)
             {
                 rrs.Resize("(" + snapped.X.ExprString + ") - (" + rrs.Figure.Name + ".x + (" +
                            rrs.Figure.Name + ".width))", snapped.Def);
             }
             else if (rrs.ResizeAround == ResizeRectStep.Side.Top)
             {
                 rrs.Resize("(" + snapped.Y.ExprString + ") - (" + rrs.Figure.Name + ".y + (" +
                            rrs.Figure.Name + ".height))", snapped.Def);
             }
             else if (rrs.ResizeAround == ResizeRectStep.Side.Bottom)
             {
                 rrs.Resize("(" + snapped.Y.ExprString + ") - " + rrs.Figure.Name + ".y", snapped.Def);
             }
         }
         else
         {
             if (rrs.ResizeAround == ResizeRectStep.Side.Right)
             {
                 rrs.Resize(pos.X - _downPos.X);
             }
             else if (rrs.ResizeAround == ResizeRectStep.Side.Left)
             {
                 rrs.Resize(pos.X - _downPos.X);
             }
             else if (rrs.ResizeAround == ResizeRectStep.Side.Top)
             {
                 rrs.Resize(pos.Y - _downPos.Y);
             }
             else if (rrs.ResizeAround == ResizeRectStep.Side.Bottom)
             {
                 rrs.Resize(pos.Y - _downPos.Y);
             }
         }
     }
 }
Ejemplo n.º 11
0
 private DrawRectStep()
 {
     Figure     = new RectFigure("rect" + _count++);
     RectFigure = (RectFigure)Figure;
 }
Ejemplo n.º 12
0
 public MoveRectStep(RectFigure figure, double x, double y) : this(figure, x.Str(), y.Str())
 {
 }
Ejemplo n.º 13
0
 public MoveRectStep(RectFigure figure, string x, string y) : this(figure)
 {
     Move(x, y);
 }
Ejemplo n.º 14
0
 private MoveRectStep(RectFigure figure)
 {
     Figure     = figure;
     RectFigure = figure;
 }