[dali_2.3.24] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / scrollable / scroll-view / scroll-base-impl.h
index 968e3ab..a64b6a5 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_TOOLKIT_INTERNAL_SCROLL_BASE_H__
-#define __DALI_TOOLKIT_INTERNAL_SCROLL_BASE_H__
+#ifndef DALI_TOOLKIT_INTERNAL_SCROLL_BASE_H
+#define DALI_TOOLKIT_INTERNAL_SCROLL_BASE_H
 
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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.
 
 // EXTERNAL INCLUDES
 // TODO - Replace list with dali-vector.h
-#include <list>
-#include <dali/public-api/animation/active-constraint.h>
 #include <dali/public-api/animation/constraint.h>
+#include <list>
 
 // INTERNAL INCLUDES
 
-#include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h>
 #include <dali-toolkit/internal/controls/scrollable/scrollable-impl.h>
+#include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h>
 
 namespace Dali
 {
-
 namespace Toolkit
 {
-
 namespace Internal
 {
-
 class ScrollBase;
 
-typedef IntrusivePtr<Actor>         ActorPtr;
-typedef std::list<Constraint>               ConstraintStack;
+typedef IntrusivePtr<Actor>   ActorPtr;
+typedef std::list<Constraint> ConstraintStack;
 
 /**
  * ScrollBase represents a set of properties (time, position
@@ -50,7 +46,6 @@ typedef std::list<Constraint>               ConstraintStack;
 class ScrollBase : public Scrollable
 {
 public:
-
   struct ActorInfo : public Dali::RefObject
   {
     /**
@@ -79,8 +74,9 @@ public:
      */
     void ApplyConstraint(Constraint constraint)
     {
-      ActiveConstraint activeConstraint = mActor.ApplyConstraint( constraint );
-      mConstraints.push_back( activeConstraint );
+      Constraint clone = constraint.Clone(mActor);
+      clone.Apply();
+      mConstraints.push_back(clone);
     }
 
     /**
@@ -90,26 +86,25 @@ public:
      */
     void RemoveConstraints()
     {
-      std::vector<ActiveConstraint>::iterator it = mConstraints.begin();
-      std::vector<ActiveConstraint>::iterator end = mConstraints.end();
-      for(;it!=end;++it)
+      std::vector<Constraint>::iterator it  = mConstraints.begin();
+      std::vector<Constraint>::iterator end = mConstraints.end();
+      for(; it != end; ++it)
       {
-        mActor.RemoveConstraint(*it);
+        it->Remove();
       }
       mConstraints.clear();
     }
 
-    Actor mActor;                                     ///< The Actor that this ActorInfo represents.
-    std::vector<ActiveConstraint> mConstraints;       ///< A list keeping track of constraints applied to the actor via this delegate.
+    Actor                   mActor;       ///< The Actor that this ActorInfo represents.
+    std::vector<Constraint> mConstraints; ///< A list keeping track of constraints applied to the actor via this delegate.
   };
 
-  typedef IntrusivePtr<ActorInfo> ActorInfoPtr;
-  typedef std::vector<ActorInfoPtr> ActorInfoContainer;
-  typedef ActorInfoContainer::iterator ActorInfoIter;
+  typedef IntrusivePtr<ActorInfo>            ActorInfoPtr;
+  typedef std::vector<ActorInfoPtr>          ActorInfoContainer;
+  typedef ActorInfoContainer::iterator       ActorInfoIter;
   typedef ActorInfoContainer::const_iterator ActorInfoConstIter;
 
 public:
-
   /**
    * Sets the delay in seconds.
    * This delay affects the animation timing for all
@@ -133,13 +128,12 @@ public:
   }
 
 public:
-
   /**
    * Sets ScrollBase Parent
    *
    * @param[in] parent The parent that this ScrollBase belongs to.
    */
-  void SetParent(ScrollBase *parent);
+  void SetParent(ScrollBaseparent);
 
   /**
    * Bind Actor to this scroll view/group.
@@ -181,43 +175,28 @@ public:
   void RemoveConstraintsFromBoundActors();
 
 protected:
-
   static const char* const SCROLL_DOMAIN_OFFSET_PROPERTY_NAME;
 
 protected:
-
   /**
-   * Construct a new ScrollBase.
+   * Removed default costructor.
    */
-  ScrollBase();
+  ScrollBase() = delete;
 
   /**
-   * 2nd-phase initialization.
+   * @brief Construct a new ScrollBase.
+   *
+   * @param[in] behaviourFlags Flags to enable
    */
-  void RegisterProperties();
+  ScrollBase(ControlBehaviour behaviourFlags);
 
 protected:
-
-  ScrollBase *mParent;                              ///< Pointer to ScrollBase parent, if exists.
-  Property::Index mPropertyTime;                    ///< Scroll Time (0 to animationDuration while animating, otherwise 0)
-  Property::Index mPropertyPrePosition;             ///< Scroll Position ("scroll-position") [function of scroll-x, scroll-y]
-  Property::Index mPropertyPosition;                ///< Scroll Position ("scroll-position") [function of scroll-pre-position]
-  Property::Index mPropertyOvershootX;              ///< Scroll Overshoot ("scroll-overshoot-x") [function of scroll-pre-position, scroll-position]
-  Property::Index mPropertyOvershootY;              ///< Scroll Overshoot ("scroll-overshoot-y") [function of scroll-pre-position, scroll-position]
-  Property::Index mPropertyWrap;                    ///< Scroll Wrap ("scroll-wrap")
-  Property::Index mPropertyPanning;                 ///< Whether we are panning
-  Property::Index mPropertyScrolling;               ///< Whether we are scrolling
-  Property::Index mPropertyFinal;                   ///< Scroll Final Position ("scroll-final") [scroll-position + f(scroll-overshoot)]
-  Property::Index mPropertyDomainOffset;            ///< Scroll Domain Offset ("scroll-domain-offset") keeps track of scroll position as it wraps domains
-  Property::Index mPropertyPositionDelta;           ///< Scroll Position Delta ("scroll-position-delta")
-  Property::Index mPropertyScrollStartPagePosition; ///< Scroll Start Page Position ("scroll-start-page-position")
+  ScrollBase* mParent; ///< Pointer to ScrollBase parent, if exists.
 
 private:
-
-  float mDelay;                             ///< delay in seconds.
-  ConstraintStack mConstraintStack;         ///< The list of constraints to apply to any actors
-  ActorInfoContainer mBoundActors;          ///< The list of actors that have been bound to this ScrollBase.
-
+  float              mDelay;           ///< delay in seconds.
+  ConstraintStack    mConstraintStack; ///< The list of constraints to apply to any actors
+  ActorInfoContainer mBoundActors;     ///< The list of actors that have been bound to this ScrollBase.
 };
 
 } // namespace Internal
@@ -226,4 +205,4 @@ private:
 
 } // namespace Dali
 
-#endif // __DALI_TOOLKIT_INTERNAL_SCROLL_GROUP_H__
+#endif // DALI_TOOLKIT_INTERNAL_SCROLL_BASE_H