Revert "Remove ScrollViewCustomEffect"
[platform/core/uifw/dali-toolkit.git] / base / dali-toolkit / public-api / controls / scrollable / scroll-view / scroll-view.h
index e0d0e4b..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
@@ -594,30 +594,6 @@ public:
   void SetRulerY(RulerPtr ruler);
 
   /**
-   * @brief Set Scale-X axis ruler.
-   *
-   * Defines how scaling horizontally is snapped, and the extent
-   * (domain) to which scaling can be performed e.g. 10% to 200%
-   *
-   * @param[in] ruler The ruler to be used for the Scale-X axis
-   *
-   * @deprecated Scaling not supported
-   */
-  void SetRulerScaleX(RulerPtr ruler);
-
-  /**
-   * @brief Set Scale-Y axis ruler.
-   *
-   * Defines how scaling vertically is snapped, and the extent
-   * (domain) to which scaling can be performed e.g. 10% to 200%
-   *
-   * @param[in] ruler The ruler to be used for the Scale-Y axis
-   *
-   * @deprecated Scaling not supported
-   */
-  void SetRulerScaleY(RulerPtr ruler);
-
-  /**
    * @brief Set Scroll's touch sensitivity.
    *
    * @note Unlike SetSensitive(), this determines whether this ScrollView
@@ -698,28 +674,6 @@ public:
   void SetWrapMode(bool enable);
 
   /**
-   * @deprecated
-   * @brief Gets the current refresh interval in milliseconds.
-   *
-   * @return Current refresh interval in milliseconds
-   */
-  int GetRefreshInterval() const;
-
-  /**
-   * @deprecated
-   * @brief Sets the refresh interval in milliseconds.
-   *
-   * The refresh interval is a notification signal
-   * (SignalScrollUpdate), that is periodically fired when scrolling
-   * animation is occuring.
-   *
-   * When set to 0. No update signals are sent.
-   *
-   * @param[in] milliseconds The frequency of the event in milliseconds
-   */
-  void SetRefreshInterval(int milliseconds);
-
-  /**
    * @brief Gets the current distance needed to scroll for ScrollUpdatedSignal to be emitted
    *
    * @return Current scroll update distance
@@ -913,15 +867,6 @@ public:
   void SetScrollPosition(const Vector3& position);
 
   /**
-   * @brief Retrieves current scroll scale.
-   *
-   * @returns The current scroll scale.
-   *
-   * @deprecated Scaling not supported
-   */
-  Vector3 GetCurrentScrollScale() const;
-
-  /**
    * @brief Retrieves current scroll page based on ScrollView
    * dimensions being the size of one page, and all pages laid out in
    * a grid fashion, increasing from left to right until the end of
@@ -934,30 +879,34 @@ public:
   unsigned int GetCurrentPage() const;
 
   /**
-   * @brief Transforms View to position, scale and rotation specified.
+   * @brief Scrolls View to position specified (contents will scroll to this position).
    *
-   * @param[in] position The position to transform to.
-   * @param[in] scale The scale to transform to.
-   * @param[in] rotation The rotation to transform to.
+   * 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.
    *
-   * @deprecated Scaling or rotation not supported, use ScrollTo(const Vector3&)
+   * @param[in] position The position to scroll to.
    */
-  void TransformTo(const Vector3& position, const Vector3& scale, float rotation);
+  void ScrollTo(const Vector3 &position);
 
   /**
-   * @brief Transforms View to position, scale and rotation specified in the duration specified.
+   * @brief Scrolls View to position specified (contents will scroll to this position).
    *
-   * @param[in] position The position to transform to.
-   * @param[in] scale The scale to transform to.
-   * @param[in] rotation The rotation to transform to.
-   * @param[in] duration The duration for this animation in seconds.
+   * 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.
    *
-   * @deprecated Scaling or rotation not supported, use ScrollTo(const Vector3&, float)
+   * @param[in] position The position to scroll to.
+   * @param[in] duration The duration of the animation in seconds
    */
-  void TransformTo(const Vector3& position, const Vector3& scale, float rotation, float duration);
+  void ScrollTo(const Vector3 &position, float duration);
 
   /**
-   * @brief Scrolls View to position specified (contents will scroll to this position).
+   * @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.
@@ -966,8 +915,10 @@ public:
    * @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);
+  void ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha);
 
   /**
    * @brief Scrolls View to position specified (contents will scroll to this position).
@@ -977,14 +928,20 @@ public:
    * - 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.
    */
-  void ScrollTo(const Vector3 &position, float duration);
+  void ScrollTo(const Vector3 &position, float duration,
+                DirectionBias horizontalBias, DirectionBias verticalBias);
 
   /**
-   * @brief Scrolls View to position specified (contents will scroll to this position).
+   * @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.
@@ -999,8 +956,9 @@ public:
    * @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,
+  void ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha,
                 DirectionBias horizontalBias, DirectionBias verticalBias);
 
   /**
@@ -1074,25 +1032,6 @@ public:
   bool ScrollToSnapPoint();
 
   /**
-   * @brief Scales View to (scale).
-   *
-   * @param[in] scale The scale factor the animate to.
-   *
-   * @deprecated Scaling not supported
-   */
-  void ScaleTo(const Vector3& scale);
-
-  /**
-   * @brief Scales View to (scale).
-   *
-   * @param[in] scale The scale factor the animate to.
-   * @param[in] duration The duration of the animation in seconds.
-   *
-   * @deprecated Scaling not supported
-   */
-  void ScaleTo(const Vector3& scale, float duration);
-
-  /**
    * @brief Applies a constraint that will affect the children of ScrollView.
    *
    * @note this affects all existing and future Actors that are added to scrollview.
@@ -1180,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