1 /*
2  * Copyright (c) 2021-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 FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_GESTURE_LISTENER_GESTURE_LISTENER_COMPONENT_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_GESTURE_LISTENER_GESTURE_LISTENER_COMPONENT_H
18 
19 #include "core/components/gesture_listener/gesture_listener_element.h"
20 #include "core/components/gesture_listener/render_gesture_listener.h"
21 #include "core/pipeline/base/sole_child_component.h"
22 
23 namespace OHOS::Ace {
24 
25 struct GestureItemInfo {
26     int32_t offsetX;
27     int32_t offsetY;
28     RefPtr<PixelMap> pixelMap;
29 };
30 using OnGestureFunc = std::function<GestureItemInfo()>;
31 class GestureListenerComponent final : public SoleChildComponent {
32     DECLARE_ACE_TYPE(GestureListenerComponent, SoleChildComponent);
33 
34 public:
35     GestureListenerComponent() = default;
GestureListenerComponent(const RefPtr<Component> & child)36     explicit GestureListenerComponent(const RefPtr<Component>& child) : SoleChildComponent(child) {}
37     ~GestureListenerComponent() override = default;
38 
CreateElement()39     RefPtr<Element> CreateElement() override
40     {
41         return MakeRefPtr<GestureListenerElement>();
42     }
43 
CreateRenderNode()44     RefPtr<RenderNode> CreateRenderNode() override
45     {
46         return RenderGestureListener::Create();
47     }
48 
GetOnClickId()49     const EventMarker& GetOnClickId() const
50     {
51         return onClickId_;
52     }
SetOnClickId(const EventMarker & onClickId)53     void SetOnClickId(const EventMarker& onClickId)
54     {
55         onClickId_ = onClickId;
56     }
57 
GetRemoteMessageId()58     const EventMarker& GetRemoteMessageId() const
59     {
60         return remoteMessage_;
61     }
62 
SetRemoteMessageId(const EventMarker & remoteMessage)63     void SetRemoteMessageId(const EventMarker& remoteMessage)
64     {
65         remoteMessage_ = remoteMessage;
66     }
67 
GetOnDoubleClickId()68     const EventMarker& GetOnDoubleClickId() const
69     {
70         return onDoubleClickId_;
71     }
SetOnDoubleClickId(const EventMarker & onDoubleClickId)72     void SetOnDoubleClickId(const EventMarker& onDoubleClickId)
73     {
74         onDoubleClickId_ = onDoubleClickId;
75     }
76 
GetOnLongPressId()77     const EventMarker& GetOnLongPressId() const
78     {
79         return onLongPressId_;
80     }
SetOnLongPressId(const EventMarker & onLongPressId)81     void SetOnLongPressId(const EventMarker& onLongPressId)
82     {
83         onLongPressId_ = onLongPressId;
84     }
85 
GetOnPinchStartId()86     const EventMarker& GetOnPinchStartId() const
87     {
88         return onPinchStartId_;
89     }
SetOnPinchStartId(const EventMarker & onPinchStartId)90     void SetOnPinchStartId(const EventMarker& onPinchStartId)
91     {
92         onPinchStartId_ = onPinchStartId;
93     }
94 
GetOnPinchUpdateId()95     const EventMarker& GetOnPinchUpdateId() const
96     {
97         return onPinchUpdateId_;
98     }
SetOnPinchUpdateId(const EventMarker & onPinchUpdateId)99     void SetOnPinchUpdateId(const EventMarker& onPinchUpdateId)
100     {
101         onPinchUpdateId_ = onPinchUpdateId;
102     }
103 
GetOnPinchEndId()104     const EventMarker& GetOnPinchEndId() const
105     {
106         return onPinchEndId_;
107     }
SetOnPinchEndId(const EventMarker & onPinchEndId)108     void SetOnPinchEndId(const EventMarker& onPinchEndId)
109     {
110         onPinchEndId_ = onPinchEndId;
111     }
112 
GetOnPinchCancelId()113     const EventMarker& GetOnPinchCancelId() const
114     {
115         return onPinchCancelId_;
116     }
SetOnPinchCancelId(const EventMarker & onPinchCancelId)117     void SetOnPinchCancelId(const EventMarker& onPinchCancelId)
118     {
119         onPinchCancelId_ = onPinchCancelId;
120     }
121 
GetOnHorizontalDragStartId()122     const EventMarker& GetOnHorizontalDragStartId() const
123     {
124         return onHorizontalDragStartId_;
125     }
SetOnHorizontalDragStartId(const EventMarker & onHorizontalDragStartId)126     void SetOnHorizontalDragStartId(const EventMarker& onHorizontalDragStartId)
127     {
128         onHorizontalDragStartId_ = onHorizontalDragStartId;
129     }
130 
GetOnHorizontalDragUpdateId()131     const EventMarker& GetOnHorizontalDragUpdateId() const
132     {
133         return onHorizontalDragUpdateId_;
134     }
SetOnHorizontalDragUpdateId(const EventMarker & onHorizontalDragUpdateId)135     void SetOnHorizontalDragUpdateId(const EventMarker& onHorizontalDragUpdateId)
136     {
137         onHorizontalDragUpdateId_ = onHorizontalDragUpdateId;
138     }
139 
GetOnHorizontalDragEndId()140     const EventMarker& GetOnHorizontalDragEndId() const
141     {
142         return onHorizontalDragEndId_;
143     }
SetOnHorizontalDragEndId(const EventMarker & onHorizontalDragEndId)144     void SetOnHorizontalDragEndId(const EventMarker& onHorizontalDragEndId)
145     {
146         onHorizontalDragEndId_ = onHorizontalDragEndId;
147     }
148 
GetOnHorizontalDragCancelId()149     const EventMarker& GetOnHorizontalDragCancelId() const
150     {
151         return onHorizontalDragCancelId_;
152     }
SetOnHorizontalDragCancelId(const EventMarker & onHorizontalDragCancelId)153     void SetOnHorizontalDragCancelId(const EventMarker& onHorizontalDragCancelId)
154     {
155         onHorizontalDragCancelId_ = onHorizontalDragCancelId;
156     }
157 
GetOnVerticalDragStartId()158     const EventMarker& GetOnVerticalDragStartId() const
159     {
160         return onVerticalDragStartId_;
161     }
SetOnVerticalDragStartId(const EventMarker & onVerticalDragStartId)162     void SetOnVerticalDragStartId(const EventMarker& onVerticalDragStartId)
163     {
164         onVerticalDragStartId_ = onVerticalDragStartId;
165     }
166 
GetOnVerticalDragUpdateId()167     const EventMarker& GetOnVerticalDragUpdateId() const
168     {
169         return onVerticalDragUpdateId_;
170     }
SetOnVerticalDragUpdateId(const EventMarker & onVerticalDragUpdateId)171     void SetOnVerticalDragUpdateId(const EventMarker& onVerticalDragUpdateId)
172     {
173         onVerticalDragUpdateId_ = onVerticalDragUpdateId;
174     }
175 
GetOnVerticalDragEndId()176     const EventMarker& GetOnVerticalDragEndId() const
177     {
178         return onVerticalDragEndId_;
179     }
SetOnVerticalDragEndId(const EventMarker & onVerticalDragEndId)180     void SetOnVerticalDragEndId(const EventMarker& onVerticalDragEndId)
181     {
182         onVerticalDragEndId_ = onVerticalDragEndId;
183     }
184 
GetOnVerticalDragCancelId()185     const EventMarker& GetOnVerticalDragCancelId() const
186     {
187         return onVerticalDragCancelId_;
188     }
SetOnVerticalDragCancelId(const EventMarker & onVerticalDragCancelId)189     void SetOnVerticalDragCancelId(const EventMarker& onVerticalDragCancelId)
190     {
191         onVerticalDragCancelId_ = onVerticalDragCancelId;
192     }
193 
GetOnFreeDragStartId()194     const EventMarker& GetOnFreeDragStartId() const
195     {
196         return onFreeDragStartId_;
197     }
SetOnFreeDragStartId(const EventMarker & onFreeDragStartId)198     void SetOnFreeDragStartId(const EventMarker& onFreeDragStartId)
199     {
200         onFreeDragStartId_ = onFreeDragStartId;
201     }
202 
GetOnFreeDragUpdateId()203     const EventMarker& GetOnFreeDragUpdateId() const
204     {
205         return onFreeDragUpdateId_;
206     }
SetOnFreeDragUpdateId(const EventMarker & onFreeDragUpdateId)207     void SetOnFreeDragUpdateId(const EventMarker& onFreeDragUpdateId)
208     {
209         onFreeDragUpdateId_ = onFreeDragUpdateId;
210     }
211 
GetOnFreeDragEndId()212     const EventMarker& GetOnFreeDragEndId() const
213     {
214         return onFreeDragEndId_;
215     }
SetOnFreeDragEndId(const EventMarker & onFreeDragEndId)216     void SetOnFreeDragEndId(const EventMarker& onFreeDragEndId)
217     {
218         onFreeDragEndId_ = onFreeDragEndId;
219     }
220 
GetOnFreeDragCancelId()221     const EventMarker& GetOnFreeDragCancelId() const
222     {
223         return onFreeDragCancelId_;
224     }
SetOnFreeDragCancelId(const EventMarker & onFreeDragCancelId)225     void SetOnFreeDragCancelId(const EventMarker& onFreeDragCancelId)
226     {
227         onFreeDragCancelId_ = onFreeDragCancelId;
228     }
229 
IsVisible()230     bool IsVisible() const
231     {
232         return isVisible_;
233     }
234 
SetIsVisible(bool isVisible)235     void SetIsVisible(bool isVisible)
236     {
237         isVisible_ = isVisible;
238     }
239 
GetOnDragStartId()240     OnGestureFunc GetOnDragStartId() const
241     {
242         return onDragStartId_;
243     }
SetOnDragStartId(const OnGestureFunc & onDragStartId)244     void SetOnDragStartId(const OnGestureFunc& onDragStartId)
245     {
246         onDragStartId_ = onDragStartId;
247     }
248 
249 private:
250     EventMarker remoteMessage_;
251     EventMarker onClickId_;
252     EventMarker onDoubleClickId_;
253     EventMarker onLongPressId_;
254     EventMarker onPinchStartId_;
255     EventMarker onPinchUpdateId_;
256     EventMarker onPinchEndId_;
257     EventMarker onPinchCancelId_;
258     EventMarker onHorizontalDragStartId_;
259     EventMarker onHorizontalDragUpdateId_;
260     EventMarker onHorizontalDragEndId_;
261     EventMarker onHorizontalDragCancelId_;
262     EventMarker onVerticalDragStartId_;
263     EventMarker onVerticalDragUpdateId_;
264     EventMarker onVerticalDragEndId_;
265     EventMarker onVerticalDragCancelId_;
266     EventMarker onFreeDragStartId_;
267     EventMarker onFreeDragUpdateId_;
268     EventMarker onFreeDragEndId_;
269     EventMarker onFreeDragCancelId_;
270 
271     bool isVisible_ = true;
272     OnGestureFunc onDragStartId_;
273 };
274 
275 } // namespace OHOS::Ace
276 
277 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_GESTURE_LISTENER_GESTURE_LISTENER_COMPONENT_H
278