Simple SFML GUI  0.2a
MarginModelBase.hpp
1 #ifndef MARGINMODELBASE_HPP
2 #define MARGINMODELBASE_HPP
3 
4 #include "PanelModel.hpp"
5 #include "HaveMargin.hpp"
6 
7 class MarginModelBase : public PanelModel, public HaveMargin {
8 public:
10 
11  virtual void init(const Panel& panel) override;
12  virtual sf::FloatRect customizeArea(const sf::FloatRect& area) const override;
13  virtual bool scrollLimits(sf::Vector2f& topLeft, sf::Vector2f& bottomRight) const override;
14 
15 protected:
16  sf::Vector2f topLeft;
17  sf::Vector2f bottomRight;
18  bool enableScrollLimits;
19 
20  void handleScrollLimits(const sf::Vector2f& elementViewportCenterShift, const sf::FloatRect& elementArea, const sf::FloatRect& panelArea);
21 
22  inline float marginSize(MarginMode mode) const {
23  return marginMode & mode ? margin : 0.f;
24  }
25 
26  inline float marginSize(MarginMode mode, sf::FloatRect area) const {
27  return marginMode & mode ? relativeMargin(area) : 0.f;
28  }
29 
30 };
31 
32 
33 
34 #endif // MARGINMODELBASE_HPP
Definition: Panel.hpp:29
Definition: HaveMargin.hpp:14
Definition: PanelModel.hpp:15
Definition: MarginModelBase.hpp:7