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 RefPtr<GridContainerSize> & span)32 void SetSpan(const RefPtr<GridContainerSize>& span) 33 { 34 span_ = span; 35 } 36 SetOffset(const RefPtr<GridContainerSize> & offset)37 void SetOffset(const RefPtr<GridContainerSize>& offset) 38 { 39 offset_ = offset; 40 } 41 SetOrder(const RefPtr<GridContainerSize> & order)42 void SetOrder(const RefPtr<GridContainerSize>& order) 43 { 44 order_ = order; 45 } 46 GetSpan()47 RefPtr<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 RefPtr<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 RefPtr<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 RefPtr<GridContainerSize> span_ = AceType::MakeRefPtr<GridContainerSize>(1); 146 RefPtr<GridContainerSize> offset_ = AceType::MakeRefPtr<GridContainerSize>(0); 147 RefPtr<GridContainerSize> order_ = AceType::MakeRefPtr<GridContainerSize>(0); 148 }; 149 150 } // namespace OHOS::Ace::V2 151 #endif