1 /* 2 * The ManaPlus Client 3 * Copyright (C) 2007-2009 The Mana World Development Team 4 * Copyright (C) 2009-2010 The Mana Developers 5 * Copyright (C) 2011-2019 The ManaPlus Developers 6 * Copyright (C) 2019-2021 Andrei Karas 7 * 8 * This file is part of The ManaPlus Client. 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program. If not, see <http://www.gnu.org/licenses/>. 22 */ 23 24 #ifndef GUI_WIDGETS_LAYOUT_H 25 #define GUI_WIDGETS_LAYOUT_H 26 27 #include "gui/widgets/layoutcell.h" 28 29 #include "localconsts.h" 30 31 /** 32 * This class is an helper for setting the position of widgets. They are 33 * positioned along the cells of some rectangular tables. The layout may either 34 * be a single table or a tree of nested tables. 35 * 36 * The size of a given table column can either be set manually or be chosen 37 * from the widest widget of the column. An empty column has a AUTO_DEF width, 38 * which means it will be extended so that the layout fits its minimum width. 39 * 40 * The process is similar for table rows. By default, there is a spacing of 4 41 * pixels between rows and between columns, and a margin of 6 pixels around the 42 * whole layout. 43 */ 44 class Layout final : public LayoutCell 45 { 46 public: 47 Layout(); 48 A_DELETE_COPY(Layout)49 A_DELETE_COPY(Layout) 50 51 /** 52 * Sets the margin around the layout. 53 */ 54 void setMargin(int m) 55 { setPadding(m); } 56 57 /** 58 * Sets the positions of all the widgets. 59 * @see LayoutArray::reflow 60 */ 61 void reflow(int &restrict nW, int &restrict nH); 62 63 private: 64 bool mComputed; 65 }; 66 67 #endif // GUI_WIDGETS_LAYOUT_H 68