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