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