Touchscreen improvements

This commit is contained in:
elasota
2020-10-14 18:12:02 -04:00
parent 62e234c777
commit e4cddda183
10 changed files with 249 additions and 45 deletions

View File

@@ -679,6 +679,11 @@ DrawSurface *Window::GetDrawSurface() const
return const_cast<DrawSurface*>(&m_surface);
}
Point Window::TouchToLocal(const GpTouchInputEvent &evt) const
{
return Point::Create(evt.m_x - m_wmX, evt.m_y - m_wmY);
}
Point Window::MouseToLocal(const GpMouseInputEvent &evt) const
{
return Point::Create(evt.m_x - m_wmX, evt.m_y - m_wmY);

View File

@@ -19,6 +19,7 @@ struct IGpCursor;
class GpIOStream;
struct GpVOSEvent;
struct GpMouseInputEvent;
struct GpTouchInputEvent;
struct TimeTaggedVOSEvent;
@@ -95,6 +96,8 @@ struct Window
// Convenience method to convert a mouse event to local point
Point MouseToLocal(const GpMouseInputEvent &evt) const;
Point TouchToLocal(const GpTouchInputEvent &evt) const;
// Convenience method that returns a 16-bit precision X/Y
Point GetTopLeftCoord() const;

View File

@@ -42,6 +42,12 @@ static void TranslateMouseInputEvent(const GpVOSEvent &vosEventBase, uint32_t ti
inputManager->ApplyMouseEvent(vosEvent);
}
static void TranslateTouchInputEvent(const GpVOSEvent &vosEventBase, uint32_t timestamp, PortabilityLayer::EventQueue *queue)
{
if (TimeTaggedVOSEvent *evt = queue->Enqueue())
*evt = TimeTaggedVOSEvent::Create(vosEventBase, timestamp);
}
static void TranslateGamepadInputEvent(const GpGamepadInputEvent &vosEvent, PortabilityLayer::EventQueue *queue)
{
PortabilityLayer::InputManager *inputManager = PortabilityLayer::InputManager::GetInstance();
@@ -127,6 +133,9 @@ static void TranslateVOSEvent(const GpVOSEvent *vosEvent, uint32_t timestamp, Po
case GpVOSEventTypes::kMouseInput:
TranslateMouseInputEvent(*vosEvent, timestamp, queue);
break;
case GpVOSEventTypes::kTouchInput:
TranslateTouchInputEvent(*vosEvent, timestamp, queue);
break;
case GpVOSEventTypes::kKeyboardInput:
TranslateKeyboardInputEvent(*vosEvent, timestamp, queue);
break;