2 #ifndef _YI_SCROLL_CONTROLLER_H_ 3 #define _YI_SCROLL_CONTROLLER_H_ 9 class CYIInputInterpreter;
130 void SetSnapBackDur(uint64_t uSnapBackDur);
134 uint64_t GetSnapBackDur()
const;
139 void SetFrictionCoeff(
float fFrictionCoefficient);
143 void SetMaxVelocityCoeff(
float fMaxVelocityCoefficient);
158 void GetDataRange(
float *pStart,
float *pSize)
const;
163 void SetDataRange(
float fDataStart,
float fDataSize,
bool bAnimate =
true);
168 void SetMagnetRules(
bool bSnapBack,
float fSnapBackStart,
float fSnapBackEnd,
float fMaxOutOfRangeStart,
float fMaxOutOfRangeEnd);
175 void SetCarousel(
bool bCarousel);
182 void MoveBy(
float fDelta,
float fEventPos = 0,
bool bAllowOutOfRange =
false,
bool bNotifyListener =
true);
191 void MoveByAnimate(
float fDelta, uint64_t uDur,
CYITimeInterpolator *pInterpolator =
nullptr,
bool bAllowOutOfRange =
true);
200 void MoveToPercentage(
float fPercentage,
bool bNotifyListener =
true);
210 void MoveToPercentageAnimate(
float fPercentage, uint64_t uDur,
CYITimeInterpolator *pInterpolator =
nullptr);
214 void StopScrolling();
218 bool IsScrolling()
const;
222 float GetPctPos()
const;
226 int64_t GetCurrentVelocity()
const;
232 void GetCurrentWindowPos(
float *pStart,
float *pEnd)
const;
238 float GetDataStart()
const;
243 float GetScrollStartPos()
const;
260 void SetPageSize(
float fPageSize,
bool bAlwaysCenterOnPage =
false,
bool bSwipeToNextPage =
false);
266 float GetPageSize()
const;
272 bool GetAlwaysCenterOnPage()
const;
278 int32_t GetCurPage()
const;
285 int32_t GetPageCount()
const;
291 float CalculatePageOffset(int32_t nPage)
const;
297 float CalculateOffsetToNearestPage(
float fMoveBy)
const;
302 float CalculateCenterOffset()
const;
313 virtual float CalculateSnapBackOffset()
const;
318 void GestureStart(
float fPos, uint64_t uEventTimeMs);
322 void GestureMove(
float fPos, uint64_t uEventTimeMs);
326 void GestureEnd(
float fPos, uint64_t uEventTimeMs);
333 void SetDecelerationDuration(uint32_t uDurationMs);
340 virtual uint32_t GetDecelerationDuration()
const;
345 float GetScrollDelta()
const;
350 float GetCompletedScrollDelta()
const;
360 virtual bool AdjustMoveBy(
float *pMoveBy,
const float &fDataEnd)
const;
364 virtual bool AdjustMoveByNoOutOfRange(
float *pMoveBy)
const;
370 virtual bool AdjustMoveByNoOutOfRangeDuringDecelerate(
float *pMoveBy, int32_t nDir);
375 void AnimateMoveBy(
float fDelta, uint64_t uDur,
bool bCanCancel,
CYITimeInterpolator *pInterpolator =
nullptr);
391 bool SnapBack(
bool bAnimate =
true);
396 virtual void OnAnimate(
CYIAnimation *pAnim,
float fDataPosition)
override;
400 virtual void OnAnimationBegin(
CYIAnimation *pAnim)
override;
405 virtual void OnAnimationEnd(
CYIAnimation *pAnim)
override;
411 void StartScroll(
bool bAlreadyScrolling);
426 float GetDataEnd()
const;
433 bool IsOutOfRange(
float fOffset = 0.0f)
const;
438 float CalculateSnapBackOffset(
float fDataStart)
const;
485 #endif // _YI_SCROLL_CONTROLLER_H_
Container for basic interpolator functions.
Definition: YiTimeInterpolator.h:21
#define YI_DISALLOW_COPY_AND_ASSIGN(TypeName)
Delete the copy constructor and assignment operator (and consequently the move constructor as well) ...
Definition: YiPredef.h:114
The base class for an object accessible from script source code.
Definition: YiScriptableObject.h:28
Used to create animations programatically.
Definition: YiAnimation.h:32
Base class used to listen to one or more CYIAnimations as they update over time.
Definition: YiAnimation.h:65