• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright (c) 2021-2022 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_FLUTTER_ACE_VIEW_H
18 #define FOUNDATION_ACE_ADAPTER_PREVIEW_FLUTTER_ACE_VIEW_H
19 
20 #include <memory>
21 
22 #include "adapter/preview/entrance/ace_resource_register.h"
23 #include "base/utils/noncopyable.h"
24 #include "core/common/ace_view.h"
25 #include "core/event/key_event_recognizer.h"
26 
27 namespace OHOS::Ace::Platform {
28 
29 using ReleaseCallback = std::function<void()>;
30 
31 class FlutterAceView : public AceView, public Referenced {
32 public:
FlutterAceView(int32_t instanceId)33     explicit FlutterAceView(int32_t instanceId) : instanceId_(instanceId) {}
34     ~FlutterAceView() override = default;
35 
36     void RegisterTouchEventCallback(TouchEventCallback&& callback) override;
37     void RegisterKeyEventCallback(KeyEventCallback&& callback) override;
38     void RegisterMouseEventCallback(MouseEventCallback&& callback) override;
39     void RegisterAxisEventCallback(AxisEventCallback&& callback) override;
40     void RegisterRotationEventCallback(RotationEventCallBack&& callback) override;
RegisterDragEventCallback(DragEventCallBack && callback)41     void RegisterDragEventCallback(DragEventCallBack&& callback) override {}
42 
43     void Launch() override;
44 
GetInstanceId()45     int32_t GetInstanceId() const override
46     {
47         return instanceId_;
48     }
49 
RegisterCardViewPositionCallback(CardViewPositionCallBack && callback)50     void RegisterCardViewPositionCallback(CardViewPositionCallBack&& callback) override
51     {
52         if (callback) {
53             cardViewPositionCallBack_ = std::move(callback);
54         }
55     }
56 
RegisterCardViewAccessibilityParamsCallback(CardViewAccessibilityParamsCallback && callback)57     void RegisterCardViewAccessibilityParamsCallback(CardViewAccessibilityParamsCallback&& callback) override
58     {
59         if (callback) {
60             cardViewAccessibilityParamsCallback_ = std::move(callback);
61         }
62     }
63 
RegisterViewChangeCallback(ViewChangeCallback && callback)64     void RegisterViewChangeCallback(ViewChangeCallback&& callback) override
65     {
66         if (callback) {
67             viewChangeCallback_ = std::move(callback);
68         }
69     }
70 
RegisterViewPositionChangeCallback(ViewPositionChangeCallback && callback)71     void RegisterViewPositionChangeCallback(ViewPositionChangeCallback&& callback) override {}
72 
RegisterDensityChangeCallback(DensityChangeCallback && callback)73     void RegisterDensityChangeCallback(DensityChangeCallback&& callback) override
74     {
75         if (callback) {
76             densityChangeCallback_ = std::move(callback);
77         }
78     }
79 
RegisterSystemBarHeightChangeCallback(SystemBarHeightChangeCallback && callback)80     void RegisterSystemBarHeightChangeCallback(SystemBarHeightChangeCallback&& callback) override
81     {
82         if (callback) {
83             systemBarHeightChangeCallback_ = std::move(callback);
84         }
85     }
86 
RegisterSurfaceDestroyCallback(SurfaceDestroyCallback && callback)87     void RegisterSurfaceDestroyCallback(SurfaceDestroyCallback&& callback) override
88     {
89         if (callback) {
90             surfaceDestroyCallback_ = std::move(callback);
91         }
92     }
93 
RegisterIdleCallback(IdleCallback && callback)94     void RegisterIdleCallback(IdleCallback&& callback) override
95     {
96         if (callback) {
97             idleCallback_ = std::move(callback);
98         }
99     }
100 
GetPlatformResRegister()101     const RefPtr<PlatformResRegister>& GetPlatformResRegister() const override
102     {
103         return resRegister_;
104     }
105 
106     bool Dump(const std::vector<std::string>& params) override;
107 
108     void ProcessIdleEvent(int64_t deadline);
109 
110     void NotifySurfaceChanged(
111         int32_t width, int32_t height, WindowSizeChangeReason type = WindowSizeChangeReason::UNDEFINED)
112     {
113         width_ = width;
114         height_ = height;
115         if (viewChangeCallback_) {
116             viewChangeCallback_(width, height, type);
117         }
118     }
119 
NotifyDensityChanged(double density)120     void NotifyDensityChanged(double density) const
121     {
122         if (densityChangeCallback_) {
123             densityChangeCallback_(density);
124         }
125     }
126 
NotifySystemBarHeightChanged(double statusBar,double navigationBar)127     void NotifySystemBarHeightChanged(double statusBar, double navigationBar) const
128     {
129         if (systemBarHeightChangeCallback_) {
130             systemBarHeightChangeCallback_(statusBar, navigationBar);
131         }
132     }
133 
NotifySurfaceDestroyed()134     void NotifySurfaceDestroyed() const
135     {
136         if (surfaceDestroyCallback_) {
137             surfaceDestroyCallback_();
138         }
139     }
140 
141     // Use to receive event from pc previewer
142     bool HandleTouchEvent(const TouchEvent& touchEvent) override;
143 
144     // Use to receive event from pc previewer
145     bool HandleKeyEvent(const KeyEvent& keyEvent) override;
146 
GetViewType()147     ViewType GetViewType() const override
148     {
149         return AceView::ViewType::SURFACE_VIEW;
150     }
151 
152     std::unique_ptr<DrawDelegate> GetDrawDelegate() override;
153     std::unique_ptr<PlatformWindow> GetPlatformWindow() override;
154     const void* GetNativeWindowById(uint64_t textureId) override;
155 
156 private:
157     int32_t instanceId_ = 0;
158     RefPtr<PlatformResRegister> resRegister_ = Referenced::MakeRefPtr<AceResourceRegister>();
159 
160     TouchEventCallback touchEventCallback_;
161     MouseEventCallback mouseEventCallback_;
162     AxisEventCallback axisEventCallback_;
163     RotationEventCallBack rotationEventCallBack_;
164     CardViewPositionCallBack cardViewPositionCallBack_;
165     CardViewAccessibilityParamsCallback cardViewAccessibilityParamsCallback_;
166     ViewChangeCallback viewChangeCallback_;
167     DensityChangeCallback densityChangeCallback_;
168     SystemBarHeightChangeCallback systemBarHeightChangeCallback_;
169     SurfaceDestroyCallback surfaceDestroyCallback_;
170     IdleCallback idleCallback_;
171     KeyEventCallback keyEventCallback_;
172     KeyEventRecognizer keyEventRecognizer_;
173 
174     ACE_DISALLOW_COPY_AND_MOVE(FlutterAceView);
175 };
176 
177 } // namespace OHOS::Ace::Platform
178 
179 #endif // FOUNDATION_ACE_ADAPTER_PREVIEW_FLUTTER_ACE_VIEW_H
180