nsEventStatus AsyncPanZoomController::HandleInputEvent(const InputEvent& event) { nsEventStatus rv = nsEventStatus_eIgnore; if (!mIsCompositing) return rv; switch (event.mMessage) { case MULTITOUCH_START_POINTER: case MULTITOUCH_START: rv = OnTouchStart((const MultiTouchEvent&)event); break; case MULTITOUCH_MOVE: rv = OnTouchMove((const MultiTouchEvent&)event); break; case MULTITOUCH_END: rv = OnTouchEnd((const MultiTouchEvent&)event); break; case MULTITOUCH_CANCEL: rv = OnTouchCancel((const MultiTouchEvent&)event); break; case PINCH_START: rv = OnScaleBegin((const PinchEvent&)event); break; case PINCH_SCALE: rv = OnScale((const PinchEvent&)event); break; case PINCH_END: rv = OnScaleEnd((const PinchEvent&)event); break; case TAP_LONG: rv = OnLongPress((const TapEvent&)event); break; case TAP_UP: rv = OnSingleTapUp((const TapEvent&)event); break; case TAP_CONFIRMED: rv = OnSingleTapConfirmed((const TapEvent&)event); break; case TAP_DOUBLE: rv = OnDoubleTap((const TapEvent&)event); break; case TAP_CANCEL: rv = OnCancelTap((const TapEvent&)event); break; default: break; } mLastEventTime = event.mTime; return rv; }
bool CGenericTouchSwipeDetector::OnTouchUpdate(unsigned int index, const Pointer &pointer) { if (index >= TOUCH_MAX_POINTERS) return false; if (m_done) return true; return OnTouchMove(index, pointer); }
bool CControl::HandleTouchEvent( CTouchEvent* event ) { bool bRet = false; if ( m_bResiveTouchEvent ) { const CVec2& pos = event->GetTouchPoint(); if ( event->GetType() == eET_EVENT_TOUCH_MOVED ) { m_bTouchInRect = HitTest(pos.x, pos.y); if ( m_bTouchInRect ) { OnTouchMove( pos.x, pos.y ); bRet = true; } else { if ( m_bClick ) { StopClickAnimation(); } } } else { if( event->GetType() == eET_EVENT_TOUCH_ENDED && m_bClick ) { OnTouchEnded( pos.x, pos.y ); } else { bRet = HitTest(pos.x, pos.y); if(bRet) { if ( m_bDispatchEventToParent ) { CNode* pParent = GetParentNode(); bRet = pParent && pParent->GetType() == eNT_NodeGUI; if (bRet) { down_cast<CControl*>(pParent)->DispatchEvent( event->GetType(), pos.x, pos.y, event->GetDelta() ); } } else { DispatchEvent( event->GetType(), pos.x, pos.y, event->GetDelta() ); } } } } } return bRet; }
nsEventStatus AsyncPanZoomController::HandleInputEvent(const InputData& aEvent) { nsEventStatus rv = nsEventStatus_eIgnore; if (mGestureEventListener) { nsEventStatus rv = mGestureEventListener->HandleInputEvent(aEvent); if (rv == nsEventStatus_eConsumeNoDefault) return rv; } switch (aEvent.mInputType) { case MULTITOUCH_INPUT: { const MultiTouchInput& multiTouchInput = aEvent.AsMultiTouchInput(); switch (multiTouchInput.mType) { case MultiTouchInput::MULTITOUCH_START: rv = OnTouchStart(multiTouchInput); break; case MultiTouchInput::MULTITOUCH_MOVE: rv = OnTouchMove(multiTouchInput); break; case MultiTouchInput::MULTITOUCH_END: rv = OnTouchEnd(multiTouchInput); break; case MultiTouchInput::MULTITOUCH_CANCEL: rv = OnTouchCancel(multiTouchInput); break; default: NS_WARNING("Unhandled multitouch"); break; } break; } case PINCHGESTURE_INPUT: { const PinchGestureInput& pinchGestureInput = aEvent.AsPinchGestureInput(); switch (pinchGestureInput.mType) { case PinchGestureInput::PINCHGESTURE_START: rv = OnScaleBegin(pinchGestureInput); break; case PinchGestureInput::PINCHGESTURE_SCALE: rv = OnScale(pinchGestureInput); break; case PinchGestureInput::PINCHGESTURE_END: rv = OnScaleEnd(pinchGestureInput); break; default: NS_WARNING("Unhandled pinch gesture"); break; } break; } case TAPGESTURE_INPUT: { const TapGestureInput& tapGestureInput = aEvent.AsTapGestureInput(); switch (tapGestureInput.mType) { case TapGestureInput::TAPGESTURE_LONG: rv = OnLongPress(tapGestureInput); break; case TapGestureInput::TAPGESTURE_UP: rv = OnSingleTapUp(tapGestureInput); break; case TapGestureInput::TAPGESTURE_CONFIRMED: rv = OnSingleTapConfirmed(tapGestureInput); break; case TapGestureInput::TAPGESTURE_DOUBLE: rv = OnDoubleTap(tapGestureInput); break; case TapGestureInput::TAPGESTURE_CANCEL: rv = OnCancelTap(tapGestureInput); break; default: NS_WARNING("Unhandled tap gesture"); break; } break; } default: NS_WARNING("Unhandled input event"); break; } mLastEventTime = aEvent.mTime; return rv; }
LRESULT ofTouch::processTouch(HWND hWnd, WPARAM wParam, LPARAM lParam) { //return DefWindowProc(hWnd, WM_TOUCH, wParam, lParam); BOOL bHandled = FALSE; UINT cInputs = LOWORD(wParam); PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs]; if (pInputs){ if (GetTouchInputInfo((HTOUCHINPUT)lParam, cInputs, pInputs, sizeof(TOUCHINPUT))){ for (UINT i=0; i < cInputs; i++){ TOUCHINPUT ti = pInputs[i]; //do something with each touch input entry if (ti.dwFlags & TOUCHEVENTF_DOWN){ OnTouchDown(ti.dwID, TOUCH_COORD_TO_PIXEL(ti.x)-ofGetWindowPositionX(), TOUCH_COORD_TO_PIXEL(ti.y)-ofGetWindowPositionY()); } else if (ti.dwFlags & TOUCHEVENTF_MOVE){ OnTouchMove(ti.dwID, TOUCH_COORD_TO_PIXEL(ti.x)-ofGetWindowPositionX(), TOUCH_COORD_TO_PIXEL(ti.y)-ofGetWindowPositionY()); } if (ti.dwFlags & TOUCHEVENTF_UP){ OnTouchUp(ti.dwID, TOUCH_COORD_TO_PIXEL(ti.x)-ofGetWindowPositionX(), TOUCH_COORD_TO_PIXEL(ti.y)-ofGetWindowPositionY()); } } bHandled = TRUE; }else{ /* handle the error here */ } delete [] pInputs; }else{ /* handle the error here, probably out of memory */ } if (bHandled){ // if you handled the message, close the touch input handle and return CloseTouchInputHandle((HTOUCHINPUT)lParam); return 0; }else{ // if you didn't handle the message, let DefWindowProc handle it return DefWindowProc(hWnd, WM_TOUCH, wParam, lParam); } }
void THFrame::FrameMove(const THVector2& p) { OnTouchMove(p,p-m_lasttouched); m_lasttouched=p; }