-#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 <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
class ScrollBase : public Scrollable
{
public:
-
struct ActorInfo : public Dali::RefObject
{
/**
*/
void ApplyConstraint(Constraint constraint)
{
- ActiveConstraint activeConstraint = mActor.ApplyConstraint( constraint );
- mConstraints.push_back( activeConstraint );
+ Constraint clone = constraint.Clone(mActor);
+ clone.Apply();
+ mConstraints.push_back(clone);
}
/**
*/
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
}
public:
-
/**
* Sets ScrollBase Parent
*
* @param[in] parent The parent that this ScrollBase belongs to.
*/
- void SetParent(ScrollBase *parent);
+ void SetParent(ScrollBase* parent);
/**
* Bind Actor to this scroll view/group.
void RemoveConstraintsFromBoundActors();
protected:
-
- static const std::string SCROLL_DOMAIN_OFFSET_PROPERTY_NAME;
+ 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 mPropertyScale; ///< Scroll Scale ("scroll-scale")
- 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
} // namespace Dali
-#endif // __DALI_TOOLKIT_INTERNAL_SCROLL_GROUP_H__
+#endif // DALI_TOOLKIT_INTERNAL_SCROLL_BASE_H