/* * LayoutVertical.hh * * Created on: Sep, 2, 2014 * Author: AKKA */ #ifndef LAYOUTVERTICAL_HH_ #define LAYOUTVERTICAL_HH_ #include #include #include #include #include "Layout.hh" namespace plot { class PanelInfo { public: PanelInfo (PanelConstraint constraint, double preferedWidth, double preferedHeight, double width, double height) : _constraint(constraint), _preferedWidth(preferedWidth), _preferedHeight(preferedHeight), _width(width), _height(height) { } PanelConstraint _constraint; double _preferedWidth; double _preferedHeight; double _width; double _height; }; /** * LayoutVertical */ class LayoutVertical : public Layout { public: LayoutVertical(double panelHeight, double panelSpacing, double firstPanelHeightFactor = 1.0, bool autoExpand = true, double xyRatio = 1.0) : Layout (panelHeight, panelSpacing, firstPanelHeightFactor, autoExpand, xyRatio), _curPanel(0), _curYPosition(0), _maxWidthConstraintFound(false), _computedPanelBounds(), _panelYSpacing(0), _firstPanelHeightDelta(0) { } virtual ~LayoutVertical() { for (auto panelInfo : _panelsInfo) { delete panelInfo; } _panelsInfo.clear(); } void addPanel (PanelConstraint panelConstraint, double preferedWidth=-1, double preferedHeight=-1); void reset (void); Bounds & getNextBounds (PanelConstraint panelConstraint); private: void computeLayoutSize (double &layoutWidth, double &layoutHeight); void expand (double ratio); int _curPanel; double _curYPosition; bool _maxWidthConstraintFound; Bounds _computedPanelBounds; double _panelYSpacing; double _firstPanelHeightDelta; std::vector _panelsInfo; }; } /* namespace plot */ #endif /* LAYOUTVERTICAL_HH_ */