1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ui/events/gesture_detection/motion_event.h"
6
7#include "base/logging.h"
8
9namespace ui {
10
11size_t MotionEvent::GetHistorySize() const {
12  return 0;
13}
14
15base::TimeTicks MotionEvent::GetHistoricalEventTime(
16    size_t historical_index) const {
17  NOTIMPLEMENTED();
18  return base::TimeTicks();
19}
20
21float MotionEvent::GetHistoricalTouchMajor(size_t pointer_index,
22                                           size_t historical_index) const {
23  NOTIMPLEMENTED();
24  return 0.f;
25}
26
27float MotionEvent::GetHistoricalX(size_t pointer_index,
28                                  size_t historical_index) const {
29  NOTIMPLEMENTED();
30  return 0.f;
31}
32
33float MotionEvent::GetHistoricalY(size_t pointer_index,
34                                  size_t historical_index) const {
35  NOTIMPLEMENTED();
36  return 0.f;
37}
38
39int MotionEvent::FindPointerIndexOfId(int id) const {
40  const size_t pointer_count = GetPointerCount();
41  for (size_t i = 0; i < pointer_count; ++i) {
42    if (GetPointerId(i) == id)
43      return static_cast<int>(i);
44  }
45  return -1;
46}
47
48bool operator==(const MotionEvent& lhs, const MotionEvent& rhs) {
49  if (lhs.GetId() != rhs.GetId() || lhs.GetAction() != rhs.GetAction() ||
50      lhs.GetActionIndex() != rhs.GetActionIndex() ||
51      lhs.GetPointerCount() != rhs.GetPointerCount() ||
52      lhs.GetButtonState() != rhs.GetButtonState() ||
53      lhs.GetEventTime() != rhs.GetEventTime() ||
54      lhs.GetHistorySize() != rhs.GetHistorySize())
55    return false;
56
57  for (size_t i = 0; i < lhs.GetPointerCount(); ++i) {
58    int rhsi = rhs.FindPointerIndexOfId(lhs.GetPointerId(i));
59    if (rhsi == -1)
60      return false;
61
62    if (lhs.GetX(i) != rhs.GetX(rhsi) || lhs.GetY(i) != rhs.GetY(rhsi) ||
63        lhs.GetRawX(i) != rhs.GetRawX(rhsi) ||
64        lhs.GetRawY(i) != rhs.GetRawY(rhsi) ||
65        lhs.GetTouchMajor(i) != rhs.GetTouchMajor(rhsi) ||
66        lhs.GetTouchMinor(i) != rhs.GetTouchMinor(rhsi) ||
67        lhs.GetOrientation(i) != rhs.GetOrientation(rhsi) ||
68        lhs.GetPressure(i) != rhs.GetPressure(rhsi) ||
69        lhs.GetToolType(i) != rhs.GetToolType(rhsi))
70      return false;
71
72    for (size_t h = 0; h < lhs.GetHistorySize(); ++h) {
73      if (lhs.GetHistoricalX(i, h) != rhs.GetHistoricalX(rhsi, h) ||
74          lhs.GetHistoricalY(i, h) != rhs.GetHistoricalY(rhsi, h) ||
75          lhs.GetHistoricalTouchMajor(i, h) !=
76              rhs.GetHistoricalTouchMajor(rhsi, h))
77        return false;
78    }
79  }
80
81  for (size_t h = 0; h < lhs.GetHistorySize(); ++h) {
82    if (lhs.GetHistoricalEventTime(h) != rhs.GetHistoricalEventTime(h))
83      return false;
84  }
85
86  return true;
87}
88
89bool operator!=(const MotionEvent& lhs, const MotionEvent& rhs) {
90  return !(lhs == rhs);
91}
92
93}  // namespace ui
94