1 /*
2  * Copyright (c) 2022 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_V2_GRID_LAYOUT_GRIDCOL_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_V2_GRID_LAYOUT_GRIDCOL_H
18 
19 #include "base/memory/ace_type.h"
20 #include "base/memory/referenced.h"
21 #include "core/components_v2/grid_layout/grid_col_element.h"
22 #include "core/components_v2/grid_layout/grid_container_util_class.h"
23 #include "core/components_v2/grid_layout/render_grid_col.h"
24 #include "core/pipeline/base/sole_child_component.h"
25 
26 namespace OHOS::Ace::V2 {
27 
28 class ACE_EXPORT GridColComponent : public SoleChildComponent {
29     DECLARE_ACE_TYPE(GridColComponent, SoleChildComponent);
30 
31 public:
SetSpan(const GridContainerSize & span)32     void SetSpan(const GridContainerSize& span)
33     {
34         span_ = span;
35     }
36 
SetOffset(const GridContainerSize & offset)37     void SetOffset(const GridContainerSize& offset)
38     {
39         offset_ = offset;
40     }
41 
SetOrder(const GridContainerSize & order)42     void SetOrder(const GridContainerSize& order)
43     {
44         order_ = order;
45     }
46 
GetSpan()47     GridContainerSize GetSpan() const
48     {
49         return span_;
50     }
51 
GetSpan(GridSizeType sizeType)52     int32_t GetSpan(GridSizeType sizeType) const
53     {
54         switch (sizeType) {
55             case GridSizeType::XS:
56                 return span_.xs;
57                 break;
58             case GridSizeType::SM:
59                 return span_.sm;
60                 break;
61             case GridSizeType::MD:
62                 return span_.md;
63                 break;
64             case GridSizeType::LG:
65                 return span_.lg;
66                 break;
67             case GridSizeType::XL:
68                 return span_.xl;
69                 break;
70             case GridSizeType::XXL:
71                 return span_.xxl;
72                 break;
73             default:
74                 return span_.xs;
75         }
76     }
77 
GetOffset()78     GridContainerSize GetOffset() const
79     {
80         return offset_;
81     }
82 
GetOffset(GridSizeType sizeType)83     int32_t GetOffset(GridSizeType sizeType) const
84     {
85         switch (sizeType) {
86             case GridSizeType::XS:
87                 return offset_.xs;
88                 break;
89             case GridSizeType::SM:
90                 return offset_.sm;
91                 break;
92             case GridSizeType::MD:
93                 return offset_.md;
94                 break;
95             case GridSizeType::LG:
96                 return offset_.lg;
97                 break;
98             case GridSizeType::XL:
99                 return offset_.xl;
100                 break;
101             case GridSizeType::XXL:
102                 return offset_.xxl;
103                 break;
104             default:
105                 return offset_.xs;
106         }
107     }
108 
GetOrder()109     GridContainerSize GetOrder() const
110     {
111         return order_;
112     }
113 
GetOrder(GridSizeType sizeType)114     int32_t GetOrder(GridSizeType sizeType) const
115     {
116         switch (sizeType) {
117             case GridSizeType::XS:
118                 return order_.xs;
119                 break;
120             case GridSizeType::SM:
121                 return order_.sm;
122                 break;
123             case GridSizeType::MD:
124                 return order_.md;
125                 break;
126             case GridSizeType::LG:
127                 return order_.lg;
128                 break;
129             case GridSizeType::XL:
130                 return order_.xl;
131                 break;
132             case GridSizeType::XXL:
133                 return order_.xxl;
134                 break;
135             default:
136                 return order_.xs;
137         }
138     }
139 
140     RefPtr<Element> CreateElement() override;
141 
142     RefPtr<RenderNode> CreateRenderNode() override;
143 
144 private:
145     GridContainerSize span_ = GridContainerSize(1);
146     GridContainerSize offset_ = GridContainerSize(0);
147     GridContainerSize order_ = GridContainerSize(0);
148 };
149 
150 } // namespace OHOS::Ace::V2
151 #endif