diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-12-10 18:48:30 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-12-10 18:48:30 +0100 |
| commit | 3c6887e62dcce8d3e1c9693eaf580932521b4014 (patch) | |
| tree | 5cf08a7589dce289d8dca6d60e328b32935a63a5 /src/Input/MouseState.cs | |
| parent | fd3cf7597b2c3084c41993fe2043a484466c4fa9 (diff) | |
netcore support
Diffstat (limited to 'src/Input/MouseState.cs')
| -rw-r--r-- | src/Input/MouseState.cs | 362 |
1 files changed, 0 insertions, 362 deletions
diff --git a/src/Input/MouseState.cs b/src/Input/MouseState.cs deleted file mode 100644 index f6db21ea..00000000 --- a/src/Input/MouseState.cs +++ /dev/null @@ -1,362 +0,0 @@ - #region License - // - // The Open Toolkit Library License - // - // Copyright (c) 2006 - 2009 the Open Toolkit library. - // - // Permission is hereby granted, free of charge, to any person obtaining a copy - // of this software and associated documentation files (the "Software"), to deal - // in the Software without restriction, including without limitation the rights to - // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - // the Software, and to permit persons to whom the Software is furnished to do - // so, subject to the following conditions: - // - // The above copyright notice and this permission notice shall be included in all - // copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - // OTHER DEALINGS IN THE SOFTWARE. - // - #endregion - -using System; -using System.Collections.Generic; -using System.Text; - -namespace Crow -{ - /// <summary> - /// Encapsulates the state of a mouse device. - /// </summary> - public struct MouseState : IEquatable<MouseState> - { - #region Fields - - public const int MaxButtons = 16; // we are storing in an ushort - Point position; - MouseScroll scroll; - ushort buttons; - bool is_connected; - - #endregion - - - - #region Public Members - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether the specified - /// <see cref="OpenTK.Input.MouseButton"/> is pressed. - /// </summary> - /// <param name="button">The <see cref="OpenTK.Input.MouseButton"/> to check.</param> - /// <returns>True if key is pressed; false otherwise.</returns> - public bool this[MouseButton button] - { - get { return IsButtonDown(button); } - internal set - { - if (value) - EnableBit((int)button); - else - DisableBit((int)button); - } - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether this button is down. - /// </summary> - /// <param name="button">The <see cref="OpenTK.Input.MouseButton"/> to check.</param> - public bool IsButtonDown(MouseButton button) - { - return ReadBit((int)button); - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether this button is up. - /// </summary> - /// <param name="button">The <see cref="OpenTK.Input.MouseButton"/> to check.</param> - public bool IsButtonUp(MouseButton button) - { - return !ReadBit((int)button); - } - - /// <summary> - /// Gets the absolute wheel position in integer units. - /// To support high-precision mice, it is recommended to use <see cref="WheelPrecise"/> instead. - /// </summary> - public int Wheel - { - get { return (int)Math.Round(scroll.Y, MidpointRounding.AwayFromZero); } - } - - /// <summary> - /// Gets the absolute wheel position in floating-point units. - /// </summary> - public float WheelPrecise - { - get { return scroll.Y; } - } - - /// <summary> - /// Gets a <see cref="OpenTK.Input.MouseScroll"/> instance, - /// representing the current state of the mouse scroll wheel. - /// </summary> - public MouseScroll Scroll - { - get { return scroll; } - } - - /// <summary> - /// Gets an integer representing the absolute x position of the pointer, in window pixel coordinates. - /// </summary> - public int X - { - get { return position.X; } - set { position.X = value; } - } - - /// <summary> - /// Gets an integer representing the absolute y position of the pointer, in window pixel coordinates. - /// </summary> - public int Y - { - get { return position.Y; } - set { position.Y = value; } - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether the left mouse button is pressed. - /// This property is intended for XNA compatibility. - /// </summary> - public ButtonState LeftButton - { - get { return IsButtonDown(MouseButton.Left) ? ButtonState.Pressed : ButtonState.Released; } - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether the middle mouse button is pressed. - /// This property is intended for XNA compatibility. - /// </summary> - public ButtonState MiddleButton - { - get { return IsButtonDown(MouseButton.Middle) ? ButtonState.Pressed : ButtonState.Released; } - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether the right mouse button is pressed. - /// This property is intended for XNA compatibility. - /// </summary> - public ButtonState RightButton - { - get { return IsButtonDown(MouseButton.Right) ? ButtonState.Pressed : ButtonState.Released; } - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether the first extra mouse button is pressed. - /// This property is intended for XNA compatibility. - /// </summary> - public ButtonState XButton1 - { - get { return IsButtonDown(MouseButton.Button1) ? ButtonState.Pressed : ButtonState.Released; } - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether the second extra mouse button is pressed. - /// This property is intended for XNA compatibility. - /// </summary> - public ButtonState XButton2 - { - get { return IsButtonDown(MouseButton.Button2) ? ButtonState.Pressed : ButtonState.Released; } - } - - /// <summary> - /// Gets the absolute wheel position in integer units. This property is intended for XNA compatibility. - /// To support high-precision mice, it is recommended to use <see cref="WheelPrecise"/> instead. - /// </summary> - public int ScrollWheelValue - { - get { return Wheel; } - } - - /// <summary> - /// Gets a value indicating whether this instance is connected. - /// </summary> - /// <value><c>true</c> if this instance is connected; otherwise, <c>false</c>.</value> - public bool IsConnected - { - get { return is_connected; } - internal set { is_connected = value; } - } - - /// <summary> - /// Checks whether two <see cref="MouseState" /> instances are equal. - /// </summary> - /// <param name="left"> - /// A <see cref="MouseState"/> instance. - /// </param> - /// <param name="right"> - /// A <see cref="MouseState"/> instance. - /// </param> - /// <returns> - /// True if both left is equal to right; false otherwise. - /// </returns> - public static bool operator ==(MouseState left, MouseState right) - { - return left.Equals(right); - } - - /// <summary> - /// Checks whether two <see cref="MouseState" /> instances are not equal. - /// </summary> - /// <param name="left"> - /// A <see cref="MouseState"/> instance. - /// </param> - /// <param name="right"> - /// A <see cref="MouseState"/> instance. - /// </param> - /// <returns> - /// True if both left is not equal to right; false otherwise. - /// </returns> - public static bool operator !=(MouseState left, MouseState right) - { - return !left.Equals(right); - } - - /// <summary> - /// Compares to an object instance for equality. - /// </summary> - /// <param name="obj"> - /// The <see cref="System.Object"/> to compare to. - /// </param> - /// <returns> - /// True if this instance is equal to obj; false otherwise. - /// </returns> - public override bool Equals(object obj) - { - if (obj is MouseState) - { - return this == (MouseState)obj; - } - else - { - return false; - } - } - - /// <summary> - /// Generates a hashcode for the current instance. - /// </summary> - /// <returns> - /// A <see cref="System.Int32"/> represting the hashcode for this instance. - /// </returns> - public override int GetHashCode() - { - return buttons.GetHashCode() ^ X.GetHashCode() ^ Y.GetHashCode() ^ scroll.GetHashCode(); - } - - /// <summary> - /// Returns a <see cref="System.String"/> that represents the current <see cref="OpenTK.Input.MouseState"/>. - /// </summary> - /// <returns>A <see cref="System.String"/> that represents the current <see cref="OpenTK.Input.MouseState"/>.</returns> - public override string ToString() - { - string b = Convert.ToString(buttons, 2).PadLeft(10, '0'); - return String.Format("[X={0}, Y={1}, Scroll={2}, Buttons={3}, IsConnected={4}]", - X, Y, Scroll, b, IsConnected); - } - - #endregion - - #region Internal Members - - internal Point Position - { - get { return position; } - set { position = value; } - } - - internal bool ReadBit(int offset) - { - ValidateOffset(offset); - return (buttons & (1 << offset)) != 0; - } - - public void EnableBit(int offset) - { - ValidateOffset(offset); - buttons |= unchecked((ushort)(1 << offset)); - } - - public void DisableBit(int offset) - { - ValidateOffset(offset); - buttons &= unchecked((ushort)(~(1 << offset))); - } - - internal void MergeBits(MouseState other) - { - buttons |= other.buttons; - SetScrollRelative(other.scroll.X, other.scroll.Y); - X += other.X; - Y += other.Y; - IsConnected |= other.IsConnected; - } - - internal void SetIsConnected(bool value) - { - IsConnected = value; - } - - #region Internal Members - - internal void SetScrollAbsolute(float x, float y) - { - scroll.X = x; - scroll.Y = y; - } - - internal void SetScrollRelative(float x, float y) - { - scroll.X += x; - scroll.Y += y; - } - - #endregion - - #endregion - - #region Private Members - - static void ValidateOffset(int offset) - { - if (offset < 0 || offset >= 16) - throw new ArgumentOutOfRangeException("offset"); - } - - #endregion - - #region IEquatable<MouseState> Members - - /// <summary> - /// Compares two MouseState instances. - /// </summary> - /// <param name="other">The instance to compare two.</param> - /// <returns>True, if both instances are equal; false otherwise.</returns> - public bool Equals(MouseState other) - { - return - buttons == other.buttons && - X == other.X && - Y == other.Y && - Scroll == other.Scroll; - } - - #endregion - } -} |