diff options
| author | j-p <jp.bruyere@live.be> | 2018-12-11 23:20:54 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-11 23:20:54 +0100 |
| commit | eef19b533a0e2ce17f2762d3acfc5990496eaaa0 (patch) | |
| tree | 6f09101bd8097c1a4ca6a216597bb5d4941453fa /src/Input | |
| parent | 65820f61457262b631eba35283c55135aecbc5f2 (diff) | |
| parent | f6732851fe211e22ff91716ac83dffc0cf09d620 (diff) | |
Merge pull request #44 from jpbruyere/xlib
Xlib
Diffstat (limited to 'src/Input')
| -rw-r--r-- | src/Input/ButtonState.cs | 45 | ||||
| -rw-r--r-- | src/Input/Buttons.cs | 166 | ||||
| -rw-r--r-- | src/Input/Key.cs | 380 | ||||
| -rw-r--r-- | src/Input/KeyModifiers.cs | 63 | ||||
| -rw-r--r-- | src/Input/KeyPressEventArgs.cs | 58 | ||||
| -rw-r--r-- | src/Input/KeyboardKeyEventArgs.cs | 167 | ||||
| -rw-r--r-- | src/Input/KeyboardState.cs | 316 | ||||
| -rw-r--r-- | src/Input/MouseButton.cs | 92 | ||||
| -rw-r--r-- | src/Input/MouseEventArgs.cs | 375 | ||||
| -rw-r--r-- | src/Input/MouseScroll.cs | 118 | ||||
| -rw-r--r-- | src/Input/MouseState.cs | 362 |
11 files changed, 0 insertions, 2142 deletions
diff --git a/src/Input/ButtonState.cs b/src/Input/ButtonState.cs deleted file mode 100644 index 17849ca8..00000000 --- a/src/Input/ButtonState.cs +++ /dev/null @@ -1,45 +0,0 @@ - #region License - // - // The Open Toolkit Library License - // - // Copyright (c) 2006 - 2010 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 - -namespace Crow -{ - /// <summary> - /// Enumerates possible mouse button states. - /// </summary> - public enum ButtonState - { - /// <summary> - /// Indicates that a mouse button is released. - /// </summary> - Released = 0, - - /// <summary> - /// Indicates that a mouse button is pressed. - /// </summary> - Pressed = 1 - } -} diff --git a/src/Input/Buttons.cs b/src/Input/Buttons.cs deleted file mode 100644 index ebf3bc42..00000000 --- a/src/Input/Buttons.cs +++ /dev/null @@ -1,166 +0,0 @@ -// -// GamePadButton.cs -// -// Author: -// robert <${AuthorEmail}> -// -// Copyright (c) 2012 robert -// -// 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. -using System; - -namespace Crow -{ - /// <summary> - /// Enumerates available buttons for a <c>GamePad</c> device. - /// </summary> - [Flags] - public enum Buttons - { - /// <summary> - /// DPad up direction button - /// </summary> - DPadUp = 1 << 0, - - /// <summary> - /// DPad down direction button - /// </summary> - DPadDown = 1 << 1, - - /// <summary> - /// DPad left direction button - /// </summary> - DPadLeft = 1 << 2, - - /// <summary> - /// DPad right direction button - /// </summary> - DPadRight = 1 << 3, - - /// <summary> - /// Start button - /// </summary> - Start = 1 << 4, - - /// <summary> - /// Back button - /// </summary> - Back = 1 << 5, - - /// <summary> - /// Left stick button - /// </summary> - LeftStick = 1 << 6, - - /// <summary> - /// Right stick button - /// </summary> - RightStick = 1 << 7, - - /// <summary> - /// Left shoulder button - /// </summary> - LeftShoulder = 1 << 8, - - /// <summary> - /// Right shoulder button - /// </summary> - RightShoulder = 1 << 9, - - /// <summary> - /// Home button - /// </summary> - Home = 1 << 11, - - /// <summary> - /// Home button - /// </summary> - BigButton = Home, - - /// <summary> - /// A button - /// </summary> - A = 1 << 12, - - /// <summary> - /// B button - /// </summary> - B = 1 << 13, - - /// <summary> - /// X button - /// </summary> - X = 1 << 14, - - /// <summary> - /// Y button - /// </summary> - Y = 1 << 15, - - /// <summary> - /// Left thumbstick left direction button - /// </summary> - LeftThumbstickLeft = 1 << 21, - - /// <summary> - /// Right trigger button - /// </summary> - RightTrigger = 1 << 22, - - /// <summary> - /// Left trigger button - /// </summary> - LeftTrigger = 1 << 23, - - /// <summary> - /// Right thumbstick up direction button - /// </summary> - RightThumbstickUp = 1 << 24, - - /// <summary> - /// Right thumbstick down direction button - /// </summary> - RightThumbstickDown = 1 << 25, - - /// <summary> - /// Right stick right direction button - /// </summary> - RightThumbstickRight = 1 << 26, - - /// <summary> - /// Right stick left direction button - /// </summary> - RightThumbstickLeft = 1 << 27, - - /// <summary> - /// Left stick up direction button - /// </summary> - LeftThumbstickUp = 1 << 28, - - /// <summary> - /// Left stick down direction button - /// </summary> - LeftThumbstickDown = 1 << 29, - - /// <summary> - /// Left stick right direction button - /// </summary> - LeftThumbstickRight = 1 << 30, - } -} diff --git a/src/Input/Key.cs b/src/Input/Key.cs deleted file mode 100644 index 71f9d85a..00000000 --- a/src/Input/Key.cs +++ /dev/null @@ -1,380 +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 - -namespace Crow -{ - /// <summary> - /// The available keyboard keys. - /// </summary> - public enum Key : int - { - /// <summary>A key outside the known keys.</summary> - Unknown = 0, - - // Modifiers - /// <summary>The left shift key.</summary> - ShiftLeft, - /// <summary>The left shift key (equivalent to ShiftLeft).</summary> - LShift = ShiftLeft, - /// <summary>The right shift key.</summary> - ShiftRight, - /// <summary>The right shift key (equivalent to ShiftRight).</summary> - RShift = ShiftRight, - /// <summary>The left control key.</summary> - ControlLeft, - /// <summary>The left control key (equivalent to ControlLeft).</summary> - LControl = ControlLeft, - /// <summary>The right control key.</summary> - ControlRight, - /// <summary>The right control key (equivalent to ControlRight).</summary> - RControl = ControlRight, - /// <summary>The left alt key.</summary> - AltLeft, - /// <summary>The left alt key (equivalent to AltLeft.</summary> - LAlt = AltLeft, - /// <summary>The right alt key.</summary> - AltRight, - /// <summary>The right alt key (equivalent to AltRight).</summary> - RAlt = AltRight, - /// <summary>The left win key.</summary> - WinLeft, - /// <summary>The left win key (equivalent to WinLeft).</summary> - LWin = WinLeft, - /// <summary>The right win key.</summary> - WinRight, - /// <summary>The right win key (equivalent to WinRight).</summary> - RWin = WinRight, - /// <summary>The menu key.</summary> - Menu, - - // Function keys (hopefully enough for most keyboards - mine has 26) - // <keysymdef.h> on X11 reports up to 35 function keys. - /// <summary>The F1 key.</summary> - F1, - /// <summary>The F2 key.</summary> - F2, - /// <summary>The F3 key.</summary> - F3, - /// <summary>The F4 key.</summary> - F4, - /// <summary>The F5 key.</summary> - F5, - /// <summary>The F6 key.</summary> - F6, - /// <summary>The F7 key.</summary> - F7, - /// <summary>The F8 key.</summary> - F8, - /// <summary>The F9 key.</summary> - F9, - /// <summary>The F10 key.</summary> - F10, - /// <summary>The F11 key.</summary> - F11, - /// <summary>The F12 key.</summary> - F12, - /// <summary>The F13 key.</summary> - F13, - /// <summary>The F14 key.</summary> - F14, - /// <summary>The F15 key.</summary> - F15, - /// <summary>The F16 key.</summary> - F16, - /// <summary>The F17 key.</summary> - F17, - /// <summary>The F18 key.</summary> - F18, - /// <summary>The F19 key.</summary> - F19, - /// <summary>The F20 key.</summary> - F20, - /// <summary>The F21 key.</summary> - F21, - /// <summary>The F22 key.</summary> - F22, - /// <summary>The F23 key.</summary> - F23, - /// <summary>The F24 key.</summary> - F24, - /// <summary>The F25 key.</summary> - F25, - /// <summary>The F26 key.</summary> - F26, - /// <summary>The F27 key.</summary> - F27, - /// <summary>The F28 key.</summary> - F28, - /// <summary>The F29 key.</summary> - F29, - /// <summary>The F30 key.</summary> - F30, - /// <summary>The F31 key.</summary> - F31, - /// <summary>The F32 key.</summary> - F32, - /// <summary>The F33 key.</summary> - F33, - /// <summary>The F34 key.</summary> - F34, - /// <summary>The F35 key.</summary> - F35, - - // Direction arrows - /// <summary>The up arrow key.</summary> - Up, - /// <summary>The down arrow key.</summary> - Down, - /// <summary>The left arrow key.</summary> - Left, - /// <summary>The right arrow key.</summary> - Right, - - /// <summary>The enter key.</summary> - Enter, - /// <summary>The escape key.</summary> - Escape, - /// <summary>The space key.</summary> - Space, - /// <summary>The tab key.</summary> - Tab, - /// <summary>The backspace key.</summary> - BackSpace, - /// <summary>The backspace key (equivalent to BackSpace).</summary> - Back = BackSpace, - /// <summary>The insert key.</summary> - Insert, - /// <summary>The delete key.</summary> - Delete, - /// <summary>The page up key.</summary> - PageUp, - /// <summary>The page down key.</summary> - PageDown, - /// <summary>The home key.</summary> - Home, - /// <summary>The end key.</summary> - End, - /// <summary>The caps lock key.</summary> - CapsLock, - /// <summary>The scroll lock key.</summary> - ScrollLock, - /// <summary>The print screen key.</summary> - PrintScreen, - /// <summary>The pause key.</summary> - Pause, - /// <summary>The num lock key.</summary> - NumLock, - - // Special keys - /// <summary>The clear key (Keypad5 with NumLock disabled, on typical keyboards).</summary> - Clear, - /// <summary>The sleep key.</summary> - Sleep, - /*LogOff, - Help, - Undo, - Redo, - New, - Open, - Close, - Reply, - Forward, - Send, - Spell, - Save, - Calculator, - - // Folders and applications - Documents, - Pictures, - Music, - MediaPlayer, - Mail, - Browser, - Messenger, - - // Multimedia keys - Mute, - PlayPause, - Stop, - VolumeUp, - VolumeDown, - TrackPrevious, - TrackNext,*/ - - // Keypad keys - /// <summary>The keypad 0 key.</summary> - Keypad0, - /// <summary>The keypad 1 key.</summary> - Keypad1, - /// <summary>The keypad 2 key.</summary> - Keypad2, - /// <summary>The keypad 3 key.</summary> - Keypad3, - /// <summary>The keypad 4 key.</summary> - Keypad4, - /// <summary>The keypad 5 key.</summary> - Keypad5, - /// <summary>The keypad 6 key.</summary> - Keypad6, - /// <summary>The keypad 7 key.</summary> - Keypad7, - /// <summary>The keypad 8 key.</summary> - Keypad8, - /// <summary>The keypad 9 key.</summary> - Keypad9, - /// <summary>The keypad divide key.</summary> - KeypadDivide, - /// <summary>The keypad multiply key.</summary> - KeypadMultiply, - /// <summary>The keypad subtract key.</summary> - KeypadSubtract, - /// <summary>The keypad minus key (equivalent to KeypadSubtract).</summary> - KeypadMinus = KeypadSubtract, - /// <summary>The keypad add key.</summary> - KeypadAdd, - /// <summary>The keypad plus key (equivalent to KeypadAdd).</summary> - KeypadPlus = KeypadAdd, - /// <summary>The keypad decimal key.</summary> - KeypadDecimal, - /// <summary>The keypad period key (equivalent to KeypadDecimal).</summary> - KeypadPeriod = KeypadDecimal, - /// <summary>The keypad enter key.</summary> - KeypadEnter, - - // Letters - /// <summary>The A key.</summary> - A, - /// <summary>The B key.</summary> - B, - /// <summary>The C key.</summary> - C, - /// <summary>The D key.</summary> - D, - /// <summary>The E key.</summary> - E, - /// <summary>The F key.</summary> - F, - /// <summary>The G key.</summary> - G, - /// <summary>The H key.</summary> - H, - /// <summary>The I key.</summary> - I, - /// <summary>The J key.</summary> - J, - /// <summary>The K key.</summary> - K, - /// <summary>The L key.</summary> - L, - /// <summary>The M key.</summary> - M, - /// <summary>The N key.</summary> - N, - /// <summary>The O key.</summary> - O, - /// <summary>The P key.</summary> - P, - /// <summary>The Q key.</summary> - Q, - /// <summary>The R key.</summary> - R, - /// <summary>The S key.</summary> - S, - /// <summary>The T key.</summary> - T, - /// <summary>The U key.</summary> - U, - /// <summary>The V key.</summary> - V, - /// <summary>The W key.</summary> - W, - /// <summary>The X key.</summary> - X, - /// <summary>The Y key.</summary> - Y, - /// <summary>The Z key.</summary> - Z, - - // Numbers - /// <summary>The number 0 key.</summary> - Number0, - /// <summary>The number 1 key.</summary> - Number1, - /// <summary>The number 2 key.</summary> - Number2, - /// <summary>The number 3 key.</summary> - Number3, - /// <summary>The number 4 key.</summary> - Number4, - /// <summary>The number 5 key.</summary> - Number5, - /// <summary>The number 6 key.</summary> - Number6, - /// <summary>The number 7 key.</summary> - Number7, - /// <summary>The number 8 key.</summary> - Number8, - /// <summary>The number 9 key.</summary> - Number9, - - // Symbols - /// <summary>The tilde key.</summary> - Tilde, - /// <summary>The grave key (equivaent to Tilde).</summary> - Grave = Tilde, - /// <summary>The minus key.</summary> - Minus, - //Equal, - /// <summary>The plus key.</summary> - Plus, - /// <summary>The left bracket key.</summary> - BracketLeft, - /// <summary>The left bracket key (equivalent to BracketLeft).</summary> - LBracket = BracketLeft, - /// <summary>The right bracket key.</summary> - BracketRight, - /// <summary>The right bracket key (equivalent to BracketRight).</summary> - RBracket = BracketRight, - /// <summary>The semicolon key.</summary> - Semicolon, - /// <summary>The quote key.</summary> - Quote, - /// <summary>The comma key.</summary> - Comma, - /// <summary>The period key.</summary> - Period, - /// <summary>The slash key.</summary> - Slash, - /// <summary>The backslash key.</summary> - BackSlash, - /// <summary>The secondary backslash key.</summary> - NonUSBackSlash, - /// <summary>Indicates the last available keyboard key.</summary> - LastKey - } -}
\ No newline at end of file diff --git a/src/Input/KeyModifiers.cs b/src/Input/KeyModifiers.cs deleted file mode 100644 index 885365ca..00000000 --- a/src/Input/KeyModifiers.cs +++ /dev/null @@ -1,63 +0,0 @@ -#region License -// -// HatPosition.cs -// -// Author: -// Stefanos A. <stapostol@gmail.com> -// -// Copyright (c) 2006-2014 Stefanos Apostolopoulos -// -// 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> - /// Enumerates modifier keys. - /// </summary> - [Flags] - public enum KeyModifiers : byte - { - None = 0, - /// <summary> - /// The alt key modifier (option on Mac). - /// </summary> - Alt = 1 << 0, - - /// <summary> - /// The control key modifier. - /// </summary> - Control = 1 << 1, - - /// <summary> - /// The shift key modifier. - /// </summary> - Shift = 1 << 2, - - /// <summary> - /// The shift key modifier. - /// </summary> - AltGr = 1 << 3 - } -} diff --git a/src/Input/KeyPressEventArgs.cs b/src/Input/KeyPressEventArgs.cs deleted file mode 100644 index 73990613..00000000 --- a/src/Input/KeyPressEventArgs.cs +++ /dev/null @@ -1,58 +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; - -namespace Crow -{ - /// <summary> - /// Defines the event arguments for KeyPress events. Instances of this class are cached: - /// KeyPressEventArgs should only be used inside the relevant event, unless manually cloned. - /// </summary> - public class KeyPressEventArgs : EventArgs - { - char key_char; - - /// <summary> - /// Constructs a new instance. - /// </summary> - /// <param name="keyChar">The ASCII character that was typed.</param> - public KeyPressEventArgs(char keyChar) - { - KeyChar = keyChar; - } - - /// <summary> - /// Gets a <see cref="System.Char"/> that defines the ASCII character that was typed. - /// </summary> - public char KeyChar - { - get { return key_char; } - internal set { key_char = value; } - } - } -} diff --git a/src/Input/KeyboardKeyEventArgs.cs b/src/Input/KeyboardKeyEventArgs.cs deleted file mode 100644 index f9307ffc..00000000 --- a/src/Input/KeyboardKeyEventArgs.cs +++ /dev/null @@ -1,167 +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> - /// Defines the event data for <see cref="KeyboardDevice"/> events. - /// </summary> - /// <remarks> - /// <para> - /// Do not cache instances of this type outside their event handler. - /// If necessary, you can clone a KeyboardEventArgs instance using the - /// <see cref="KeyboardKeyEventArgs(KeyboardKeyEventArgs)"/> constructor. - /// </para> - /// </remarks> - public class KeyboardKeyEventArgs : EventArgs - { - #region Fields - - Key key; - bool repeat; - KeyboardState state; - - #endregion - - #region Constructors - - /// <summary> - /// Constructs a new KeyboardEventArgs instance. - /// </summary> - public KeyboardKeyEventArgs(Key _key, bool _repeat, KeyboardState _state) - { - key = _key; - repeat = _repeat; - state = _state; - } - - /// <summary> - /// Constructs a new KeyboardEventArgs instance. - /// </summary> - /// <param name="args">An existing KeyboardEventArgs instance to clone.</param> - public KeyboardKeyEventArgs(KeyboardKeyEventArgs args) - { - Key = args.Key; - } - - #endregion - - #region Public Members - - /// <summary> - /// Gets the <see cref="Key"/> that generated this event. - /// </summary> - public Key Key - { - get { return key; } - internal set { key = value; } - } - - /// <summary> - /// Gets the scancode which generated this event. - /// </summary> - public uint ScanCode - { - get { return (uint)Key; } - } - - /// <summary> - /// Gets a value indicating whether <see cref="OpenTK.Input.KeyModifiers.Alt"/> is pressed. - /// </summary> - /// <value><c>true</c> if pressed; otherwise, <c>false</c>.</value> - public bool Alt - { - get { return state[Key.AltLeft] || state[Key.AltRight]; } - } - - /// <summary> - /// Gets a value indicating whether <see cref="OpenTK.Input.KeyModifiers.Control"/> is pressed. - /// </summary> - /// <value><c>true</c> if pressed; otherwise, <c>false</c>.</value> - public bool Control - { - get { return state[Key.ControlLeft] || state[Key.ControlRight]; } - } - - /// <summary> - /// Gets a value indicating whether <see cref="OpenTK.Input.KeyModifiers.Shift"/> is pressed. - /// </summary> - /// <value><c>true</c> if pressed; otherwise, <c>false</c>.</value> - public bool Shift - { - get { return state[Key.ShiftLeft] || state[Key.ShiftRight]; } - } - - /// <summary> - /// Gets a bitwise combination representing the <see cref="OpenTK.Input.KeyModifiers"/> - /// that are currently pressed. - /// </summary> - /// <value>The modifiers.</value> - public KeyModifiers Modifiers - { - get - { - KeyModifiers mods = 0; - mods |= Alt ? KeyModifiers.Alt : 0; - mods |= Control ? KeyModifiers.Control : 0; - mods |= Shift ? KeyModifiers.Shift : 0; - return mods; - } - } - - /// <summary> - /// Gets the current <see cref="OpenTK.Input.KeyboardState"/>. - /// </summary> - /// <value>The keyboard.</value> - public KeyboardState Keyboard - { - get { return state; } - internal set { state = value; } - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether - /// this key event is a repeat. - /// </summary> - /// <value> - /// true, if this event was caused by the user holding down - /// a key; false, if this was caused by the user pressing a - /// key for the first time. - /// </value> - public bool IsRepeat - { - get { return repeat; } - internal set { repeat = value; } - } - - #endregion - } -} diff --git a/src/Input/KeyboardState.cs b/src/Input/KeyboardState.cs deleted file mode 100644 index e3784bc3..00000000 --- a/src/Input/KeyboardState.cs +++ /dev/null @@ -1,316 +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.Specialized; -using System.Text; - -namespace Crow -{ - /// <summary> - /// Encapsulates the state of a Keyboard device. - /// </summary> - public struct KeyboardState : IEquatable<KeyboardState> - { - #region Fields - - // Allocate enough ints to store all keyboard keys - const int IntSize = sizeof(int); - const int NumInts = ((int)Key.LastKey + IntSize - 1) / IntSize; - // The following line triggers bogus CS0214 in gmcs 2.0.1, sigh... - unsafe fixed int Keys[NumInts]; - bool is_connected; - - #endregion - - #region Public Members - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether the specified - /// <see cref="OpenTK.Input.Key"/> is pressed. - /// </summary> - /// <param name="key">The <see cref="OpenTK.Input.Key"/> to check.</param> - /// <returns>True if key is pressed; false otherwise.</returns> - public bool this[Key key] - { - get { return IsKeyDown(key); } - internal set { SetKeyState(key, value); } - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether the specified - /// <see cref="OpenTK.Input.Key"/> is pressed. - /// </summary> - /// <param name="code">The scancode to check.</param> - /// <returns>True if code is pressed; false otherwise.</returns> - public bool this[short code] - { - get { return IsKeyDown((Key)code); } - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether this key is down. - /// </summary> - /// <param name="key">The <see cref="OpenTK.Input.Key"/> to check.</param> - public bool IsKeyDown(Key key) - { - return ReadBit((int)key); - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether this scan code is down. - /// </summary> - /// <param name="code">The scan code to check.</param> - public bool IsKeyDown(short code) - { - return code >= 0 && code < (short)Key.LastKey && ReadBit(code); - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether this key is up. - /// </summary> - /// <param name="key">The <see cref="OpenTK.Input.Key"/> to check.</param> - public bool IsKeyUp(Key key) - { - return !ReadBit((int)key); - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether this scan code is down. - /// </summary> - /// <param name="code">The scan code to check.</param> - public bool IsKeyUp(short code) - { - return !IsKeyDown(code); - } - - /// <summary> - /// Gets a <see cref="System.Boolean"/> indicating whether this keyboard - /// is connected. - /// </summary> - public bool IsConnected - { - get { return is_connected; } - internal set { is_connected = value; } - } - -#if false - // Disabled until the correct cross-platform API can be determined. - public bool IsLedOn(KeyboardLeds led) - { - return false; - } - - public bool IsLedOff(KeyboardLeds led) - { - return false; - } -#endif - - /// <summary> - /// Checks whether two <see cref="KeyboardState" /> instances are equal. - /// </summary> - /// <param name="left"> - /// A <see cref="KeyboardState"/> instance. - /// </param> - /// <param name="right"> - /// A <see cref="KeyboardState"/> instance. - /// </param> - /// <returns> - /// True if both left is equal to right; false otherwise. - /// </returns> - public static bool operator ==(KeyboardState left, KeyboardState right) - { - return left.Equals(right); - } - - /// <summary> - /// Checks whether two <see cref="KeyboardState" /> instances are not equal. - /// </summary> - /// <param name="left"> - /// A <see cref="KeyboardState"/> instance. - /// </param> - /// <param name="right"> - /// A <see cref="KeyboardState"/> instance. - /// </param> - /// <returns> - /// True if both left is not equal to right; false otherwise. - /// </returns> - public static bool operator !=(KeyboardState left, KeyboardState 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 KeyboardState) - { - return this == (KeyboardState)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() - { - unsafe - { - fixed (int* k = Keys) - { - int hashcode = 0; - for (int i = 0; i < NumInts; i++) - hashcode ^= (k + i)->GetHashCode(); - return hashcode; - } - } - } - - #endregion - - #region Internal Members - - public void SetKeyState(Key key, bool down) - { - if (down) - { - EnableBit((int)key); - } - else - { - DisableBit((int)key); - } - } - - internal bool ReadBit(int offset) - { - ValidateOffset(offset); - - int int_offset = offset / 32; - int bit_offset = offset % 32; - unsafe - { - fixed (int* k = Keys) { return (*(k + int_offset) & (1 << bit_offset)) != 0u; } - } - } - - internal void EnableBit(int offset) - { - //ValidateOffset(offset); - - int int_offset = offset / 32; - int bit_offset = offset % 32; - unsafe - { - fixed (int* k = Keys) { *(k + int_offset) |= 1 << bit_offset; } - } - } - - internal void DisableBit(int offset) - { - ValidateOffset(offset); - - int int_offset = offset / 32; - int bit_offset = offset % 32; - unsafe - { - fixed (int* k = Keys) { *(k + int_offset) &= ~(1 << bit_offset); } - } - } - - internal void MergeBits(KeyboardState other) - { - unsafe - { - int* k2 = other.Keys; - fixed (int* k1 = Keys) - { - for (int i = 0; i < NumInts; i++) - *(k1 + i) |= *(k2 + i); - } - } - IsConnected |= other.IsConnected; - } - - internal void SetIsConnected(bool value) - { - IsConnected = value; - } - - #endregion - - #region Private Members - - static void ValidateOffset(int offset) - { - if (offset < 0 || offset >= NumInts * IntSize) - throw new ArgumentOutOfRangeException(); - } - - #endregion - - #region IEquatable<KeyboardState> Members - - /// <summary> - /// Compares two KeyboardState instances. - /// </summary> - /// <param name="other">The instance to compare two.</param> - /// <returns>True, if both instances are equal; false otherwise.</returns> - public bool Equals(KeyboardState other) - { - bool equal = true; - unsafe - { - int* k2 = other.Keys; - fixed (int* k1 = Keys) - { - for (int i = 0; equal && i < NumInts; i++) - equal &= *(k1 + i) == *(k2 + i); - } - } - return equal; - } - - #endregion - } -} diff --git a/src/Input/MouseButton.cs b/src/Input/MouseButton.cs deleted file mode 100644 index 92be4774..00000000 --- a/src/Input/MouseButton.cs +++ /dev/null @@ -1,92 +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> - /// Enumerates all possible mouse buttons. - /// </summary> - public enum MouseButton - { - /// <summary> - /// The left mouse button. - /// </summary> - Left = 0, - /// <summary> - /// The middle mouse button. - /// </summary> - Middle, - /// <summary> - /// The right mouse button. - /// </summary> - Right, - /// <summary> - /// The first extra mouse button. - /// </summary> - Button1, - /// <summary> - /// The second extra mouse button. - /// </summary> - Button2, - /// <summary> - /// The third extra mouse button. - /// </summary> - Button3, - /// <summary> - /// The fourth extra mouse button. - /// </summary> - Button4, - /// <summary> - /// The fifth extra mouse button. - /// </summary> - Button5, - /// <summary> - /// The sixth extra mouse button. - /// </summary> - Button6, - /// <summary> - /// The seventh extra mouse button. - /// </summary> - Button7, - /// <summary> - /// The eigth extra mouse button. - /// </summary> - Button8, - /// <summary> - /// The ninth extra mouse button. - /// </summary> - Button9, - /// <summary> - /// Indicates the last available mouse button. - /// </summary> - LastButton - } -} diff --git a/src/Input/MouseEventArgs.cs b/src/Input/MouseEventArgs.cs deleted file mode 100644 index cf883f13..00000000 --- a/src/Input/MouseEventArgs.cs +++ /dev/null @@ -1,375 +0,0 @@ -#region License -// -// MouseEventArgs.cs -// -// Author: -// Stefanos A. <stapostol@gmail.com> -// -// Copyright (c) 2006-2014 Stefanos Apostolopoulos -// -// 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; -#if !MINIMAL -using System.Drawing; -#endif - -namespace Crow -{ - /// <summary> - /// Defines the event data for <see cref="MouseDevice"/> events. - /// </summary> - /// <remarks> - /// <para> - /// Do not cache instances of this type outside their event handler. - /// If necessary, you can clone an instance using the - /// <see cref="MouseEventArgs(MouseEventArgs)"/> constructor. - /// </para> - /// </remarks> - public class MouseEventArgs : EventArgs - { - #region Fields - - MouseState state; - - #endregion - - #region Constructors - - /// <summary> - /// Constructs a new instance. - /// </summary> - public MouseEventArgs() - { - state.SetIsConnected(true); - } - - /// <summary> - /// Constructs a new instance. - /// </summary> - /// <param name="x">The X position.</param> - /// <param name="y">The Y position.</param> - public MouseEventArgs(int x, int y) - : this() - { - state.X = x; - state.Y = y; - } - - /// <summary> - /// Constructs a new instance. - /// </summary> - /// <param name="args">The <see cref="MouseEventArgs"/> instance to clone.</param> - public MouseEventArgs(MouseEventArgs args) - : this(args.X, args.Y) - { - } - - #endregion - - #region Protected Members - - internal void SetButton(MouseButton button, ButtonState state) - { - if (button < 0 || button > MouseButton.LastButton) - throw new ArgumentOutOfRangeException(); - - switch (state) - { - case ButtonState.Pressed: - this.state.EnableBit((int)button); - break; - - case ButtonState.Released: - this.state.DisableBit((int)button); - break; - } - } - - internal ButtonState GetButton(MouseButton button) - { - if (button < 0 || button > MouseButton.LastButton) - throw new ArgumentOutOfRangeException(); - - return - state.ReadBit((int)button) ? - ButtonState.Pressed : ButtonState.Released; - } - - #endregion - - #region Public Members - - /// <summary> - /// Gets the X position of the mouse for the event. - /// </summary> - public int X { get { return state.X; } internal set { state.X = value; } } - - /// <summary> - /// Gets the Y position of the mouse for the event. - /// </summary> - public int Y { get { return state.Y; } internal set { state.Y = value; } } - - /// <summary> - /// Gets a <see cref="System.Drawing.Point"/> representing the location of the mouse for the event. - /// </summary> - public Point Position - { - get { return new Point(state.X, state.Y); } - set - { - X = value.X; - Y = value.Y; - } - } - - /// <summary> - /// Gets the current <see cref="OpenTK.Input.MouseState"/>. - /// </summary> - public MouseState Mouse - { - get { return state; } - set { state = value; } - } - - #endregion - } - - /// <summary> - /// Defines the event data for <see cref="MouseDevice.Move"/> events. - /// </summary> - /// <remarks> - /// <para> - /// Do not cache instances of this type outside their event handler. - /// If necessary, you can clone an instance using the - /// <see cref="MouseMoveEventArgs(MouseMoveEventArgs)"/> constructor. - /// </para> - /// </remarks> - public class MouseMoveEventArgs : MouseEventArgs - { - #region Fields - - int x_delta, y_delta; - - #endregion - - #region Constructors - - /// <summary> - /// Constructs a new <see cref="MouseMoveEventArgs"/> instance. - /// </summary> - public MouseMoveEventArgs() { } - - /// <summary> - /// Constructs a new <see cref="MouseMoveEventArgs"/> instance. - /// </summary> - /// <param name="x">The X position.</param> - /// <param name="y">The Y position.</param> - /// <param name="xDelta">The change in X position produced by this event.</param> - /// <param name="yDelta">The change in Y position produced by this event.</param> - public MouseMoveEventArgs(int x, int y, int xDelta, int yDelta) - : base(x, y) - { - XDelta = xDelta; - YDelta = yDelta; - } - - /// <summary> - /// Constructs a new <see cref="MouseMoveEventArgs"/> instance. - /// </summary> - /// <param name="args">The <see cref="MouseMoveEventArgs"/> instance to clone.</param> - public MouseMoveEventArgs(MouseMoveEventArgs args) - : this(args.X, args.Y, args.XDelta, args.YDelta) - { - } - - #endregion - - #region Public Members - - /// <summary> - /// Gets the change in X position produced by this event. - /// </summary> - public int XDelta { get { return x_delta; } internal set { x_delta = value; } } - - /// <summary> - /// Gets the change in Y position produced by this event. - /// </summary> - public int YDelta { get { return y_delta; } internal set { y_delta = value; } } - - #endregion - } - - /// <summary> - /// Defines the event data for <see cref="MouseDevice.ButtonDown"/> and <see cref="MouseDevice.ButtonUp"/> events. - /// </summary> - /// <remarks> - /// <para> - /// Do not cache instances of this type outside their event handler. - /// If necessary, you can clone an instance using the - /// <see cref="MouseButtonEventArgs(MouseButtonEventArgs)"/> constructor. - /// </para> - /// </remarks> - public class MouseButtonEventArgs : MouseEventArgs - { - #region Fields - - MouseButton button; - - #endregion - - #region Constructors - - /// <summary> - /// Constructs a new <see cref="MouseButtonEventArgs"/> instance. - /// </summary> - public MouseButtonEventArgs() { } - - /// <summary> - /// Constructs a new <see cref="MouseButtonEventArgs"/> instance. - /// </summary> - /// <param name="x">The X position.</param> - /// <param name="y">The Y position.</param> - /// <param name="button">The mouse button for the event.</param> - /// <param name="pressed">The current state of the button.</param> - public MouseButtonEventArgs(int x, int y, MouseButton button, bool pressed) - : base(x, y) - { - this.button = button; - this.IsPressed = pressed; - } - - public MouseButtonEventArgs(MouseButton button) - : base() - { - this.button = button; - } - - /// <summary> - /// Constructs a new <see cref="MouseButtonEventArgs"/> instance. - /// </summary> - /// <param name="args">The <see cref="MouseButtonEventArgs"/> instance to clone.</param> - public MouseButtonEventArgs(MouseButtonEventArgs args) - : this(args.X, args.Y, args.Button, args.IsPressed) - { - } - - #endregion - - #region Public Members - - /// <summary> - /// Gets the <see cref="MouseButton"/> that triggered this event. - /// </summary> - public MouseButton Button { get { return button; } internal set { button = value; } } - - /// <summary> - /// Gets a System.Boolean representing the state of the mouse button for the event. - /// </summary> - public bool IsPressed - { - get { return GetButton(Button) == ButtonState.Pressed; } - internal set { SetButton(Button, value ? ButtonState.Pressed : ButtonState.Released); } - } - - #endregion - } - - /// <summary> - /// Defines the event data for <see cref="MouseDevice.WheelChanged"/> events. - /// </summary> - /// <remarks> - /// <para> - /// Do not cache instances of this type outside their event handler. - /// If necessary, you can clone an instance using the - /// <see cref="MouseWheelEventArgs(MouseWheelEventArgs)"/> constructor. - /// </para> - /// </remarks> - public class MouseWheelEventArgs : MouseEventArgs - { - #region Fields - - float delta; - - #endregion - - #region Constructors - - /// <summary> - /// Constructs a new <see cref="MouseWheelEventArgs"/> instance. - /// </summary> - public MouseWheelEventArgs() { } - - /// <summary> - /// Constructs a new <see cref="MouseWheelEventArgs"/> instance. - /// </summary> - /// <param name="x">The X position.</param> - /// <param name="y">The Y position.</param> - /// <param name="value">The value of the wheel.</param> - /// <param name="delta">The change in value of the wheel for this event.</param> - public MouseWheelEventArgs(int x, int y, int value, int delta) - : base(x, y) - { - Mouse.SetScrollAbsolute(Mouse.Scroll.X, value); - this.delta = delta; - } - - /// <summary> - /// Constructs a new <see cref="MouseWheelEventArgs"/> instance. - /// </summary> - /// <param name="args">The <see cref="MouseWheelEventArgs"/> instance to clone.</param> - public MouseWheelEventArgs(MouseWheelEventArgs args) - : this(args.X, args.Y, args.Value, args.Delta) - { - } - - #endregion - - #region Public Members - - /// <summary> - /// Gets the value of the wheel in integer units. - /// To support high-precision mice, it is recommended to use <see cref="ValuePrecise"/> instead. - /// </summary> - public int Value { get { return (int)Math.Round(Mouse.Scroll.Y, MidpointRounding.AwayFromZero); } } - - /// <summary> - /// Gets the change in value of the wheel for this event in integer units. - /// To support high-precision mice, it is recommended to use <see cref="DeltaPrecise"/> instead. - /// </summary> - public int Delta { get { return (int)Math.Round(delta, MidpointRounding.AwayFromZero); } } - - /// <summary> - /// Gets the precise value of the wheel in floating-point units. - /// </summary> - public float ValuePrecise - { - get { return Mouse.Scroll.Y; } - } - - /// <summary> - /// Gets the precise change in value of the wheel for this event in floating-point units. - /// </summary> - public float DeltaPrecise { get { return delta; } internal set { delta = value; } } - - #endregion - } -} diff --git a/src/Input/MouseScroll.cs b/src/Input/MouseScroll.cs deleted file mode 100644 index a04e9d69..00000000 --- a/src/Input/MouseScroll.cs +++ /dev/null @@ -1,118 +0,0 @@ -#region License -// -// MouseWheel.cs -// -// Author: -// Stefanos A. <stapostol@gmail.com> -// -// Copyright (c) 2006-2014 Stefanos Apostolopoulos -// -// 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; - -namespace Crow -{ - /// <summary> - /// Represents the state of a mouse wheel. - /// </summary> - public struct MouseScroll : IEquatable<MouseScroll> - { - #region Public Members - - /// <summary> - /// Gets the absolute horizontal offset of the wheel, - /// or 0 if no horizontal scroll wheel exists. - /// </summary> - /// <value>The x.</value> - public float X { get; internal set; } - - /// <summary> - /// Gets the absolute vertical offset of the wheel, - /// or 0 if no vertical scroll wheel exists. - /// </summary> - /// <value>The y.</value> - public float Y { get; internal set; } - - /// <param name="left">A <see cref="MouseScroll"/> instance to test for equality.</param> - /// <param name="right">A <see cref="MouseScroll"/> instance to test for equality.</param> - public static bool operator ==(MouseScroll left, MouseScroll right) - { - return left.Equals(right); - } - - /// <param name="left">A <see cref="MouseScroll"/> instance to test for inequality.</param> - /// <param name="right">A <see cref="MouseScroll"/> instance to test for inequality.</param> - public static bool operator !=(MouseScroll left, MouseScroll right) - { - return !left.Equals(right); - } - - /// <summary> - /// Returns a <see cref="System.String"/> that represents the current <see cref="OpenTK.Input.MouseScroll"/>. - /// </summary> - /// <returns>A <see cref="System.String"/> that represents the current <see cref="OpenTK.Input.MouseScroll"/>.</returns> - public override string ToString() - { - return string.Format("[X={0:0.00}, Y={1:0.00}]", X, Y); - } - - /// <summary> - /// Serves as a hash function for a <see cref="OpenTK.Input.MouseScroll"/> object. - /// </summary> - /// <returns>A hash code for this instance that is suitable for use in hashing algorithms and data structures such as a - /// hash table.</returns> - public override int GetHashCode() - { - return X.GetHashCode() ^ Y.GetHashCode(); - } - - /// <summary> - /// Determines whether the specified <see cref="System.Object"/> is equal to the current <see cref="OpenTK.Input.MouseScroll"/>. - /// </summary> - /// <param name="obj">The <see cref="System.Object"/> to compare with the current <see cref="OpenTK.Input.MouseScroll"/>.</param> - /// <returns><c>true</c> if the specified <see cref="System.Object"/> is equal to the current - /// <see cref="OpenTK.Input.MouseScroll"/>; otherwise, <c>false</c>.</returns> - public override bool Equals(object obj) - { - return - obj is MouseScroll && - Equals((MouseScroll)obj); - } - - #endregion - - #region IEquatable Members - - /// <summary> - /// Determines whether the specified <see cref="OpenTK.Input.MouseScroll"/> is equal to the current <see cref="OpenTK.Input.MouseScroll"/>. - /// </summary> - /// <param name="other">The <see cref="OpenTK.Input.MouseScroll"/> to compare with the current <see cref="OpenTK.Input.MouseScroll"/>.</param> - /// <returns><c>true</c> if the specified <see cref="OpenTK.Input.MouseScroll"/> is equal to the current - /// <see cref="OpenTK.Input.MouseScroll"/>; otherwise, <c>false</c>.</returns> - public bool Equals(MouseScroll other) - { - return X == other.X && Y == other.Y; - } - - #endregion - } -} 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 - } -} |