1 #pragma once
2 #ifndef GWEN_CONTROLS_CROSSSPLITTER_H
3 #define GWEN_CONTROLS_CROSSSPLITTER_H
4 
5 #include "Gwen/Gwen.h"
6 #include "Gwen/Controls/Base.h"
7 #include "Gwen/Controls/SplitterBar.h"
8 
9 namespace Gwen
10 {
11 namespace Controls
12 {
13 class GWEN_EXPORT CrossSplitter : public Controls::Base
14 {
15 public:
16 	GWEN_CONTROL(CrossSplitter, Controls::Base);
17 
18 	void Layout(Skin::Base* skin);
19 
20 	virtual float CalculateValueVertical();
21 	virtual float CalculateValueHorizontal();
22 	virtual void CalculateValueCenter();
23 	virtual void UpdateHSplitter();
24 	virtual void UpdateVSplitter();
25 	virtual void UpdateCSplitter();
26 	virtual void OnVerticalMoved(Controls::Base* control);
27 	virtual void OnHorizontalMoved(Controls::Base* control);
28 	virtual void OnCenterMoved(Controls::Base* control);
29 
30 	virtual void SetPanel(int i, Controls::Base* pPanel);
31 	virtual Controls::Base* GetPanel(int i);
32 
IsZoomed()33 	virtual bool IsZoomed() { return m_iZoomedSection != -1; }
34 	virtual void Zoom(int section);
35 	virtual void UnZoom();
36 	virtual void ZoomChanged();
CenterPanels()37 	virtual void CenterPanels()
38 	{
39 		m_fHVal = 0.5f;
40 		m_fVVal = 0.5f;
41 		Invalidate();
42 	}
43 
SetSplittersVisible(bool b)44 	virtual void SetSplittersVisible(bool b)
45 	{
46 		m_VSplitter->SetShouldDrawBackground(b);
47 		m_HSplitter->SetShouldDrawBackground(b);
48 		m_CSplitter->SetShouldDrawBackground(b);
49 	}
SetSplitterSize(int size)50 	virtual void SetSplitterSize(int size) { m_fBarSize = size; }
51 
52 private:
53 	SplitterBar* m_VSplitter;
54 	SplitterBar* m_HSplitter;
55 	SplitterBar* m_CSplitter;
56 
57 	Controls::Base* m_Sections[4];
58 
59 	float m_fHVal;
60 	float m_fVVal;
61 	int m_fBarSize;
62 
63 	int m_iZoomedSection;
64 
65 	Gwen::Event::Caller onZoomed;
66 	Gwen::Event::Caller onUnZoomed;
67 	Gwen::Event::Caller onZoomChange;
68 };
69 }  // namespace Controls
70 }  // namespace Gwen
71 #endif
72