[dali_2.3.24] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / controls / scrollable / scroll-view / scroll-view.h
index 0028cd7..76f3e20 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_TOOLKIT_SCROLL_VIEW_H__
-#define __DALI_TOOLKIT_SCROLL_VIEW_H__
+#ifndef DALI_TOOLKIT_SCROLL_VIEW_H
+#define DALI_TOOLKIT_SCROLL_VIEW_H
 
 /*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 namespace Dali
 {
-
 namespace Toolkit
 {
-
 namespace Internal DALI_INTERNAL
 {
 class ScrollView;
@@ -40,18 +38,18 @@ class ScrollView;
  */
 
 /**
- * @brief How axes/rotation or scale are clamped
+ * @brief Enumeration for how axes/rotation or scale are clamped.
  * @SINCE_1_0.0
  */
 enum ClampState
 {
-  NotClamped,   ///< The quantity isn't clamped @SINCE_1_0.0
-  ClampedToMin, ///< The quantity is clamped to the min value @SINCE_1_0.0
-  ClampedToMax  ///< The quantity is clamped to the max value @SINCE_1_0.0
+  NOT_CLAMPED,    ///< The quantity isn't clamped @SINCE_1_9.28
+  CLAMPED_TO_MIN, ///< The quantity is clamped to the min value @SINCE_1_9.28
+  CLAMPED_TO_MAX  ///< The quantity is clamped to the max value @SINCE_1_9.28
 };
 
 /**
- * @brief A 2 dimensional clamp
+ * @brief A 2 dimensional clamp.
  * @SINCE_1_0.0
  */
 struct ClampState2D
@@ -61,49 +59,47 @@ struct ClampState2D
 };
 
 /**
- * @brief The snap type
+ * @brief Enumeration for the snap type.
  * @SINCE_1_0.0
  */
 enum SnapType
 {
-  Snap,  ///< Snap @SINCE_1_0.0
-  Flick  ///< Flick @SINCE_1_0.0
+  SNAP, ///< SNAP @SINCE_1_9.28
+  FLICK ///< FLICK @SINCE_1_9.28
 };
 
 /**
- * @brief DirectionBias types.
+ * @brief Enumeration for DirectionBias types.
  * @SINCE_1_0.0
  */
 enum DirectionBias
 {
-  DirectionBiasLeft  = -1,  ///< Bias scroll snap to Left @SINCE_1_0.0
-  DirectionBiasNone  =  0,  ///< Don't bias scroll snap @SINCE_1_0.0
-  DirectionBiasRight =  1   ///< Bias scroll snap to Right @SINCE_1_0.0
+  DIRECTION_BIAS_LEFT  = -1, ///< Bias scroll snap to Left @SINCE_1_9.28
+  DIRECTION_BIAS_NONE  = 0,  ///< Don't bias scroll snap @SINCE_1_9.28
+  DIRECTION_BIAS_RIGHT = 1   ///< Bias scroll snap to Right @SINCE_1_9.28
 };
 
 /**
  * @brief Used for specifying minimum/maximum extents of a ruler.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API RulerDomain
+class DALI_TOOLKIT_API RulerDomain
 {
 public:
-
   /**
    * @brief Creates Ruler domain allowing a point to traverse between min and max extents.
    *
    * @SINCE_1_0.0
    * @param[in] min Minimum extent (point cannot traverse less than this)
    * @param[in] max Maximum extent (point cannot traverse greater than this)
-   * @param[in] enabled Whether domain has been enabled or not.
+   * @param[in] enabled Whether domain has been enabled or not
    */
   explicit RulerDomain(float min, float max, bool enabled = true);
 
 public:
-
-  float min;    ///< Minimum extent (point cannot traverse less than this)
-  float max;    ///< Maximum extent (point cannot traverse greater than this)
-  bool enabled; ///< Whether domain has been enabled or not.
+  float min;     ///< Minimum extent (point cannot traverse less than this)
+  float max;     ///< Maximum extent (point cannot traverse greater than this)
+  bool  enabled; ///< Whether domain has been enabled or not.
 
   /**
    * @brief Clamps value (x) from (min) to (max).
@@ -112,10 +108,10 @@ public:
    * subject is not a point but a line to that should be clamped.
    *
    * @SINCE_1_0.0
-   * @param[in] x X point to be clamped between (min) and (max) extents.
-   * @param[in] length (optional) The Length of the line from (x) to (x + length) to be clamped.
-   * @param[in] scale Scaling parameter which treats domain as scaled in calculations.
-   * @return The clamped value.
+   * @param[in] x X point to be clamped between (min) and (max) extents
+   * @param[in] length (optional) The Length of the line from (x) to (x + length) to be clamped
+   * @param[in] scale Scaling parameter which treats domain as scaled in calculations
+   * @return The clamped value
    */
   float Clamp(float x, float length = 0.0f, float scale = 1.0f) const;
 
@@ -126,47 +122,49 @@ public:
    * subject is not a point but a line to that should be clamped.
    *
    * @SINCE_1_0.0
-   * @param[in] x X point to be clamped between (min) and (max) extents.
-   * @param[in] length (optional) The Length of the line from (x) to (x + length) to be clamped.
-   * @param[in] scale Scaling parameter which treats domain as scaled in calculations.
-   * @param[out] clamped Whether clamping occured and which size (None, Min or Max)
-   * @return The clamped value.
+   * @param[in] x X point to be clamped between (min) and (max) extents
+   * @param[in] length (optional) The Length of the line from (x) to (x + length) to be clamped
+   * @param[in] scale Scaling parameter which treats domain as scaled in calculations
+   * @param[out] clamped Whether clamping occurred and which size (None, Min or Max)
+   * @return The clamped value
    */
-  float Clamp(float x, float length, float scale, ClampState &clamped) const;
+  float Clamp(float x, float length, float scale, ClampStateclamped) const;
 
   /**
    * @brief Returns (max-min) size of ruler.
    *
    * @SINCE_1_0.0
-   * @return The size of the ruler from min to max.
+   * @return The size of the ruler from min to max
    */
   float GetSize() const;
-
 };
 
 // Forward declare future extension interface
 class RulerExtension;
 
 /**
- * @brief Abstract class to define scroll axes.
+ * @brief Abstracts class to define scroll axes.
  *
- * It can specify whether they are traversable, where their snap
- * points are and their domain.
+ * It can specify whether they are traversable,
+ * where their snap points are and their domain.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API Ruler : public RefObject
+class DALI_TOOLKIT_API Ruler : public RefObject
 {
 public:
-  /// @brief The type of the ruler
-  enum RulerType {
-    Fixed,  ///< A fixed ruler @SINCE_1_0.0
-    Free    ///< A free ruler @SINCE_1_0.0
+  /**
+   * @brief Enumeration for the type of the ruler.
+   * @SINCE_1_0.0
+   */
+  enum RulerType
+  {
+    FIXED, ///< A fixed ruler @SINCE_1_9.28
+    FREE   ///< A free ruler @SINCE_1_9.28
   };
 
 public:
-
   /**
-   * @brief Constructs ruler, default enabled, with limitless domain.
+   * @brief Constructs ruler, enabled by default, with limitless domain.
    * @SINCE_1_0.0
    */
   Ruler();
@@ -175,7 +173,7 @@ public:
    * @brief Snaps (x) in accordance to the ruler settings.
    *
    * @SINCE_1_0.0
-   * @param[in] x The input value on the ruler to be snapped.
+   * @param[in] x The input value on the ruler to be snapped
    * @param[in] bias (optional) The biasing employed for snapping
    * 0 floor input (floor x) "Used for Flick Left"
    * 0.5 round input (floor x + 0.5) "Used for Release"
@@ -197,9 +195,9 @@ public:
    * @param[in] page The page index
    * @param[out] volume The overflow volume when the page exceeds the domain (wrap must be enabled)
    * @param[in] wrap Enable wrap mode
-   * @return The position representing this page point.
+   * @return The position representing this page point
    */
-  virtual float GetPositionFromPage(unsigned int page, unsigned int &volume, bool wrap) const = 0;
+  virtual float GetPositionFromPage(unsigned int page, unsigned intvolume, bool wrap) const = 0;
 
   /**
    * @brief Returns page from position, based on whatever the ruler
@@ -210,7 +208,7 @@ public:
    * @SINCE_1_0.0
    * @param[in] position The position on the domain
    * @param[in] wrap Enable wrap mode
-   * @return The page where this position resides.
+   * @return The page where this position resides
    */
   virtual unsigned int GetPageFromPosition(float position, bool wrap) const = 0;
 
@@ -218,7 +216,7 @@ public:
    * @brief Returns the total number of pages within this Ruler.
    *
    * @SINCE_1_0.0
-   * @return The number of pages in the Ruler.
+   * @return The number of pages in the Ruler
    */
   virtual unsigned int GetTotalPages() const = 0;
 
@@ -228,15 +226,17 @@ public:
    * @SINCE_1_0.0
    * @return The extension interface of the Ruler
    */
-  virtual RulerExtension* GetExtension() { return NULL; }
+  virtual RulerExtension* GetExtension()
+  {
+    return NULL;
+  }
 
 public:
-
   /**
    * @brief Gets the ruler type.
    *
    * @SINCE_1_0.0
-   * @return The ruler type.
+   * @return The ruler type
    */
   Ruler::RulerType GetType() const;
 
@@ -261,20 +261,20 @@ public:
   void Disable();
 
   /**
-   * @brief Sets Domain.
+   * @brief Sets the Domain.
    *
    * @SINCE_1_0.0
-   * @param[in] domain Ruler domain object.
+   * @param[in] domain Ruler domain object
    */
   void SetDomain(RulerDomain domain);
 
   /**
-   * @brief Gets Domain.
+   * @brief Gets the Domain.
    *
    * @SINCE_1_0.0
    * @return The domain
    */
-  const RulerDomain &GetDomain() const;
+  const RulerDomainGetDomain() const;
 
   /**
    * @brief Disables Domain (minimum/maximum extents for this axis).
@@ -289,14 +289,13 @@ public:
    * subject is not a point but a line that should be clamped.
    *
    * @SINCE_1_0.0
-   * @param[in] x X point to be clamped between (min) and (max) extents.
-   * @param[in] length (optional) The Length of the line from (x) to (x + length) to be clamped.
-   * @param[in] scale Scaling parameter which treats domain as scaled in calculations.
-   * @return The clamped value.
+   * @param[in] x X point to be clamped between (min) and (max) extents
+   * @param[in] length (optional) The Length of the line from (x) to (x + length) to be clamped
+   * @param[in] scale Scaling parameter which treats domain as scaled in calculations
+   * @return The clamped value
    */
   float Clamp(float x, float length = 0.0f, float scale = 1.0f) const;
 
-
   /**
    * @brief Clamps value (x) from (min) to (max).
    *
@@ -304,28 +303,28 @@ public:
    * subject is not a point but a line to that should be clamped.
    *
    * @SINCE_1_0.0
-   * @param[in] x X point to be clamped between (min) and (max) extents.
-   * @param[in] length (optional) The Length of the line from (x) to (x + length) to be clamped.
-   * @param[in] scale Scaling parameter which treats domain as scaled in calculations.
-   * @param[out] clamped Whether clamping occured and which size (None, Min or Max)
-   * @return The clamped value.
+   * @param[in] x X point to be clamped between (min) and (max) extents
+   * @param[in] length (optional) The Length of the line from (x) to (x + length) to be clamped
+   * @param[in] scale Scaling parameter which treats domain as scaled in calculations
+   * @param[out] clamped Whether clamping occurred and which size (None, Min or Max)
+   * @return The clamped value
    */
-  float Clamp(float x, float length, float scale, ClampState &clamped) const;
+  float Clamp(float x, float length, float scale, ClampStateclamped) const;
 
   /**
    * @brief Snaps and Clamps (x) in accordance to ruler settings.
    *
    * @SINCE_1_0.0
-   * @param[in] x value to be snapped in accordance to ruler snap value,
-   *            and clamped in accordance to the ruler's domain (if set).
+   * @param[in] x value to be snapped in accordance to ruler snap value,
+   *            and clamped in accordance to the ruler's domain (if set)
    * @param[in] bias (optional) The biasing employed for snapping
    *            0 floor input (floor x) "Used for Flick Left"
    *            0.5 round input (floor x + 0.5) "Used for Release"
    *            1 ceil input (floor x + 1.0) "Used for Flick Right"
    * @param[in] length (optional) The Length of the line from (x) to (x + length)
-   *            to be clamped.
-   * @param[in] scale Scaling parameter which treats domain as scaled in calculations.
-   * @return the clamped value after snapping
+   *            to be clamped
+   * @param[in] scale Scaling parameter which treats domain as scaled in calculations
+   * @return The clamped value after snapping
    */
   float SnapAndClamp(float x, float bias = 0.5f, float length = 0.0f, float scale = 1.0f) const;
 
@@ -333,22 +332,21 @@ public:
    * @brief Snaps and Clamps (x) in accordance to ruler settings.
    *
    * @SINCE_1_0.0
-   * @param[in] x value to be snapped in accordance to ruler snap value,
-   *            and clamped in accordance to the ruler's domain (if set).
+   * @param[in] x value to be snapped in accordance to ruler snap value,
+   *            and clamped in accordance to the ruler's domain (if set)
    * @param[in] bias (optional) The biasing employed for snapping
    * 0 floor input (floor x) "Used for Flick Left"
    * 0.5 round input (floor x + 0.5) "Used for Release"
    * 1 ceil input (floor x + 1.0) "Used for Flick Right"
    * @param[in] length (optional) The Length of the line from (x) to (x + length)
-   * to be clamped.
-   * @param[in] scale Scaling parameter which treats domain as scaled in calculations.
-   * @param[out] clamped Whether clamping occured and which size (None, Min or Max)
+   * to be clamped
+   * @param[in] scale Scaling parameter which treats domain as scaled in calculations
+   * @param[out] clamped Whether clamping occurred and which size (None, Min or Max)
    * @return The clamped value after snapping
    */
-  float SnapAndClamp(float x, float bias, float length, float scale, ClampState &clamped) const;
+  float SnapAndClamp(float x, float bias, float length, float scale, ClampStateclamped) const;
 
 protected:
-
   /**
    * @brief Destructor - A reference counted object may only be deleted by calling Unreference().
    * @SINCE_1_0.0
@@ -356,11 +354,9 @@ protected:
   virtual ~Ruler();
 
 protected:
-
-  RulerType mType;               ///< Type of Ruler (Fixed or Free).
-  bool mEnabled;                 ///< If the ruler is enabled.
-  RulerDomain mDomain;           ///< The domain of the ruler.
-
+  RulerType   mType;    ///< Type of Ruler (FIXED or FREE).
+  bool        mEnabled; ///< If the ruler is enabled.
+  RulerDomain mDomain;  ///< The domain of the ruler.
 };
 
 typedef IntrusivePtr<Ruler> RulerPtr; ///< Pointer to Dali::Toolkit::Ruler object @SINCE_1_0.0
@@ -369,7 +365,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.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API DefaultRuler : public Ruler
+class DALI_TOOLKIT_API DefaultRuler : public Ruler
 {
 public:
   /**
@@ -381,58 +377,58 @@ public:
   /**
    * @copydoc Toolkit::Ruler::Snap
    */
-  virtual float Snap(float x, float bias) const;
+  float Snap(float x, float bias) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetPositionFromPage
    */
-  virtual float GetPositionFromPage(unsigned int page, unsigned int &volume, bool wrap) const;
+  float GetPositionFromPage(unsigned int page, unsigned int& volume, bool wrap) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetPageFromPosition
    */
-  virtual unsigned int GetPageFromPosition(float position, bool wrap) const;
+  unsigned int GetPageFromPosition(float position, bool wrap) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetTotalPages
    */
-  virtual unsigned int GetTotalPages() const;
+  unsigned int GetTotalPages() const override;
 };
 
 /**
  * @brief Concrete implementation of Ruler that has fixed snapping.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API FixedRuler : public Ruler
+class DALI_TOOLKIT_API FixedRuler : public Ruler
 {
 public:
   /**
-   * @brief Constructor
+   * @brief Constructor.
    *
    * @SINCE_1_0.0
-   * @param[in] spacing The spacing between each interval on this ruler.
+   * @param[in] spacing The spacing between each interval on this ruler
    */
   FixedRuler(float spacing = 1.0f);
 
   /**
    * @copydoc Toolkit::Ruler::Snap
    */
-  virtual float Snap(float x, float bias) const;
+  float Snap(float x, float bias) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetPositionFromPage
    */
-  virtual float GetPositionFromPage(unsigned int page, unsigned int &volume, bool wrap) const;
+  float GetPositionFromPage(unsigned int page, unsigned int& volume, bool wrap) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetPageFromPosition
    */
-  virtual unsigned int GetPageFromPosition(float position, bool wrap) const;
+  unsigned int GetPageFromPosition(float position, bool wrap) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetTotalPages
    */
-  virtual unsigned int GetTotalPages() const;
+  unsigned int GetTotalPages() const override;
 
 private:
   float mSpacing; ///< The spacing between each interval
@@ -451,94 +447,269 @@ class ScrollView;
  * | snap-started      | @ref SnapStartedSignal()   |
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API ScrollView : public Scrollable
+class DALI_TOOLKIT_API ScrollView : public Scrollable
 {
-
 public:
-
   /**
-   * @brief Clamp signal event's data
+   * @brief Clamps signal event's data.
    * @SINCE_1_0.0
    */
   struct ClampEvent
   {
-    ClampState2D scale;       ///< Clamp information for scale axes
-    ClampState2D position;    ///< Clamp information for position axes
-    ClampState   rotation;    ///< Clamp information for rotation
+    ClampState2D scale;    ///< Clamp information for scale axes
+    ClampState2D position; ///< Clamp information for position axes
+    ClampState   rotation; ///< Clamp information for rotation
   };
 
   /**
-   * @brief Snap signal event's data.
+   * @brief Snaps signal event's data.
    * @SINCE_1_0.0
    */
   struct SnapEvent
   {
-    SnapType type;    ///< Current snap commencing
-    Vector2 position; ///< Target snap position
-    float duration;   ///< Duration of snap animation.
+    SnapType type;     ///< Current snap commencing
+    Vector2  position; ///< Target snap position
+    float    duration; ///< Duration of snap animation.
   };
 
   /**
-   * @brief The start and end property ranges for this control.
+   * @brief Enumeration for the start and end property ranges for this control.
    * @SINCE_1_0.0
    */
   enum PropertyRange
   {
-    PROPERTY_START_INDEX = Toolkit::Scrollable::PROPERTY_END_INDEX + 1,                        ///< @SINCE_1_1.18
-    PROPERTY_END_INDEX =   PROPERTY_START_INDEX + 1000,                                        ///< Reserve property indices, @SINCE_1_1.18
+    PROPERTY_START_INDEX = Toolkit::Scrollable::PROPERTY_END_INDEX + 1, ///< @SINCE_1_1.18
+    PROPERTY_END_INDEX   = PROPERTY_START_INDEX + 1000,                 ///< Reserve property indices, @SINCE_1_1.18
 
     ANIMATABLE_PROPERTY_START_INDEX = Toolkit::Scrollable::ANIMATABLE_PROPERTY_END_INDEX + 1,
-    ANIMATABLE_PROPERTY_END_INDEX   = ANIMATABLE_PROPERTY_START_INDEX + 1000                   ///< Reserve animatable property indices @SINCE_1_0.0
+    ANIMATABLE_PROPERTY_END_INDEX   = ANIMATABLE_PROPERTY_START_INDEX + 1000 ///< Reserve animatable property indices @SINCE_1_0.0
   };
 
   /**
-   * @brief An enumeration of properties belonging to the ScrollView class.
+   * @brief Enumeration for the instance of properties belonging to the ScrollView class.
    * @SINCE_1_0.0
    */
   struct Property
   {
     /**
-     * @brief An enumeration of properties belonging to the ScrollView class.
+     * @brief Enumeration for the instance of properties belonging to the ScrollView class.
      * @SINCE_1_0.0
      */
     enum
     {
-      // Event side properties
-      WRAP_ENABLED = PROPERTY_START_INDEX,               ///< Property, name "wrapEnabled",              @see SetWrapMode(),                 type bool,     @SINCE_1_1.18
-      PANNING_ENABLED,                                   ///< Property, name "panningEnabled",           @see SetScrollSensitive(),          type bool,     @SINCE_1_1.18
-      AXIS_AUTO_LOCK_ENABLED,                            ///< Property, name "axisAutoLockEnabled",      @see SetAxisAutoLock(),             type bool,     @SINCE_1_1.18
-      WHEEL_SCROLL_DISTANCE_STEP,                        ///< Property, name "wheelScrollDistanceStep",  @see SetWheelScrollDistanceStep(),  type Vector2,  @SINCE_1_1.18
-
-      SCROLL_POSITION = ANIMATABLE_PROPERTY_START_INDEX, ///< Property, name "scrollPosition",            type Vector2 @SINCE_1_0.0
-      SCROLL_PRE_POSITION,                               ///< Property, name "scrollPrePosition",         type Vector2 @SINCE_1_0.0
-      SCROLL_PRE_POSITION_X,                             ///< Property, name "scrollPrePositionX",        type float @SINCE_1_0.0
-      SCROLL_PRE_POSITION_Y,                             ///< Property, name "scrollPrePositionY",        type float @SINCE_1_0.0
-      SCROLL_PRE_POSITION_MAX,                           ///< Property, name "scrollPrePositionMax",      type Vector2 @SINCE_1_0.0
-      SCROLL_PRE_POSITION_MAX_X,                         ///< Property, name "scrollPrePositionMaxX",     type float @SINCE_1_0.0
-      SCROLL_PRE_POSITION_MAX_Y,                         ///< Property, name "scrollPrePositionMaxY",     type float @SINCE_1_0.0
-      OVERSHOOT_X,                                       ///< Property, name "overshootX",                type float @SINCE_1_0.0
-      OVERSHOOT_Y,                                       ///< Property, name "overshootY",                type float @SINCE_1_0.0
-      SCROLL_FINAL,                                      ///< Property, name "scrollFinal",               type Vector2 @SINCE_1_0.0
-      SCROLL_FINAL_X,                                    ///< Property, name "scrollFinalX",              type float @SINCE_1_0.0
-      SCROLL_FINAL_Y,                                    ///< Property, name "scrollFinalY",              type float @SINCE_1_0.0
-      WRAP,                                              ///< Property, name "wrap",                      type bool @SINCE_1_0.0
-      PANNING,                                           ///< Property, name "panning",                   type bool @SINCE_1_0.0
-      SCROLLING,                                         ///< Property, name "scrolling",                 type bool @SINCE_1_0.0
-      SCROLL_DOMAIN_SIZE,                                ///< Property, name "scrollDomainSize",          type Vector2 @SINCE_1_0.0
-      SCROLL_DOMAIN_SIZE_X,                              ///< Property, name "scrollDomainSizeX",         type float @SINCE_1_0.0
-      SCROLL_DOMAIN_SIZE_Y,                              ///< Property, name "scrollDomainSizeY",         type float @SINCE_1_0.0
-      SCROLL_DOMAIN_OFFSET,                              ///< Property, name "scrollDomainOffset",        type Vector2 @SINCE_1_0.0
-      SCROLL_POSITION_DELTA,                             ///< Property, name "scrollPositionDelta",       type Vector2 @SINCE_1_0.0
-      START_PAGE_POSITION                                ///< Property, name "startPagePosition",         type Vector3 @SINCE_1_0.0
+      ///////////////////////////////////////////////////////////////////////////////
+      // Event side (non-animatable) properties
+      ///////////////////////////////////////////////////////////////////////////////
+
+      /**
+       * @brief Whether wrapping is enabled.
+       * @details Name "wrapEnabled", type Property::BOOLEAN.
+       * @SINCE_1_1.18
+       * @see SetWrapMode()
+       */
+      WRAP_ENABLED = PROPERTY_START_INDEX,
+
+      /**
+       * @brief Whether panning is enabled.
+       * @details Name "panningEnabled", type Property::BOOLEAN.
+       * @SINCE_1_1.18
+       * @see SetScrollSensitive()
+       */
+      PANNING_ENABLED,
+
+      /**
+       * @brief Whether the Axis Auto Lock mode for panning within the ScrollView is enabled.
+       * @details Name "axisAutoLockEnabled", type Property::BOOLEAN.
+       * @SINCE_1_1.18
+       * @see SetAxisAutoLock()
+       */
+      AXIS_AUTO_LOCK_ENABLED,
+
+      /**
+       * @brief The step of scroll distance in actor coordinates for each wheel event received in free panning mode.
+       * @details Name "wheelScrollDistanceStep", type Property::VECTOR2.
+       * @SINCE_1_1.18
+       * @see SetWheelScrollDistanceStep()
+       */
+      WHEEL_SCROLL_DISTANCE_STEP,
+
+      /**
+       * @brief The scroll mode.
+       * @details Name "scrollMode", type Property::MAP.
+       * The scroll mode map is a frontend for the Ruler helper class, containing the following keys:
+       *
+       * | %Property Name       | Type     | Required | Description                                                                                                                           |
+       * |----------------------|----------|----------|---------------------------------------------------------------------------------------------------------------------------------------|
+       * | xAxisScrollEnabled   | BOOLEAN  | No       | True if the content can be scrolled in X axis or false if not.                                                                        |
+       * | xAxisSnapToInterval  | FLOAT    | No       | When set, causes scroll view to snap to multiples of the value of the interval in the X axis while flicking. (by default no snapping) |
+       * | xAxisScrollBoundary  | FLOAT    | No       | When set, causes scroll view unable to scroll beyond the value of the boundary in the X axis (by default no boundary)                 |
+       * | yAxisScrollEnabled   | BOOLEAN  | No       | True if the content can be scrolled in Y axis or false if not.                                                                        |
+       * | yAxisSnapToInterval  | FLOAT    | No       | When set, causes scroll view to snap to multiples of the value of the interval in the Y axis while flicking. (by default no snapping) |
+       * | yAxisScrollBoundary  | FLOAT    | No       | When set, causes scroll view unable to scroll beyond the value of the boundary in the Y axis (by default no boundary)                 |
+       *
+       * Alternatively, one can use the keys defined in the Dali::Toolkit::ScrollMode::Type enumeration.
+       * @SINCE_1_2.60
+       */
+      SCROLL_MODE,
+
+      ///////////////////////////////////////////////////////////////////////////////
+      // Animatable Properties
+      ///////////////////////////////////////////////////////////////////////////////
+
+      /**
+       * @brief The current scroll position.
+       * @details Name "scrollPosition", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_POSITION = ANIMATABLE_PROPERTY_START_INDEX,
+
+      /**
+       * @brief The position before we set the clamp at scroll boundaries.
+       * @details Name "scrollPrePosition", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION,
+
+      /**
+       * @brief The X component of SCROLL_PRE_POSITION.
+       * @details Name "scrollPrePositionX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_X,
+
+      /**
+       * @brief The Y component of SCROLL_PRE_POSITION.
+       * @details Name "scrollPrePositionY", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_Y,
+
+      /**
+       * @brief The maximum value that SCROLL_PRE_POSITION can be.
+       * @details Name "scrollPrePositionMax", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_MAX,
+
+      /**
+       * @brief The X component of SCROLL_PRE_POSITION_MAX.
+       * @details Name "scrollPrePositionMaxX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_MAX_X,
+
+      /**
+       * @brief The Y component of SCROLL_PRE_POSITION_MAX.
+       * @details Name "scrollPrePositionMaxY", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_MAX_Y,
+
+      /**
+       * @brief The amount that we can scroll beyond the boundary along the X axis.
+       * @details Name "overshootX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      OVERSHOOT_X,
+
+      /**
+       * @brief The amount that we can scroll beyond the boundary along the Y axis.
+       * @details Name "overshootY", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      OVERSHOOT_Y,
+
+      /**
+       * @brief The position after the overshoot value has been considered in the calculation.
+       * @details Name "scrollFinal", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_FINAL,
+
+      /**
+       * @brief The X component of SCROLL_FINAL.
+       * @details Name "scrollFinalX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_FINAL_X,
+
+      /**
+       * @brief The Y component of SCROLL_FINAL.
+       * @details Name "scrollFinalY", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_FINAL_Y,
+
+      /**
+       * @brief Whether scrolling wraps.
+       * @details Name "wrap", type Property::BOOLEAN.
+       * @SINCE_1_0.0
+       */
+      WRAP,
+
+      /**
+       * @brief Whether we are currently panning.
+       * @details Name "panning", type Property::BOOLEAN.
+       * @SINCE_1_0.0
+       */
+      PANNING,
+
+      /**
+       * @brief Whether we are currently scrolling.
+       * @details Name "scrolling", type Property::BOOLEAN.
+       * @SINCE_1_0.0
+       */
+      SCROLLING,
+
+      /**
+       * @brief The size of the scrolling domain.
+       * @details Name "scrollDomainSize", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_DOMAIN_SIZE,
+
+      /**
+       * @brief The X component of SCROLL_DOMAIN_SIZE.
+       * @details Name "scrollDomainSizeX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_DOMAIN_SIZE_X,
+
+      /**
+       * @brief The Y component of SCROLL_DOMAIN_SIZE.
+       * @details Name "scrollDomainSizeY", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_DOMAIN_SIZE_Y,
+
+      /**
+       * @brief The offset of the scroll domain.
+       * @details Name "scrollDomainOffset", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_DOMAIN_OFFSET,
+
+      /**
+       * @brief The delta in the position when scrolling.
+       * @details Name "scrollPositionDelta", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_POSITION_DELTA,
+
+      /**
+       * @brief The starting page position.
+       * @details Name "startPagePosition", type Property::VECTOR3.
+       * @SINCE_1_0.0
+       */
+      START_PAGE_POSITION,
     };
   };
 
   // Typedefs
 
-  typedef Signal< void ( const SnapEvent& ) > SnapStartedSignalType; ///< SnapStarted signal type @SINCE_1_0.0
+  typedef Signal<void(const SnapEvent&)> SnapStartedSignalType; ///< SnapStarted signal type @SINCE_1_0.0
 
 public:
-
   /**
    * @brief Creates an empty ScrollView handle.
    * @SINCE_1_0.0
@@ -551,9 +722,17 @@ public:
    * Creates another handle that points to the same real object.
    *
    * @SINCE_1_0.0
-   * @param[in] handle to copy from
+   * @param[in] handle Handle to copy from
+   */
+  ScrollView(const ScrollView& handle);
+
+  /**
+   * @brief Move constructor
+   * @SINCE_1_9.23
+   *
+   * @param[in] rhs A reference to the moved handle
    */
-  ScrollView( const ScrollView& handle );
+  ScrollView(ScrollView&& rhs) noexcept;
 
   /**
    * @brief Assignment operator.
@@ -563,10 +742,19 @@ public:
    * @param[in] handle The handle to copy from
    * @return A reference to this
    */
-  ScrollView& operator=( const ScrollView& handle );
+  ScrollView& operator=(const ScrollView& handle);
 
   /**
-   * @brief Destructor
+   * @brief Move assignment
+   * @SINCE_1_9.23
+   *
+   * @param[in] rhs A reference to the moved handle
+   * @return A reference to this
+   */
+  ScrollView& operator=(ScrollView&& rhs) noexcept;
+
+  /**
+   * @brief Destructor.
    *
    * This is non-virtual since derived Handle types must not contain data or virtual methods.
    * @SINCE_1_0.0
@@ -574,56 +762,55 @@ public:
   ~ScrollView();
 
   /**
-   * @brief Create an initialized ScrollView.
+   * @brief Creates an initialized ScrollView.
    *
    * @SINCE_1_0.0
-   * @return A handle to a newly allocated Dali resource.
+   * @return A handle to a newly allocated Dali resource
    */
   static ScrollView New();
 
   /**
-   * @brief Downcast a handle to ScrollView handle.
+   * @brief Downcasts a handle to ScrollView handle.
    *
-   * If handle points to a ScrollView the downcast produces valid
-   * handle. If not the returned handle is left uninitialized.
+   * If handle points to a ScrollView, the downcast produces valid handle.
+   * If not, the returned handle is left uninitialized.
    *
    * @SINCE_1_0.0
    * @param[in] handle Handle to an object
    * @return A handle to a ScrollView or an uninitialized handle
    */
-  static ScrollView DownCast( BaseHandle handle );
+  static ScrollView DownCast(BaseHandle handle);
 
 public:
-
   /**
-   * @brief Get snap-animation's AlphaFunction.
+   * @brief Gets snap-animation's AlphaFunction.
    *
    * @SINCE_1_0.0
-   * @return Current easing alpha function of the snap animation.
+   * @return Current easing alpha function of the snap animation
    */
   AlphaFunction GetScrollSnapAlphaFunction() const;
 
   /**
-   * @brief Set snap-animation's AlphaFunction.
+   * @brief Sets snap-animation's AlphaFunction.
    *
    * @SINCE_1_0.0
-   * @param[in] alpha Easing alpha function of the snap animation.
+   * @param[in] alpha Easing alpha function of the snap animation
    */
   void SetScrollSnapAlphaFunction(AlphaFunction alpha);
 
   /**
-   * @brief Get flick-animation's AlphaFunction.
+   * @brief Gets flick-animation's AlphaFunction.
    *
    * @SINCE_1_0.0
-   * @return Current easing alpha function of the flick animation.
+   * @return Current easing alpha function of the flick animation
    */
   AlphaFunction GetScrollFlickAlphaFunction() const;
 
   /**
-   * @brief Set flick-animation's AlphaFunction.
+   * @brief Sets flick-animation's AlphaFunction.
    *
    * @SINCE_1_0.0
-   * @param[in] alpha Easing alpha function of the flick animation.
+   * @param[in] alpha Easing alpha function of the flick animation
    */
   void SetScrollFlickAlphaFunction(AlphaFunction alpha);
 
@@ -633,7 +820,7 @@ public:
    * This animation occurs when the user drags, and releases.
    *
    * @SINCE_1_0.0
-   * @return The time in seconds for the animation to take.
+   * @return The time in seconds for the animation to take
    */
   float GetScrollSnapDuration() const;
 
@@ -643,7 +830,7 @@ public:
    * This animation occurs when the user drags, and releases.
    *
    * @SINCE_1_0.0
-   * @param[in] time The time in seconds for the animation to take.
+   * @param[in] time The time in seconds for the animation to take
    */
   void SetScrollSnapDuration(float time);
 
@@ -653,7 +840,7 @@ public:
    * This animation occurs when the user flicks scroll view.
    *
    * @SINCE_1_0.0
-   * @return The time in seconds for the animation to take.
+   * @return The time in seconds for the animation to take
    */
   float GetScrollFlickDuration() const;
 
@@ -663,12 +850,12 @@ public:
    * This animation occurs when the user flicks scroll view.
    *
    * @SINCE_1_0.0
-   * @param[in] time The time in seconds for the animation to take.
+   * @param[in] time The time in seconds for the animation to take
    */
   void SetScrollFlickDuration(float time);
 
   /**
-   * @brief Set X axis ruler.
+   * @brief Sets X axis ruler.
    *
    * Defines how scrolling horizontally is snapped, and
    * the boundary (domain) in which the ScrollView can pan.
@@ -679,7 +866,7 @@ public:
   void SetRulerX(RulerPtr ruler);
 
   /**
-   * @brief Set Y axis ruler.
+   * @brief Sets Y axis ruler.
    *
    * Defines how scrolling vertically is snapped, and the boundary
    * (domain) in which the ScrollView can pan.
@@ -690,18 +877,18 @@ public:
   void SetRulerY(RulerPtr ruler);
 
   /**
-   * @brief Set scroll sensibility of pan gesture.
+   * @brief Sets scroll sensitivity of pan gesture.
    *
    * @SINCE_1_0.0
-   * @param[in] sensitive true to enable scroll, false to disable scrolling
-   * @note Unlike Actor::SetSensitive(), this determines whether this ScrollView
-   * should react (e.g. pan), without disrupting the sensitivity of it's children.
+   * @param[in] sensitive @c true to enable scroll, @c false to disable scrolling
+   * @note Unlike Actor::Property::SENSITIVE, this determines whether this ScrollView
+   * should react (e.g. pan), without disrupting the sensitivity of its children.
    *
    */
   void SetScrollSensitive(bool sensitive);
 
   /**
-   * @brief Set maximum overshoot amount.
+   * @brief Sets maximum overshoot amount.
    *
    * The final overshoot value is within 0.0f to 1.0f, but the maximum
    * overshoot is in pixels (e.g. if you scroll 75 pixels beyond the
@@ -715,19 +902,19 @@ public:
   void SetMaxOvershoot(float overshootX, float overshootY);
 
   /**
-   * @brief Set Snap Overshoot animation's AlphaFunction.
+   * @brief Sets Snap Overshoot animation's AlphaFunction.
    *
    * @SINCE_1_0.0
-   * @param[in] alpha Easing alpha function of the overshoot snap animation.
+   * @param[in] alpha Easing alpha function of the overshoot snap animation
    */
   void SetSnapOvershootAlphaFunction(AlphaFunction alpha);
 
   /**
-   * @brief Set Snap Overshoot animation's Duration.
+   * @brief Sets Snap Overshoot animation's Duration.
    *
    * @SINCE_1_0.0
-   * @param[in] duration The duration of the overshoot snap animation.
-   * @note Set duration to 0 seconds, to disable Animation.
+   * @param[in] duration The duration of the overshoot snap animation
+   * @note Set duration to 0 seconds to disable Animation.
    *
    */
   void SetSnapOvershootDuration(float duration);
@@ -750,7 +937,7 @@ public:
    * When enabled, the ScrollView contents are wrapped over the X/Y Domain.
    *
    * @SINCE_1_0.0
-   * @param[in] enable Enables (true), or disables (false) Wrap Mode.
+   * @param[in] enable Enables (true), or disables (false) Wrap Mode
    * @note You must apply a position constraint that causes Wrapping
    * to all children.
    *
@@ -780,7 +967,7 @@ public:
    * @brief Returns state of Axis Auto Lock mode.
    *
    * @SINCE_1_0.0
-   * @return Whether Axis Auto Lock mode has been enabled or not.
+   * @return Whether Axis Auto Lock mode has been enabled or not
    */
   bool GetAxisAutoLock() const;
 
@@ -792,7 +979,7 @@ public:
    * only panning, until the pan gesture has completed.
    *
    * @SINCE_1_0.0
-   * @param[in] enable Enables (true), or disables (false) AxisAutoLock mode.
+   * @param[in] enable Enables (true), or disables (false) AxisAutoLock mode
    */
   void SetAxisAutoLock(bool enable);
 
@@ -801,7 +988,7 @@ public:
    * should be locked to the Horizontal or Vertical axis.
    *
    * @SINCE_1_0.0
-   * @return The gradient, a value between 0.0 and 1.0f.
+   * @return The gradient, a value between 0.0 and 1.0f
    */
   float GetAxisAutoLockGradient() const;
 
@@ -809,13 +996,13 @@ public:
    * @brief Sets the gradient threshold at which a panning gesture should be locked to the
    * Horizontal or Vertical axis.
    *
-   * By default this is 0.36 (0.36:1) which means angles less than 20
+   * By default, this is 0.36 (0.36:1) which means angles less than 20
    * degrees to an axis will lock to that axis.
    *
    * @SINCE_1_0.0
    * @param[in] gradient A value between 0.0 and 1.0 (auto-lock for all angles)
    * @note Specifying a value of 1.0 (the maximum value accepted) indicates that
-   * all panning gestures will auto-lock. Either to the horizontal or vertical axis.
+   * all panning gestures will auto-lock either to the horizontal or vertical axis.
    *
    */
   void SetAxisAutoLockGradient(float gradient);
@@ -827,7 +1014,7 @@ public:
    * This is a value in stage-diagonals per second^2.
    * stage-diagonal = Length( stage.width, stage.height )
    * @SINCE_1_0.0
-   * @return Friction coefficient is returned.
+   * @return Friction coefficient is returned
    */
   float GetFrictionCoefficient() const;
 
@@ -842,7 +1029,7 @@ public:
    * Friction coefficient of 1.0 means the swipe velocity will
    * reduce by 1.0 * 933 pixels/sec^2.
    * @SINCE_1_0.0
-   * @param[in] friction Friction coefficient, must be greater than 0.0 (default = 1.0)
+   * @param[in] friction Friction coefficient must be greater than 0.0 (default = 1.0)
    */
   void SetFrictionCoefficient(float friction);
 
@@ -854,7 +1041,7 @@ public:
    * flick velocity to determine the actual velocity at
    * which to move the scrolling area.
    * @SINCE_1_0.0
-   * @return The flick speed coefficient is returned.
+   * @return The flick speed coefficient is returned
    */
   float GetFlickSpeedCoefficient() const;
 
@@ -866,7 +1053,7 @@ public:
    * flick velocity to determine the actual velocity at
    * which to move the scrolling area.
    * @SINCE_1_0.0
-   * @param[in] speed The flick speed coefficient (default = 1.0).
+   * @param[in] speed The flick speed coefficient (default = 1.0)
    */
   void SetFlickSpeedCoefficient(float speed);
 
@@ -881,12 +1068,12 @@ public:
   /**
    * @brief Sets the minimum pan distance required for a flick in pixels.
    *
-   * Takes a Vector2 containing separate x and y values. As long as the pan distance exceeds one of these axes a flick will be allowed.
+   * Takes a Vector2 containing separate x and y values. As long as the pan distance exceeds one of these axes, a flick will be allowed.
    *
    * @SINCE_1_0.0
    * @param[in] distance The minimum pan distance for a flick
    */
-  void SetMinimumDistanceForFlick( const Vector2& distance );
+  void SetMinimumDistanceForFlick(const Vector2& distance);
 
   /**
    * @brief Returns the minimum pan speed required for a flick gesture in pixels per second.
@@ -902,7 +1089,7 @@ public:
    * @SINCE_1_0.0
    * @param[in] speed The minimum pan speed for a flick
    */
-  void SetMinimumSpeedForFlick( float speed );
+  void SetMinimumSpeedForFlick(float speed);
 
   /**
    * @brief Gets the maximum flick speed setting for ScrollView when
@@ -935,7 +1122,7 @@ public:
    * each wheel event received in free panning mode.
    *
    * @SINCE_1_0.0
-   * @return The step of scroll distance(pixel) in X and Y axes.
+   * @return The step of scroll distance(pixel) in X and Y axes
    */
   Vector2 GetWheelScrollDistanceStep() const;
 
@@ -944,7 +1131,7 @@ public:
    * each wheel event received in free panning mode.
    *
    * @SINCE_1_0.0
-   * @param[in] step The step of scroll distance(pixel) in X and Y axes.
+   * @param[in] step The step of scroll distance(pixel) in X and Y axes
    *
    * @note If snap points are defined in the rulers, it will always
    * scroll to the next snap point towards the scroll direction while
@@ -956,8 +1143,8 @@ public:
   /**
    * @brief Retrieves current scroll position.
    *
-   * @returns The current scroll position.
    * @SINCE_1_0.0
+   * @return The current scroll position
    */
   Vector2 GetCurrentScrollPosition() const;
 
@@ -970,7 +1157,7 @@ public:
    * @SINCE_1_0.0
    * @note Pages start from 0 as the first page, not 1.
    *
-   * @returns The Current page.
+   * @return The Current page
    */
   unsigned int GetCurrentPage() const;
 
@@ -982,7 +1169,7 @@ public:
    * - If Rulers have been applied to the axes, then the contents will scroll until
    * reaching the domain boundary.
    * @SINCE_1_0.0
-   * @param[in] position The position to scroll to.
+   * @param[in] position The position to scroll to
    * @note Contents will not snap to ruler snap points.
    *
    */
@@ -996,7 +1183,7 @@ public:
    * - If Rulers have been applied to the axes, then the contents will scroll until
    * reaching the domain boundary.
    * @SINCE_1_0.0
-   * @param[in] position The position to scroll to.
+   * @param[in] position The position to scroll to
    * @param[in] duration The duration of the animation in seconds
    * @note Contents will not snap to ruler snap points.
    *
@@ -1011,7 +1198,7 @@ public:
    * - If Rulers have been applied to the axes, then the contents will scroll until
    * reaching the domain boundary.
    * @SINCE_1_0.0
-   * @param[in] position The position to scroll to.
+   * @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
    * @note Contents will not snap to ruler snap points.
@@ -1027,18 +1214,17 @@ public:
    * - If Rulers have been applied to the axes, then the contents will scroll until
    * reaching the domain boundary.
    * @SINCE_1_0.0
-   * @param[in] position The position to scroll to.
+   * @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] horizontalBias Whether to bias scrolling to left or right
+   * @param[in] verticalBias Whether to bias scrolling to top or bottom
    * @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.
    *
    */
-  void ScrollTo(const Vector2& position, float duration,
-                DirectionBias horizontalBias, DirectionBias verticalBias);
+  void ScrollTo(const Vector2& position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias);
 
   /**
    * @brief Scrolls View to position specified (contents will scroll to this position).
@@ -1048,10 +1234,10 @@ public:
    * - If Rulers have been applied to the axes, then the contents will scroll until
    * reaching the domain boundary.
    * @SINCE_1_0.0
-   * @param[in] position The position to scroll to.
+   * @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] 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
    * @note Contents will not snap to ruler snap points.
    * Biasing parameters are provided such that in scenarios with 2 or 2x2 pages in
@@ -1059,15 +1245,14 @@ public:
    * to get to the target page.
    *
    */
-  void ScrollTo(const Vector2& position, float duration, AlphaFunction alpha,
-                DirectionBias horizontalBias, DirectionBias verticalBias);
+  void ScrollTo(const Vector2& 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".
    *
    * @SINCE_1_0.0
-   * @param[in] page to scroll to
+   * @param[in] page The page to scroll to
    * @note Should probably be upgraded so that page is an abstract class, that can be
    * a function of ScrollViewSize, ruler domain, ruler snap points etc. as pages may be
    * orchestrated in a 2D grid fashion, or variable width.
@@ -1080,7 +1265,7 @@ public:
    * "(page) * ScrollViewSize.width, 0".
    *
    * @SINCE_1_0.0
-   * @param[in] page to scroll to
+   * @param[in] page The page to scroll to
    * @param[in] duration The duration of the animation in seconds
    * @note Should probably be upgraded so that page is an abstract class, that can be
    * a function of ScrollViewSize, ruler domain, ruler snap points etc. as pages may be
@@ -1094,9 +1279,9 @@ public:
    * "(page) * ScrollViewSize.width, 0".
    *
    * @SINCE_1_0.0
-   * @param[in] page to scroll to
+   * @param[in] page The page to scroll to
    * @param[in] duration The duration of the animation in seconds
-   * @param[in] bias Whether to bias scrolling to left or right.
+   * @param[in] bias Whether to bias scrolling to left or right
    * @note Should probably be upgraded so that page is an abstract class, that can be
    * a function of ScrollViewSize, ruler domain, ruler snap points etc. as pages may be
    * orchestrated in a 2D grid fashion, or variable width.
@@ -1111,7 +1296,7 @@ public:
    * @brief Scrolls View such that actor appears in the center of the ScrollView.
    *
    * @SINCE_1_0.0
-   * @param[in] actor The actor to center in on (via Scrolling).
+   * @param[in] actor The actor to center in on (via Scrolling)
    * @note Actor must be a direct child of ScrollView, otherwise will
    * cause an assertion failure.
    */
@@ -1121,7 +1306,7 @@ public:
    * @brief Scrolls View such that actor appears in the center of the ScrollView.
    *
    * @SINCE_1_0.0
-   * @param[in] actor The actor to center in on (via Scrolling).
+   * @param[in] actor The actor to center in on (via Scrolling)
    * @param[in] duration The duration of the animation in seconds
    * @note Actor must be a direct child of ScrollView, otherwise will
    * cause an assertion failure.
@@ -1134,7 +1319,7 @@ public:
    * If already at snap points, then will return false, and not scroll.
    *
    * @SINCE_1_0.0
-   * @return True if Snapping necessary.
+   * @return True if Snapping necessary
    */
   bool ScrollToSnapPoint();
 
@@ -1157,7 +1342,7 @@ public:
   void RemoveConstraintsFromChildren();
 
   /**
-   * @brief Apply Effect to ScrollView.
+   * @brief Applies Effect to ScrollView.
    *
    * @SINCE_1_0.0
    * @param[in] effect The effect to apply to scroll view
@@ -1165,10 +1350,10 @@ public:
   void ApplyEffect(ScrollViewEffect effect);
 
   /**
-   * @brief Remove Effect from ScrollView.
+   * @brief Removes Effect from ScrollView.
    *
    * @SINCE_1_0.0
-   * @param[in] effect The effect to remove.
+   * @param[in] effect The effect to remove
    */
   void RemoveEffect(ScrollViewEffect effect);
 
@@ -1185,16 +1370,16 @@ public:
    * that ScrollView's properties.
    *
    * @SINCE_1_0.0
-   * @param[in] child The actor to add to this ScrollView.
+   * @param[in] child The actor to add to this ScrollView
    */
   void BindActor(Actor child);
 
   /**
-   * @brief Unbind Actor from this ScrollView.
+   * @brief Unbinds Actor from this ScrollView.
    *
    * Once Unbound, this ScrollView will not affect the actor.
    * @SINCE_1_0.0
-   * @param[in] child The actor to be unbound.
+   * @param[in] child The actor to be unbound
    * @note This does not remove the child from the ScrollView container
    *
    */
@@ -1206,22 +1391,21 @@ public:
    * @SINCE_1_0.0
    * @param[in] direction The axis to constrain the scroll-view to.
    *                      Usually set to PanGestureDetector::DIRECTION_VERTICAL or PanGestureDetector::DIRECTION_HORIZONTAL (but can be any other angle if desired).
-   * @param[in] threshold The threshold to apply around the axis.
+   * @param[in] threshold The threshold to apply around the axis
    * @note If no threshold is specified, then the default threshold of PI * 0.25 radians (or 45 degrees) is used.
    */
-  void SetScrollingDirection( Radian direction, Radian threshold = PanGestureDetector::DEFAULT_THRESHOLD );
+  void SetScrollingDirection(Radian direction, Radian threshold = PanGestureDetector::DEFAULT_THRESHOLD);
 
   /**
-   * @brief Remove a direction constraint from the scroll view.
+   * @brief Removes a direction constraint from the scroll view.
    *
    * @SINCE_1_0.0
    * @param[in] direction The axis to stop constraining to.
    *                      Usually will be PanGestureDetector::DIRECTION_VERTICAL or PanGestureDetector::DIRECTION_HORIZONTAL (but can be any other angle if desired).
    */
-  void RemoveScrollingDirection( Radian direction );
+  void RemoveScrollingDirection(Radian direction);
 
 public: // Signals
-
   /**
    * @brief Signal emitted when the ScrollView has started to snap or flick (it tells the target
    * position, scale, rotation for the snap or flick).
@@ -1231,19 +1415,18 @@ public: // Signals
    *   void YourCallbackName(const SnapEvent& event);
    * @endcode
    * @SINCE_1_0.0
-   * @return The signal to connect to.
+   * @return The signal to connect to
    * @pre The Object has been initialized.
    */
   SnapStartedSignalType& SnapStartedSignal();
 
 public: // Not intended for application developers
-
   /// @cond internal
   /**
    * @brief Creates a handle using the Toolkit::Internal implementation.
    *
    * @SINCE_1_0.0
-   * @param[in]  implementation  The Control implementation.
+   * @param[in] implementation The Control implementation
    */
   DALI_INTERNAL ScrollView(Internal::ScrollView& implementation);
 
@@ -1251,9 +1434,9 @@ public: // Not intended for application developers
    * @brief Allows the creation of this Control from an Internal::CustomActor pointer.
    *
    * @SINCE_1_0.0
-   * @param[in]  internal  A pointer to the internal CustomActor.
+   * @param[in] internal A pointer to the internal CustomActor
    */
-  explicit DALI_INTERNAL ScrollView( Dali::Internal::CustomActor* internal );
+  explicit DALI_INTERNAL ScrollView(Dali::Internal::CustomActor* internal);
   /// @endcond
 };
 
@@ -1264,4 +1447,4 @@ public: // Not intended for application developers
 
 } // namespace Dali
 
-#endif // __DALI_TOOLKIT_SCROLL_VIEW_H__
+#endif // DALI_TOOLKIT_SCROLL_VIEW_H