• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright (c) 2023 Huawei Device Co., Ltd.
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef FOUNDATION_ACE_ADAPTER_PREVIEW_ENTRANCE_ACE_VIEW_OHOS_H
18 #define FOUNDATION_ACE_ADAPTER_PREVIEW_ENTRANCE_ACE_VIEW_OHOS_H
19 
20 #include <memory>
21 
22 #include "adapter/preview/entrance/ace_resource_register.h"
23 #include "adapter/preview/external/multimodalinput/pointer_event.h"
24 #include "base/utils/noncopyable.h"
25 #include "core/common/ace_view.h"
26 #include "core/event/key_event_recognizer.h"
27 #include "core/common/thread_model_impl.h"
28 
29 namespace OHOS::Ace::Platform {
30 using ReleaseCallback = std::function<void()>;
31 
32 class AceViewPreview : public AceView {
33     DECLARE_ACE_TYPE(AceViewPreview, AceView);
34 
35 public:
36     AceViewPreview(int32_t instanceId, std::unique_ptr<ThreadModelImpl> threadModelImpl);
37     ~AceViewPreview() override = default;
38     static AceViewPreview* CreateView(
39         int32_t instanceId, bool useCurrentEventRunner = false, bool usePlatformThread = false);
40 
Launch()41     void Launch() override {}
GetInstanceId()42     int32_t GetInstanceId() const override
43     {
44         return instanceId_;
45     }
46 
RegisterTouchEventCallback(TouchEventCallback && callback)47     void RegisterTouchEventCallback(TouchEventCallback&& callback) override
48     {
49         ACE_DCHECK(callback);
50         touchEventCallback_ = std::move(callback);
51     }
52 
RegisterKeyEventCallback(KeyEventCallback && callback)53     void RegisterKeyEventCallback(KeyEventCallback&& callback) override
54     {
55         ACE_DCHECK(callback);
56         keyEventCallback_ = std::move(callback);
57     }
58 
RegisterNonPointerEventCallback(NonPointerEventCallback && callback)59     void RegisterNonPointerEventCallback(NonPointerEventCallback&& callback) override {}
60 
RegisterMouseEventCallback(MouseEventCallback && callback)61     void RegisterMouseEventCallback(MouseEventCallback&& callback) override
62     {
63         ACE_DCHECK(callback);
64         mouseEventCallback_ = std::move(callback);
65     }
66 
RegisterAxisEventCallback(AxisEventCallback && callback)67     void RegisterAxisEventCallback(AxisEventCallback&& callback) override
68     {
69         ACE_DCHECK(callback);
70         axisEventCallback_ = std::move(callback);
71     }
72 
RegisterRotationEventCallback(RotationEventCallBack && callback)73     void RegisterRotationEventCallback(RotationEventCallBack&& callback) override
74     {
75         ACE_DCHECK(callback);
76         rotationEventCallBack_ = std::move(callback);
77     }
78 
RegisterCrownEventCallback(CrownEventCallback && callback)79     void RegisterCrownEventCallback(CrownEventCallback&& callback) override
80     {
81         ACE_DCHECK(callback);
82         crownEventCallBack_ = std::move(callback);
83     }
84 
RegisterDragEventCallback(DragEventCallBack && callback)85     void RegisterDragEventCallback(DragEventCallBack&& callback) override {}
86 
RegisterCardViewPositionCallback(CardViewPositionCallBack && callback)87     void RegisterCardViewPositionCallback(CardViewPositionCallBack&& callback) override
88     {
89         ACE_DCHECK(callback);
90         cardViewPositionCallBack_ = std::move(callback);
91     }
92 
RegisterCardViewAccessibilityParamsCallback(CardViewAccessibilityParamsCallback && callback)93     void RegisterCardViewAccessibilityParamsCallback(CardViewAccessibilityParamsCallback&& callback) override
94     {
95         ACE_DCHECK(callback);
96         cardViewAccessibilityParamsCallback_ = std::move(callback);
97     }
98 
RegisterViewChangeCallback(ViewChangeCallback && callback)99     void RegisterViewChangeCallback(ViewChangeCallback&& callback) override
100     {
101         ACE_DCHECK(callback);
102         viewChangeCallback_ = std::move(callback);
103     }
104 
RegisterViewPositionChangeCallback(ViewPositionChangeCallback && callback)105     void RegisterViewPositionChangeCallback(ViewPositionChangeCallback&& callback) override {}
106 
RegisterDensityChangeCallback(DensityChangeCallback && callback)107     void RegisterDensityChangeCallback(DensityChangeCallback&& callback) override
108     {
109         ACE_DCHECK(callback);
110         densityChangeCallback_ = std::move(callback);
111     }
112 
RegisterTransformHintChangeCallback(TransformHintChangeCallback && callback)113     void RegisterTransformHintChangeCallback(TransformHintChangeCallback&& callback) override {}
114 
RegisterSystemBarHeightChangeCallback(SystemBarHeightChangeCallback && callback)115     void RegisterSystemBarHeightChangeCallback(SystemBarHeightChangeCallback&& callback) override
116     {
117         ACE_DCHECK(callback);
118         systemBarHeightChangeCallback_ = std::move(callback);
119     }
120 
RegisterSurfaceDestroyCallback(SurfaceDestroyCallback && callback)121     void RegisterSurfaceDestroyCallback(SurfaceDestroyCallback&& callback) override
122     {
123         ACE_DCHECK(callback);
124         surfaceDestroyCallback_ = std::move(callback);
125     }
126 
RegisterIdleCallback(IdleCallback && callback)127     void RegisterIdleCallback(IdleCallback&& callback) override
128     {
129         ACE_DCHECK(callback);
130         idleCallback_ = std::move(callback);
131     }
132 
NotifyDensityChanged(double density)133     void NotifyDensityChanged(double density) const
134     {
135         CHECK_NULL_VOID(densityChangeCallback_);
136         densityChangeCallback_(density);
137     }
138 
NotifySystemBarHeightChanged(double statusBar,double navigationBar)139     void NotifySystemBarHeightChanged(double statusBar, double navigationBar) const
140     {
141         CHECK_NULL_VOID(systemBarHeightChangeCallback_);
142         systemBarHeightChangeCallback_(statusBar, navigationBar);
143     }
144 
NotifySurfaceDestroyed()145     void NotifySurfaceDestroyed() const
146     {
147         CHECK_NULL_VOID(surfaceDestroyCallback_);
148         surfaceDestroyCallback_();
149     }
150 
HandleKeyEvent(const KeyEvent & keyEvent)151     bool HandleKeyEvent(const KeyEvent& keyEvent) override
152     {
153         return keyEventCallback_ && keyEventCallback_(keyEvent);
154     }
155 
GetPlatformResRegister()156     const RefPtr<PlatformResRegister>& GetPlatformResRegister() const override
157     {
158         return resRegister_;
159     }
160 
Dump(const std::vector<std::string> & params)161     bool Dump(const std::vector<std::string>& params) override
162     {
163         return false;
164     }
165 
ProcessIdleEvent(int64_t deadline)166     void ProcessIdleEvent(int64_t deadline)
167     {
168         CHECK_NULL_VOID(idleCallback_);
169         idleCallback_(deadline);
170     }
171 
GetViewType()172     ViewType GetViewType() const override
173     {
174         return AceView::ViewType::SURFACE_VIEW;
175     }
176 
GetPlatformWindow()177     std::unique_ptr<PlatformWindow> GetPlatformWindow() override
178     {
179         return nullptr;
180     }
181 
GetNativeWindowById(uint64_t textureId)182     const void* GetNativeWindowById(uint64_t textureId) override
183     {
184         return nullptr;
185     }
186 
GetThreadModelImpl()187     ThreadModelImpl* GetThreadModelImpl() const
188     {
189         return threadModelImpl_.get();
190     }
191 
192     void NotifySurfaceChanged(
193         int32_t width, int32_t height, WindowSizeChangeReason type = WindowSizeChangeReason::UNDEFINED,
194         const std::shared_ptr<Rosen::RSTransaction>& rsTransaction = nullptr);
195 
196     bool HandleMouseEvent(const MouseEvent& mouseEvent);
197     bool HandleAxisEvent(const AxisEvent& axisEvent);
198     bool HandleTouchEvent(const TouchEvent& touchEvent) override;
199     std::unique_ptr<DrawDelegate> GetDrawDelegate() override;
200 
201 private:
202     int32_t instanceId_ = 0;
203     RefPtr<PlatformResRegister> resRegister_ = Referenced::MakeRefPtr<AceResourceRegister>();
204 
205     TouchEventCallback touchEventCallback_;
206     MouseEventCallback mouseEventCallback_;
207     AxisEventCallback axisEventCallback_;
208     RotationEventCallBack rotationEventCallBack_;
209     CardViewPositionCallBack cardViewPositionCallBack_;
210     CardViewAccessibilityParamsCallback cardViewAccessibilityParamsCallback_;
211     ViewChangeCallback viewChangeCallback_;
212     DensityChangeCallback densityChangeCallback_;
213     SystemBarHeightChangeCallback systemBarHeightChangeCallback_;
214     SurfaceDestroyCallback surfaceDestroyCallback_;
215     IdleCallback idleCallback_;
216     KeyEventCallback keyEventCallback_;
217     CrownEventCallback crownEventCallBack_;
218     KeyEventRecognizer keyEventRecognizer_;
219     std::unique_ptr<ThreadModelImpl> threadModelImpl_;
220 
221     ACE_DISALLOW_COPY_AND_MOVE(AceViewPreview);
222 };
223 } // namespace OHOS::Ace::Platform
224 
225 #endif // FOUNDATION_ACE_ADAPTER_PREVIEW_ENTRANCE_ACE_VIEW_OHOS_H
226