1886da342Sopenharmony_ci/*
2886da342Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3886da342Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4886da342Sopenharmony_ci * you may not use this file except in compliance with the License.
5886da342Sopenharmony_ci * You may obtain a copy of the License at
6886da342Sopenharmony_ci *
7886da342Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8886da342Sopenharmony_ci *
9886da342Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10886da342Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11886da342Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12886da342Sopenharmony_ci * See the License for the specific language governing permissions and
13886da342Sopenharmony_ci * limitations under the License.
14886da342Sopenharmony_ci */
15886da342Sopenharmony_ci
16886da342Sopenharmony_ci#ifndef EVENT_TOUCH_EVENT_H
17886da342Sopenharmony_ci#define EVENT_TOUCH_EVENT_H
18886da342Sopenharmony_ci
19886da342Sopenharmony_ci#include <list>
20886da342Sopenharmony_ci#include <map>
21886da342Sopenharmony_ci#include "offset.h"
22886da342Sopenharmony_ci#include "ui_model.h"
23886da342Sopenharmony_ci
24886da342Sopenharmony_cinamespace OHOS::uitest {
25886da342Sopenharmony_ciusing TimeStamp = std::chrono::high_resolution_clock::time_point;
26886da342Sopenharmony_ci
27886da342Sopenharmony_cistruct TouchPoint final {
28886da342Sopenharmony_ci    int32_t id = 0;
29886da342Sopenharmony_ci    int32_t x = 0;
30886da342Sopenharmony_ci    int32_t y = 0;
31886da342Sopenharmony_ci    TimeStamp downTime;
32886da342Sopenharmony_ci};
33886da342Sopenharmony_ci/**
34886da342Sopenharmony_ci * @brief TouchEvent contains the active change point and a list of all touch points.
35886da342Sopenharmony_ci */
36886da342Sopenharmony_cistruct TouchEventInfo final {
37886da342Sopenharmony_ci    // the active changed point info
38886da342Sopenharmony_ci    // The ID is used to identify the point of contact between the finger and the screen. Different fingers have
39886da342Sopenharmony_ci    // different ids.
40886da342Sopenharmony_ci    int32_t id = 0;
41886da342Sopenharmony_ci    int32_t x = 0;
42886da342Sopenharmony_ci    int32_t y = 0;
43886da342Sopenharmony_ci    int32_t wx = 0;
44886da342Sopenharmony_ci    int32_t wy = 0;
45886da342Sopenharmony_ci    // nanosecond time stamp.
46886da342Sopenharmony_ci    int64_t actionTime;
47886da342Sopenharmony_ci    int64_t downTime;
48886da342Sopenharmony_ci    double durationSeconds;
49886da342Sopenharmony_ci    std::vector<std::string> attributes;
50886da342Sopenharmony_ci    std::string bundleName;
51886da342Sopenharmony_ci    std::string abilityName;
52886da342Sopenharmony_ci    Point GetPoint() const
53886da342Sopenharmony_ci    {
54886da342Sopenharmony_ci        return Point(x, y);
55886da342Sopenharmony_ci    }
56886da342Sopenharmony_ci    TimeStamp GetActionTimeStamp() const
57886da342Sopenharmony_ci    {
58886da342Sopenharmony_ci        TimeStamp time {std::chrono::duration_cast<TimeStamp::duration>(std::chrono::nanoseconds(actionTime * 1000))};
59886da342Sopenharmony_ci        return time;
60886da342Sopenharmony_ci    }
61886da342Sopenharmony_ci    TimeStamp GetDownTimeStamp() const
62886da342Sopenharmony_ci    {
63886da342Sopenharmony_ci        TimeStamp time {std::chrono::duration_cast<TimeStamp::duration>(std::chrono::nanoseconds(downTime * 1000))};
64886da342Sopenharmony_ci        return time;
65886da342Sopenharmony_ci    }
66886da342Sopenharmony_ci    void Resets()
67886da342Sopenharmony_ci    {
68886da342Sopenharmony_ci        x = 0;
69886da342Sopenharmony_ci        y = 0;
70886da342Sopenharmony_ci        actionTime = GetCurrentMillisecond();
71886da342Sopenharmony_ci        downTime = GetCurrentMillisecond();
72886da342Sopenharmony_ci    }
73886da342Sopenharmony_ci};
74886da342Sopenharmony_ci} // namespace OHOS::uitest
75886da342Sopenharmony_ci#endif // EVENT_TOUCH_EVENT_H
76