forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpointer_details.cc
58 lines (49 loc) · 2.11 KB
/
pointer_details.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// 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 <cmath>
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<float>::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