// Copyright 2019 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/pointer_details.h" #include namespace ui { PointerDetails::PointerDetails() {} PointerDetails::PointerDetails(EventPointerType pointer_type, PointerId pointer_id) : PointerDetails(pointer_type, pointer_id, /* radius_x */ 0.0f, /* radius_y */ 0.0f, /* force */ std::numeric_limits::quiet_NaN()) {} PointerDetails::PointerDetails(EventPointerType pointer_type, PointerId pointer_id, float radius_x, float radius_y, float force, float twist, float tilt_x, float tilt_y, float tangential_pressure) : pointer_type(pointer_type), // If we aren't provided with a radius on one axis, use the // information from the other axis. radius_x(radius_x > 0 ? radius_x : radius_y), radius_y(radius_y > 0 ? radius_y : radius_x), force(force), tilt_x(tilt_x), tilt_y(tilt_y), tangential_pressure(tangential_pressure), twist(twist), id(pointer_id) { if (pointer_id == kPointerIdUnknown) { id = (pointer_type == EventPointerType::kMouse) ? kPointerIdMouse : 0; } } PointerDetails::PointerDetails(const PointerDetails& other) = default; bool PointerDetails::operator==(const PointerDetails& other) const { return pointer_type == other.pointer_type && radius_x == other.radius_x && radius_y == other.radius_y && (force == other.force || (std::isnan(force) && std::isnan(other.force))) && tilt_x == other.tilt_x && tilt_y == other.tilt_y && tangential_pressure == other.tangential_pressure && twist == other.twist && id == other.id && offset == other.offset; } } // namespace ui