private void UpdateSkew() { Vector vector1 = this.transformedDisplacementVector * Vector.Multiply(this.currentPointerPosition - this.lastPointerPosition, this.transformedDisplacementVector); this.lastPointerPosition = this.currentPointerPosition; double num1 = Vector.Multiply(this.ActiveAdorner.InverseTransformVector(vector1 * this.documentToObjectTransform, false), this.displacementVector); Point relativeBrushCenter = this.ActiveAdorner.RelativeBrushCenter; Point fixedPoint = !this.skewAroundCenter ? this.oppositeAdornerPosition : relativeBrushCenter; Vector vector2 = fixedPoint - this.adornerPosition; if (vector2.LengthSquared < FloatingPointArithmetic.DistanceTolerance) { return; } vector2 /= vector2.Length; double num2 = vector2.X * this.displacementVector.X + vector2.Y * this.displacementVector.Y; if ((this.displacementVector - vector2 * num2).LengthSquared < FloatingPointArithmetic.DistanceTolerance) { return; } CanonicalTransform transform = new CanonicalTransform(this.ActiveAdorner.BrushTransform); transform.UpdateCenter(relativeBrushCenter); transform.ApplySkewScale(this.displacementVector, this.adornerPosition - fixedPoint, transform.Center, fixedPoint, this.displacementVector, this.adornerPosition - fixedPoint + this.displacementVector * num1); if ((Math.Abs(transform.SkewX) - 90.0) * (Math.Abs(transform.SkewX) - 90.0) < FloatingPointArithmetic.DistanceTolerance || (Math.Abs(transform.SkewY) - 90.0) * (Math.Abs(transform.SkewY) - 90.0) < FloatingPointArithmetic.DistanceTolerance) { return; } this.SetBrushTransform(transform); }
private void UpdateScale() { Vector scale = new Vector(1.0, 1.0); if (this.constrainAspectRatio) scale.X = scale.Y = 0.0; if (this.ActiveAdorner.TestFlags(EdgeFlags.LeftOrRight)) { double num = this.initialPointerPosition.X - this.currentCenter.X; scale.X = Math.Abs(num) >= 1E-06 ? (this.currentPointerPosition.X - this.currentCenter.X) / num : 1.0; } if (this.ActiveAdorner.TestFlags(EdgeFlags.TopOrBottom)) { double num = this.initialPointerPosition.Y - this.currentCenter.Y; scale.Y = Math.Abs(num) >= 1E-06 ? (this.currentPointerPosition.Y - this.currentCenter.Y) / num : 1.0; } if (this.constrainAspectRatio) { double num = Math.Max(Math.Abs(scale.X), Math.Abs(scale.Y)); scale.X = scale.X < 0.0 ? -num : num; scale.Y = scale.Y < 0.0 ? -num : num; } CanonicalTransform transform = new CanonicalTransform(this.initialBrushTransform); transform.UpdateCenter(this.ActiveAdorner.RelativeBrushCenter); transform.ApplyScale(scale, transform.Center, this.currentCenter); this.SetBrushTransform(transform); }
private void UpdateRotation() { double num = this.unsnappedAngle; if (this.snapping) { num = this.SnapToAngle(this.unsnappedAngle, BrushRotateBehavior.shiftSnapAngle); } Point relativeBrushCenter = this.ActiveAdorner.RelativeBrushCenter; CanonicalTransform transform = new CanonicalTransform(this.initialBrushTransform); transform.UpdateCenter(relativeBrushCenter); transform.ApplyRotation(num - this.initialBrushTransform.RotationAngle, relativeBrushCenter); this.SetBrushTransform(transform); }