示例#1
0
 /// <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;
 }
示例#2
0
 /// <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;
 }
示例#3
0
 /// <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;
     }
 }
示例#4
0
 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
     });
 }
示例#5
0
 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
     });
 }
示例#6
0
        /// <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")+"]");
        }