DISTRHO Plugin Framework
Layout.hpp
1 /*
2  * DISTRHO Plugin Framework (DPF)
3  * Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com>
4  *
5  * Permission to use, copy, modify, and/or distribute this software for any purpose with
6  * or without fee is hereby granted, provided that the above copyright notice and this
7  * permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
10  * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
11  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
12  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
13  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #ifndef DGL_LAYOUT_HPP_INCLUDED
18 #define DGL_LAYOUT_HPP_INCLUDED
19 
20 #include "Geometry.hpp"
21 
22 #include <list>
23 
24 START_NAMESPACE_DGL
25 
26 class SubWidget;
27 
28 // --------------------------------------------------------------------------------------------------------------------
29 
30 // NOTE: under development, API to be finalized and documented soon
31 
32 enum SizeHint {
33  Expanding,
34  Fixed
35 };
36 
38  SubWidget* widget;
39  SizeHint sizeHint;
40 };
41 
42 template<bool horizontal>
43 struct Layout
44 {
45  std::list<SubWidgetWithSizeHint> widgets;
46  uint setAbsolutePos(int x, int y, uint padding);
47  void setSize(uint size, uint padding);
48 };
49 
52 
54 {
55  std::list<VerticalLayout*> items;
56  Size<uint> adjustSize(uint padding); // TODO
57  void setAbsolutePos(int x, int y, uint padding);
58 };
59 
61 {
62  std::list<HorizontalLayout*> items;
63  Size<uint> adjustSize(uint padding);
64  void setAbsolutePos(int x, int y, uint padding);
65 };
66 
67 // --------------------------------------------------------------------------------------------------------------------
68 
69 END_NAMESPACE_DGL
70 
71 #endif // DGL_LAYOUT_HPP_INCLUDED
Definition: SubWidget.hpp:40
Definition: Layout.hpp:54
Definition: Layout.hpp:44
Definition: Layout.hpp:37
Definition: Layout.hpp:61