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_RS_ACE_VIEW_H 18 #define FOUNDATION_ACE_ADAPTER_PREVIEW_RS_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 RSAceView : public AceView, public Referenced { 32 public: RSAceView(int32_t instanceId)33 explicit RSAceView(int32_t instanceId) : instanceId_(instanceId) {} 34 ~RSAceView() 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(RSAceView); 175 }; 176 177 } // namespace OHOS::Ace::Platform 178 179 #endif // FOUNDATION_ACE_ADAPTER_PREVIEW_RS_ACE_VIEW_H 180