// --------------------------------------------------------------------------------------------------------------------
//
// Copyright (c) 2014 OxyPlot contributors
//
//
// Extension method used to convert to/from Windows/Windows.Media classes.
//
// --------------------------------------------------------------------------------------------------------------------
namespace OxyPlot.WindowsForms
{
using System;
using System.Windows.Forms;
///
/// Extension method used to convert to/from WindowsForms classes.
///
public static class WindowsFormsConverterExtensions
{
///
/// Converts a to a .
///
/// The button to convert.
/// The converted mouse button.
public static OxyMouseButton Convert(this MouseButtons button)
{
switch (button)
{
case MouseButtons.Left:
return OxyMouseButton.Left;
case MouseButtons.Middle:
return OxyMouseButton.Middle;
case MouseButtons.Right:
return OxyMouseButton.Right;
case MouseButtons.XButton1:
return OxyMouseButton.XButton1;
case MouseButtons.XButton2:
return OxyMouseButton.XButton2;
}
return OxyMouseButton.None;
}
///
/// Converts to for a mouse wheel event.
///
/// The instance containing the event data.
/// The modifiers.
/// A containing the converted event arguments.
public static OxyMouseWheelEventArgs ToMouseWheelEventArgs(this MouseEventArgs e, OxyModifierKeys modifiers)
{
return new OxyMouseWheelEventArgs
{
Position = e.Location.ToScreenPoint(),
ModifierKeys = modifiers,
Delta = e.Delta
};
}
///
/// Converts to for a mouse down event.
///
/// The instance containing the event data.
/// The modifiers.
/// A containing the converted event arguments.
public static OxyMouseDownEventArgs ToMouseDownEventArgs(this MouseEventArgs e, OxyModifierKeys modifiers)
{
return new OxyMouseDownEventArgs
{
ChangedButton = e.Button.Convert(),
ClickCount = e.Clicks,
Position = e.Location.ToScreenPoint(),
ModifierKeys = modifiers
};
}
///
/// Converts to for a mouse up event.
///
/// The instance containing the event data.
/// The modifiers.
/// A containing the converted event arguments.
public static OxyMouseEventArgs ToMouseUpEventArgs(this MouseEventArgs e, OxyModifierKeys modifiers)
{
return new OxyMouseEventArgs
{
Position = e.Location.ToScreenPoint(),
ModifierKeys = modifiers
};
}
///
/// Converts to for a mouse event.
///
/// The instance containing the event data.
/// The modifiers.
/// A containing the converted event arguments.
public static OxyMouseEventArgs ToMouseEventArgs(this MouseEventArgs e, OxyModifierKeys modifiers)
{
return new OxyMouseEventArgs
{
Position = e.Location.ToScreenPoint(),
ModifierKeys = modifiers
};
}
///
/// Converts to for a mouse event.
///
/// The instance containing the event data.
/// The modifiers.
/// A containing the converted event arguments.
public static OxyMouseEventArgs ToMouseEventArgs(this EventArgs e, OxyModifierKeys modifiers)
{
return new OxyMouseEventArgs
{
ModifierKeys = modifiers
};
}
///
/// Converts the specified key.
///
/// The key to convert.
/// The converted key.
public static OxyKey Convert(this Keys k)
{
switch (k)
{
case Keys.A:
return OxyKey.A;
case Keys.Add:
return OxyKey.Add;
case Keys.B:
return OxyKey.B;
case Keys.Back:
return OxyKey.Backspace;
case Keys.C:
return OxyKey.C;
case Keys.D:
return OxyKey.D;
case Keys.D0:
return OxyKey.D0;
case Keys.D1:
return OxyKey.D1;
case Keys.D2:
return OxyKey.D2;
case Keys.D3:
return OxyKey.D3;
case Keys.D4:
return OxyKey.D4;
case Keys.D5:
return OxyKey.D5;
case Keys.D6:
return OxyKey.D6;
case Keys.D7:
return OxyKey.D7;
case Keys.D8:
return OxyKey.D8;
case Keys.D9:
return OxyKey.D9;
case Keys.Decimal:
return OxyKey.Decimal;
case Keys.Delete:
return OxyKey.Delete;
case Keys.Divide:
return OxyKey.Divide;
case Keys.Down:
return OxyKey.Down;
case Keys.E:
return OxyKey.E;
case Keys.End:
return OxyKey.End;
case Keys.Enter:
return OxyKey.Enter;
case Keys.Escape:
return OxyKey.Escape;
case Keys.F:
return OxyKey.F;
case Keys.F1:
return OxyKey.F1;
case Keys.F10:
return OxyKey.F10;
case Keys.F11:
return OxyKey.F11;
case Keys.F12:
return OxyKey.F12;
case Keys.F2:
return OxyKey.F2;
case Keys.F3:
return OxyKey.F3;
case Keys.F4:
return OxyKey.F4;
case Keys.F5:
return OxyKey.F5;
case Keys.F6:
return OxyKey.F6;
case Keys.F7:
return OxyKey.F7;
case Keys.F8:
return OxyKey.F8;
case Keys.F9:
return OxyKey.F9;
case Keys.G:
return OxyKey.G;
case Keys.H:
return OxyKey.H;
case Keys.Home:
return OxyKey.Home;
case Keys.I:
return OxyKey.I;
case Keys.Insert:
return OxyKey.Insert;
case Keys.J:
return OxyKey.J;
case Keys.K:
return OxyKey.K;
case Keys.L:
return OxyKey.L;
case Keys.Left:
return OxyKey.Left;
case Keys.M:
return OxyKey.M;
case Keys.Multiply:
return OxyKey.Multiply;
case Keys.N:
return OxyKey.N;
case Keys.NumPad0:
return OxyKey.NumPad0;
case Keys.NumPad1:
return OxyKey.NumPad1;
case Keys.NumPad2:
return OxyKey.NumPad2;
case Keys.NumPad3:
return OxyKey.NumPad3;
case Keys.NumPad4:
return OxyKey.NumPad4;
case Keys.NumPad5:
return OxyKey.NumPad5;
case Keys.NumPad6:
return OxyKey.NumPad6;
case Keys.NumPad7:
return OxyKey.NumPad7;
case Keys.NumPad8:
return OxyKey.NumPad8;
case Keys.NumPad9:
return OxyKey.NumPad9;
case Keys.O:
return OxyKey.O;
case Keys.P:
return OxyKey.P;
case Keys.PageDown:
return OxyKey.PageDown;
case Keys.PageUp:
return OxyKey.PageUp;
case Keys.Q:
return OxyKey.Q;
case Keys.R:
return OxyKey.R;
case Keys.Right:
return OxyKey.Right;
case Keys.S:
return OxyKey.S;
case Keys.Space:
return OxyKey.Space;
case Keys.Subtract:
return OxyKey.Subtract;
case Keys.T:
return OxyKey.T;
case Keys.Tab:
return OxyKey.Tab;
case Keys.U:
return OxyKey.U;
case Keys.Up:
return OxyKey.Up;
case Keys.V:
return OxyKey.V;
case Keys.W:
return OxyKey.W;
case Keys.X:
return OxyKey.X;
case Keys.Y:
return OxyKey.Y;
case Keys.Z:
return OxyKey.Z;
default:
return OxyKey.Unknown;
}
}
}
}