1c29fa5a6Sopenharmony_ci/*
2c29fa5a6Sopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License.
5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at
6c29fa5a6Sopenharmony_ci *
7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8c29fa5a6Sopenharmony_ci *
9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and
13c29fa5a6Sopenharmony_ci * limitations under the License.
14c29fa5a6Sopenharmony_ci */
15c29fa5a6Sopenharmony_ci
16c29fa5a6Sopenharmony_ci#include "pointer_event.h"
17c29fa5a6Sopenharmony_ci
18c29fa5a6Sopenharmony_ci#include <iomanip>
19c29fa5a6Sopenharmony_ci
20c29fa5a6Sopenharmony_ci#include "mmi_log.h"
21c29fa5a6Sopenharmony_ci
22c29fa5a6Sopenharmony_ci#undef MMI_LOG_TAG
23c29fa5a6Sopenharmony_ci#define MMI_LOG_TAG "PointerEvent"
24c29fa5a6Sopenharmony_ci
25c29fa5a6Sopenharmony_ciusing namespace OHOS::HiviewDFX;
26c29fa5a6Sopenharmony_cinamespace OHOS {
27c29fa5a6Sopenharmony_cinamespace MMI {
28c29fa5a6Sopenharmony_cinamespace {
29c29fa5a6Sopenharmony_ciconstexpr double MAX_PRESSURE { 1.0 };
30c29fa5a6Sopenharmony_ciconstexpr size_t MAX_N_PRESSED_BUTTONS { 10 };
31c29fa5a6Sopenharmony_ciconstexpr size_t MAX_N_POINTER_ITEMS { 10 };
32c29fa5a6Sopenharmony_ciconstexpr int32_t SIMULATE_EVENT_START_ID { 10000 };
33c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_SECURITY_COMPONENT
34c29fa5a6Sopenharmony_ciconstexpr size_t MAX_N_ENHANCE_DATA_SIZE { 64 };
35c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_SECURITY_COMPONENT
36c29fa5a6Sopenharmony_ciconstexpr size_t MAX_N_BUFFER_SIZE { 512 };
37c29fa5a6Sopenharmony_ciconstexpr size_t MAX_N_PRESSED_KEYS { 10 };
38c29fa5a6Sopenharmony_ci} // namespace
39c29fa5a6Sopenharmony_ci
40c29fa5a6Sopenharmony_cistd::shared_ptr<PointerEvent> PointerEvent::from(std::shared_ptr<InputEvent> inputEvent)
41c29fa5a6Sopenharmony_ci{
42c29fa5a6Sopenharmony_ci    return nullptr;
43c29fa5a6Sopenharmony_ci}
44c29fa5a6Sopenharmony_ci
45c29fa5a6Sopenharmony_ciPointerEvent::PointerItem::PointerItem() {}
46c29fa5a6Sopenharmony_ci
47c29fa5a6Sopenharmony_ciPointerEvent::PointerItem::~PointerItem() {}
48c29fa5a6Sopenharmony_ci
49c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetPointerId() const
50c29fa5a6Sopenharmony_ci{
51c29fa5a6Sopenharmony_ci    return pointerId_;
52c29fa5a6Sopenharmony_ci}
53c29fa5a6Sopenharmony_ci
54c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetPointerId(int32_t pointerId)
55c29fa5a6Sopenharmony_ci{
56c29fa5a6Sopenharmony_ci    pointerId_ = pointerId;
57c29fa5a6Sopenharmony_ci}
58c29fa5a6Sopenharmony_ci
59c29fa5a6Sopenharmony_ciint64_t PointerEvent::PointerItem::GetDownTime() const
60c29fa5a6Sopenharmony_ci{
61c29fa5a6Sopenharmony_ci    return downTime_;
62c29fa5a6Sopenharmony_ci}
63c29fa5a6Sopenharmony_ci
64c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetDownTime(int64_t downTime)
65c29fa5a6Sopenharmony_ci{
66c29fa5a6Sopenharmony_ci    downTime_ = downTime;
67c29fa5a6Sopenharmony_ci}
68c29fa5a6Sopenharmony_ci
69c29fa5a6Sopenharmony_cibool PointerEvent::PointerItem::IsPressed() const
70c29fa5a6Sopenharmony_ci{
71c29fa5a6Sopenharmony_ci    return pressed_;
72c29fa5a6Sopenharmony_ci}
73c29fa5a6Sopenharmony_ci
74c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetPressed(bool pressed)
75c29fa5a6Sopenharmony_ci{
76c29fa5a6Sopenharmony_ci    pressed_ = pressed;
77c29fa5a6Sopenharmony_ci}
78c29fa5a6Sopenharmony_ci
79c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetDisplayX() const
80c29fa5a6Sopenharmony_ci{
81c29fa5a6Sopenharmony_ci    return displayX_;
82c29fa5a6Sopenharmony_ci}
83c29fa5a6Sopenharmony_ci
84c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetDisplayX(int32_t x)
85c29fa5a6Sopenharmony_ci{
86c29fa5a6Sopenharmony_ci    displayX_ = x;
87c29fa5a6Sopenharmony_ci}
88c29fa5a6Sopenharmony_ci
89c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetDisplayY() const
90c29fa5a6Sopenharmony_ci{
91c29fa5a6Sopenharmony_ci    return displayY_;
92c29fa5a6Sopenharmony_ci}
93c29fa5a6Sopenharmony_ci
94c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetDisplayY(int32_t y)
95c29fa5a6Sopenharmony_ci{
96c29fa5a6Sopenharmony_ci    displayY_ = y;
97c29fa5a6Sopenharmony_ci}
98c29fa5a6Sopenharmony_ci
99c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetWindowX() const
100c29fa5a6Sopenharmony_ci{
101c29fa5a6Sopenharmony_ci    return windowX_;
102c29fa5a6Sopenharmony_ci}
103c29fa5a6Sopenharmony_ci
104c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetWindowX(int32_t x)
105c29fa5a6Sopenharmony_ci{
106c29fa5a6Sopenharmony_ci    windowX_ = x;
107c29fa5a6Sopenharmony_ci}
108c29fa5a6Sopenharmony_ci
109c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetWindowY() const
110c29fa5a6Sopenharmony_ci{
111c29fa5a6Sopenharmony_ci    return windowY_;
112c29fa5a6Sopenharmony_ci}
113c29fa5a6Sopenharmony_ci
114c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetWindowY(int32_t y)
115c29fa5a6Sopenharmony_ci{
116c29fa5a6Sopenharmony_ci    windowY_ = y;
117c29fa5a6Sopenharmony_ci}
118c29fa5a6Sopenharmony_ci
119c29fa5a6Sopenharmony_cidouble PointerEvent::PointerItem::GetDisplayXPos() const
120c29fa5a6Sopenharmony_ci{
121c29fa5a6Sopenharmony_ci    return displayXPos_;
122c29fa5a6Sopenharmony_ci}
123c29fa5a6Sopenharmony_ci
124c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetDisplayXPos(double x)
125c29fa5a6Sopenharmony_ci{
126c29fa5a6Sopenharmony_ci    displayXPos_ = x;
127c29fa5a6Sopenharmony_ci}
128c29fa5a6Sopenharmony_ci
129c29fa5a6Sopenharmony_cidouble PointerEvent::PointerItem::GetDisplayYPos() const
130c29fa5a6Sopenharmony_ci{
131c29fa5a6Sopenharmony_ci    return displayYPos_;
132c29fa5a6Sopenharmony_ci}
133c29fa5a6Sopenharmony_ci
134c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetDisplayYPos(double y)
135c29fa5a6Sopenharmony_ci{
136c29fa5a6Sopenharmony_ci    displayYPos_ = y;
137c29fa5a6Sopenharmony_ci}
138c29fa5a6Sopenharmony_ci
139c29fa5a6Sopenharmony_cidouble PointerEvent::PointerItem::GetWindowXPos() const
140c29fa5a6Sopenharmony_ci{
141c29fa5a6Sopenharmony_ci    return windowXPos_;
142c29fa5a6Sopenharmony_ci}
143c29fa5a6Sopenharmony_ci
144c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetWindowXPos(double x)
145c29fa5a6Sopenharmony_ci{
146c29fa5a6Sopenharmony_ci    windowXPos_ = x;
147c29fa5a6Sopenharmony_ci}
148c29fa5a6Sopenharmony_ci
149c29fa5a6Sopenharmony_cidouble PointerEvent::PointerItem::GetWindowYPos() const
150c29fa5a6Sopenharmony_ci{
151c29fa5a6Sopenharmony_ci    return windowYPos_;
152c29fa5a6Sopenharmony_ci}
153c29fa5a6Sopenharmony_ci
154c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetWindowYPos(double y)
155c29fa5a6Sopenharmony_ci{
156c29fa5a6Sopenharmony_ci    windowYPos_ = y;
157c29fa5a6Sopenharmony_ci}
158c29fa5a6Sopenharmony_ci
159c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetWidth() const
160c29fa5a6Sopenharmony_ci{
161c29fa5a6Sopenharmony_ci    return width_;
162c29fa5a6Sopenharmony_ci}
163c29fa5a6Sopenharmony_ci
164c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetWidth(int32_t width)
165c29fa5a6Sopenharmony_ci{
166c29fa5a6Sopenharmony_ci    width_ = width;
167c29fa5a6Sopenharmony_ci}
168c29fa5a6Sopenharmony_ci
169c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetHeight() const
170c29fa5a6Sopenharmony_ci{
171c29fa5a6Sopenharmony_ci    return height_;
172c29fa5a6Sopenharmony_ci}
173c29fa5a6Sopenharmony_ci
174c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetHeight(int32_t height)
175c29fa5a6Sopenharmony_ci{
176c29fa5a6Sopenharmony_ci    height_ = height;
177c29fa5a6Sopenharmony_ci}
178c29fa5a6Sopenharmony_ci
179c29fa5a6Sopenharmony_cidouble PointerEvent::PointerItem::GetTiltX() const
180c29fa5a6Sopenharmony_ci{
181c29fa5a6Sopenharmony_ci    return tiltX_;
182c29fa5a6Sopenharmony_ci}
183c29fa5a6Sopenharmony_ci
184c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetTiltX(double tiltX)
185c29fa5a6Sopenharmony_ci{
186c29fa5a6Sopenharmony_ci    tiltX_ = tiltX;
187c29fa5a6Sopenharmony_ci}
188c29fa5a6Sopenharmony_ci
189c29fa5a6Sopenharmony_cidouble PointerEvent::PointerItem::GetTiltY() const
190c29fa5a6Sopenharmony_ci{
191c29fa5a6Sopenharmony_ci    return tiltY_;
192c29fa5a6Sopenharmony_ci}
193c29fa5a6Sopenharmony_ci
194c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetTiltY(double tiltY)
195c29fa5a6Sopenharmony_ci{
196c29fa5a6Sopenharmony_ci    tiltY_ = tiltY;
197c29fa5a6Sopenharmony_ci}
198c29fa5a6Sopenharmony_ci
199c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetToolDisplayX() const
200c29fa5a6Sopenharmony_ci{
201c29fa5a6Sopenharmony_ci    return toolDisplayX_;
202c29fa5a6Sopenharmony_ci}
203c29fa5a6Sopenharmony_ci
204c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetToolDisplayX(int32_t x)
205c29fa5a6Sopenharmony_ci{
206c29fa5a6Sopenharmony_ci    toolDisplayX_ = x;
207c29fa5a6Sopenharmony_ci}
208c29fa5a6Sopenharmony_ci
209c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetToolDisplayY() const
210c29fa5a6Sopenharmony_ci{
211c29fa5a6Sopenharmony_ci    return toolDisplayY_;
212c29fa5a6Sopenharmony_ci}
213c29fa5a6Sopenharmony_ci
214c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetToolDisplayY(int32_t y)
215c29fa5a6Sopenharmony_ci{
216c29fa5a6Sopenharmony_ci    toolDisplayY_ = y;
217c29fa5a6Sopenharmony_ci}
218c29fa5a6Sopenharmony_ci
219c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetToolWindowX() const
220c29fa5a6Sopenharmony_ci{
221c29fa5a6Sopenharmony_ci    return toolWindowX_;
222c29fa5a6Sopenharmony_ci}
223c29fa5a6Sopenharmony_ci
224c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetToolWindowX(int32_t x)
225c29fa5a6Sopenharmony_ci{
226c29fa5a6Sopenharmony_ci    toolWindowX_ = x;
227c29fa5a6Sopenharmony_ci}
228c29fa5a6Sopenharmony_ci
229c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetToolWindowY() const
230c29fa5a6Sopenharmony_ci{
231c29fa5a6Sopenharmony_ci    return toolWindowY_;
232c29fa5a6Sopenharmony_ci}
233c29fa5a6Sopenharmony_ci
234c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetToolWindowY(int32_t y)
235c29fa5a6Sopenharmony_ci{
236c29fa5a6Sopenharmony_ci    toolWindowY_ = y;
237c29fa5a6Sopenharmony_ci}
238c29fa5a6Sopenharmony_ci
239c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetToolWidth() const
240c29fa5a6Sopenharmony_ci{
241c29fa5a6Sopenharmony_ci    return toolWidth_;
242c29fa5a6Sopenharmony_ci}
243c29fa5a6Sopenharmony_ci
244c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetToolWidth(int32_t width)
245c29fa5a6Sopenharmony_ci{
246c29fa5a6Sopenharmony_ci    toolWidth_ = width;
247c29fa5a6Sopenharmony_ci}
248c29fa5a6Sopenharmony_ci
249c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetToolHeight() const
250c29fa5a6Sopenharmony_ci{
251c29fa5a6Sopenharmony_ci    return toolHeight_;
252c29fa5a6Sopenharmony_ci}
253c29fa5a6Sopenharmony_ci
254c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetToolHeight(int32_t height)
255c29fa5a6Sopenharmony_ci{
256c29fa5a6Sopenharmony_ci    toolHeight_ = height;
257c29fa5a6Sopenharmony_ci}
258c29fa5a6Sopenharmony_ci
259c29fa5a6Sopenharmony_cidouble PointerEvent::PointerItem::GetPressure() const
260c29fa5a6Sopenharmony_ci{
261c29fa5a6Sopenharmony_ci    return pressure_;
262c29fa5a6Sopenharmony_ci}
263c29fa5a6Sopenharmony_ci
264c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetPressure(double pressure)
265c29fa5a6Sopenharmony_ci{
266c29fa5a6Sopenharmony_ci    if (pressure < 0.0) {
267c29fa5a6Sopenharmony_ci        pressure_ = 0.0;
268c29fa5a6Sopenharmony_ci    } else if (TOOL_TYPE_PEN == GetToolType()) {
269c29fa5a6Sopenharmony_ci        pressure_ = pressure >= MAX_PRESSURE ? MAX_PRESSURE : pressure;
270c29fa5a6Sopenharmony_ci    } else {
271c29fa5a6Sopenharmony_ci        pressure_ = pressure;
272c29fa5a6Sopenharmony_ci    }
273c29fa5a6Sopenharmony_ci}
274c29fa5a6Sopenharmony_ci
275c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetMoveFlag() const
276c29fa5a6Sopenharmony_ci{
277c29fa5a6Sopenharmony_ci    return moveFlag_;
278c29fa5a6Sopenharmony_ci}
279c29fa5a6Sopenharmony_ci
280c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetMoveFlag(int32_t moveFlag)
281c29fa5a6Sopenharmony_ci{
282c29fa5a6Sopenharmony_ci    moveFlag_ = moveFlag;
283c29fa5a6Sopenharmony_ci}
284c29fa5a6Sopenharmony_ci
285c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetLongAxis() const
286c29fa5a6Sopenharmony_ci{
287c29fa5a6Sopenharmony_ci    return longAxis_;
288c29fa5a6Sopenharmony_ci}
289c29fa5a6Sopenharmony_ci
290c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetLongAxis(int32_t longAxis)
291c29fa5a6Sopenharmony_ci{
292c29fa5a6Sopenharmony_ci    longAxis_ = longAxis;
293c29fa5a6Sopenharmony_ci}
294c29fa5a6Sopenharmony_ci
295c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetShortAxis() const
296c29fa5a6Sopenharmony_ci{
297c29fa5a6Sopenharmony_ci    return shortAxis_;
298c29fa5a6Sopenharmony_ci}
299c29fa5a6Sopenharmony_ci
300c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetShortAxis(int32_t shortAxis)
301c29fa5a6Sopenharmony_ci{
302c29fa5a6Sopenharmony_ci    shortAxis_ = shortAxis;
303c29fa5a6Sopenharmony_ci}
304c29fa5a6Sopenharmony_ci
305c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetDeviceId() const
306c29fa5a6Sopenharmony_ci{
307c29fa5a6Sopenharmony_ci    return deviceId_;
308c29fa5a6Sopenharmony_ci}
309c29fa5a6Sopenharmony_ci
310c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetDeviceId(int32_t deviceId)
311c29fa5a6Sopenharmony_ci{
312c29fa5a6Sopenharmony_ci    deviceId_ = deviceId;
313c29fa5a6Sopenharmony_ci}
314c29fa5a6Sopenharmony_ci
315c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetToolType() const
316c29fa5a6Sopenharmony_ci{
317c29fa5a6Sopenharmony_ci    return toolType_;
318c29fa5a6Sopenharmony_ci}
319c29fa5a6Sopenharmony_ci
320c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetToolType(int32_t toolType)
321c29fa5a6Sopenharmony_ci{
322c29fa5a6Sopenharmony_ci    toolType_ = toolType;
323c29fa5a6Sopenharmony_ci}
324c29fa5a6Sopenharmony_ci
325c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetTargetWindowId() const
326c29fa5a6Sopenharmony_ci{
327c29fa5a6Sopenharmony_ci    return targetWindowId_;
328c29fa5a6Sopenharmony_ci}
329c29fa5a6Sopenharmony_ci
330c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetTargetWindowId(int32_t windowId)
331c29fa5a6Sopenharmony_ci{
332c29fa5a6Sopenharmony_ci    targetWindowId_ = windowId;
333c29fa5a6Sopenharmony_ci}
334c29fa5a6Sopenharmony_ci
335c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetRawDx() const
336c29fa5a6Sopenharmony_ci{
337c29fa5a6Sopenharmony_ci    return rawDx_;
338c29fa5a6Sopenharmony_ci}
339c29fa5a6Sopenharmony_ci
340c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetRawDx(int32_t rawDx)
341c29fa5a6Sopenharmony_ci{
342c29fa5a6Sopenharmony_ci    rawDx_ = rawDx;
343c29fa5a6Sopenharmony_ci}
344c29fa5a6Sopenharmony_ci
345c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetOriginPointerId() const
346c29fa5a6Sopenharmony_ci{
347c29fa5a6Sopenharmony_ci    return originPointerId_;
348c29fa5a6Sopenharmony_ci}
349c29fa5a6Sopenharmony_ci
350c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetOriginPointerId(int32_t originPointerId)
351c29fa5a6Sopenharmony_ci{
352c29fa5a6Sopenharmony_ci    originPointerId_ = originPointerId;
353c29fa5a6Sopenharmony_ci}
354c29fa5a6Sopenharmony_ci
355c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetRawDy() const
356c29fa5a6Sopenharmony_ci{
357c29fa5a6Sopenharmony_ci    return rawDy_;
358c29fa5a6Sopenharmony_ci}
359c29fa5a6Sopenharmony_ci
360c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetRawDy(int32_t rawDy)
361c29fa5a6Sopenharmony_ci{
362c29fa5a6Sopenharmony_ci    rawDy_ = rawDy;
363c29fa5a6Sopenharmony_ci}
364c29fa5a6Sopenharmony_ci
365c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetRawDisplayX() const
366c29fa5a6Sopenharmony_ci{
367c29fa5a6Sopenharmony_ci    return rawDisplayX_;
368c29fa5a6Sopenharmony_ci}
369c29fa5a6Sopenharmony_ci
370c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetRawDisplayX(int32_t rawDisplayX)
371c29fa5a6Sopenharmony_ci{
372c29fa5a6Sopenharmony_ci    rawDisplayX_ = rawDisplayX;
373c29fa5a6Sopenharmony_ci}
374c29fa5a6Sopenharmony_ci
375c29fa5a6Sopenharmony_ciint32_t PointerEvent::PointerItem::GetRawDisplayY() const
376c29fa5a6Sopenharmony_ci{
377c29fa5a6Sopenharmony_ci    return rawDisplayY_;
378c29fa5a6Sopenharmony_ci}
379c29fa5a6Sopenharmony_ci
380c29fa5a6Sopenharmony_civoid PointerEvent::PointerItem::SetRawDisplayY(int32_t rawDisplayY)
381c29fa5a6Sopenharmony_ci{
382c29fa5a6Sopenharmony_ci    rawDisplayY_ = rawDisplayY;
383c29fa5a6Sopenharmony_ci}
384c29fa5a6Sopenharmony_ci
385c29fa5a6Sopenharmony_cibool PointerEvent::PointerItem::WriteToParcel(Parcel &out) const
386c29fa5a6Sopenharmony_ci{
387c29fa5a6Sopenharmony_ci    return (
388c29fa5a6Sopenharmony_ci        out.WriteInt32(pointerId_) &&
389c29fa5a6Sopenharmony_ci        out.WriteInt64(downTime_) &&
390c29fa5a6Sopenharmony_ci        out.WriteBool(pressed_) &&
391c29fa5a6Sopenharmony_ci        out.WriteInt32(displayX_) &&
392c29fa5a6Sopenharmony_ci        out.WriteInt32(displayY_) &&
393c29fa5a6Sopenharmony_ci        out.WriteInt32(windowX_) &&
394c29fa5a6Sopenharmony_ci        out.WriteInt32(windowY_) &&
395c29fa5a6Sopenharmony_ci        out.WriteInt32(width_) &&
396c29fa5a6Sopenharmony_ci        out.WriteInt32(height_) &&
397c29fa5a6Sopenharmony_ci        out.WriteInt32(toolDisplayX_) &&
398c29fa5a6Sopenharmony_ci        out.WriteInt32(toolDisplayY_) &&
399c29fa5a6Sopenharmony_ci        out.WriteInt32(toolWindowX_) &&
400c29fa5a6Sopenharmony_ci        out.WriteInt32(toolWindowY_) &&
401c29fa5a6Sopenharmony_ci        out.WriteInt32(toolWidth_) &&
402c29fa5a6Sopenharmony_ci        out.WriteInt32(toolHeight_) &&
403c29fa5a6Sopenharmony_ci        out.WriteDouble(tiltX_) &&
404c29fa5a6Sopenharmony_ci        out.WriteDouble(tiltY_) &&
405c29fa5a6Sopenharmony_ci        out.WriteDouble(pressure_) &&
406c29fa5a6Sopenharmony_ci        out.WriteInt32(longAxis_) &&
407c29fa5a6Sopenharmony_ci        out.WriteInt32(shortAxis_) &&
408c29fa5a6Sopenharmony_ci        out.WriteInt32(toolType_) &&
409c29fa5a6Sopenharmony_ci        out.WriteInt32(deviceId_) &&
410c29fa5a6Sopenharmony_ci        out.WriteInt32(rawDx_) &&
411c29fa5a6Sopenharmony_ci        out.WriteInt32(rawDy_) &&
412c29fa5a6Sopenharmony_ci        out.WriteInt32(rawDisplayX_) &&
413c29fa5a6Sopenharmony_ci        out.WriteInt32(rawDisplayY_) &&
414c29fa5a6Sopenharmony_ci        out.WriteInt32(targetWindowId_) &&
415c29fa5a6Sopenharmony_ci        out.WriteDouble(displayXPos_) &&
416c29fa5a6Sopenharmony_ci        out.WriteDouble(displayYPos_) &&
417c29fa5a6Sopenharmony_ci        out.WriteDouble(windowXPos_) &&
418c29fa5a6Sopenharmony_ci        out.WriteDouble(windowYPos_) &&
419c29fa5a6Sopenharmony_ci        out.WriteInt32(originPointerId_)
420c29fa5a6Sopenharmony_ci    );
421c29fa5a6Sopenharmony_ci}
422c29fa5a6Sopenharmony_ci
423c29fa5a6Sopenharmony_cibool PointerEvent::PointerItem::ReadFromParcel(Parcel &in)
424c29fa5a6Sopenharmony_ci{
425c29fa5a6Sopenharmony_ci    return (
426c29fa5a6Sopenharmony_ci        in.ReadInt32(pointerId_) &&
427c29fa5a6Sopenharmony_ci        in.ReadInt64(downTime_) &&
428c29fa5a6Sopenharmony_ci        in.ReadBool(pressed_) &&
429c29fa5a6Sopenharmony_ci        in.ReadInt32(displayX_) &&
430c29fa5a6Sopenharmony_ci        in.ReadInt32(displayY_) &&
431c29fa5a6Sopenharmony_ci        in.ReadInt32(windowX_) &&
432c29fa5a6Sopenharmony_ci        in.ReadInt32(windowY_) &&
433c29fa5a6Sopenharmony_ci        in.ReadInt32(width_) &&
434c29fa5a6Sopenharmony_ci        in.ReadInt32(height_) &&
435c29fa5a6Sopenharmony_ci        in.ReadInt32(toolDisplayX_) &&
436c29fa5a6Sopenharmony_ci        in.ReadInt32(toolDisplayY_) &&
437c29fa5a6Sopenharmony_ci        in.ReadInt32(toolWindowX_) &&
438c29fa5a6Sopenharmony_ci        in.ReadInt32(toolWindowY_) &&
439c29fa5a6Sopenharmony_ci        in.ReadInt32(toolWidth_) &&
440c29fa5a6Sopenharmony_ci        in.ReadInt32(toolHeight_) &&
441c29fa5a6Sopenharmony_ci        in.ReadDouble(tiltX_) &&
442c29fa5a6Sopenharmony_ci        in.ReadDouble(tiltY_) &&
443c29fa5a6Sopenharmony_ci        in.ReadDouble(pressure_) &&
444c29fa5a6Sopenharmony_ci        in.ReadInt32(longAxis_) &&
445c29fa5a6Sopenharmony_ci        in.ReadInt32(shortAxis_) &&
446c29fa5a6Sopenharmony_ci        in.ReadInt32(toolType_) &&
447c29fa5a6Sopenharmony_ci        in.ReadInt32(deviceId_) &&
448c29fa5a6Sopenharmony_ci        in.ReadInt32(rawDx_) &&
449c29fa5a6Sopenharmony_ci        in.ReadInt32(rawDy_) &&
450c29fa5a6Sopenharmony_ci        in.ReadInt32(rawDisplayX_) &&
451c29fa5a6Sopenharmony_ci        in.ReadInt32(rawDisplayY_) &&
452c29fa5a6Sopenharmony_ci        in.ReadInt32(targetWindowId_) &&
453c29fa5a6Sopenharmony_ci        in.ReadDouble(displayXPos_) &&
454c29fa5a6Sopenharmony_ci        in.ReadDouble(displayYPos_) &&
455c29fa5a6Sopenharmony_ci        in.ReadDouble(windowXPos_) &&
456c29fa5a6Sopenharmony_ci        in.ReadDouble(windowYPos_) &&
457c29fa5a6Sopenharmony_ci        in.ReadInt32(originPointerId_)
458c29fa5a6Sopenharmony_ci    );
459c29fa5a6Sopenharmony_ci}
460c29fa5a6Sopenharmony_ci
461c29fa5a6Sopenharmony_ciPointerEvent::PointerEvent(int32_t eventType) : InputEvent(eventType) {}
462c29fa5a6Sopenharmony_ci
463c29fa5a6Sopenharmony_ciPointerEvent::PointerEvent(const PointerEvent& other)
464c29fa5a6Sopenharmony_ci    : InputEvent(other), pointerId_(other.pointerId_), pointers_(other.pointers_),
465c29fa5a6Sopenharmony_ci      pressedButtons_(other.pressedButtons_), sourceType_(other.sourceType_),
466c29fa5a6Sopenharmony_ci      pointerAction_(other.pointerAction_), originPointerAction_(other.originPointerAction_),
467c29fa5a6Sopenharmony_ci      buttonId_(other.buttonId_), fingerCount_(other.fingerCount_), pullId_(other.pullId_), zOrder_(other.zOrder_),
468c29fa5a6Sopenharmony_ci      axes_(other.axes_), axisValues_(other.axisValues_), velocity_(other.velocity_),
469c29fa5a6Sopenharmony_ci      pressedKeys_(other.pressedKeys_), buffer_(other.buffer_), axisEventType_(other.axisEventType_),
470c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_FINGERPRINT
471c29fa5a6Sopenharmony_ci      fingerprintDistanceX_(other.fingerprintDistanceX_), fingerprintDistanceY_(other.fingerprintDistanceY_),
472c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_FINGERPRINT
473c29fa5a6Sopenharmony_ci      dispatchTimes_(other.dispatchTimes_),
474c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_SECURITY_COMPONENT
475c29fa5a6Sopenharmony_ci      enhanceData_(other.enhanceData_),
476c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_SECURITY_COMPONENT
477c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_ANCO
478c29fa5a6Sopenharmony_ci      ancoDeal_(other.ancoDeal_),
479c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_ANCO
480c29fa5a6Sopenharmony_ci      handleEventType_(other.handleEventType_)
481c29fa5a6Sopenharmony_ci      {}
482c29fa5a6Sopenharmony_ci
483c29fa5a6Sopenharmony_ciPointerEvent::~PointerEvent() {}
484c29fa5a6Sopenharmony_ci
485c29fa5a6Sopenharmony_cistd::shared_ptr<PointerEvent> PointerEvent::Create()
486c29fa5a6Sopenharmony_ci{
487c29fa5a6Sopenharmony_ci    auto event = std::shared_ptr<PointerEvent>(new (std::nothrow) PointerEvent(InputEvent::EVENT_TYPE_POINTER));
488c29fa5a6Sopenharmony_ci    CHKPP(event);
489c29fa5a6Sopenharmony_ci    return event;
490c29fa5a6Sopenharmony_ci}
491c29fa5a6Sopenharmony_ci
492c29fa5a6Sopenharmony_civoid PointerEvent::Reset()
493c29fa5a6Sopenharmony_ci{
494c29fa5a6Sopenharmony_ci    InputEvent::Reset();
495c29fa5a6Sopenharmony_ci    pointerId_ = -1;
496c29fa5a6Sopenharmony_ci    pointers_.clear();
497c29fa5a6Sopenharmony_ci    pressedButtons_.clear();
498c29fa5a6Sopenharmony_ci    sourceType_ = SOURCE_TYPE_UNKNOWN;
499c29fa5a6Sopenharmony_ci    pointerAction_ = POINTER_ACTION_UNKNOWN;
500c29fa5a6Sopenharmony_ci    originPointerAction_ = POINTER_ACTION_UNKNOWN;
501c29fa5a6Sopenharmony_ci    buttonId_ = -1;
502c29fa5a6Sopenharmony_ci    fingerCount_ = 0;
503c29fa5a6Sopenharmony_ci    zOrder_ = -1.0f;
504c29fa5a6Sopenharmony_ci    dispatchTimes_ = 0;
505c29fa5a6Sopenharmony_ci    axes_ = 0U;
506c29fa5a6Sopenharmony_ci    axisValues_.fill(0.0);
507c29fa5a6Sopenharmony_ci    velocity_ = 0.0;
508c29fa5a6Sopenharmony_ci    axisEventType_ = AXIS_EVENT_TYPE_UNKNOWN;
509c29fa5a6Sopenharmony_ci    pressedKeys_.clear();
510c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_FINGERPRINT
511c29fa5a6Sopenharmony_ci    fingerprintDistanceX_ = 0.0;
512c29fa5a6Sopenharmony_ci    fingerprintDistanceY_ = 0.0;
513c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_FINGERPRINT
514c29fa5a6Sopenharmony_ci}
515c29fa5a6Sopenharmony_ci
516c29fa5a6Sopenharmony_cistd::string PointerEvent::ToString()
517c29fa5a6Sopenharmony_ci{
518c29fa5a6Sopenharmony_ci    std::string eventStr = InputEvent::ToString();
519c29fa5a6Sopenharmony_ci    eventStr += ",pointerId:" + std::to_string(pointerId_);
520c29fa5a6Sopenharmony_ci    eventStr += ",sourceType:" + std::to_string(sourceType_);
521c29fa5a6Sopenharmony_ci    eventStr += ",pointerAction:" + std::to_string(pointerAction_);
522c29fa5a6Sopenharmony_ci    eventStr += ",buttonId:" + std::to_string(buttonId_);
523c29fa5a6Sopenharmony_ci    eventStr += ",pointers:[";
524c29fa5a6Sopenharmony_ci    size_t pointerSize = 0;
525c29fa5a6Sopenharmony_ci    for (auto it = pointers_.begin(); it != pointers_.end(); it++) {
526c29fa5a6Sopenharmony_ci        pointerSize++;
527c29fa5a6Sopenharmony_ci        eventStr += "{displayX:" + std::to_string((*it).GetDisplayX());
528c29fa5a6Sopenharmony_ci        eventStr += ",displayY:" + std::to_string((*it).GetDisplayY());
529c29fa5a6Sopenharmony_ci        eventStr += ",windowX:" + std::to_string((*it).GetWindowX());
530c29fa5a6Sopenharmony_ci        eventStr += ",windowY:" + std::to_string((*it).GetWindowY());
531c29fa5a6Sopenharmony_ci        eventStr += ",targetWindowId:" + std::to_string((*it).GetTargetWindowId());
532c29fa5a6Sopenharmony_ci        eventStr += ",longAxis:" + std::to_string((*it).GetLongAxis());
533c29fa5a6Sopenharmony_ci        eventStr += ",shortAxis:" + std::to_string((*it).GetShortAxis()) + "}";
534c29fa5a6Sopenharmony_ci        if (pointerSize != pointers_.size()) {
535c29fa5a6Sopenharmony_ci            eventStr += ",";
536c29fa5a6Sopenharmony_ci        }
537c29fa5a6Sopenharmony_ci    }
538c29fa5a6Sopenharmony_ci    eventStr += "],pressedButtons:[";
539c29fa5a6Sopenharmony_ci    size_t buttonsSize = 0;
540c29fa5a6Sopenharmony_ci    for (auto it = pressedButtons_.begin(); it != pressedButtons_.end(); it++) {
541c29fa5a6Sopenharmony_ci        buttonsSize++;
542c29fa5a6Sopenharmony_ci        eventStr += std::to_string(*it);
543c29fa5a6Sopenharmony_ci        if (buttonsSize != pressedButtons_.size()) {
544c29fa5a6Sopenharmony_ci            eventStr += ",";
545c29fa5a6Sopenharmony_ci        }
546c29fa5a6Sopenharmony_ci    }
547c29fa5a6Sopenharmony_ci    eventStr += "]";
548c29fa5a6Sopenharmony_ci    return eventStr;
549c29fa5a6Sopenharmony_ci}
550c29fa5a6Sopenharmony_ci
551c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetPointerAction() const
552c29fa5a6Sopenharmony_ci{
553c29fa5a6Sopenharmony_ci    return pointerAction_;
554c29fa5a6Sopenharmony_ci}
555c29fa5a6Sopenharmony_ci
556c29fa5a6Sopenharmony_civoid PointerEvent::SetPointerAction(int32_t pointerAction)
557c29fa5a6Sopenharmony_ci{
558c29fa5a6Sopenharmony_ci    pointerAction_ = pointerAction;
559c29fa5a6Sopenharmony_ci    originPointerAction_ = pointerAction;
560c29fa5a6Sopenharmony_ci}
561c29fa5a6Sopenharmony_ci
562c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetOriginPointerAction() const
563c29fa5a6Sopenharmony_ci{
564c29fa5a6Sopenharmony_ci    return originPointerAction_;
565c29fa5a6Sopenharmony_ci}
566c29fa5a6Sopenharmony_ci
567c29fa5a6Sopenharmony_civoid PointerEvent::SetOriginPointerAction(int32_t pointerAction)
568c29fa5a6Sopenharmony_ci{
569c29fa5a6Sopenharmony_ci    originPointerAction_ = pointerAction;
570c29fa5a6Sopenharmony_ci}
571c29fa5a6Sopenharmony_ci
572c29fa5a6Sopenharmony_cistatic const std::unordered_map<int32_t, std::string> pointerActionMap = {
573c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_CANCEL, "cancel" },
574c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_DOWN, "down" },
575c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_MOVE, "move" },
576c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_UP, "up" },
577c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_AXIS_BEGIN, "axis-begin" },
578c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_AXIS_UPDATE, "axis-update" },
579c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_AXIS_END, "axis-end" },
580c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_BUTTON_DOWN, "button-down" },
581c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_BUTTON_UP, "button-up" },
582c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_ENTER_WINDOW, "enter-window" },
583c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_LEAVE_WINDOW, "leave-window" },
584c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_PULL_DOWN, "pull-down" },
585c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_PULL_MOVE, "pull-move" },
586c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_PULL_UP, "pull-up" },
587c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_PULL_IN_WINDOW, "pull-in-window" },
588c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_PULL_OUT_WINDOW, "pull-out-window" },
589c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_SWIPE_BEGIN, "swipe-begin" },
590c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_SWIPE_UPDATE, "swipe-update" },
591c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_SWIPE_END, "swipe-end" },
592c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_ROTATE_BEGIN, "rotate-begin" },
593c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_ROTATE_UPDATE, "rotate-update" },
594c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_ROTATE_END, "rotate-end" },
595c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_TRIPTAP, "touchpad-triptap" },
596c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_QUADTAP, "quadtap" },
597c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_HOVER_MOVE, "hover-move" },
598c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_HOVER_ENTER, "hover-enter" },
599c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_HOVER_EXIT, "hover-exit" },
600c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_FINGERPRINT_DOWN, "fingerprint-down" },
601c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_FINGERPRINT_UP, "fingerprint-up" },
602c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_FINGERPRINT_SLIDE, "fingerprint-slide" },
603c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_FINGERPRINT_RETOUCH, "fingerprint-retouch" },
604c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_FINGERPRINT_CLICK, "fingerprint-click" },
605c29fa5a6Sopenharmony_ci    { PointerEvent::TOUCH_ACTION_SWIPE_DOWN, "touch-swipe-down" },
606c29fa5a6Sopenharmony_ci    { PointerEvent::TOUCH_ACTION_SWIPE_UP, "touch-swipe-up" },
607c29fa5a6Sopenharmony_ci    { PointerEvent::TOUCH_ACTION_SWIPE_LEFT, "touch-swipe-left" },
608c29fa5a6Sopenharmony_ci    { PointerEvent::TOUCH_ACTION_SWIPE_RIGHT, "touch-swipe-right" },
609c29fa5a6Sopenharmony_ci    { PointerEvent::TOUCH_ACTION_PINCH_OPENED, "touch-pinch-open" },
610c29fa5a6Sopenharmony_ci    { PointerEvent::TOUCH_ACTION_PINCH_CLOSEED, "touch-pinch-close" },
611c29fa5a6Sopenharmony_ci    { PointerEvent::TOUCH_ACTION_GESTURE_END, "touch-gesture-end" },
612c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_PROXIMITY_IN, "pen-proximity-in" },
613c29fa5a6Sopenharmony_ci    { PointerEvent::POINTER_ACTION_PROXIMITY_OUT, "pen-proximity-out" },
614c29fa5a6Sopenharmony_ci};
615c29fa5a6Sopenharmony_ci
616c29fa5a6Sopenharmony_ciconst char* PointerEvent::DumpPointerAction() const
617c29fa5a6Sopenharmony_ci{
618c29fa5a6Sopenharmony_ci    auto it = pointerActionMap.find(pointerAction_);
619c29fa5a6Sopenharmony_ci    if (it != pointerActionMap.end()) {
620c29fa5a6Sopenharmony_ci        return it->second.c_str();
621c29fa5a6Sopenharmony_ci    }
622c29fa5a6Sopenharmony_ci    return "unknown";
623c29fa5a6Sopenharmony_ci}
624c29fa5a6Sopenharmony_ci
625c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetPointerId() const
626c29fa5a6Sopenharmony_ci{
627c29fa5a6Sopenharmony_ci    return pointerId_;
628c29fa5a6Sopenharmony_ci}
629c29fa5a6Sopenharmony_ci
630c29fa5a6Sopenharmony_civoid PointerEvent::SetPointerId(int32_t pointerId)
631c29fa5a6Sopenharmony_ci{
632c29fa5a6Sopenharmony_ci    pointerId_ = pointerId;
633c29fa5a6Sopenharmony_ci}
634c29fa5a6Sopenharmony_ci
635c29fa5a6Sopenharmony_cibool PointerEvent::GetPointerItem(int32_t pointerId, PointerItem &pointerItem)
636c29fa5a6Sopenharmony_ci{
637c29fa5a6Sopenharmony_ci    for (const auto &item : pointers_) {
638c29fa5a6Sopenharmony_ci        if (item.GetPointerId() == pointerId) {
639c29fa5a6Sopenharmony_ci            pointerItem = item;
640c29fa5a6Sopenharmony_ci            return true;
641c29fa5a6Sopenharmony_ci        }
642c29fa5a6Sopenharmony_ci    }
643c29fa5a6Sopenharmony_ci    return false;
644c29fa5a6Sopenharmony_ci}
645c29fa5a6Sopenharmony_ci
646c29fa5a6Sopenharmony_civoid PointerEvent::RemovePointerItem(int32_t pointerId)
647c29fa5a6Sopenharmony_ci{
648c29fa5a6Sopenharmony_ci    for (auto it = pointers_.begin(); it != pointers_.end(); ++it) {
649c29fa5a6Sopenharmony_ci        if (it->GetPointerId() == pointerId) {
650c29fa5a6Sopenharmony_ci            pointers_.erase(it);
651c29fa5a6Sopenharmony_ci            break;
652c29fa5a6Sopenharmony_ci        }
653c29fa5a6Sopenharmony_ci    }
654c29fa5a6Sopenharmony_ci}
655c29fa5a6Sopenharmony_ci
656c29fa5a6Sopenharmony_civoid PointerEvent::RemoveAllPointerItems()
657c29fa5a6Sopenharmony_ci{
658c29fa5a6Sopenharmony_ci    pointers_.clear();
659c29fa5a6Sopenharmony_ci}
660c29fa5a6Sopenharmony_ci
661c29fa5a6Sopenharmony_civoid PointerEvent::AddPointerItem(PointerItem &pointerItem)
662c29fa5a6Sopenharmony_ci{
663c29fa5a6Sopenharmony_ci    if (pointers_.size() >= MAX_N_POINTER_ITEMS) {
664c29fa5a6Sopenharmony_ci        MMI_HILOGE("Exceed maximum allowed number of pointer items");
665c29fa5a6Sopenharmony_ci        return;
666c29fa5a6Sopenharmony_ci    }
667c29fa5a6Sopenharmony_ci    int32_t pointerId = pointerItem.GetPointerId();
668c29fa5a6Sopenharmony_ci    for (auto &item : pointers_) {
669c29fa5a6Sopenharmony_ci        if (item.GetPointerId() == pointerId) {
670c29fa5a6Sopenharmony_ci            item = pointerItem;
671c29fa5a6Sopenharmony_ci            return;
672c29fa5a6Sopenharmony_ci        }
673c29fa5a6Sopenharmony_ci    }
674c29fa5a6Sopenharmony_ci    pointers_.push_back(pointerItem);
675c29fa5a6Sopenharmony_ci}
676c29fa5a6Sopenharmony_ci
677c29fa5a6Sopenharmony_civoid PointerEvent::UpdatePointerItem(int32_t pointerId, PointerItem &pointerItem)
678c29fa5a6Sopenharmony_ci{
679c29fa5a6Sopenharmony_ci    for (auto &item : pointers_) {
680c29fa5a6Sopenharmony_ci        if ((item.GetPointerId() % SIMULATE_EVENT_START_ID) == pointerId) {
681c29fa5a6Sopenharmony_ci            item = pointerItem;
682c29fa5a6Sopenharmony_ci            return;
683c29fa5a6Sopenharmony_ci        }
684c29fa5a6Sopenharmony_ci    }
685c29fa5a6Sopenharmony_ci    AddPointerItem(pointerItem);
686c29fa5a6Sopenharmony_ci}
687c29fa5a6Sopenharmony_ci
688c29fa5a6Sopenharmony_cistd::set<int32_t> PointerEvent::GetPressedButtons() const
689c29fa5a6Sopenharmony_ci{
690c29fa5a6Sopenharmony_ci    return pressedButtons_;
691c29fa5a6Sopenharmony_ci}
692c29fa5a6Sopenharmony_ci
693c29fa5a6Sopenharmony_cibool PointerEvent::IsButtonPressed(int32_t buttonId) const
694c29fa5a6Sopenharmony_ci{
695c29fa5a6Sopenharmony_ci    return (pressedButtons_.find(buttonId) != pressedButtons_.end());
696c29fa5a6Sopenharmony_ci}
697c29fa5a6Sopenharmony_ci
698c29fa5a6Sopenharmony_civoid PointerEvent::SetButtonPressed(int32_t buttonId)
699c29fa5a6Sopenharmony_ci{
700c29fa5a6Sopenharmony_ci    if (pressedButtons_.size() >= MAX_N_PRESSED_BUTTONS) {
701c29fa5a6Sopenharmony_ci        MMI_HILOGE("Exceed maximum allowed number of pressed buttons");
702c29fa5a6Sopenharmony_ci        return;
703c29fa5a6Sopenharmony_ci    }
704c29fa5a6Sopenharmony_ci    auto iter = pressedButtons_.insert(buttonId);
705c29fa5a6Sopenharmony_ci    if (!iter.second) {
706c29fa5a6Sopenharmony_ci        MMI_HILOGE("Insert value failed, button:%{public}d", buttonId);
707c29fa5a6Sopenharmony_ci    }
708c29fa5a6Sopenharmony_ci}
709c29fa5a6Sopenharmony_ci
710c29fa5a6Sopenharmony_civoid PointerEvent::DeleteReleaseButton(int32_t buttonId)
711c29fa5a6Sopenharmony_ci{
712c29fa5a6Sopenharmony_ci    if (pressedButtons_.find(buttonId) != pressedButtons_.end()) {
713c29fa5a6Sopenharmony_ci        pressedButtons_.erase(buttonId);
714c29fa5a6Sopenharmony_ci    }
715c29fa5a6Sopenharmony_ci}
716c29fa5a6Sopenharmony_ci
717c29fa5a6Sopenharmony_civoid PointerEvent::ClearButtonPressed()
718c29fa5a6Sopenharmony_ci{
719c29fa5a6Sopenharmony_ci    pressedButtons_.clear();
720c29fa5a6Sopenharmony_ci}
721c29fa5a6Sopenharmony_ci
722c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetPointerCount() const
723c29fa5a6Sopenharmony_ci{
724c29fa5a6Sopenharmony_ci    return static_cast<int32_t>(pointers_.size());
725c29fa5a6Sopenharmony_ci}
726c29fa5a6Sopenharmony_ci
727c29fa5a6Sopenharmony_cistd::vector<int32_t> PointerEvent::GetPointerIds() const
728c29fa5a6Sopenharmony_ci{
729c29fa5a6Sopenharmony_ci    std::vector<int32_t> pointerIdList;
730c29fa5a6Sopenharmony_ci    for (const auto &item : pointers_) {
731c29fa5a6Sopenharmony_ci        pointerIdList.push_back(item.GetPointerId());
732c29fa5a6Sopenharmony_ci    }
733c29fa5a6Sopenharmony_ci    return pointerIdList;
734c29fa5a6Sopenharmony_ci}
735c29fa5a6Sopenharmony_ci
736c29fa5a6Sopenharmony_cistd::list<PointerEvent::PointerItem> PointerEvent::GetAllPointerItems() const
737c29fa5a6Sopenharmony_ci{
738c29fa5a6Sopenharmony_ci    return pointers_;
739c29fa5a6Sopenharmony_ci}
740c29fa5a6Sopenharmony_ci
741c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetSourceType() const
742c29fa5a6Sopenharmony_ci{
743c29fa5a6Sopenharmony_ci    return sourceType_;
744c29fa5a6Sopenharmony_ci}
745c29fa5a6Sopenharmony_ci
746c29fa5a6Sopenharmony_civoid PointerEvent::SetSourceType(int32_t sourceType)
747c29fa5a6Sopenharmony_ci{
748c29fa5a6Sopenharmony_ci    sourceType_ = sourceType;
749c29fa5a6Sopenharmony_ci}
750c29fa5a6Sopenharmony_ci
751c29fa5a6Sopenharmony_ciconst char* PointerEvent::DumpSourceType() const
752c29fa5a6Sopenharmony_ci{
753c29fa5a6Sopenharmony_ci    switch (sourceType_) {
754c29fa5a6Sopenharmony_ci        case PointerEvent::SOURCE_TYPE_MOUSE: {
755c29fa5a6Sopenharmony_ci            return "mouse";
756c29fa5a6Sopenharmony_ci        }
757c29fa5a6Sopenharmony_ci        case PointerEvent::SOURCE_TYPE_TOUCHSCREEN: {
758c29fa5a6Sopenharmony_ci            return "touch-screen";
759c29fa5a6Sopenharmony_ci        }
760c29fa5a6Sopenharmony_ci        case PointerEvent::SOURCE_TYPE_TOUCHPAD: {
761c29fa5a6Sopenharmony_ci            return "touch-pad";
762c29fa5a6Sopenharmony_ci        }
763c29fa5a6Sopenharmony_ci        case PointerEvent::SOURCE_TYPE_JOYSTICK: {
764c29fa5a6Sopenharmony_ci            return "joystick";
765c29fa5a6Sopenharmony_ci        }
766c29fa5a6Sopenharmony_ci        case PointerEvent::SOURCE_TYPE_FINGERPRINT: {
767c29fa5a6Sopenharmony_ci            return "fingerprint";
768c29fa5a6Sopenharmony_ci        }
769c29fa5a6Sopenharmony_ci        case PointerEvent::SOURCE_TYPE_CROWN: {
770c29fa5a6Sopenharmony_ci            return "crown";
771c29fa5a6Sopenharmony_ci        }
772c29fa5a6Sopenharmony_ci        default: {
773c29fa5a6Sopenharmony_ci            break;
774c29fa5a6Sopenharmony_ci        }
775c29fa5a6Sopenharmony_ci    }
776c29fa5a6Sopenharmony_ci    return "unknown";
777c29fa5a6Sopenharmony_ci}
778c29fa5a6Sopenharmony_ci
779c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetButtonId() const
780c29fa5a6Sopenharmony_ci{
781c29fa5a6Sopenharmony_ci    return buttonId_;
782c29fa5a6Sopenharmony_ci}
783c29fa5a6Sopenharmony_ci
784c29fa5a6Sopenharmony_civoid PointerEvent::SetButtonId(int32_t buttonId)
785c29fa5a6Sopenharmony_ci{
786c29fa5a6Sopenharmony_ci    buttonId_ = buttonId;
787c29fa5a6Sopenharmony_ci}
788c29fa5a6Sopenharmony_ci
789c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetFingerCount() const
790c29fa5a6Sopenharmony_ci{
791c29fa5a6Sopenharmony_ci    return fingerCount_;
792c29fa5a6Sopenharmony_ci}
793c29fa5a6Sopenharmony_ci
794c29fa5a6Sopenharmony_civoid PointerEvent::SetFingerCount(int32_t fingerCount)
795c29fa5a6Sopenharmony_ci{
796c29fa5a6Sopenharmony_ci    fingerCount_ = fingerCount;
797c29fa5a6Sopenharmony_ci}
798c29fa5a6Sopenharmony_ci
799c29fa5a6Sopenharmony_cifloat PointerEvent::GetZOrder() const
800c29fa5a6Sopenharmony_ci{
801c29fa5a6Sopenharmony_ci    return zOrder_;
802c29fa5a6Sopenharmony_ci}
803c29fa5a6Sopenharmony_ci
804c29fa5a6Sopenharmony_civoid PointerEvent::SetZOrder(float zOrder)
805c29fa5a6Sopenharmony_ci{
806c29fa5a6Sopenharmony_ci    zOrder_ = zOrder;
807c29fa5a6Sopenharmony_ci}
808c29fa5a6Sopenharmony_ci
809c29fa5a6Sopenharmony_cidouble PointerEvent::GetAxisValue(AxisType axis) const
810c29fa5a6Sopenharmony_ci{
811c29fa5a6Sopenharmony_ci    double axisValue {};
812c29fa5a6Sopenharmony_ci    if ((axis >= AXIS_TYPE_UNKNOWN) && (axis < AXIS_TYPE_MAX)) {
813c29fa5a6Sopenharmony_ci        axisValue = axisValues_[axis];
814c29fa5a6Sopenharmony_ci    }
815c29fa5a6Sopenharmony_ci    return axisValue;
816c29fa5a6Sopenharmony_ci}
817c29fa5a6Sopenharmony_ci
818c29fa5a6Sopenharmony_civoid PointerEvent::SetAxisValue(AxisType axis, double axisValue)
819c29fa5a6Sopenharmony_ci{
820c29fa5a6Sopenharmony_ci    if ((axis >= AXIS_TYPE_UNKNOWN) && (axis < AXIS_TYPE_MAX)) {
821c29fa5a6Sopenharmony_ci        axisValues_[axis] = axisValue;
822c29fa5a6Sopenharmony_ci        axes_ = static_cast<uint32_t>(axes_ | static_cast<uint32_t>(1 << axis));
823c29fa5a6Sopenharmony_ci    }
824c29fa5a6Sopenharmony_ci}
825c29fa5a6Sopenharmony_ci
826c29fa5a6Sopenharmony_civoid PointerEvent::ClearAxisValue()
827c29fa5a6Sopenharmony_ci{
828c29fa5a6Sopenharmony_ci    axisValues_ = {};
829c29fa5a6Sopenharmony_ci    axes_ = 0;
830c29fa5a6Sopenharmony_ci}
831c29fa5a6Sopenharmony_ci
832c29fa5a6Sopenharmony_cibool PointerEvent::HasAxis(uint32_t axes, AxisType axis)
833c29fa5a6Sopenharmony_ci{
834c29fa5a6Sopenharmony_ci    bool ret { false };
835c29fa5a6Sopenharmony_ci    if ((axis >= AXIS_TYPE_UNKNOWN) && (axis < AXIS_TYPE_MAX)) {
836c29fa5a6Sopenharmony_ci        ret = static_cast<bool>(static_cast<uint32_t>(axes) & (1 << static_cast<uint32_t>(axis)));
837c29fa5a6Sopenharmony_ci    }
838c29fa5a6Sopenharmony_ci    return ret;
839c29fa5a6Sopenharmony_ci}
840c29fa5a6Sopenharmony_ci
841c29fa5a6Sopenharmony_cidouble PointerEvent::GetVelocity() const
842c29fa5a6Sopenharmony_ci{
843c29fa5a6Sopenharmony_ci    return velocity_;
844c29fa5a6Sopenharmony_ci}
845c29fa5a6Sopenharmony_ci
846c29fa5a6Sopenharmony_civoid PointerEvent::SetVelocity(double velocity)
847c29fa5a6Sopenharmony_ci{
848c29fa5a6Sopenharmony_ci    velocity_ = velocity;
849c29fa5a6Sopenharmony_ci}
850c29fa5a6Sopenharmony_ci
851c29fa5a6Sopenharmony_civoid PointerEvent::SetPressedKeys(const std::vector<int32_t> pressedKeys)
852c29fa5a6Sopenharmony_ci{
853c29fa5a6Sopenharmony_ci    pressedKeys_ = pressedKeys;
854c29fa5a6Sopenharmony_ci}
855c29fa5a6Sopenharmony_ci
856c29fa5a6Sopenharmony_cistd::vector<int32_t> PointerEvent::GetPressedKeys() const
857c29fa5a6Sopenharmony_ci{
858c29fa5a6Sopenharmony_ci    return pressedKeys_;
859c29fa5a6Sopenharmony_ci}
860c29fa5a6Sopenharmony_ci
861c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetAxisEventType() const
862c29fa5a6Sopenharmony_ci{
863c29fa5a6Sopenharmony_ci    return axisEventType_;
864c29fa5a6Sopenharmony_ci}
865c29fa5a6Sopenharmony_ci
866c29fa5a6Sopenharmony_civoid PointerEvent::SetAxisEventType(int32_t axisEventType)
867c29fa5a6Sopenharmony_ci{
868c29fa5a6Sopenharmony_ci    axisEventType_ = axisEventType;
869c29fa5a6Sopenharmony_ci}
870c29fa5a6Sopenharmony_ci
871c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetPullId() const
872c29fa5a6Sopenharmony_ci{
873c29fa5a6Sopenharmony_ci    return pullId_;
874c29fa5a6Sopenharmony_ci}
875c29fa5a6Sopenharmony_ci
876c29fa5a6Sopenharmony_civoid PointerEvent::SetPullId(int32_t pullId)
877c29fa5a6Sopenharmony_ci{
878c29fa5a6Sopenharmony_ci    pullId_ = pullId;
879c29fa5a6Sopenharmony_ci}
880c29fa5a6Sopenharmony_ci
881c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_SECURITY_COMPONENT
882c29fa5a6Sopenharmony_civoid PointerEvent::SetEnhanceData(const std::vector<uint8_t>& enhanceData)
883c29fa5a6Sopenharmony_ci{
884c29fa5a6Sopenharmony_ci    enhanceData_ = enhanceData;
885c29fa5a6Sopenharmony_ci}
886c29fa5a6Sopenharmony_ci
887c29fa5a6Sopenharmony_cistd::vector<uint8_t> PointerEvent::GetEnhanceData() const
888c29fa5a6Sopenharmony_ci{
889c29fa5a6Sopenharmony_ci    return enhanceData_;
890c29fa5a6Sopenharmony_ci}
891c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_SECURITY_COMPONENT
892c29fa5a6Sopenharmony_ci
893c29fa5a6Sopenharmony_cibool PointerEvent::WriteToParcel(Parcel &out) const
894c29fa5a6Sopenharmony_ci{
895c29fa5a6Sopenharmony_ci    if (!InputEvent::WriteToParcel(out)) {
896c29fa5a6Sopenharmony_ci        return false;
897c29fa5a6Sopenharmony_ci    }
898c29fa5a6Sopenharmony_ci
899c29fa5a6Sopenharmony_ci    WRITEINT32(out, pointerId_);
900c29fa5a6Sopenharmony_ci
901c29fa5a6Sopenharmony_ci    WRITEINT32(out, static_cast<int32_t>(pointers_.size()));
902c29fa5a6Sopenharmony_ci
903c29fa5a6Sopenharmony_ci    for (const auto &item : pointers_) {
904c29fa5a6Sopenharmony_ci        if (!item.WriteToParcel(out)) {
905c29fa5a6Sopenharmony_ci            return false;
906c29fa5a6Sopenharmony_ci        }
907c29fa5a6Sopenharmony_ci    }
908c29fa5a6Sopenharmony_ci
909c29fa5a6Sopenharmony_ci    WRITEINT32(out, static_cast<int32_t>(buffer_.size()));
910c29fa5a6Sopenharmony_ci
911c29fa5a6Sopenharmony_ci    for (const auto& buff : buffer_) {
912c29fa5a6Sopenharmony_ci        WRITEUINT8(out, buff);
913c29fa5a6Sopenharmony_ci    }
914c29fa5a6Sopenharmony_ci
915c29fa5a6Sopenharmony_ci    WRITEINT32(out, static_cast<int32_t>(pressedButtons_.size()));
916c29fa5a6Sopenharmony_ci
917c29fa5a6Sopenharmony_ci    for (const auto &item : pressedButtons_) {
918c29fa5a6Sopenharmony_ci        WRITEINT32(out, item);
919c29fa5a6Sopenharmony_ci    }
920c29fa5a6Sopenharmony_ci
921c29fa5a6Sopenharmony_ci    WRITEINT32(out, static_cast<int32_t>(pressedKeys_.size()));
922c29fa5a6Sopenharmony_ci
923c29fa5a6Sopenharmony_ci    for (const auto &item : pressedKeys_) {
924c29fa5a6Sopenharmony_ci        WRITEINT32(out, item);
925c29fa5a6Sopenharmony_ci    }
926c29fa5a6Sopenharmony_ci
927c29fa5a6Sopenharmony_ci    WRITEINT32(out, sourceType_);
928c29fa5a6Sopenharmony_ci
929c29fa5a6Sopenharmony_ci    WRITEINT32(out, pointerAction_);
930c29fa5a6Sopenharmony_ci
931c29fa5a6Sopenharmony_ci    WRITEINT32(out, originPointerAction_);
932c29fa5a6Sopenharmony_ci
933c29fa5a6Sopenharmony_ci    WRITEINT32(out, buttonId_);
934c29fa5a6Sopenharmony_ci
935c29fa5a6Sopenharmony_ci    WRITEINT32(out, fingerCount_);
936c29fa5a6Sopenharmony_ci
937c29fa5a6Sopenharmony_ci    WRITEFLOAT(out, zOrder_);
938c29fa5a6Sopenharmony_ci
939c29fa5a6Sopenharmony_ci    const uint32_t axes { GetAxes() };
940c29fa5a6Sopenharmony_ci    WRITEUINT32(out, axes);
941c29fa5a6Sopenharmony_ci
942c29fa5a6Sopenharmony_ci    for (int32_t i = AXIS_TYPE_UNKNOWN; i < AXIS_TYPE_MAX; ++i) {
943c29fa5a6Sopenharmony_ci        const AxisType axis { static_cast<AxisType>(i) };
944c29fa5a6Sopenharmony_ci        if (HasAxis(axes, axis)) {
945c29fa5a6Sopenharmony_ci            WRITEDOUBLE(out, GetAxisValue(axis));
946c29fa5a6Sopenharmony_ci        }
947c29fa5a6Sopenharmony_ci    }
948c29fa5a6Sopenharmony_ci    WRITEDOUBLE(out, velocity_);
949c29fa5a6Sopenharmony_ci
950c29fa5a6Sopenharmony_ci    WRITEINT32(out, axisEventType_);
951c29fa5a6Sopenharmony_ci    WRITEINT32(out, pullId_);
952c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_SECURITY_COMPONENT
953c29fa5a6Sopenharmony_ci    WRITEINT32(out, static_cast<int32_t>(enhanceData_.size()));
954c29fa5a6Sopenharmony_ci    for (uint32_t i = 0; i < enhanceData_.size(); i++) {
955c29fa5a6Sopenharmony_ci        WRITEUINT32(out, enhanceData_[i]);
956c29fa5a6Sopenharmony_ci    }
957c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_SECURITY_COMPONENT
958c29fa5a6Sopenharmony_ci
959c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_FINGERPRINT
960c29fa5a6Sopenharmony_ci    WRITEDOUBLE(out, fingerprintDistanceX_);
961c29fa5a6Sopenharmony_ci    WRITEDOUBLE(out, fingerprintDistanceY_);
962c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_FINGERPRINT
963c29fa5a6Sopenharmony_ci    return true;
964c29fa5a6Sopenharmony_ci}
965c29fa5a6Sopenharmony_ci
966c29fa5a6Sopenharmony_cibool PointerEvent::ReadFromParcel(Parcel &in)
967c29fa5a6Sopenharmony_ci{
968c29fa5a6Sopenharmony_ci    if (!InputEvent::ReadFromParcel(in)) {
969c29fa5a6Sopenharmony_ci        return false;
970c29fa5a6Sopenharmony_ci    }
971c29fa5a6Sopenharmony_ci
972c29fa5a6Sopenharmony_ci    READINT32(in, pointerId_);
973c29fa5a6Sopenharmony_ci
974c29fa5a6Sopenharmony_ci    int32_t nPointers;
975c29fa5a6Sopenharmony_ci    READINT32(in, nPointers);
976c29fa5a6Sopenharmony_ci    if (nPointers > static_cast<int32_t>(MAX_N_POINTER_ITEMS)) {
977c29fa5a6Sopenharmony_ci        return false;
978c29fa5a6Sopenharmony_ci    }
979c29fa5a6Sopenharmony_ci
980c29fa5a6Sopenharmony_ci    for (int32_t i = 0; i < nPointers; ++i) {
981c29fa5a6Sopenharmony_ci        PointerItem item;
982c29fa5a6Sopenharmony_ci        if (!item.ReadFromParcel(in)) {
983c29fa5a6Sopenharmony_ci            return false;
984c29fa5a6Sopenharmony_ci        }
985c29fa5a6Sopenharmony_ci        AddPointerItem(item);
986c29fa5a6Sopenharmony_ci    }
987c29fa5a6Sopenharmony_ci
988c29fa5a6Sopenharmony_ci    if (!ReadBufferFromParcel(in)) {
989c29fa5a6Sopenharmony_ci        return false;
990c29fa5a6Sopenharmony_ci    }
991c29fa5a6Sopenharmony_ci
992c29fa5a6Sopenharmony_ci    int32_t nPressedButtons;
993c29fa5a6Sopenharmony_ci    READINT32(in, nPressedButtons);
994c29fa5a6Sopenharmony_ci    if (nPressedButtons > static_cast<int32_t>(MAX_N_PRESSED_BUTTONS)) {
995c29fa5a6Sopenharmony_ci        return false;
996c29fa5a6Sopenharmony_ci    }
997c29fa5a6Sopenharmony_ci
998c29fa5a6Sopenharmony_ci    for (int32_t i = 0; i < nPressedButtons; ++i) {
999c29fa5a6Sopenharmony_ci        int32_t buttonId = 0;
1000c29fa5a6Sopenharmony_ci        READINT32(in, buttonId);
1001c29fa5a6Sopenharmony_ci        SetButtonPressed(buttonId);
1002c29fa5a6Sopenharmony_ci    }
1003c29fa5a6Sopenharmony_ci
1004c29fa5a6Sopenharmony_ci    int32_t nPressedKeys = 0;
1005c29fa5a6Sopenharmony_ci    READINT32(in, nPressedKeys);
1006c29fa5a6Sopenharmony_ci    if (nPressedKeys > static_cast<int32_t>(MAX_N_PRESSED_KEYS)) {
1007c29fa5a6Sopenharmony_ci        return false;
1008c29fa5a6Sopenharmony_ci    }
1009c29fa5a6Sopenharmony_ci
1010c29fa5a6Sopenharmony_ci    for (int32_t i = 0; i < nPressedKeys; i++) {
1011c29fa5a6Sopenharmony_ci        int32_t val = 0;
1012c29fa5a6Sopenharmony_ci        READINT32(in, val);
1013c29fa5a6Sopenharmony_ci        pressedKeys_.emplace_back(val);
1014c29fa5a6Sopenharmony_ci    }
1015c29fa5a6Sopenharmony_ci    READINT32(in, sourceType_);
1016c29fa5a6Sopenharmony_ci    READINT32(in, pointerAction_);
1017c29fa5a6Sopenharmony_ci    READINT32(in, originPointerAction_);
1018c29fa5a6Sopenharmony_ci    READINT32(in, buttonId_);
1019c29fa5a6Sopenharmony_ci    READINT32(in, fingerCount_);
1020c29fa5a6Sopenharmony_ci    READFLOAT(in, zOrder_);
1021c29fa5a6Sopenharmony_ci
1022c29fa5a6Sopenharmony_ci    if (!ReadAxisFromParcel(in)) {
1023c29fa5a6Sopenharmony_ci        return false;
1024c29fa5a6Sopenharmony_ci    }
1025c29fa5a6Sopenharmony_ci
1026c29fa5a6Sopenharmony_ci    READDOUBLE(in, velocity_);
1027c29fa5a6Sopenharmony_ci
1028c29fa5a6Sopenharmony_ci    READINT32(in, axisEventType_);
1029c29fa5a6Sopenharmony_ci    READINT32(in, pullId_);
1030c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_SECURITY_COMPONENT
1031c29fa5a6Sopenharmony_ci    if (!ReadEnhanceDataFromParcel(in)) {
1032c29fa5a6Sopenharmony_ci        return false;
1033c29fa5a6Sopenharmony_ci    }
1034c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_SECURITY_COMPONENT
1035c29fa5a6Sopenharmony_ci
1036c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_FINGERPRINT
1037c29fa5a6Sopenharmony_ci    READDOUBLE(in, fingerprintDistanceX_);
1038c29fa5a6Sopenharmony_ci    READDOUBLE(in, fingerprintDistanceY_);
1039c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_FINGERPRINT
1040c29fa5a6Sopenharmony_ci    return true;
1041c29fa5a6Sopenharmony_ci}
1042c29fa5a6Sopenharmony_ci
1043c29fa5a6Sopenharmony_cibool PointerEvent::ReadAxisFromParcel(Parcel &in)
1044c29fa5a6Sopenharmony_ci{
1045c29fa5a6Sopenharmony_ci    uint32_t axes = 0;
1046c29fa5a6Sopenharmony_ci    READUINT32(in, axes);
1047c29fa5a6Sopenharmony_ci
1048c29fa5a6Sopenharmony_ci    for (int32_t i = AXIS_TYPE_UNKNOWN; i < AXIS_TYPE_MAX; ++i) {
1049c29fa5a6Sopenharmony_ci        const AxisType axis { static_cast<AxisType>(i) };
1050c29fa5a6Sopenharmony_ci        if (HasAxis(axes, axis)) {
1051c29fa5a6Sopenharmony_ci            double val;
1052c29fa5a6Sopenharmony_ci            READDOUBLE(in, val);
1053c29fa5a6Sopenharmony_ci            SetAxisValue(axis, val);
1054c29fa5a6Sopenharmony_ci        }
1055c29fa5a6Sopenharmony_ci    }
1056c29fa5a6Sopenharmony_ci    return true;
1057c29fa5a6Sopenharmony_ci}
1058c29fa5a6Sopenharmony_ci
1059c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_FINGERPRINT
1060c29fa5a6Sopenharmony_civoid PointerEvent::SetFingerprintDistanceX(double x)
1061c29fa5a6Sopenharmony_ci{
1062c29fa5a6Sopenharmony_ci    fingerprintDistanceX_ = x;
1063c29fa5a6Sopenharmony_ci}
1064c29fa5a6Sopenharmony_ci
1065c29fa5a6Sopenharmony_civoid PointerEvent::SetFingerprintDistanceY(double y)
1066c29fa5a6Sopenharmony_ci{
1067c29fa5a6Sopenharmony_ci    fingerprintDistanceY_ = y;
1068c29fa5a6Sopenharmony_ci}
1069c29fa5a6Sopenharmony_ci
1070c29fa5a6Sopenharmony_cidouble PointerEvent::GetFingerprintDistanceX() const
1071c29fa5a6Sopenharmony_ci{
1072c29fa5a6Sopenharmony_ci    return fingerprintDistanceX_;
1073c29fa5a6Sopenharmony_ci}
1074c29fa5a6Sopenharmony_ci
1075c29fa5a6Sopenharmony_cidouble PointerEvent::GetFingerprintDistanceY() const
1076c29fa5a6Sopenharmony_ci{
1077c29fa5a6Sopenharmony_ci    return fingerprintDistanceY_;
1078c29fa5a6Sopenharmony_ci}
1079c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_FINGERPRINT
1080c29fa5a6Sopenharmony_ci
1081c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_SECURITY_COMPONENT
1082c29fa5a6Sopenharmony_cibool PointerEvent::ReadEnhanceDataFromParcel(Parcel &in)
1083c29fa5a6Sopenharmony_ci{
1084c29fa5a6Sopenharmony_ci    int32_t size = 0;
1085c29fa5a6Sopenharmony_ci    READINT32(in, size);
1086c29fa5a6Sopenharmony_ci    if (size > static_cast<int32_t>(MAX_N_ENHANCE_DATA_SIZE) || size < 0) {
1087c29fa5a6Sopenharmony_ci        MMI_HILOGE("enhanceData_ size is invalid");
1088c29fa5a6Sopenharmony_ci        return false;
1089c29fa5a6Sopenharmony_ci    }
1090c29fa5a6Sopenharmony_ci
1091c29fa5a6Sopenharmony_ci    for (int32_t i = 0; i < size; i++) {
1092c29fa5a6Sopenharmony_ci        uint32_t val = 0;
1093c29fa5a6Sopenharmony_ci        READUINT32(in, val);
1094c29fa5a6Sopenharmony_ci        enhanceData_.emplace_back(val);
1095c29fa5a6Sopenharmony_ci    }
1096c29fa5a6Sopenharmony_ci    return true;
1097c29fa5a6Sopenharmony_ci}
1098c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_SECURITY_COMPONENT
1099c29fa5a6Sopenharmony_ci
1100c29fa5a6Sopenharmony_cibool PointerEvent::ReadBufferFromParcel(Parcel &in)
1101c29fa5a6Sopenharmony_ci{
1102c29fa5a6Sopenharmony_ci    int32_t bufflen = 0;
1103c29fa5a6Sopenharmony_ci    READINT32(in, bufflen);
1104c29fa5a6Sopenharmony_ci    if (bufflen > static_cast<int32_t>(MAX_N_BUFFER_SIZE)) {
1105c29fa5a6Sopenharmony_ci        return false;
1106c29fa5a6Sopenharmony_ci    }
1107c29fa5a6Sopenharmony_ci
1108c29fa5a6Sopenharmony_ci    for (int32_t i = 0; i < bufflen; ++i) {
1109c29fa5a6Sopenharmony_ci        uint8_t data;
1110c29fa5a6Sopenharmony_ci        READUINT8(in, data);
1111c29fa5a6Sopenharmony_ci        buffer_.push_back(data);
1112c29fa5a6Sopenharmony_ci    }
1113c29fa5a6Sopenharmony_ci    return true;
1114c29fa5a6Sopenharmony_ci}
1115c29fa5a6Sopenharmony_ci
1116c29fa5a6Sopenharmony_cibool PointerEvent::IsValidCheckMouseFunc() const
1117c29fa5a6Sopenharmony_ci{
1118c29fa5a6Sopenharmony_ci    CALL_DEBUG_ENTER;
1119c29fa5a6Sopenharmony_ci    if (pointers_.size() != 1) {
1120c29fa5a6Sopenharmony_ci        MMI_HILOGE("Pointers_ is invalid");
1121c29fa5a6Sopenharmony_ci        return false;
1122c29fa5a6Sopenharmony_ci    }
1123c29fa5a6Sopenharmony_ci
1124c29fa5a6Sopenharmony_ci    const size_t maxPressedButtons = 3;
1125c29fa5a6Sopenharmony_ci    if (pressedButtons_.size() > maxPressedButtons) {
1126c29fa5a6Sopenharmony_ci        MMI_HILOGE("PressedButtons_.size is greater than three and is invalid");
1127c29fa5a6Sopenharmony_ci        return false;
1128c29fa5a6Sopenharmony_ci    }
1129c29fa5a6Sopenharmony_ci
1130c29fa5a6Sopenharmony_ci    for (const auto &item : pressedButtons_) {
1131c29fa5a6Sopenharmony_ci        if (item != MOUSE_BUTTON_LEFT && item != MOUSE_BUTTON_RIGHT && item != MOUSE_BUTTON_MIDDLE) {
1132c29fa5a6Sopenharmony_ci            MMI_HILOGE("PressedButtons_ is invalid");
1133c29fa5a6Sopenharmony_ci            return false;
1134c29fa5a6Sopenharmony_ci        }
1135c29fa5a6Sopenharmony_ci    }
1136c29fa5a6Sopenharmony_ci
1137c29fa5a6Sopenharmony_ci    int32_t pointAction = GetPointerAction();
1138c29fa5a6Sopenharmony_ci    bool checkFlag = pointAction != POINTER_ACTION_CANCEL && pointAction != POINTER_ACTION_MOVE &&
1139c29fa5a6Sopenharmony_ci        pointAction != POINTER_ACTION_AXIS_BEGIN && pointAction != POINTER_ACTION_AXIS_UPDATE &&
1140c29fa5a6Sopenharmony_ci        pointAction != POINTER_ACTION_AXIS_END && pointAction != POINTER_ACTION_BUTTON_DOWN &&
1141c29fa5a6Sopenharmony_ci        pointAction != POINTER_ACTION_BUTTON_UP;
1142c29fa5a6Sopenharmony_ci    if (checkFlag) {
1143c29fa5a6Sopenharmony_ci        MMI_HILOGE("PointAction is invalid");
1144c29fa5a6Sopenharmony_ci        return false;
1145c29fa5a6Sopenharmony_ci    }
1146c29fa5a6Sopenharmony_ci
1147c29fa5a6Sopenharmony_ci    int32_t buttonId = GetButtonId();
1148c29fa5a6Sopenharmony_ci    if (pointAction == POINTER_ACTION_BUTTON_DOWN || pointAction == POINTER_ACTION_BUTTON_UP) {
1149c29fa5a6Sopenharmony_ci        if (buttonId != MOUSE_BUTTON_LEFT && buttonId != MOUSE_BUTTON_RIGHT && buttonId != MOUSE_BUTTON_MIDDLE) {
1150c29fa5a6Sopenharmony_ci            MMI_HILOGE("ButtonId is invalid");
1151c29fa5a6Sopenharmony_ci            return false;
1152c29fa5a6Sopenharmony_ci        }
1153c29fa5a6Sopenharmony_ci    } else {
1154c29fa5a6Sopenharmony_ci        if (buttonId != BUTTON_NONE) {
1155c29fa5a6Sopenharmony_ci            MMI_HILOGE("ButtonId is not BUTTON_NONE and is invalid");
1156c29fa5a6Sopenharmony_ci            return false;
1157c29fa5a6Sopenharmony_ci        }
1158c29fa5a6Sopenharmony_ci    }
1159c29fa5a6Sopenharmony_ci    return true;
1160c29fa5a6Sopenharmony_ci}
1161c29fa5a6Sopenharmony_ci
1162c29fa5a6Sopenharmony_cibool PointerEvent::IsValidCheckMouse() const
1163c29fa5a6Sopenharmony_ci{
1164c29fa5a6Sopenharmony_ci    CALL_DEBUG_ENTER;
1165c29fa5a6Sopenharmony_ci    int32_t mousePointID = GetPointerId();
1166c29fa5a6Sopenharmony_ci    if (mousePointID < 0) {
1167c29fa5a6Sopenharmony_ci        MMI_HILOGE("MousePointID is invalid");
1168c29fa5a6Sopenharmony_ci        return false;
1169c29fa5a6Sopenharmony_ci    }
1170c29fa5a6Sopenharmony_ci
1171c29fa5a6Sopenharmony_ci    if (!IsValidCheckMouseFunc()) {
1172c29fa5a6Sopenharmony_ci        MMI_HILOGE("IsValidCheckMouseFunc is invalid");
1173c29fa5a6Sopenharmony_ci        return false;
1174c29fa5a6Sopenharmony_ci    }
1175c29fa5a6Sopenharmony_ci
1176c29fa5a6Sopenharmony_ci    for (const auto &item : pointers_) {
1177c29fa5a6Sopenharmony_ci        if (item.GetPointerId() < 0) {
1178c29fa5a6Sopenharmony_ci            MMI_HILOGE("Item.pointerid is invalid");
1179c29fa5a6Sopenharmony_ci            return false;
1180c29fa5a6Sopenharmony_ci        }
1181c29fa5a6Sopenharmony_ci
1182c29fa5a6Sopenharmony_ci        if (item.GetPointerId() != mousePointID) {
1183c29fa5a6Sopenharmony_ci            MMI_HILOGE("Item.pointerid is not same to mousePointID and is invalid");
1184c29fa5a6Sopenharmony_ci            return false;
1185c29fa5a6Sopenharmony_ci        }
1186c29fa5a6Sopenharmony_ci
1187c29fa5a6Sopenharmony_ci        if (item.GetDownTime() > 0) {
1188c29fa5a6Sopenharmony_ci            MMI_HILOGE("Item.downtime is invalid");
1189c29fa5a6Sopenharmony_ci            return false;
1190c29fa5a6Sopenharmony_ci        }
1191c29fa5a6Sopenharmony_ci
1192c29fa5a6Sopenharmony_ci        if (item.IsPressed() != false) {
1193c29fa5a6Sopenharmony_ci            MMI_HILOGE("Item.ispressed is not false and is invalid");
1194c29fa5a6Sopenharmony_ci            return false;
1195c29fa5a6Sopenharmony_ci        }
1196c29fa5a6Sopenharmony_ci    }
1197c29fa5a6Sopenharmony_ci    return true;
1198c29fa5a6Sopenharmony_ci}
1199c29fa5a6Sopenharmony_ci
1200c29fa5a6Sopenharmony_cibool PointerEvent::IsValidCheckTouchFunc() const
1201c29fa5a6Sopenharmony_ci{
1202c29fa5a6Sopenharmony_ci    CALL_DEBUG_ENTER;
1203c29fa5a6Sopenharmony_ci    if (GetPointerId() < 0) {
1204c29fa5a6Sopenharmony_ci        MMI_HILOGE("TouchPointID is invalid");
1205c29fa5a6Sopenharmony_ci        return false;
1206c29fa5a6Sopenharmony_ci    }
1207c29fa5a6Sopenharmony_ci
1208c29fa5a6Sopenharmony_ci    if (!pressedButtons_.empty()) {
1209c29fa5a6Sopenharmony_ci        MMI_HILOGE("PressedButtons_.size is invalid");
1210c29fa5a6Sopenharmony_ci        return false;
1211c29fa5a6Sopenharmony_ci    }
1212c29fa5a6Sopenharmony_ci
1213c29fa5a6Sopenharmony_ci    int32_t pointAction = GetPointerAction();
1214c29fa5a6Sopenharmony_ci    if (pointAction != POINTER_ACTION_CANCEL && pointAction != POINTER_ACTION_MOVE &&
1215c29fa5a6Sopenharmony_ci        pointAction != POINTER_ACTION_DOWN && pointAction != POINTER_ACTION_UP) {
1216c29fa5a6Sopenharmony_ci        MMI_HILOGE("PointAction is invalid");
1217c29fa5a6Sopenharmony_ci        return false;
1218c29fa5a6Sopenharmony_ci    }
1219c29fa5a6Sopenharmony_ci
1220c29fa5a6Sopenharmony_ci    if (GetButtonId() != BUTTON_NONE) {
1221c29fa5a6Sopenharmony_ci        MMI_HILOGE("ButtonId is invalid");
1222c29fa5a6Sopenharmony_ci        return false;
1223c29fa5a6Sopenharmony_ci    }
1224c29fa5a6Sopenharmony_ci    return true;
1225c29fa5a6Sopenharmony_ci}
1226c29fa5a6Sopenharmony_ci
1227c29fa5a6Sopenharmony_cibool PointerEvent::IsValidCheckTouch() const
1228c29fa5a6Sopenharmony_ci{
1229c29fa5a6Sopenharmony_ci    CALL_DEBUG_ENTER;
1230c29fa5a6Sopenharmony_ci    if (!IsValidCheckTouchFunc()) {
1231c29fa5a6Sopenharmony_ci        MMI_HILOGE("IsValidCheckTouchFunc is invalid");
1232c29fa5a6Sopenharmony_ci        return false;
1233c29fa5a6Sopenharmony_ci    }
1234c29fa5a6Sopenharmony_ci    bool isSameItem = false;
1235c29fa5a6Sopenharmony_ci    int32_t touchPointID = GetPointerId();
1236c29fa5a6Sopenharmony_ci    for (auto item = pointers_.begin(); item != pointers_.end(); item++) {
1237c29fa5a6Sopenharmony_ci        if (item->GetPointerId() < 0) {
1238c29fa5a6Sopenharmony_ci            MMI_HILOGE("Item.pointerid is invalid");
1239c29fa5a6Sopenharmony_ci            return false;
1240c29fa5a6Sopenharmony_ci        }
1241c29fa5a6Sopenharmony_ci
1242c29fa5a6Sopenharmony_ci        if (item->GetPointerId() == touchPointID) {
1243c29fa5a6Sopenharmony_ci            isSameItem = true;
1244c29fa5a6Sopenharmony_ci        }
1245c29fa5a6Sopenharmony_ci
1246c29fa5a6Sopenharmony_ci        if (item->GetDownTime() <= 0) {
1247c29fa5a6Sopenharmony_ci            MMI_HILOGE("Item.downtime is invalid");
1248c29fa5a6Sopenharmony_ci            return false;
1249c29fa5a6Sopenharmony_ci        }
1250c29fa5a6Sopenharmony_ci
1251c29fa5a6Sopenharmony_ci        if (item->IsPressed() != false) {
1252c29fa5a6Sopenharmony_ci            MMI_HILOGE("Item.ispressed is not false and is invalid");
1253c29fa5a6Sopenharmony_ci            return false;
1254c29fa5a6Sopenharmony_ci        }
1255c29fa5a6Sopenharmony_ci
1256c29fa5a6Sopenharmony_ci        auto itemtmp = item;
1257c29fa5a6Sopenharmony_ci        for (++itemtmp; itemtmp != pointers_.end(); itemtmp++) {
1258c29fa5a6Sopenharmony_ci            if (item->GetPointerId() == itemtmp->GetPointerId()) {
1259c29fa5a6Sopenharmony_ci                MMI_HILOGE("Pointitems pointerid exist same items and is invalid");
1260c29fa5a6Sopenharmony_ci                return false;
1261c29fa5a6Sopenharmony_ci            }
1262c29fa5a6Sopenharmony_ci        }
1263c29fa5a6Sopenharmony_ci    }
1264c29fa5a6Sopenharmony_ci
1265c29fa5a6Sopenharmony_ci    if (!isSameItem) {
1266c29fa5a6Sopenharmony_ci        MMI_HILOGE("Item.pointerid is not same to touchPointID and is invalid");
1267c29fa5a6Sopenharmony_ci        return false;
1268c29fa5a6Sopenharmony_ci    }
1269c29fa5a6Sopenharmony_ci    return true;
1270c29fa5a6Sopenharmony_ci}
1271c29fa5a6Sopenharmony_ci
1272c29fa5a6Sopenharmony_cibool PointerEvent::IsValid() const
1273c29fa5a6Sopenharmony_ci{
1274c29fa5a6Sopenharmony_ci    CALL_DEBUG_ENTER;
1275c29fa5a6Sopenharmony_ci    switch (GetSourceType()) {
1276c29fa5a6Sopenharmony_ci        case SOURCE_TYPE_MOUSE: {
1277c29fa5a6Sopenharmony_ci            if (!IsValidCheckMouse()) {
1278c29fa5a6Sopenharmony_ci                MMI_HILOGE("IsValidCheckMouse is invalid");
1279c29fa5a6Sopenharmony_ci                return false;
1280c29fa5a6Sopenharmony_ci            }
1281c29fa5a6Sopenharmony_ci            break;
1282c29fa5a6Sopenharmony_ci        }
1283c29fa5a6Sopenharmony_ci        case SOURCE_TYPE_TOUCHSCREEN:
1284c29fa5a6Sopenharmony_ci        case SOURCE_TYPE_TOUCHPAD: {
1285c29fa5a6Sopenharmony_ci            if (!IsValidCheckTouch()) {
1286c29fa5a6Sopenharmony_ci                MMI_HILOGE("IsValidCheckTouch is invalid");
1287c29fa5a6Sopenharmony_ci                return false;
1288c29fa5a6Sopenharmony_ci            }
1289c29fa5a6Sopenharmony_ci            break;
1290c29fa5a6Sopenharmony_ci        }
1291c29fa5a6Sopenharmony_ci        case SOURCE_TYPE_JOYSTICK:
1292c29fa5a6Sopenharmony_ci            break;
1293c29fa5a6Sopenharmony_ci        default: {
1294c29fa5a6Sopenharmony_ci            MMI_HILOGE("SourceType is invalid");
1295c29fa5a6Sopenharmony_ci            return false;
1296c29fa5a6Sopenharmony_ci        }
1297c29fa5a6Sopenharmony_ci    }
1298c29fa5a6Sopenharmony_ci    return true;
1299c29fa5a6Sopenharmony_ci}
1300c29fa5a6Sopenharmony_ci
1301c29fa5a6Sopenharmony_civoid PointerEvent::SetBuffer(std::vector<uint8_t> buffer)
1302c29fa5a6Sopenharmony_ci{
1303c29fa5a6Sopenharmony_ci    buffer_ = buffer;
1304c29fa5a6Sopenharmony_ci}
1305c29fa5a6Sopenharmony_ci
1306c29fa5a6Sopenharmony_civoid PointerEvent::ClearBuffer()
1307c29fa5a6Sopenharmony_ci{
1308c29fa5a6Sopenharmony_ci    buffer_.clear();
1309c29fa5a6Sopenharmony_ci}
1310c29fa5a6Sopenharmony_ci
1311c29fa5a6Sopenharmony_cistd::vector<uint8_t> PointerEvent::GetBuffer() const
1312c29fa5a6Sopenharmony_ci{
1313c29fa5a6Sopenharmony_ci    return buffer_;
1314c29fa5a6Sopenharmony_ci}
1315c29fa5a6Sopenharmony_ci
1316c29fa5a6Sopenharmony_ciint32_t PointerEvent::GetDispatchTimes() const
1317c29fa5a6Sopenharmony_ci{
1318c29fa5a6Sopenharmony_ci    return dispatchTimes_;
1319c29fa5a6Sopenharmony_ci}
1320c29fa5a6Sopenharmony_ci
1321c29fa5a6Sopenharmony_civoid PointerEvent::SetDispatchTimes(int32_t dispatchTimes)
1322c29fa5a6Sopenharmony_ci{
1323c29fa5a6Sopenharmony_ci    dispatchTimes_ = dispatchTimes;
1324c29fa5a6Sopenharmony_ci}
1325c29fa5a6Sopenharmony_ci
1326c29fa5a6Sopenharmony_civoid PointerEvent::SetHandlerEventType(HandleEventType eventType)
1327c29fa5a6Sopenharmony_ci{
1328c29fa5a6Sopenharmony_ci    handleEventType_ = eventType;
1329c29fa5a6Sopenharmony_ci}
1330c29fa5a6Sopenharmony_ci
1331c29fa5a6Sopenharmony_ciHandleEventType PointerEvent::GetHandlerEventType() const
1332c29fa5a6Sopenharmony_ci{
1333c29fa5a6Sopenharmony_ci    return handleEventType_;
1334c29fa5a6Sopenharmony_ci}
1335c29fa5a6Sopenharmony_ci
1336c29fa5a6Sopenharmony_ci#ifdef OHOS_BUILD_ENABLE_ANCO
1337c29fa5a6Sopenharmony_civoid PointerEvent::SetAncoDeal(bool ancoDeal)
1338c29fa5a6Sopenharmony_ci{
1339c29fa5a6Sopenharmony_ci    ancoDeal_ = ancoDeal;
1340c29fa5a6Sopenharmony_ci}
1341c29fa5a6Sopenharmony_ci
1342c29fa5a6Sopenharmony_cibool PointerEvent::GetAncoDeal() const
1343c29fa5a6Sopenharmony_ci{
1344c29fa5a6Sopenharmony_ci    return ancoDeal_;
1345c29fa5a6Sopenharmony_ci}
1346c29fa5a6Sopenharmony_ci#endif // OHOS_BUILD_ENABLE_ANCO
1347c29fa5a6Sopenharmony_ci
1348c29fa5a6Sopenharmony_cistd::string_view PointerEvent::ActionToShortStr(int32_t action)
1349c29fa5a6Sopenharmony_ci{
1350c29fa5a6Sopenharmony_ci    // 该函数逻辑简单,功能单一,考虑性能影响,使用switch-case而不是表驱动实现。
1351c29fa5a6Sopenharmony_ci    switch (action) {
1352c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_CANCEL:
1353c29fa5a6Sopenharmony_ci            return "P:C:";
1354c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_DOWN:
1355c29fa5a6Sopenharmony_ci            return "P:D:";
1356c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_MOVE:
1357c29fa5a6Sopenharmony_ci            return "P:M:";
1358c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_UP:
1359c29fa5a6Sopenharmony_ci            return "P:U:";
1360c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_AXIS_BEGIN:
1361c29fa5a6Sopenharmony_ci            return "P:AB:";
1362c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_AXIS_UPDATE:
1363c29fa5a6Sopenharmony_ci            return "P:AU:";
1364c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_AXIS_END:
1365c29fa5a6Sopenharmony_ci            return "P:AE:";
1366c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_BUTTON_DOWN:
1367c29fa5a6Sopenharmony_ci            return "P:BD:";
1368c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_BUTTON_UP:
1369c29fa5a6Sopenharmony_ci            return "P:BU:";
1370c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_ENTER_WINDOW:
1371c29fa5a6Sopenharmony_ci            return "P:EW:";
1372c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_LEAVE_WINDOW:
1373c29fa5a6Sopenharmony_ci            return "P:LW:";
1374c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_PULL_DOWN:
1375c29fa5a6Sopenharmony_ci            return "P:PD:";
1376c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_PULL_MOVE:
1377c29fa5a6Sopenharmony_ci            return "P:PM:";
1378c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_PULL_UP:
1379c29fa5a6Sopenharmony_ci            return "P:PU:";
1380c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_PULL_IN_WINDOW:
1381c29fa5a6Sopenharmony_ci            return "P:PI:";
1382c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_PULL_OUT_WINDOW:
1383c29fa5a6Sopenharmony_ci            return "P:PO:";
1384c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_SWIPE_BEGIN:
1385c29fa5a6Sopenharmony_ci            return "P:SB:";
1386c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_SWIPE_UPDATE:
1387c29fa5a6Sopenharmony_ci            return "P:SU:";
1388c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_SWIPE_END:
1389c29fa5a6Sopenharmony_ci            return "P:SE:";
1390c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_ROTATE_BEGIN:
1391c29fa5a6Sopenharmony_ci            return "P:RB:";
1392c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_ROTATE_UPDATE:
1393c29fa5a6Sopenharmony_ci            return "P:RU:";
1394c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_ROTATE_END:
1395c29fa5a6Sopenharmony_ci            return "P:RE:";
1396c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_TRIPTAP:
1397c29fa5a6Sopenharmony_ci            return "P:TT:";
1398c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_QUADTAP:
1399c29fa5a6Sopenharmony_ci            return "P:Q:";
1400c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_HOVER_MOVE:
1401c29fa5a6Sopenharmony_ci            return "P:HM:";
1402c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_HOVER_ENTER:
1403c29fa5a6Sopenharmony_ci            return "P:HE:";
1404c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_HOVER_EXIT:
1405c29fa5a6Sopenharmony_ci            return "P:HEX:";
1406c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_FINGERPRINT_DOWN:
1407c29fa5a6Sopenharmony_ci            return "P:FD:";
1408c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_FINGERPRINT_UP:
1409c29fa5a6Sopenharmony_ci            return "P:FU:";
1410c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_FINGERPRINT_SLIDE:
1411c29fa5a6Sopenharmony_ci            return "P:FS:";
1412c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_FINGERPRINT_RETOUCH:
1413c29fa5a6Sopenharmony_ci            return "P:FR:";
1414c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_FINGERPRINT_CLICK:
1415c29fa5a6Sopenharmony_ci            return "P:FC:";
1416c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_FINGERPRINT_CANCEL:
1417c29fa5a6Sopenharmony_ci            return "P:FCA:";
1418c29fa5a6Sopenharmony_ci        case PointerEvent::POINTER_ACTION_UNKNOWN:
1419c29fa5a6Sopenharmony_ci            return "P:UK:";
1420c29fa5a6Sopenharmony_ci        default:
1421c29fa5a6Sopenharmony_ci            return "P:?:";
1422c29fa5a6Sopenharmony_ci    }
1423c29fa5a6Sopenharmony_ci}
1424c29fa5a6Sopenharmony_ci} // namespace MMI
1425c29fa5a6Sopenharmony_ci} // namespace OHOS
1426