Simple SFML GUI  0.2a
PanelModelLine.hpp
1 /*
2  * PanelModelCenterLine.hpp
3  *
4  * Created on: 02.06.2017
5  * Author: jakub
6  */
7 
8 #ifndef SSG_PANELMODELCENTERLINE_HPP_
9 #define SSG_PANELMODELCENTERLINE_HPP_
10 
11 #include "MarginModelBase.hpp"
12 #include "Enums.hpp"
13 
15 public:
17  Orientation orientation = Orientation::Horizontal,
18  Align align = Align::Center,
19  VAlign valign = VAlign::Top,
20  float margin = 0.f,
21  MarginMode marginMode = MarginMode::Full
22  );
23 
24  inline static auto create(
25  Orientation orientation = Orientation::Horizontal,
26  Align align = Align::Center,
27  VAlign valign = VAlign::Top,
28  float margin = 0.f,
29  MarginMode marginMode = MarginMode::Full
30  ) {
31  return std::make_shared<PanelModelLine>(orientation, align, valign, margin, marginMode);
32  }
33 
34  virtual void init(const Panel& panel) override;
35  virtual void handleElement(const Panel& panel, Element& element, size_t order) override;
36  virtual void notifyNewElement(Element& element) override;
37 
38  void setAlign(Align value);
39  void setValign(VAlign value);
40  void setOrientation(Orientation value);
41 
42  float getWidthSum() const;
43  float getHeightSum() const;
44 
45 private:
46  Orientation orientation;
47  Align align;
48  VAlign valign;
49 
50  sf::FloatRect lastArea;
51  float widthSum = 0.f;
52  float heightSum = 0.f;
53  float sum = 0.f;
54  float lastSum = -1.f;
55  float maxWidth = 0.f;
56  float maxHeight = 0.f;
57 
58 };
59 
60 typedef std::shared_ptr<PanelModelLine> PanelModelLinePtr;
61 
62 #endif /* SSG_PANELMODELCENTERLINE_HPP_ */
Definition: Panel.hpp:29
Definition: PanelModelLine.hpp:14
Definition: Element.hpp:22
Definition: MarginModelBase.hpp:7