15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/events/gesture_detection/motion_event.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/logging.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace ui { 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)size_t MotionEvent::GetHistorySize() const { 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)base::TimeTicks MotionEvent::GetHistoricalEventTime( 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size_t historical_index) const { 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTIMPLEMENTED(); 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return base::TimeTicks(); 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)float MotionEvent::GetHistoricalTouchMajor(size_t pointer_index, 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size_t historical_index) const { 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTIMPLEMENTED(); 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0.f; 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)float MotionEvent::GetHistoricalX(size_t pointer_index, 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size_t historical_index) const { 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTIMPLEMENTED(); 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0.f; 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)float MotionEvent::GetHistoricalY(size_t pointer_index, 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size_t historical_index) const { 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTIMPLEMENTED(); 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0.f; 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)int MotionEvent::FindPointerIndexOfId(int id) const { 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const size_t pointer_count = GetPointerCount(); 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for (size_t i = 0; i < pointer_count; ++i) { 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (GetPointerId(i) == id) 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return static_cast<int>(i); 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool operator==(const MotionEvent& lhs, const MotionEvent& rhs) { 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (lhs.GetId() != rhs.GetId() || lhs.GetAction() != rhs.GetAction() || 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetActionIndex() != rhs.GetActionIndex() || 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetPointerCount() != rhs.GetPointerCount() || 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetButtonState() != rhs.GetButtonState() || 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetEventTime() != rhs.GetEventTime() || 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetHistorySize() != rhs.GetHistorySize()) 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return false; 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for (size_t i = 0; i < lhs.GetPointerCount(); ++i) { 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int rhsi = rhs.FindPointerIndexOfId(lhs.GetPointerId(i)); 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (rhsi == -1) 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return false; 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (lhs.GetX(i) != rhs.GetX(rhsi) || lhs.GetY(i) != rhs.GetY(rhsi) || 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetRawX(i) != rhs.GetRawX(rhsi) || 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetRawY(i) != rhs.GetRawY(rhsi) || 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetTouchMajor(i) != rhs.GetTouchMajor(rhsi) || 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lhs.GetTouchMinor(i) != rhs.GetTouchMinor(rhsi) || 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lhs.GetOrientation(i) != rhs.GetOrientation(rhsi) || 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetPressure(i) != rhs.GetPressure(rhsi) || 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetToolType(i) != rhs.GetToolType(rhsi)) 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return false; 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for (size_t h = 0; h < lhs.GetHistorySize(); ++h) { 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (lhs.GetHistoricalX(i, h) != rhs.GetHistoricalX(rhsi, h) || 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetHistoricalY(i, h) != rhs.GetHistoricalY(rhsi, h) || 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) lhs.GetHistoricalTouchMajor(i, h) != 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) rhs.GetHistoricalTouchMajor(rhsi, h)) 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return false; 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for (size_t h = 0; h < lhs.GetHistorySize(); ++h) { 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (lhs.GetHistoricalEventTime(h) != rhs.GetHistoricalEventTime(h)) 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return false; 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool operator!=(const MotionEvent& lhs, const MotionEvent& rhs) { 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return !(lhs == rhs); 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace ui 94