1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_BASE_FACTORIES_FLUTTER_RENDER_FACTORY_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_BASE_FACTORIES_FLUTTER_RENDER_FACTORY_H 18 19 #include "core/pipeline/base/factories/flutter_node_factory.h" 20 #include "core/pipeline/base/factories/render_factory.h" 21 22 namespace OHOS::Ace { 23 24 class FlutterRenderFactory final : public virtual RenderFactory { 25 DECLARE_ACE_TYPE(FlutterRenderFactory, RenderFactory); 26 27 public: 28 FlutterRenderFactory() = default; 29 ~FlutterRenderFactory() override = default; 30 GetRenderTextFactory()31 RefPtr<RenderNodeFactory>& GetRenderTextFactory() override 32 { 33 if (!textFactory_) { 34 textFactory_ = AceType::MakeRefPtr<FlutterTextFactory>(); 35 } 36 return textFactory_; 37 } 38 GetRenderImageFactory()39 RefPtr<RenderNodeFactory>& GetRenderImageFactory() override 40 { 41 if (!imageFactory_) { 42 imageFactory_ = AceType::MakeRefPtr<FlutterImageFactory>(); 43 } 44 return imageFactory_; 45 } 46 GetRenderBoxFactory()47 RefPtr<RenderNodeFactory>& GetRenderBoxFactory() override 48 { 49 if (!boxFactory_) { 50 boxFactory_ = AceType::MakeRefPtr<FlutterBoxFactory>(); 51 } 52 return boxFactory_; 53 } 54 GetRenderFlexFactory()55 RefPtr<RenderNodeFactory>& GetRenderFlexFactory() override 56 { 57 if (!flexFactory_) { 58 flexFactory_ = AceType::MakeRefPtr<RenderFlexFactory>(); 59 } 60 return flexFactory_; 61 } 62 GetRenderWrapFactory()63 RefPtr<RenderNodeFactory>& GetRenderWrapFactory() override 64 { 65 if (!wrapFactory_) { 66 wrapFactory_ = AceType::MakeRefPtr<RenderWrapFactory>(); 67 } 68 return wrapFactory_; 69 } 70 GetRenderFlexItemFactory()71 RefPtr<RenderNodeFactory>& GetRenderFlexItemFactory() override 72 { 73 if (!flexItemFactory_) { 74 flexItemFactory_ = AceType::MakeRefPtr<RenderFlexItemFactory>(); 75 } 76 return flexItemFactory_; 77 } 78 79 private: 80 RefPtr<RenderNodeFactory> textFactory_; 81 RefPtr<RenderNodeFactory> imageFactory_; 82 RefPtr<RenderNodeFactory> boxFactory_; 83 RefPtr<RenderNodeFactory> flexFactory_; 84 RefPtr<RenderNodeFactory> flexItemFactory_; 85 RefPtr<RenderNodeFactory> wrapFactory_; 86 87 ACE_DISALLOW_COPY_AND_MOVE(FlutterRenderFactory); 88 }; 89 90 } // namespace OHOS::Ace 91 92 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_BASE_FACTORIES_FLUTTER_RENDER_FACTORY_H 93