using System; using System.Collections.Generic; using ANX.Framework; using ANX.Framework.Input.Touch; using ANX.Framework.NonXNA; using Sce.PlayStation.Core.Input; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace ANX.InputDevices.PsVita { public class TouchPanel : ITouchPanel { #region Constants private static readonly TouchPanelCapabilities caps = new TouchPanelCapabilities() { IsConnected = true, MaximumTouchCount = 6, }; #endregion #region Public public GestureType EnabledGestures { get; set; } public bool IsGestureAvailable { get { // TODO return false; } } public WindowHandle WindowHandle { get; set; } public DisplayOrientation DisplayOrientation { get; set; } public int DisplayWidth { get; set; } public int DisplayHeight { get; set; } #endregion #region GetCapabilities public TouchPanelCapabilities GetCapabilities() { return caps; } #endregion #region ReadGesture public GestureSample ReadGesture() { //return new GestureSample() //{ // GestureType = GestureType. //}; //MotionData motion = Motion.GetData(0); throw new NotImplementedException(); } #endregion #region GetState public TouchCollection GetState() { var touchLocations = new List(); var allTouches = Touch.GetData(0); foreach (var touch in allTouches) { touchLocations.Add(new TouchLocation(touch.ID, TranslateTouchStatus(touch.Status), new Vector2(touch.X, touch.Y))); } return new TouchCollection(touchLocations.ToArray()); } #endregion #region TranslateTouchStatus private TouchLocationState TranslateTouchStatus(TouchStatus status) { switch (status) { case TouchStatus.Down: return TouchLocationState.Pressed; case TouchStatus.Up: case TouchStatus.Canceled: return TouchLocationState.Released; case TouchStatus.Move: return TouchLocationState.Moved; case TouchStatus.None: return TouchLocationState.Invalid; } throw new ArgumentException("Can't translate TouchStatus '" + status + "'!"); } #endregion #region Dispose public void Dispose() { } #endregion } }