blob: e72d2104814f96b8b1b32402b30cd7ed5e62fa4f [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/events/gesture_detection/gesture_event_data.h"
#include "base/logging.h"
namespace ui {
namespace {
EventPointerType ToEventPointerType(MotionEvent::ToolType tool_type) {
switch (tool_type) {
case MotionEvent::ToolType::UNKNOWN:
return EventPointerType::POINTER_TYPE_UNKNOWN;
case MotionEvent::ToolType::FINGER:
return EventPointerType::POINTER_TYPE_TOUCH;
case MotionEvent::ToolType::STYLUS:
return EventPointerType::POINTER_TYPE_PEN;
case MotionEvent::ToolType::MOUSE:
return EventPointerType::POINTER_TYPE_MOUSE;
case MotionEvent::ToolType::ERASER:
return EventPointerType::POINTER_TYPE_ERASER;
default:
NOTREACHED() << "Invalid ToolType = " << tool_type;
return EventPointerType::POINTER_TYPE_UNKNOWN;
}
}
} // anonymous namespace
GestureEventData::GestureEventData(const GestureEventDetails& details,
int motion_event_id,
MotionEvent::ToolType primary_tool_type,
base::TimeTicks time,
float x,
float y,
float raw_x,
float raw_y,
size_t touch_point_count,
const gfx::RectF& bounding_box,
int flags,
uint32_t unique_touch_event_id)
: details(details),
motion_event_id(motion_event_id),
primary_tool_type(primary_tool_type),
time(time),
x(x),
y(y),
raw_x(raw_x),
raw_y(raw_y),
flags(flags),
unique_touch_event_id(unique_touch_event_id) {
DCHECK_GE(motion_event_id, 0);
DCHECK_NE(0U, touch_point_count);
this->details.set_primary_pointer_type(ToEventPointerType(primary_tool_type));
this->details.set_touch_points(static_cast<int>(touch_point_count));
this->details.set_bounding_box(bounding_box);
}
GestureEventData::GestureEventData(EventType type,
const GestureEventData& other)
: details(type, other.details),
motion_event_id(other.motion_event_id),
primary_tool_type(other.primary_tool_type),
time(other.time),
x(other.x),
y(other.y),
raw_x(other.raw_x),
raw_y(other.raw_y),
flags(other.flags),
unique_touch_event_id(other.unique_touch_event_id) {
details.set_primary_pointer_type(other.details.primary_pointer_type());
details.set_touch_points(other.details.touch_points());
details.set_bounding_box(other.details.bounding_box_f());
}
GestureEventData::GestureEventData(const GestureEventData& other) = default;
GestureEventData::GestureEventData()
: motion_event_id(0),
primary_tool_type(MotionEvent::ToolType::UNKNOWN),
x(0),
y(0),
raw_x(0),
raw_y(0),
flags(EF_NONE),
unique_touch_event_id(0U) {}
} // namespace ui