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