Layout.hpp (2102B)
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 37 struct SubWidgetWithSizeHint { 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 50 typedef Layout<true> HorizontalLayout; 51 typedef Layout<false> VerticalLayout; 52 53 struct HorizontallyStackedVerticalLayout 54 { 55 std::list<VerticalLayout*> items; 56 Size<uint> adjustSize(uint padding); // TODO 57 void setAbsolutePos(int x, int y, uint padding); 58 }; 59 60 struct VerticallyStackedHorizontalLayout 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