• 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 
RegisterDragEventCallback(DragEventCallBack && callback)79     void RegisterDragEventCallback(DragEventCallBack&& callback) override {}
80 
RegisterCardViewPositionCallback(CardViewPositionCallBack && callback)81     void RegisterCardViewPositionCallback(CardViewPositionCallBack&& callback) override
82     {
83         ACE_DCHECK(callback);
84         cardViewPositionCallBack_ = std::move(callback);
85     }
86 
RegisterCardViewAccessibilityParamsCallback(CardViewAccessibilityParamsCallback && callback)87     void RegisterCardViewAccessibilityParamsCallback(CardViewAccessibilityParamsCallback&& callback) override
88     {
89         ACE_DCHECK(callback);
90         cardViewAccessibilityParamsCallback_ = std::move(callback);
91     }
92 
RegisterViewChangeCallback(ViewChangeCallback && callback)93     void RegisterViewChangeCallback(ViewChangeCallback&& callback) override
94     {
95         ACE_DCHECK(callback);
96         viewChangeCallback_ = std::move(callback);
97     }
98 
RegisterViewPositionChangeCallback(ViewPositionChangeCallback && callback)99     void RegisterViewPositionChangeCallback(ViewPositionChangeCallback&& callback) override {}
100 
RegisterDensityChangeCallback(DensityChangeCallback && callback)101     void RegisterDensityChangeCallback(DensityChangeCallback&& callback) override
102     {
103         ACE_DCHECK(callback);
104         densityChangeCallback_ = std::move(callback);
105     }
106 
RegisterTransformHintChangeCallback(TransformHintChangeCallback && callback)107     void RegisterTransformHintChangeCallback(TransformHintChangeCallback&& callback) override {}
108 
RegisterSystemBarHeightChangeCallback(SystemBarHeightChangeCallback && callback)109     void RegisterSystemBarHeightChangeCallback(SystemBarHeightChangeCallback&& callback) override
110     {
111         ACE_DCHECK(callback);
112         systemBarHeightChangeCallback_ = std::move(callback);
113     }
114 
RegisterSurfaceDestroyCallback(SurfaceDestroyCallback && callback)115     void RegisterSurfaceDestroyCallback(SurfaceDestroyCallback&& callback) override
116     {
117         ACE_DCHECK(callback);
118         surfaceDestroyCallback_ = std::move(callback);
119     }
120 
RegisterIdleCallback(IdleCallback && callback)121     void RegisterIdleCallback(IdleCallback&& callback) override
122     {
123         ACE_DCHECK(callback);
124         idleCallback_ = std::move(callback);
125     }
126 
NotifyDensityChanged(double density)127     void NotifyDensityChanged(double density) const
128     {
129         CHECK_NULL_VOID(densityChangeCallback_);
130         densityChangeCallback_(density);
131     }
132 
NotifySystemBarHeightChanged(double statusBar,double navigationBar)133     void NotifySystemBarHeightChanged(double statusBar, double navigationBar) const
134     {
135         CHECK_NULL_VOID(systemBarHeightChangeCallback_);
136         systemBarHeightChangeCallback_(statusBar, navigationBar);
137     }
138 
NotifySurfaceDestroyed()139     void NotifySurfaceDestroyed() const
140     {
141         CHECK_NULL_VOID(surfaceDestroyCallback_);
142         surfaceDestroyCallback_();
143     }
144 
HandleKeyEvent(const KeyEvent & keyEvent)145     bool HandleKeyEvent(const KeyEvent& keyEvent) override
146     {
147         return keyEventCallback_ && keyEventCallback_(keyEvent);
148     }
149 
GetPlatformResRegister()150     const RefPtr<PlatformResRegister>& GetPlatformResRegister() const override
151     {
152         return resRegister_;
153     }
154 
Dump(const std::vector<std::string> & params)155     bool Dump(const std::vector<std::string>& params) override
156     {
157         return false;
158     }
159 
ProcessIdleEvent(int64_t deadline)160     void ProcessIdleEvent(int64_t deadline)
161     {
162         CHECK_NULL_VOID(idleCallback_);
163         idleCallback_(deadline);
164     }
165 
GetViewType()166     ViewType GetViewType() const override
167     {
168         return AceView::ViewType::SURFACE_VIEW;
169     }
170 
GetPlatformWindow()171     std::unique_ptr<PlatformWindow> GetPlatformWindow() override
172     {
173         return nullptr;
174     }
175 
GetNativeWindowById(uint64_t textureId)176     const void* GetNativeWindowById(uint64_t textureId) override
177     {
178         return nullptr;
179     }
180 
GetThreadModelImpl()181     ThreadModelImpl* GetThreadModelImpl() const
182     {
183         return threadModelImpl_.get();
184     }
185 
186     void NotifySurfaceChanged(
187         int32_t width, int32_t height, WindowSizeChangeReason type = WindowSizeChangeReason::UNDEFINED,
188         const std::shared_ptr<Rosen::RSTransaction>& rsTransaction = nullptr);
189 
190     bool HandleMouseEvent(const MouseEvent& mouseEvent);
191     bool HandleAxisEvent(const AxisEvent& axisEvent);
192     bool HandleTouchEvent(const TouchEvent& touchEvent) override;
193     std::unique_ptr<DrawDelegate> GetDrawDelegate() override;
194 
195 private:
196     int32_t instanceId_ = 0;
197     RefPtr<PlatformResRegister> resRegister_ = Referenced::MakeRefPtr<AceResourceRegister>();
198 
199     TouchEventCallback touchEventCallback_;
200     MouseEventCallback mouseEventCallback_;
201     AxisEventCallback axisEventCallback_;
202     RotationEventCallBack rotationEventCallBack_;
203     CardViewPositionCallBack cardViewPositionCallBack_;
204     CardViewAccessibilityParamsCallback cardViewAccessibilityParamsCallback_;
205     ViewChangeCallback viewChangeCallback_;
206     DensityChangeCallback densityChangeCallback_;
207     SystemBarHeightChangeCallback systemBarHeightChangeCallback_;
208     SurfaceDestroyCallback surfaceDestroyCallback_;
209     IdleCallback idleCallback_;
210     KeyEventCallback keyEventCallback_;
211     KeyEventRecognizer keyEventRecognizer_;
212     std::unique_ptr<ThreadModelImpl> threadModelImpl_;
213 
214     ACE_DISALLOW_COPY_AND_MOVE(AceViewPreview);
215 };
216 } // namespace OHOS::Ace::Platform
217 
218 #endif // FOUNDATION_ACE_ADAPTER_PREVIEW_ENTRANCE_ACE_VIEW_OHOS_H
219