From 2f87ffbd6ded1a9114f25d05ee31a86c53bdc4bd Mon Sep 17 00:00:00 2001 From: Adeel Kazmi Date: Thu, 16 Oct 2014 09:18:26 +0100 Subject: [PATCH] (ScrollView) Provide a ScrollTo API that allows setting a different alpha function than the default Provided by Matthew Stephenson. Change-Id: I07eec2480b4ae7ece18eee15a54b012c0349a97d --- .../scrollable/scroll-view/scroll-view-impl.cpp | 21 +++++++++---- .../scrollable/scroll-view/scroll-view-impl.h | 15 +++++++-- .../scrollable/scroll-view/scroll-view.cpp | 11 +++++++ .../controls/scrollable/scroll-view/scroll-view.h | 36 ++++++++++++++++++++++ 4 files changed, 75 insertions(+), 8 deletions(-) diff --git a/base/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp b/base/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp index ff6fbb9..1d3b7b1 100644 --- a/base/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp +++ b/base/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp @@ -1208,10 +1208,10 @@ Vector3 ScrollView::GetDomainSize() const void ScrollView::TransformTo(const Vector3& position, DirectionBias horizontalBias, DirectionBias verticalBias) { - TransformTo(position, mSnapDuration, horizontalBias, verticalBias); + TransformTo(position, mSnapDuration, mSnapAlphaFunction, horizontalBias, verticalBias); } -void ScrollView::TransformTo(const Vector3& position, float duration, +void ScrollView::TransformTo(const Vector3& position, float duration, AlphaFunction alpha, DirectionBias horizontalBias, DirectionBias verticalBias) { Actor self( Self() ); @@ -1254,7 +1254,7 @@ void ScrollView::TransformTo(const Vector3& position, float duration, mScrollStartedSignalV2.Emit( currentScrollPosition ); bool animating = AnimateTo(-position, Vector3::ONE * duration, - mSnapAlphaFunction, + alpha, true, horizontalBias, verticalBias, @@ -1290,13 +1290,22 @@ void ScrollView::ScrollTo(const Vector3& position, float duration) ScrollTo(position, duration, DirectionBiasNone, DirectionBiasNone); } +void ScrollView::ScrollTo(const Vector3& position, float duration, AlphaFunction alpha) +{ + ScrollTo(position, duration, alpha, DirectionBiasNone, DirectionBiasNone); +} + void ScrollView::ScrollTo(const Vector3& position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias) { - DALI_LOG_SCROLL_STATE("[0x%X] position[%.2f, %.2f] duration[%.2f]", - this, position.x, position.y, duration, int(horizontalBias), int(verticalBias)); + ScrollTo(position, duration, mSnapAlphaFunction, horizontalBias, verticalBias); +} - TransformTo(position, duration, horizontalBias, verticalBias); +void ScrollView::ScrollTo(const Vector3& position, float duration, AlphaFunction alpha, + DirectionBias horizontalBias, DirectionBias verticalBias) +{ + DALI_LOG_SCROLL_STATE("[0x%X] position[%.2f, %.2f] duration[%.2f]", this, position.x, position.y, duration, int(horizontalBias), int(verticalBias)); + TransformTo(position, duration, alpha, horizontalBias, verticalBias); } void ScrollView::ScrollTo(unsigned int page) diff --git a/base/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h b/base/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h index 5f2569d..ad55741 100644 --- a/base/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h +++ b/base/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h @@ -366,9 +366,9 @@ public: DirectionBias horizontalBias = DirectionBiasNone, DirectionBias verticalBias = DirectionBiasNone); /** - * @copydoc ScrollTo(const Vector3&, float, DirectionBias, DirectionBias) + * @copydoc ScrollTo(const Vector3&, float, AlhpaFunction, DirectionBias, DirectionBias) */ - void TransformTo(const Vector3& position, float duration, + void TransformTo(const Vector3& position, float duration, AlphaFunction alpha, DirectionBias horizontalBias = DirectionBiasNone, DirectionBias verticalBias = DirectionBiasNone); /** @@ -382,12 +382,23 @@ public: void ScrollTo(const Vector3& position, float duration); /** + * @copydoc Toolkit::Scrollable::ScrollTo(const Vector3& position, float duration, AlphaFunction alpha) + */ + void ScrollTo(const Vector3& position, float duration, AlphaFunction alpha); + + /** * @copydoc Toolkit::ScrollView::ScrollTo(const Vector3 &position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias) */ void ScrollTo(const Vector3& position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias); /** + * @copydoc Toolkit::ScrollView::ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha, DirectionBias horizontalBias, DirectionBias verticalBias) + */ + void ScrollTo(const Vector3& position, float duration, AlphaFunction alpha, + DirectionBias horizontalBias, DirectionBias verticalBias); + + /** * @copydoc Toolkit::ScrollView::ScrollTo(unsigned int page) */ void ScrollTo(unsigned int page); diff --git a/base/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.cpp b/base/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.cpp index 30e95d0..5007fdc 100644 --- a/base/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.cpp +++ b/base/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.cpp @@ -541,12 +541,23 @@ void ScrollView::ScrollTo(const Vector3 &position, float duration) GetImpl(*this).ScrollTo(position, duration); } +void ScrollView::ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha) +{ + GetImpl(*this).ScrollTo(position, duration, alpha); +} + void ScrollView::ScrollTo(const Vector3 &position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias) { GetImpl(*this).ScrollTo(position, duration, horizontalBias, verticalBias); } +void ScrollView::ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha, + DirectionBias horizontalBias, DirectionBias verticalBias) +{ + GetImpl(*this).ScrollTo(position, duration, alpha, horizontalBias, verticalBias); +} + void ScrollView::ScrollTo(unsigned int page) { GetImpl(*this).ScrollTo(page); diff --git a/base/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h b/base/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h index e09c8ed..5c04e61 100644 --- a/base/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h +++ b/base/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h @@ -906,6 +906,21 @@ public: void ScrollTo(const Vector3 &position, float duration); /** + * @brief Scrolls View to position specified (contents will scroll to this position) + * + * Position 0,0 is the origin. Increasing X scrolls contents left, while + * increasing Y scrolls contents up. + * - If Rulers have been applied to the axes, then the contents will scroll until + * reaching the domain boundary. + * @note Contents will not snap to ruler snap points. + * + * @param[in] position The position to scroll to. + * @param[in] duration The duration of the animation in seconds + * @param[in] alpha The alpha function to use + */ + void ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha); + + /** * @brief Scrolls View to position specified (contents will scroll to this position). * * Position 0,0 is the origin. Increasing X scrolls contents left, while @@ -926,6 +941,27 @@ public: DirectionBias horizontalBias, DirectionBias verticalBias); /** + * @brief Scrolls View to position specified (contents will scroll to this position) + * + * Position 0,0 is the origin. Increasing X scrolls contents left, while + * increasing Y scrolls contents up. + * - If Rulers have been applied to the axes, then the contents will scroll until + * reaching the domain boundary. + * @note Contents will not snap to ruler snap points. + * Biasing parameters are provided such that in scenarios with 2 or 2x2 pages in + * wrap mode, the application developer can decide whether to scroll left or right + * to get to the target page + * + * @param[in] position The position to scroll to. + * @param[in] duration The duration of the animation in seconds + * @param[in] horizontalBias Whether to bias scrolling to left or right. + * @param[in] verticalBias Whether to bias scrolling to top or bottom. + * @param[in] alpha Alpha function to use + */ + void ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha, + DirectionBias horizontalBias, DirectionBias verticalBias); + + /** * @brief Scrolls View to page currently based on assumption that each page is * "(page) * ScrollViewSize.width, 0". * -- 2.7.4