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