You.i Engine
YiScrollingView.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_SCROLLING_VIEW_H_
3 #define _YI_SCROLLING_VIEW_H_
4 
5 #include "signal/YiSignal.h"
6 #include "view/YiSceneView.h"
8 
9 class CYIMagnetScrollController;
12 
141 {
142 public:
144  {
147  };
148 
150  {
154  };
155 
157  {
161  };
162 
164  {
167  };
168 
170  {
176  };
177 
181  struct Magnets
182  {
186  static Magnets CreateNone();
187 
193  static Magnets CreateCenter(float fCenterOffset);
194 
200  static Magnets CreateBegin(float fBeginningOffset);
201 
207  static Magnets CreateEnd(float fEndOffset);
208 
216  static Magnets CreateEdges(float fBeginningOffset, float fEndOffset);
217 
219  const float fBeginningOffset;
220  const float fCenterOffset;
221  const float fEndOffset;
222 
223  private:
224  Magnets(MAGNETS_TYPE eType, float fBeginningOffset, float fCenterOffset, float fEndOffset);
225  };
226 
228  virtual ~CYIScrollingView();
229 
230  virtual bool Init() override;
231 
253  void ScrollToHorizontalPosition(float fNormalizedPosition, uint32_t uDurationMs, CYITimeInterpolator *pInterpolator = nullptr);
254 
260  void ScrollToHorizontalPosition(float fNormalizedPosition);
261 
283  void ScrollToVerticalPosition(float fNormalizedPosition, uint32_t uDurationMs, CYITimeInterpolator *pInterpolator = nullptr);
284 
290  void ScrollToVerticalPosition(float fNormalizedPosition);
291 
296  void ScrollToPosition(const glm::vec2 &fNormalizedPositions, uint32_t uDurationMs = 0, CYITimeInterpolator *pInterpolator = nullptr);
297 
301  float GetHorizontalPosition() const;
302 
306  float GetVerticalPosition() const;
307 
319  void Reveal(CYISceneNode *pNode, uint32_t uDurationMs, CYITimeInterpolator *pInterpolator = nullptr);
320 
327 
334 
339  void SetHorizontalScrollingEnabled(bool bEnabled);
340 
344  bool IsHorizontalScrollingEnabled() const;
345 
352 
359 
364  void SetVerticalScrollingEnabled(bool bEnabled);
365 
369  bool IsVerticalScrollingEnabled() const;
370 
376  void SetHorizontalOverpullDistance(float fDistance);
377 
381  float GetHorizontalOverpullDistance() const;
382 
388  void SetVerticalOverpullDistance(float fDistance);
389 
393  float GetVerticalOverpullDistance() const;
394 
399 
404 
409 
414 
419 
424 
429 
434 
438  bool HasHorizontalOverflow() const;
439 
443  bool HasVerticalOverflow() const;
444 
450  const CYIAABB &GetScrollableRegion() const;
451 
455  void StopScrolling();
456 
461 
465  void StopVerticalScrolling();
466 
477  void SetHorizontalCarouselRule(CAROUSEL_RULE eCarouselRule);
478 
489  void SetVerticalCarouselRule(CAROUSEL_RULE eCarouselRule);
490 
495 
500 
508  void SetCascadeTimelineGroupDelay(uint32_t uDelayMs);
509 
513  uint32_t GetCascadeTimelineGroupDelay() const;
514 
523 
532  bool IsInVisibleRegion(CYISceneNode *pCandidate) const;
533 
542  void SetHorizontalMagnets(const Magnets &magnets);
543 
550 
555 
561  void SetHorizontalSwipeOneItemEnabled(bool bSwipeOneItem);
562 
566  bool IsHorizontalSwipeOneItemEnabled() const;
567 
576  void SetVerticalMagnets(const Magnets &magnets);
577 
583  void RemoveVerticalMagnets();
584 
588  Magnets GetVerticalMagnets() const;
589 
595  void SetVerticalSwipeOneItemEnabled(bool bSwipeOneItem);
596 
600  bool IsVerticalSwipeOneItemEnabled() const;
601 
610  void EnableMagnetism(CYISceneNode *pNode);
611 
615  void DisableMagnetism(CYISceneNode *pChild);
616 
620  bool IsMagnetic(const CYISceneNode *pNode) const;
621 
628  bool IsScrollingHorizontally() const;
629 
636  bool IsScrollingVertically() const;
637 
643 
648  void SetHorizontalTrackpadLeaveFriction(float fFriction);
649 
654  float GetVerticalTrackpadLeaveFriction() const;
655 
660  void SetVerticalTrackpadLeaveFriction(float fFriction);
661 
662  virtual void BuildDrawList(std::vector<IYIRenderer::Command> &children, CYIAbstractCameraSceneNode *pCameraToDrawWith = nullptr) override;
663 
667  virtual bool HandlesFocusInDescendants() const override;
668 
676  virtual bool ContainsFocusableDescendant(const CYIFocusSearchOptions &options = CYIFocusSearchOptions()) const override;
677 
683 
687  virtual CYISceneView *FindNextFocusInDescendants(const CYISceneView *pCurrentFocusView, CYIFocus::FOCUS_DIRECTION eDirection, CYIAABB &screenSpaceFocusRegion, const CYIFocusSearchOptions &options = CYIFocusSearchOptions()) const override;
688 
692  virtual void FocusChangedInDescendants() override;
693 
697  virtual void FocusGainedInDescendants() override;
698 
718 protected:
720  {
723 
724  DIRECTION_MAX //Represents the size of the enum
725  };
726 
728  {
732  };
733 
738  {
741  };
742 
744 
753 
754  virtual bool BroadcastEvent(const std::shared_ptr<CYIEventDispatcher> &pDispatcher, CYIEvent *pEvent) override;
755 
756  void ConfigureScrollingRange(DIRECTION eDirection, float fContentSize);
757  void ConfigureOverpull(DIRECTION eDirection, float fViewSize);
758  void ConfigureMagnets(DIRECTION eDirection, float fViewSize, float fOldViewSize);
759 
763  virtual void ParseProperties();
764 
765  virtual bool HandleEvent(const std::shared_ptr<CYIEventDispatcher> &pEventDispatcher, CYIEvent *pEvent) override;
766  virtual void Measure(const MeasureSpec &widthSpec, const MeasureSpec &heightSpec, const MeasureSpec &depthSpec) override;
767  virtual void ApplyMeasurements() override;
768  virtual void SizeChanged() override;
769  virtual void WorldBoundingBoxUpdated() override;
770 
774  virtual void ChildAdded(CYISceneNode *pChild) override;
775 
779  virtual void ChildRemoved(CYISceneNode *pChild) override;
780 
795  virtual void Reveal(CYISceneNode *pNode, uint32_t uDurationMs, SCROLL_DIRECTION eHorizontalDirection, SCROLL_DIRECTION eVerticalDirection, CYITimeInterpolator *pInterpolator = nullptr);
796 
805  virtual CYIAABB CalculateScrollableRegion() const;
806 
815 
823  bool IsInExpandedVisibleRegion(CYISceneNode *pCandidate, float fVisibleRegionMultiplier) const;
824 
829 
836  virtual void ChildVisibilityInVisibleRegionChanged(CYISceneNode *pChild, bool bIsInVisibleRegion);
837 
843  virtual void OnChildVisibilityInVisibleRegionChanged(CYISceneNode *pChild, bool bIsInVisibleRegion);
844 
845  virtual void ChildMovedInVisibleRegion(CYISceneNode *pChild, const glm::vec2 &normalizedPosition);
846  virtual void OnChildMovedInVisibleRegion(CYISceneNode *pChild, const glm::vec2 &normalizedPosition);
847 
848  virtual void OnScrollAuto(CYIScrollController *pController) override;
849  virtual void OnScrollStarted(CYIScrollController *pController) override;
850  virtual void OnScrolled(CYIScrollController *pController, YI_SCROLLED_INFO scrolledInfo) override;
851  virtual void OnScrollEnded(CYIScrollController *pController) override;
852 
853  virtual void UpdateEnd() override;
854 
862  bool IsCarouseling(DIRECTION eDirection) const;
863 
870 
875 
885  virtual std::map<CYISceneView *, uint64_t> GetTotalCascadeDelayFor(TIMELINE_TYPE eType, const std::vector<ViewAndDistance> &visibleViews);
886 
890  static const CYIString &DirectionToString(DIRECTION eDirection);
891 
893 
894 private:
895  enum CAMERAS
896  {
897  CAMERA_TOP_LEFT,
898  CAMERA_TOP_RIGHT,
899  CAMERA_BOTTOM_LEFT,
900  CAMERA_BOTTOM_RIGHT,
901  CAMERAS_MAX //Represents the size of the enum
902  };
903 
904  enum MAGNETS
905  {
906  LEFT,
907  RIGHT,
908  UP = LEFT,
909  DOWN = RIGHT,
910  POSITIVE = LEFT,
911  NEGATIVE = RIGHT
912  };
913 
914  void InitializeCameras();
915  void PlaceCameras(const CYIAABB &scrollRegion);
916  void UpdateCameraPerspectives(float cameraDistance, const glm::vec3 &viewSize);
917 
921  bool HasOverflow(DIRECTION eDirection) const;
922 
923  /*
924  Camera placement and carousel handling
925  */
926  void InitializeScrollPosition();
927  void OffsetCameraByRegionTopLeft();
928  void CheckAndUpdateCameraRootPositionInDirection(DIRECTION eDirection);
929  void CheckAndUpdateCarouselState();
930  void EnableHorizontalCarousel();
931  void EnableVerticalCarousel();
932  void DisableHorizontalCarousel();
933  void DisableVerticalCarousel();
934  bool ShouldCarousel(DIRECTION eDirection) const;
938  virtual void CarouselStatusChanged(DIRECTION eDirection, bool bIsCarousel);
939 
940  /*
941  Scrolling Behaviour
942  */
943  void ScrollStart(const glm::vec3 &position, uint64_t uTimeMs, uint8_t uPointerID);
944  void ScrollMove(const glm::vec3 &position, uint64_t uTimeMs, uint8_t uPointerID);
945  void ScrollEnd(const glm::vec3 &position, uint64_t uTimeMs, uint8_t uPointerID);
946  bool InterpretEventForScroll(CYIActionEvent *pEvent);
947 
948  void ScrollToHorizontalPosition(float fNormalizedPosition, uint32_t uDurationMs, SCROLL_DIRECTION eDirection, CYITimeInterpolator *pInterpolator = nullptr);
949  void ScrollToVerticalPosition(float fNormalizedPosition, uint32_t uDurationMs, SCROLL_DIRECTION eDirection, CYITimeInterpolator *pInterpolator = nullptr);
950  void ScrollToPosition(DIRECTION eDirection, float fNormalizedPosition, uint32_t uDurationMs, SCROLL_DIRECTION eScrollDirection, CYITimeInterpolator *pInterpolator = nullptr);
951 
955  void CheckAndNotifyOverflowChanged();
956 
957  void OnScrollRegionChanged();
958 
959  void ApplySnapBackInDirectionIfNecessary(DIRECTION eDirection);
960 
961  void NotifyPositionInVisibilityRegion();
962  void NotifyPositionInVisibilityRegion(CYISceneNode *pNode);
963 
964  void UpdateMagneticPoints();
965  void AddMagneticPoints(DIRECTION eDirection, CYISceneNode *pNode);
966 
967  glm::vec2 CalculateDistanceFromTopLeft(CYISceneNode *pChild) const;
968  void InitializeTimelineGroups();
969  void UpdateCascadeIn();
970  void UpdateCascadeOut();
971 
972  bool FindFocusCandidatesInViewsScreenSpaceRegion(CYIFocus::FOCUS_DIRECTION eDirection, const CYIAABB &previousFocusRect, const CYIFocusSearchOptions &options, void *pFoundCandidates = nullptr) const;
973 
974  void SetSwipeOneItemEnabled(DIRECTION eDirection, bool bSwipeOneItem);
975  bool IsSwipeOneItemEnabled(DIRECTION eDirection) const;
976 
977  static const float s_fDefaultScrollThreshold;
978  static const uint32_t s_uDefaultFocusScrollDuration;
979 
980  bool m_bScrolling;
981  bool m_bVisibilityCheckRequired;
982  bool m_bMagnetSnapRequired;
983  glm::vec3 m_DownPosition;
984  glm::vec3 m_PreviousSize;
985  bool m_bDown;
986  float m_fHorizontalLeaveFriction;
987  float m_fVerticalLeaveFriction;
988 
989  /*
990  Scrolling View
991  */
992  bool m_bScrollingEnabled[DIRECTION_MAX];
993  OVERPULL_RULE m_eOverpullRule[DIRECTION_MAX];
994  float m_fOverpullDistance[DIRECTION_MAX];
995  bool m_bOverflowState[DIRECTION_MAX];
996  LAYOUT_MODE m_eLayoutMode[DIRECTION_MAX];
997  glm::vec3 m_measuredScrollingArea;
998  CYIAABB m_scrollRegion;
999 
1000  CYIPerspectiveCameraSceneNode *m_pCameras[CAMERAS_MAX];
1001  CYISceneNode *m_pCameraRoot;
1002  CAROUSEL_RULE m_eCarouselRule[DIRECTION_MAX];
1003  bool m_bIsCarousel[DIRECTION_MAX];
1004  mutable SCROLL_DIRECTION m_eScrollDirectionsForReveal[DIRECTION_MAX];
1005 
1006  CYIMagnetScrollController *m_pScrollController[DIRECTION_MAX];
1007 
1008  MAGNETS_TYPE m_eCurrentMagnetTypes[DIRECTION_MAX];
1009  float m_fMagnetOffsets[DIRECTION_MAX][2]; //Offsets for {left, right} and {up, down} magnets
1010 
1011  std::set<CYISceneNode*> m_visibleChildren;
1012 
1013  CYITimelineGroup *m_pTimelineGroup[2];
1014  CYITimelineGroup *m_pCascadeTimeline[2];
1015  uint32_t m_uCascadeDelayMs;
1016 
1018 };
1019 
1021 {
1022  return lhs.eType == rhs.eType &&
1023  glm::epsilonEqual(rhs.fCenterOffset, lhs.fCenterOffset, glm::epsilon<float>()) &&
1024  glm::epsilonEqual(rhs.fBeginningOffset, lhs.fBeginningOffset, glm::epsilon<float>()) &&
1025  glm::epsilonEqual(rhs.fEndOffset, lhs.fEndOffset, glm::epsilon<float>());
1026 }
1027 
1029 {
1030  return !(lhs == rhs);
1031 }
1032 
1035 #endif // _YI_SCROLLING_VIEW_H_
virtual CYIAbstractTimeline * GetCascadeTimelineFor(TIMELINE_TYPE eType, CYISceneView *pView)
void DisableVerticalScrolling()
CAROUSEL_RULE
Definition: YiScrollingView.h:156
static const CYIString & DirectionToString(DIRECTION eDirection)
CYITimelineGroup * GetCascadeTimelineGroup(TIMELINE_TYPE eType=TIMELINE_IN)
bool HasVerticalOverflow() const
The base class for the timeline framework.
Definition: YiAbstractTimeline.h:29
virtual void ChildMovedInVisibleRegion(CYISceneNode *pChild, const glm::vec2 &normalizedPosition)
void ScrollToPosition(const glm::vec2 &fNormalizedPositions, uint32_t uDurationMs=0, CYITimeInterpolator *pInterpolator=nullptr)
Magnets GetVerticalMagnets() const
void CheckAndNotifyVisibilityInVisibilityRegion(CYISceneNode *pChild)
Definition: YiScrollingView.h:165
void SetHorizontalTrackpadLeaveFriction(float fFriction)
Container for basic interpolator functions.
Definition: YiTimeInterpolator.h:21
Definition: YiScrollingView.h:737
Definition: YiScrollingView.h:153
Definition: YiSceneNode.h:356
const MAGNETS_TYPE eType
The magnets type.
Definition: YiScrollingView.h:218
static Magnets CreateCenter(float fCenterOffset)
CYIAABB CalculateContentSize() const
A class containing focus search options.
Definition: YiFocusSearchOptions.h:23
When revealing an item using CYIScrollingView::Reveal or scrolling to an item using CYIScrollingView:...
Definition: YiScrollingView.h:730
SCROLL_DIRECTION
Definition: YiScrollingView.h:727
static Magnets CreateEnd(float fEndOffset)
Base class for events.
Definition: YiEvent.h:489
LAYOUT_MODE
Definition: YiScrollingView.h:149
The base class for all view types. Views are containers of renderable elements that often define inte...
Definition: YiSceneView.h:47
CYISignal HorizontalScrollingEnded
Definition: YiScrollingView.h:709
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
virtual void Measure(const MeasureSpec &widthSpec, const MeasureSpec &heightSpec, const MeasureSpec &depthSpec) override
bool operator!=(const CYIScrollingView::Magnets &lhs, const CYIScrollingView::Magnets &rhs)
Definition: YiScrollingView.h:1028
virtual void OnChildVisibilityInVisibleRegionChanged(CYISceneNode *pChild, bool bIsInVisibleRegion)
CYISceneView * view
Definition: YiScrollingView.h:739
void ConfigureMagnets(DIRECTION eDirection, float fViewSize, float fOldViewSize)
void SetHorizontalCarouselRule(CAROUSEL_RULE eCarouselRule)
CAROUSEL_RULE GetVerticalCarouselRule() const
OVERPULL_RULE
Definition: YiScrollingView.h:143
virtual bool BroadcastEvent(const std::shared_ptr< CYIEventDispatcher > &pDispatcher, CYIEvent *pEvent) override
CYISignal< float > VerticalPositionChanged
Definition: YiScrollingView.h:705
static Magnets CreateNone()
The base class for types of timeline groups.
Definition: YiTimelineGroup.h:25
bool IsHorizontalSwipeOneItemEnabled() const
void EnableHorizontalScrolling()
float GetHorizontalPosition() const
LAYOUT_MODE GetVerticalScrollingAreaLayoutMode() const
void StopHorizontalScrolling()
bool IsVerticalSwipeOneItemEnabled() const
const float fEndOffset
The end offset. Applicable only when eType is MAGNETS_TYPE::MAGNETS_EDGES or MAGNETS_TYPE::MAGNETS_EN...
Definition: YiScrollingView.h:221
void SetVerticalSwipeOneItemEnabled(bool bSwipeOneItem)
Provides a base for the definition of camera objects.
Definition: YiAbstractCameraSceneNode.h:30
Definition: YiScrollingView.h:160
void StopVerticalScrolling()
#define YI_TYPE_BASES(...)
Definition: YiRtti.h:350
void SetHorizontalScrollingAreaLayoutMode(LAYOUT_MODE eMode)
virtual void ChildRemoved(CYISceneNode *pChild) override
Definition: YiScrollingView.h:722
const float fCenterOffset
The center offset. Applicable only when eType is MAGNETS_TYPE::CENTER.
Definition: YiScrollingView.h:220
void SetVerticalScrollingAreaLayoutMode(LAYOUT_MODE eMode)
A single center magnet is used.
Definition: YiScrollingView.h:173
void SetVerticalTrackpadLeaveFriction(float fFriction)
bool IsHorizontalScrollingEnabled() const
CYISignal InteractionBegan
Definition: YiScrollingView.h:699
bool IsScrollingVertically() const
virtual ~CYIScrollingView()
MAGNETS_TYPE
Definition: YiScrollingView.h:169
Definition: YiScrollingView.h:159
Definition: YiScrollingView.h:145
CYISignal InteractionEnded
Definition: YiScrollingView.h:707
Definition: YiScrollingView.h:721
const CYIAABB & GetScrollableRegion() const
Definition: YiScrollingView.h:724
float GetVerticalTrackpadLeaveFriction() const
CYISignal< CYISceneNode * > ChildEnteredVisibleRegion
Definition: YiScrollingView.h:715
bool IsVerticalScrollingEnabled() const
virtual void OnScrolled(CYIScrollController *pController, YI_SCROLLED_INFO scrolledInfo) override
Definition: YiScrollController.h:16
DIRECTION
Definition: YiScrollingView.h:719
virtual void SizeChanged() override
When revealing an item using CYIScrollingView::Reveal or scrolling to an item using CYIScrollingView:...
Definition: YiScrollingView.h:729
void ScrollToVerticalPosition(float fNormalizedPosition, uint32_t uDurationMs, CYITimeInterpolator *pInterpolator=nullptr)
bool IsInVisibleRegion(CYISceneNode *pCandidate) const
virtual void UpdateEnd() override
virtual std::map< CYISceneView *, uint64_t > GetTotalCascadeDelayFor(TIMELINE_TYPE eType, const std::vector< ViewAndDistance > &visibleViews)
CYISignal< bool > HorizontalOverflowChanged
Definition: YiScrollingView.h:712
CYIScrollController provides scrolling behaviour to views.
Definition: YiScrollController.h:37
void ConfigureScrollControllers()
OVERPULL_RULE GetHorizontalOverpullRule() const
float GetVerticalPosition() const
Definition: YiScrollingView.h:151
virtual void OnScrollAuto(CYIScrollController *pController) override
static Magnets CreateEdges(float fBeginningOffset, float fEndOffset)
virtual void OnScrollStarted(CYIScrollController *pController) override
CYISignal< float > HorizontalPositionChanged
Definition: YiScrollingView.h:704
static Magnets CreateBegin(float fBeginningOffset)
virtual void WorldBoundingBoxUpdated() override
void RemoveVerticalMagnets()
No magnet is used.
Definition: YiScrollingView.h:171
CYIScrollController * GetScrollController(DIRECTION eDirection) const
Definition: YiScrollingView.h:181
FOCUS_ROOT_RULE
Definition: YiFocus.h:60
void RemoveHorizontalMagnets()
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
virtual void ChildAdded(CYISceneNode *pChild) override
void SetHorizontalMagnets(const Magnets &magnets)
bool HasHorizontalOverflow() const
void DisableHorizontalScrolling()
void SetHorizontalScrollingEnabled(bool bEnabled)
uint32_t GetCascadeTimelineGroupDelay() const
void EnableVerticalScrolling()
virtual void FocusGainedInDescendants() override
CYISignal< CYISceneNode * > ChildLeftVisibleRegion
Definition: YiScrollingView.h:716
virtual bool HandleEvent(const std::shared_ptr< CYIEventDispatcher > &pEventDispatcher, CYIEvent *pEvent) override
float GetHorizontalOverpullDistance() const
LAYOUT_MODE GetHorizontalScrollingAreaLayoutMode() const
virtual bool Init() override
bool IsCarouseling(DIRECTION eDirection) const
virtual bool HandlesFocusInDescendants() const override
CYISignal VerticalScrollingEnded
Definition: YiScrollingView.h:710
Definition: YiFocus.h:50
virtual void BuildDrawList(std::vector< IYIRenderer::Command > &children, CYIAbstractCameraSceneNode *pCameraToDrawWith=nullptr) override
Definition: YiScrollController.h:45
Definition: YiScrollingView.h:146
void SetCascadeTimelineGroupDelay(uint32_t uDelayMs)
CYISignal HorizontalScrollingBegan
Definition: YiScrollingView.h:701
Two magnets are used (i.e. left and right, or up and down).
Definition: YiScrollingView.h:172
virtual CYIAABB CalculateScrollableRegion() const
Definition: YiScrollingView.h:158
Definition: YiScrollingView.h:166
void DisableMagnetism(CYISceneNode *pChild)
void SetVerticalMagnets(const Magnets &magnets)
float GetVerticalOverpullDistance() const
virtual bool RequestFocus(CYIFocus::FOCUS_DIRECTION eDirection=CYIFocus::FOCUS_FORWARD, CYIFocus::FOCUS_ROOT_RULE eFocusRootRule=CYIFocus::FOCUS_ROOT_DESCENDANTS_UPDATE_CONTEXT, const CYIAABB &previousFocusRect=CYIAABB(), const CYIFocusSearchOptions &options=CYIFocusSearchOptions()) override
const float fBeginningOffset
The beginning offset. Applicable only when eType is MAGNETS_TYPE::MAGNETS_EDGES or MAGNETS_TYPE::MAGN...
Definition: YiScrollingView.h:219
void SetVerticalScrollingEnabled(bool bEnabled)
virtual void ParseProperties()
Magnets GetHorizontalMagnets() const
FOCUS_DIRECTION
Definition: YiFocus.h:44
When revealing an item using CYIScrollingView::Reveal or scrolling to an item using CYIScrollingView:...
Definition: YiScrollingView.h:731
This class represents an Axis-Aligned Bounding Box.
Definition: YiAABB.h:24
uint32_t m_uFocusScrollDuration
Definition: YiScrollingView.h:892
bool IsInExpandedVisibleRegion(CYISceneNode *pCandidate, float fVisibleRegionMultiplier) const
void Reveal(CYISceneNode *pNode, uint32_t uDurationMs, CYITimeInterpolator *pInterpolator=nullptr)
This kind of timeline group will play its children in parallel, possibly with specified offsets (dela...
Definition: YiParallelTimelineGroup.h:21
void SetVerticalCarouselRule(CAROUSEL_RULE eCarouselRule)
Allows users to scroll and pan through content inside.
Definition: YiScrollingView.h:140
virtual void OnChildMovedInVisibleRegion(CYISceneNode *pChild, const glm::vec2 &normalizedPosition)
void SetHorizontalSwipeOneItemEnabled(bool bSwipeOneItem)
Definition: YiPerspectiveCameraSceneNode.h:39
TIMELINE_TYPE
Definition: YiScrollingView.h:163
virtual bool ContainsFocusableDescendant(const CYIFocusSearchOptions &options=CYIFocusSearchOptions()) const override
void ScrollToHorizontalPosition(float fNormalizedPosition, uint32_t uDurationMs, CYITimeInterpolator *pInterpolator=nullptr)
bool operator==(const CYIScrollingView::Magnets &lhs, const CYIScrollingView::Magnets &rhs)
Definition: YiScrollingView.h:1020
void EnableMagnetism(CYISceneNode *pNode)
void ConfigureScrollingRange(DIRECTION eDirection, float fContentSize)
CYISignal< bool > VerticalOverflowChanged
Definition: YiScrollingView.h:713
bool IsMagnetic(const CYISceneNode *pNode) const
virtual void FocusChangedInDescendants() override
virtual CYISceneView * FindNextFocusInDescendants(const CYISceneView *pCurrentFocusView, CYIFocus::FOCUS_DIRECTION eDirection, CYIAABB &screenSpaceFocusRegion, const CYIFocusSearchOptions &options=CYIFocusSearchOptions()) const override
bool IsScrollingHorizontally() const
Signals and slots are a thread-safe and flexible communication framework that will allow various obje...
Definition: YiSignal.h:164
OVERPULL_RULE GetVerticalOverpullRule() const
void SetHorizontalOverpullDistance(float fDistance)
CAROUSEL_RULE GetHorizontalCarouselRule() const
A single end magnet is used (i.e right or down).
Definition: YiScrollingView.h:175
virtual void ChildVisibilityInVisibleRegionChanged(CYISceneNode *pChild, bool bIsInVisibleRegion)
A single begin magnet is used (i.e left or up).
Definition: YiScrollingView.h:174
void SetVerticalOverpullRule(OVERPULL_RULE eRule)
glm::vec2 distanceFromTopLeft
Definition: YiScrollingView.h:740
void SetHorizontalOverpullRule(OVERPULL_RULE eRule)
Stores data related to a user Action event.
Definition: YiActionEvent.h:18
void SetVerticalOverpullDistance(float fDistance)
virtual void OnScrollEnded(CYIScrollController *pController) override
float GetHorizontalTrackpadLeaveFriction() const
void ConfigureOverpull(DIRECTION eDirection, float fViewSize)
virtual void ApplyMeasurements() override
CYISignal VerticalScrollingBegan
Definition: YiScrollingView.h:702