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