1/* 2 * Copyright (c) 2020-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/** 17 * @addtogroup UI_Layout 18 * @{ 19 * 20 * @brief Defines UI layouts such as <b>FlexLayout</b> and <b>GridLayout</b>. 21 * 22 * @since 1.0 23 * @version 1.0 24 */ 25 26/** 27 * @file layout.h 28 * 29 * @brief Declares the base class of the layout, which indicates the basic data types and operations that may be 30 * used in the layout. 31 * 32 * @since 1.0 33 * @version 1.0 34 */ 35 36#ifndef GRAPHIC_LITE_LAYOUT_H 37#define GRAPHIC_LITE_LAYOUT_H 38 39#include "components/ui_view_group.h" 40 41namespace OHOS { 42using DirectionType = uint8_t; 43using AlignType = uint8_t; 44/* Arranges child views by row from left to right. */ 45const DirectionType LAYOUT_HOR = 0; 46/* Arranges child views by row from right to left. */ 47const DirectionType LAYOUT_HOR_R = 1; 48/* Arranges child views by column from top to bottom. */ 49const DirectionType LAYOUT_VER = 2; 50/* Arranges child views by column from bottom to top. */ 51const DirectionType LAYOUT_VER_R = 3; 52 53/* Places all child views from the start point to the end point. */ 54const AlignType ALIGN_START = 0; 55/* Places all child views from the end point to the start point. */ 56const AlignType ALIGN_END = 1; 57/* Places all child views in the center. */ 58const AlignType ALIGN_CENTER = 2; 59/* Evenly places all child views between the start point and end point. The distance between the start point and 60 the end as well as the distance between the end point and the end is the same as that between child views. */ 61const AlignType ALIGN_EVENLY = 3; 62/* Evenly places all child views between the start point and end point. The distance between the start point and 63 the end as well as the distance between the end point and the end is half of the distance between child views. */ 64const AlignType ALIGN_AROUND = 4; 65/* Evenly places all child views between the start point and end point. No left or right margin is reserved. */ 66const AlignType ALIGN_BETWEEN = 5; 67 68/** 69 * @brief Defines the base class of the layout, which indicates the basic data types and operations that may be used in 70 * the layout. 71 * 72 * @since 1.0 73 * @version 1.0 74 */ 75class Layout : public UIViewGroup { 76public: 77 /** 78 * @brief A default constructor used to create a <b>Layout</b> instance. 79 * @since 1.0 80 * @version 1.0 81 */ 82 Layout() : direction_(LAYOUT_HOR) {} 83 84 /** 85 * @brief A destructor used to delete the <b>Layout</b> instance. 86 * @since 1.0 87 * @version 1.0 88 */ 89 virtual ~Layout() {} 90 91 /** 92 * @brief Sets the layout direction. 93 * @param direction Indicates the direction of the layout. Available values are as follows: 94 * LAYOUT_HOR: from left to right 95 * LAYOUT_HOR_R: from right to left 96 * LAYOUT_VER: from top to bottom 97 * LAYOUT_VER_R: from bottom to top 98 * @since 1.0 99 * @version 1.0 100 */ 101 void SetLayoutDirection(const DirectionType& direction) 102 { 103 direction_ = direction; 104 } 105 106protected: 107 DirectionType direction_; 108}; 109} // namespace OHOS 110#endif // GRAPHIC_LITE_LAYOUT_H 111