Revert "Remove ScrollViewCustomEffect"
[platform/core/uifw/dali-toolkit.git] / base / dali-toolkit / public-api / controls / scrollable / scroll-view / scroll-view.h
index e09c8ed..6c8d935 100644 (file)
@@ -21,7 +21,7 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/scrollable/scrollable.h>
 
-namespace Dali DALI_IMPORT_API
+namespace Dali
 {
 
 namespace Toolkit
@@ -54,7 +54,7 @@ enum DirectionBias
 /**
  * @brief Used for specifying minimum/maximum extents of a ruler.
  */
-class RulerDomain
+class DALI_IMPORT_API RulerDomain
 {
 public:
 
@@ -115,7 +115,7 @@ public:
  * It can specify whether they are traversable, where their snap
  * points are and their domain.
  */
-class Ruler : public RefObject
+class DALI_IMPORT_API Ruler : public RefObject
 {
 public:
   /// @brief The type of the ruler
@@ -304,7 +304,7 @@ typedef IntrusivePtr<Ruler> RulerPtr; ///< Pointer to Dali::Toolkit::Ruler objec
 /**
  * @brief Concrete implementation of Ruler that has no snapping and has one single page.
  */
-class DefaultRuler : public Ruler
+class DALI_IMPORT_API DefaultRuler : public Ruler
 {
 public:
   /**
@@ -336,7 +336,7 @@ public:
 /**
  * @brief Concrete implementation of Ruler that has fixed snapping.
  */
-class FixedRuler : public Ruler
+class DALI_IMPORT_API FixedRuler : public Ruler
 {
 public:
   /**
@@ -377,7 +377,7 @@ class ScrollView;
  * @brief ScrollView contains actors that can be scrolled manually (via touch)
  * or automatically.
  */
-class ScrollView : public Scrollable
+class DALI_IMPORT_API ScrollView : public Scrollable
 {
 public:
   /// Page effect types
@@ -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".
    *
@@ -1083,14 +1119,14 @@ public: // Not intended for application developers
    *
    * @param[in]  implementation  The Control implementation.
    */
-  ScrollView(Internal::ScrollView& implementation);
+  DALI_INTERNAL ScrollView(Internal::ScrollView& implementation);
 
   /**
    * @brief Allows the creation of this Control from an Internal::CustomActor pointer.
    *
    * @param[in]  internal  A pointer to the internal CustomActor.
    */
-  ScrollView( Dali::Internal::CustomActor* internal );
+  explicit DALI_INTERNAL ScrollView( Dali::Internal::CustomActor* internal );
 };
 
 } // namespace Toolkit