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