Simple SFML GUI  0.2a
PanelSplitted.hpp
1 #ifndef SSG_PANELSPLITTED_HPP_
2 #define SSG_PANELSPLITTED_HPP_
3 
4 #include "HaveEnabled.hpp"
5 #include "Panel.hpp"
6 #include "PanelScrolled.hpp"
7 #include "Button.hpp"
8 #include "ColorAccess.hpp"
9 
10 template<class T>
12  public Element,
13  public HaveEnabled {
14 public:
15  GenericPanelSplitted(const Element* parent = nullptr);
16  virtual void draw(sf::RenderTarget& target, sf::RenderStates states = sf::RenderStates()) override;
17  virtual bool update(sf::Vector2f mp, bool pressLeft, bool pressRight, bool aboveHover) override;
18  virtual void updateArea() override;
19 
20  void setOrientation(Orientation orientation);
21  void setPositionType(PositionType positionType);
22  bool setSplitPosition(float splitPosition);
23  void setSplitButtonSize(float splitButtonSize);
24 
25  T& getFirst();
26  const T& getFirst()const;
27  T& getSecond();
28  const T& getSecond()const;
29 
30  void addToFirst(std::shared_ptr<Element> element);
31  void addToFirst(std::vector<std::shared_ptr<Element>>& elements);
32  void addToFirst(std::vector<std::shared_ptr<Element>>&& elements);
33  void addToSecond(std::shared_ptr<Element> element);
34  void addToSecond(std::vector<std::shared_ptr<Element>>& elements);
35  void addToSecond(std::vector<std::shared_ptr<Element>>&& elements);
36  void setModelFirst(const std::shared_ptr<PanelModel>& model);
37  void setModelSecond(const std::shared_ptr<PanelModel>& model);
38  void setSplitPositionLimitFirst(float value);
39  void setSplitPositionLimitSecond(float value);
40  void setResizeable(bool resizeable);
41  void setVisibleSplitButton(bool visible);
42 
43 protected:
44  bool resizeable;
45  float splitPosition;
46  float splitButtonSize;
47  float splitPositionLimitFirst;
48  float splitPositionLimitSecond;
49  PositionType positionType;
50  Orientation orientation;
51 
52  sf::FloatRect areaFirst;
53  sf::FloatRect areaSecond;
54  T first;
55  T second;
56 
57  Button splitButton;
58 };
59 
62 
63 typedef std::shared_ptr<PanelSplitted> PanelSplittedPtr;
64 typedef std::shared_ptr<PanelSplittedScrolled> PanelSplittedScrolledPtr;
65 
66 extern template class GenericPanelSplitted<Panel>;
67 extern template class GenericPanelSplitted<PanelScrolled>;
68 
69 
70 #endif
Pressable button with some configuration options.
Definition: Button.hpp:41
Definition: HaveEnabled.hpp:15
Definition: PanelSplitted.hpp:11
Definition: Element.hpp:22