/// <summary> /// Updates properties from the values from another instance /// </summary> /// <param name="source"></param> public void ValueFrom(RotateEventArgs source) { base.ValueFrom(source); Angle = source.Angle; DeltaAngle = source.DeltaAngle; TotalAngle = source.TotalAngle; }
/// <summary> /// helper function used to calculate rotation angles /// </summary> /// <param name="previous"></param> protected void CalculateAngles(RotateEventArgs previous) { if (Touches.Length > 1) { Angle = GetAngle(); } else if (previous != null) { Angle = previous.Angle; } else { Angle = 0.0; } if (previous == null) { DeltaAngle = 0.0; TotalAngle = 0.0; return; } if (Touches.Length != previous.Touches.Length) { DeltaAngle = 0.0; TotalAngle = previous.TotalAngle; return; } DeltaAngle = Angle - previous.Angle; DeltaAngle += (DeltaAngle > 180) ? -360 : (DeltaAngle < -180) ? +360 : 0; TotalAngle = previous.TotalAngle + DeltaAngle; }
/// <summary> /// constructor /// </summary> /// <param name="source"></param> /// <param name="newListener"></param> public RotateEventArgs(RotateEventArgs source = null, Listener newListener = null) : base(source, newListener) { if (source != null) { Angle = source.Angle; DeltaAngle = source.DeltaAngle; TotalAngle = source.TotalAngle; } }
internal RotateEventArgs Diff(RotateEventArgs lastArgs) { return(new RotateEventArgs { Cancelled = Cancelled, Handled = Handled, ViewPosition = ViewPosition, Touches = Touches, Listener = Listener, Angle = Angle, TotalAngle = TotalAngle, DeltaAngle = Angle - lastArgs.Angle }); }
internal RotateEventArgs Diff(RotateEventArgs lastArgs) { return(new RotateEventArgs { Cancelled = Cancelled, Handled = Handled, ElementPosition = ElementPosition, ElementTouches = ElementTouches, WindowTouches = WindowTouches, Listener = Listener, Angle = Angle, TotalAngle = TotalAngle, DeltaAngle = Angle - lastArgs.Angle }); }
/// <summary> /// helper function used to calculate rotation angles /// </summary> /// <param name="previous"></param> protected void CalculateAngles(RotateEventArgs previous) { if (Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.Android) { direction *= -1; } if (WindowTouches.Length > 1) { Angle = GetAngle(WindowTouches); } else if (previous != null) { Angle = previous.Angle; } else { Angle = 0.0; } if (previous == null) { DeltaAngle = 0.0; TotalAngle = 0.0; return; } if (WindowTouches.Length != previous.WindowTouches.Length) { DeltaAngle = 0.0; TotalAngle = previous.TotalAngle; return; } DeltaAngle = Angle - previous.Angle; DeltaAngle += (DeltaAngle > 180) ? -360 : (DeltaAngle < -180) ? +360 : 0; TotalAngle = previous.TotalAngle + DeltaAngle; //System.Diagnostics.Debug.WriteLine("detalAngle=["+DeltaAngle.ToString("N2")+"]"); }