/* * Layout.hh * * Created on: Sep, 2, 2014 * Author: AKKA */ #ifndef LAYOUT_HH_ #define LAYOUT_HH_ #include #include #include #include "LayoutProperties.hh" #include "Bounds.hh" namespace plot { /** * Available panel constrains in the layout. * MaxWidth means the panel must occupy the maximum width drawn on a page * Square means the panel must keep a square geometric form when drawn on a page * */ enum class PanelConstraint { MaxWidth, Square }; /** * Generic Layout interface */ class Layout { public: Layout(double panelHeight, double panelSpacing, double firstPanelHeightFactor = 1.0, bool autoExpand = true, double xyRatio = 1.0) : _requestPanelHeight (panelHeight), _requestPanelSpacing(panelSpacing), _firstPanelHeightFactor(firstPanelHeightFactor), _autoExpand (autoExpand), _xyRatio (xyRatio) { } virtual ~Layout() { } virtual void addPanel (PanelConstraint panelConstraint, double preferedWidth=-1, double preferedHeight=-1) = 0; virtual void reset (void) = 0; virtual Bounds & getNextBounds (PanelConstraint panelConstraint) = 0; protected: double _requestPanelHeight; double _requestPanelSpacing; double _firstPanelHeightFactor; bool _autoExpand; double _xyRatio; }; } /* namespace plot */ #endif /* LAYOUT_HH_ */