You.i Engine
YiDrawerView.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_DRAWER_VIEW_H
3 #define _YI_DRAWER_VIEW_H
4 
5 #include "signal/YiSignal.h"
6 #include "view/YiSceneView.h"
7 
29 class CYIDrawerView : public CYISceneView, public CYISceneNode::PropertyAnimation::Listener
30 {
31 public:
32 
36  enum DIRECTION
37  {
42  };
43 
47  enum STATE
48  {
49  STATE_CLOSED = 0x01,
50  STATE_OPENED = 0x02,
51  STATE_OPENING = 0x04,
52  STATE_CLOSING = 0x08,
55  };
56 
57  CYIDrawerView();
58 
65 
72 
79 
86 
87  virtual bool Init() override;
88 
89  virtual bool HandleEvent(const std::shared_ptr<CYIEventDispatcher> &pDispatcher, CYIEvent *pEvent) override;
90 
91  virtual void OnPropertyAnimationComplete(CYISceneNode *pNode, YI_NODE_PROPERTY_TYPE ePropType);
92 
97  virtual void Open();
98 
103  virtual void Close();
104 
113  virtual void ShowDrawer();
114 
122  virtual void HideDrawer();
123 
128 
136  void SetDrawerOpenDirection(DIRECTION eDirection, float fDrawerLength);
137 
143  STATE GetDrawerState() const;
144 
148  float GetDrawerThreshold() const;
149 
159  void SetDrawerThreshold(float fDrawerThresholdPercentage);
160 
164  uint32_t GetDrawerDelay() const;
165 
171  void SetDrawerDelay(uint32_t fDrawerDelayMs);
172 
178  void SetDrawerOpenInterpolator(CYITimeInterpolator *pInterpolator);
179 
185  void SetDrawerCloseInterpolator(CYITimeInterpolator *pInterpolator);
186 
187 protected:
188 
192  void SetDrawerState(STATE state);
193 
198 
202  float GetDrawerPosition() const;
203 
207  bool IsInversed() const;
211  bool IsHorizontal() const;
212 
215 
223 
226 
227 private:
228 
229  bool m_bMouseDown;
230 
232 };
233 
237 {
238  return m_eDrawerOpenDirection;
239 }
240 
242 {
243  return m_eDrawerState;
244 }
245 
247 {
248  return m_fDrawerThreshold;
249 }
250 
251 inline void CYIDrawerView::SetDrawerThreshold(float fDrawerThresholdPercentage)
252 {
253  m_fDrawerThreshold = fDrawerThresholdPercentage;
254 }
255 
256 inline uint32_t CYIDrawerView::GetDrawerDelay() const
257 {
258  return m_nDrawerDelayMs;
259 }
260 
261 inline void CYIDrawerView::SetDrawerDelay(uint32_t fDrawerDelayMs)
262 {
263  m_nDrawerDelayMs = fDrawerDelayMs;
264 }
265 
267 {
268  m_pDrawerOpenInterpolator = pInterpolator;
269 }
270 
272 {
273  m_pDrawerCloseInterpolator = pInterpolator;
274 }
275 
276 
277 #endif // _YI_DRAWER_VIEW_H
void SetDrawerOpenDirection(DIRECTION eDirection, float fDrawerLength)
float m_fDrawerOpenPos
Definition: YiDrawerView.h:219
Container for basic interpolator functions.
Definition: YiTimeInterpolator.h:21
The drawer is transitioning to STATE_OPENED.
Definition: YiDrawerView.h:51
Definition: YiDrawerView.h:38
Base class for events.
Definition: YiEvent.h:489
The base class for all view types. Views are containers of renderable elements that often define inte...
Definition: YiSceneView.h:47
The drawer is logically open but is hidden.
Definition: YiDrawerView.h:54
DIRECTION
The direction the drawer will open. The direction is relative to the parent&#39;s local space...
Definition: YiDrawerView.h:36
STATE GetDrawerState() const
Definition: YiDrawerView.h:241
float m_fDrawerStartPos
Definition: YiDrawerView.h:217
void SetDrawerDelay(uint32_t fDrawerDelayMs)
Definition: YiDrawerView.h:261
float m_fDrawerClosePos
Definition: YiDrawerView.h:218
#define YI_TYPE_BASES(...)
Definition: YiRtti.h:350
float m_fDrawerHiddenPos
Definition: YiDrawerView.h:220
virtual void ShowDrawer()
The drawer is closed but still visible, a "handle" to open the drawer may be visible.
Definition: YiDrawerView.h:49
virtual void HideDrawer()
Definition: YiDrawerView.h:39
float m_fPointerStartPos
Definition: YiDrawerView.h:216
uint32_t m_nDrawerDelayMs
Definition: YiDrawerView.h:222
The drawer is transitioning to STATE_CLOSED.
Definition: YiDrawerView.h:52
float GetDrawerPosition() const
bool IsHorizontal() const
CYISignal< float > OpenedPercentage
Definition: YiDrawerView.h:64
void SetDrawerThreshold(float fDrawerThresholdPercentage)
Definition: YiDrawerView.h:251
CYISignal< STATE > DrawerStateChanged
Definition: YiDrawerView.h:85
float m_fDrawerThreshold
Definition: YiDrawerView.h:221
YI_NODE_PROPERTY_TYPE
Definition: YiSceneNode.h:46
STATE
Possible states the drawer can be in.
Definition: YiDrawerView.h:47
CYITimeInterpolator * m_pDrawerCloseInterpolator
Definition: YiDrawerView.h:225
uint32_t GetDrawerDelay() const
Definition: YiDrawerView.h:256
The drawer is open and visible.
Definition: YiDrawerView.h:50
Definition: YiDrawerView.h:41
DIRECTION GetDrawerOpenDirection() const
Definition: YiDrawerView.h:236
CYITimeInterpolator * m_pDrawerOpenInterpolator
Definition: YiDrawerView.h:224
void SetDrawerState(STATE state)
A scene node is the base type for all nodes which are used by the scene manager; it is an integral pa...
Definition: YiSceneNode.h:114
bool IsInversed() const
The drawer is logically closed but is hidden.
Definition: YiDrawerView.h:53
DIRECTION m_eDrawerOpenDirection
Definition: YiDrawerView.h:213
void SetDrawerCloseInterpolator(CYITimeInterpolator *pInterpolator)
Definition: YiDrawerView.h:271
virtual void OnPropertyAnimationComplete(CYISceneNode *pNode, YI_NODE_PROPERTY_TYPE ePropType)
virtual bool Init() override
virtual void Open()
Definition: YiDrawerView.h:40
virtual void Close()
CYISignal Closed
Definition: YiDrawerView.h:78
The CYIDrawerView can be placed around the edges of a view, making it possible for the user to swipe ...
Definition: YiDrawerView.h:29
YI_NODE_PROPERTY_TYPE GetDrawerPropertyType() const
CYISignal Opened
Definition: YiDrawerView.h:71
virtual bool HandleEvent(const std::shared_ptr< CYIEventDispatcher > &pDispatcher, CYIEvent *pEvent) override
void SetDrawerOpenInterpolator(CYITimeInterpolator *pInterpolator)
Definition: YiDrawerView.h:266
float GetDrawerThreshold() const
Definition: YiDrawerView.h:246
STATE m_eDrawerState
Definition: YiDrawerView.h:214