1/*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef OHOS_I_DINPUT_CONTEXT_H
17#define OHOS_I_DINPUT_CONTEXT_H
18
19#include <cstdint>
20#include <string>
21
22#include "constants_dinput.h"
23
24namespace OHOS {
25namespace DistributedHardware {
26namespace DistributedInput {
27struct LocalAbsInfo {
28    int32_t absXMin = 0;
29    int32_t absXMax = 0;
30    int32_t absYMin = 0;
31    int32_t absYMax = 0;
32    int32_t absPressureMin = 0;
33    int32_t absPressureMax = 0;
34    int32_t absMtTouchMajorMin = 0;
35    int32_t absMtTouchMajorMax = 0;
36    int32_t absMtTouchMinorMin = 0;
37    int32_t absMtTouchMinorMax = 0;
38    int32_t absMtOrientationMin = 0;
39    int32_t absMtOrientationMax = 0;
40    int32_t absMtPositionXMin = 0;
41    int32_t absMtPositionXMax = 0;
42    int32_t absMtPositionYMin = 0;
43    int32_t absMtPositionYMax = 0;
44    int32_t absMtBlobIdMin = 0;
45    int32_t absMtBlobIdMax = 0;
46    int32_t absMtTrackingIdMin = 0;
47    int32_t absMtTrackingIdMax = 0;
48    int32_t absMtPressureMin = 0;
49    int32_t absMtPressureMax = 0;
50    InputDevice deviceInfo;
51};
52
53struct LocalTouchScreenInfo {
54    uint32_t sinkShowWidth = 0;
55    uint32_t sinkShowHeight = 0;
56    uint32_t sinkPhyWidth = 0;
57    uint32_t sinkPhyHeight = 0;
58    LocalAbsInfo localAbsInfo;
59};
60
61struct TransformInfo {
62    uint32_t sinkWinPhyX = 0;           // projection area X coordinate in touch coordinate
63    uint32_t sinkWinPhyY = 0;           // projection area Y coordinate in touch coordinate
64    uint32_t sinkProjPhyWidth = 0;      // projection area width in touch coordinate
65    uint32_t sinkProjPhyHeight = 0;     // projection area height in touch coordinate
66    double coeffWidth = 0.0;            // sink width transform source coefficient
67    double coeffHeight = 0.0;           // sink height transform source coefficient
68};
69
70struct SrcScreenInfo {
71    std::string devId = "";             // source device id
72    std::string uuid = "";              // source device uuid
73    int32_t sessionId = 0;              // source device session id
74    uint64_t sourceWinId = 0;           // source projection window id
75    uint32_t sourceWinWidth = 0;        // source projection window width
76    uint32_t sourceWinHeight = 0;       // source projection window height
77    std::string sourcePhyId = "";       // source virtual screen driver id
78    uint32_t sourcePhyFd = 0;           // source virtual screen driver fd
79    uint32_t sourcePhyWidth = 0;        // source virtual screen driver width
80    uint32_t sourcePhyHeight = 0;       // source virtual screen driver height
81};
82
83struct SinkScreenInfo {
84    uint32_t sinkShowWidth = 0;         // sink show width
85    uint32_t sinkShowHeight = 0;        // sink show height
86    uint32_t sinkPhyWidth = 0;          // sink touch screen width
87    uint32_t sinkPhyHeight = 0;         // sink touch screen height
88    uint64_t sinkShowWinId = 0;         // sink show window id
89    uint32_t sinkWinShowX = 0;          // sink show window x coordinate
90    uint32_t sinkWinShowY = 0;          // sink show window y coordinate
91    uint32_t sinkProjShowWidth = 0;     // sink show window width
92    uint32_t sinkProjShowHeight = 0;    // sink show window height
93    SrcScreenInfo srcScreenInfo;
94    TransformInfo transformInfo;
95};
96} // namespace DistributedInput
97} // namespace DistributedHardware
98} // namespace OHOS
99
100#endif // OHOS_I_DINPUT_CONTEXT_H
101