|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
//
//
using System;
using System.Windows;
using System.Windows.Input;
namespace System.Windows.Input
{
/// <summary>
/// Describes a particular position and bounds of a TouchDevice.
/// </summary>
public class TouchPoint : IEquatable<TouchPoint>
{
/// <summary>
/// Creates an instance of this class and initializes its properties.
/// </summary>
/// <param name="device">
/// The TouchDevice that this TouchPoint describes. Must be non-null.
/// </param>
/// <param name="position">
/// The current location of the device.
/// The coordinate space of this parameter is defined by the caller and should be
/// consistent with the rectBounds parameter.
/// </param>
/// <param name="bounds">
/// The bounds of the area that the TouchDevice (i.e. finger) is in contact with the screen.
/// The coordinate space of this parameter is defined by the caller and should be
/// consistent with the position parameter.</param>
/// <param name="action">
/// Indicates the last action that occurred by this device at this location.
/// </param>
public TouchPoint(TouchDevice device, Point position, Rect bounds, TouchAction action)
{
ArgumentNullException.ThrowIfNull(device);
TouchDevice = device;
Position = position;
Bounds = bounds;
Action = action;
}
/// <summary>
/// The device associated with this TouchPoint.
/// </summary>
public TouchDevice TouchDevice
{
get;
private set;
}
/// <summary>
/// The position of this device. The coordinate space is defined
/// by the provider of this object.
/// </summary>
public Point Position
{
get;
private set;
}
/// <summary>
/// The bounds of the area that the finger is in contact with
/// the screen. The coordinate space is defined by the
/// provider of this object.
/// </summary>
public Rect Bounds
{
get;
private set;
}
/// <summary>
/// Equivalent to Bounds.Size.
/// </summary>
public Size Size
{
get
{
return Bounds.Size;
}
}
/// <summary>
/// The last action associated with this device.
/// </summary>
public TouchAction Action
{
get;
private set;
}
#region IEquatable
/// <summary>
/// Whether two TouchPoints are equivalent.
/// </summary>
/// <param name="other">Another TouchPoint.</param>
/// <returns>true if this TouchPoint and the other TouchPoint are equivalent.</returns>
bool IEquatable<TouchPoint>.Equals(TouchPoint other)
{
if (other != null)
{
return (other.TouchDevice == TouchDevice) &&
(other.Position == Position) &&
(other.Bounds == Bounds) &&
(other.Action == Action);
}
return false;
}
#endregion
}
}
|