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_generic.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)PointerProperties::PointerProperties() 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : id(0), 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tool_type(MotionEvent::TOOL_TYPE_UNKNOWN), 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) x(0), 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) y(0), 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) raw_x(0), 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) raw_y(0), 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pressure(0), 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci touch_major(0), 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci touch_minor(0), 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci orientation(0) { 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)PointerProperties::PointerProperties(float x, float y) 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : id(0), 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tool_type(MotionEvent::TOOL_TYPE_UNKNOWN), 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) x(x), 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) y(y), 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) raw_x(x), 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) raw_y(y), 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pressure(0), 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci touch_major(0), 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci touch_minor(0), 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci orientation(0) { 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)MotionEventGeneric::MotionEventGeneric() 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : action_(ACTION_CANCEL), 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci id_(0), 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci action_index_(0), 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci button_state_(0), 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci flags_(0) { 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)MotionEventGeneric::MotionEventGeneric(Action action, 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::TimeTicks event_time, 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const PointerProperties& pointer) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : action_(action), 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_time_(event_time), 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) id_(0), 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) action_index_(0), 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci button_state_(0), 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci flags_(0) { 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PushPointer(pointer); 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)MotionEventGeneric::MotionEventGeneric(const MotionEventGeneric& other) 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : action_(other.action_), 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_time_(other.event_time_), 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) id_(other.id_), 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) action_index_(other.action_index_), 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) button_state_(other.button_state_), 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci flags_(other.flags_), 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pointers_(other.pointers_) { 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)MotionEventGeneric::~MotionEventGeneric() { 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)int MotionEventGeneric::GetId() const { 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return id_; 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)MotionEvent::Action MotionEventGeneric::GetAction() const { 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return action_; 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)int MotionEventGeneric::GetActionIndex() const { 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return action_index_; 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)size_t MotionEventGeneric::GetPointerCount() const { 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pointers_->size(); 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)int MotionEventGeneric::GetPointerId(size_t pointer_index) const { 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK_LT(pointer_index, pointers_->size()); 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pointers_[pointer_index].id; 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)float MotionEventGeneric::GetX(size_t pointer_index) const { 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK_LT(pointer_index, pointers_->size()); 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pointers_[pointer_index].x; 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)float MotionEventGeneric::GetY(size_t pointer_index) const { 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK_LT(pointer_index, pointers_->size()); 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pointers_[pointer_index].y; 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)float MotionEventGeneric::GetRawX(size_t pointer_index) const { 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK_LT(pointer_index, pointers_->size()); 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pointers_[pointer_index].raw_x; 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)float MotionEventGeneric::GetRawY(size_t pointer_index) const { 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK_LT(pointer_index, pointers_->size()); 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pointers_[pointer_index].raw_y; 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)float MotionEventGeneric::GetTouchMajor(size_t pointer_index) const { 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK_LT(pointer_index, pointers_->size()); 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pointers_[pointer_index].touch_major; 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifloat MotionEventGeneric::GetTouchMinor(size_t pointer_index) const { 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK_LT(pointer_index, pointers_->size()); 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return pointers_[pointer_index].touch_minor; 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifloat MotionEventGeneric::GetOrientation(size_t pointer_index) const { 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK_LT(pointer_index, pointers_->size()); 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return pointers_[pointer_index].orientation; 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)float MotionEventGeneric::GetPressure(size_t pointer_index) const { 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK_LT(pointer_index, pointers_->size()); 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pointers_[pointer_index].pressure; 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)MotionEvent::ToolType MotionEventGeneric::GetToolType( 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size_t pointer_index) const { 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK_LT(pointer_index, pointers_->size()); 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pointers_[pointer_index].tool_type; 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)int MotionEventGeneric::GetButtonState() const { 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return button_state_; 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciint MotionEventGeneric::GetFlags() const { 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return flags_; 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)base::TimeTicks MotionEventGeneric::GetEventTime() const { 1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return event_time_; 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)scoped_ptr<MotionEvent> MotionEventGeneric::Clone() const { 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return scoped_ptr<MotionEvent>(new MotionEventGeneric(*this)); 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)scoped_ptr<MotionEvent> MotionEventGeneric::Cancel() const { 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<MotionEventGeneric> event(new MotionEventGeneric(*this)); 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event->set_action(ACTION_CANCEL); 1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return event.PassAs<MotionEvent>(); 1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void MotionEventGeneric::PushPointer(const PointerProperties& pointer) { 1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pointers_->push_back(pointer); 1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void MotionEventGeneric::PopPointer() { 1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK_GT(pointers_->size(), 0U); 1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pointers_->pop_back(); 1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace ui 169