#include <sigc++/trackable.h>
#include <msp/strings/lexicalcast.h>
#include "geometry.h"
+#include "mspgltk_api.h"
namespace Msp {
namespace GLtk {
interface is provided to automatically arrange widgets. See classes Row,
Column and Grid for some commonly used arrangements.
*/
-class Layout
+class MSPGLTK_API Layout
{
private:
enum
{
ConstraintType type;
Slot ⌖
- int spacing;
+ int spacing = -1;
Constraint(ConstraintType, Slot &);
};
struct Packing
{
- int gravity;
- bool expand;
-
- Packing();
+ int gravity = -1;
+ bool expand = false;
};
struct Slot: public sigc::trackable
{
Layout &layout;
- int index;
+ int index = 0;
Widget &widget;
Geometry autosize_geom;
Geometry geom;
std::list<Constraint> constraints;
Packing horiz_pack;
Packing vert_pack;
- bool ghost;
- bool floating;
+ bool ghost = false;
+ bool floating = false;
Slot(Layout &, Widget &);
class LinearProgram;
struct Pointers;
- Container *container;
+ Container *container = nullptr;
std::list<Slot *> slots;
- unsigned n_active_slots;
- unsigned n_slack_vars[2];
- Sides margin;
- unsigned row_spacing;
- unsigned col_spacing;
+ unsigned n_active_slots = 0;
+ unsigned n_slack_vars[2] = { 0, 0 };
+ Sides margin{ 8 };
+ unsigned row_spacing = 5;
+ unsigned col_spacing = 4;
Geometry autosize_geom;
std::list<Arrangement *> arrangement_stack;
static Pointers pointers[2];
public:
- Layout();
~Layout();
void set_container(Container &);
void solve_constraints(int, SolveMode);
};
-void operator>>(const LexicalConverter &, Layout::ConstraintType &);
+MSPGLTK_API void operator>>(const LexicalConverter &, Layout::ConstraintType &);
} // namespace GLtk
} // namespace Msp