/* Starshatter: The Open Source Project Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. AUTHOR: John DiCamillo OVERVIEW ======== Layout Manager class for ActiveWindow panels */ #ifndef Layout_h #define Layout_h #include "ActiveWindow.h" // +--------------------------------------------------------------------+ class Layout { public: static const char* TYPENAME() { return "Layout"; } Layout(); virtual ~Layout(); virtual bool DoLayout(ActiveWindow* panel); virtual void Clear(); virtual void AddCol(DWORD min_width, float col_factor); virtual void AddRow(DWORD min_height, float row_factor); virtual void SetConstraints(const std::vector& min_x, const std::vector& min_y, const std::vector& weight_x, const std::vector& weight_y); virtual void SetConstraints(const std::vector& min_x, const std::vector& min_y, const std::vector& weight_x, const std::vector& weight_y); virtual void SetConstraints(int ncols, int nrows, const int* min_x, const int* min_y, const float* weight_x, const float* weight_y); protected: virtual void ScaleWeights(); virtual void CalcCells(DWORD w, DWORD h, std::vector& cell_x, std::vector& cell_y); std::vector cols; std::vector rows; std::vector col_weights; std::vector row_weights; }; #endif // Layout_h