(ScrollView) Removed unnecessary scale constraints from scroll-view
[platform/core/uifw/dali-toolkit.git] / base / dali-toolkit / internal / controls / scrollable / scroll-connector-impl.h
1 #ifndef __DALI_TOOLKIT_INTERNAL_SCROLL_CONNECTOR_H__
2 #define __DALI_TOOLKIT_INTERNAL_SCROLL_CONNECTOR_H__
3
4 /*
5  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // INTERNAL INCLUDES
22 #include <dali-toolkit/public-api/controls/scrollable/scroll-connector.h>
23
24 namespace Dali
25 {
26
27 namespace Toolkit
28 {
29
30 namespace Internal
31 {
32
33 /**
34  * @copydoc Toolkit::ScrollConnector
35  */
36 class ScrollConnector : public Dali::BaseObject
37 {
38 public:
39
40   typedef Toolkit::ScrollConnector::DomainChangedSignalType DomainChangedSignalType;
41   typedef Toolkit::ScrollConnector::ScrollPositionChangedSignalType ScrollPositionChangedSignalType;
42
43   static const Property::Index SCROLL_POSITION;
44   static const Property::Index OVERSHOOT;
45
46   /**
47    * Create a ScrollConnector.
48    * @return A newly allocated ScrollConnector.
49    */
50   static ScrollConnector* New();
51
52   /**
53    * @copydoc Toolkit::ScrollConnector::SetScrollDomain()
54    */
55   void SetScrollDomain( float min, float max, float length );
56
57   /**
58    * @copydoc Toolkit::ScrollConnector::GetMinLimit()
59    */
60   float GetMinLimit() const
61   {
62     return mMinLimit;
63   }
64
65   /**
66    * @copydoc Toolkit::ScrollConnector::GetMaxLimit()
67    */
68   float GetMaxLimit() const
69   {
70     return mMaxLimit;
71   }
72
73   /**
74    * @copydoc Toolkit::ScrollConnector::GetContentLength()
75    */
76   float GetContentLength() const
77   {
78     return mContentLength;
79   }
80
81   /**
82    * @copydoc Toolkit::ScrollConnector::SetScrollPosition()
83    */
84   void SetScrollPosition( float position );
85
86   /**
87    * @copydoc Toolkit::ScrollConnector::GetScrollPosition()
88    */
89   float GetScrollPosition() const
90   {
91     return mScrollPositionObject.GetProperty<float>( Toolkit::ScrollConnector::SCROLL_POSITION );
92   }
93
94   /**
95    * Signal emitted after the SetScrollPosition() method has been called.
96    */
97   ScrollPositionChangedSignalType& ScrollPositionChangedSignal()
98   {
99     return mScrollPositionChangedSignal;
100   }
101
102   /**
103    * Signal emitted after the SetScrollDomain() method has been called.
104    */
105   DomainChangedSignalType& DomainChangedSignal()
106   {
107     return mDomainChangedSignal;
108   }
109
110   /**
111    * Retrieve the object which provides the "scroll-position" property.
112    * @return The scroll-position object.
113    */
114   Constrainable GetScrollPositionObject() const
115   {
116     return mScrollPositionObject;
117   }
118
119 private:
120
121   /**
122    * Create a new ScrollConnector.
123    */
124   ScrollConnector();
125
126   /**
127    * Virtual destructor
128    */
129   virtual ~ScrollConnector();
130
131   // Undefined
132   ScrollConnector(const ScrollConnector&);
133
134   // Undefined
135   ScrollConnector& operator=(const ScrollConnector& rhs);
136
137 private:
138
139   Constrainable mScrollPositionObject;
140
141   DomainChangedSignalType mDomainChangedSignal;
142   ScrollPositionChangedSignalType mScrollPositionChangedSignal;
143
144   float mMinLimit;
145   float mMaxLimit;
146   float mContentLength;
147 };
148
149 } // namespace Internal
150
151 inline Internal::ScrollConnector& GetImpl(Dali::Toolkit::ScrollConnector& obj)
152 {
153   DALI_ASSERT_ALWAYS(obj);
154
155   Dali::BaseObject& handle = obj.GetBaseObject();
156
157   return static_cast<Internal::ScrollConnector&>(handle);
158 }
159
160 inline const Internal::ScrollConnector& GetImpl(const Dali::Toolkit::ScrollConnector& obj)
161 {
162   DALI_ASSERT_ALWAYS(obj);
163
164   const Dali::BaseObject& handle = obj.GetBaseObject();
165
166   return static_cast<const Internal::ScrollConnector&>(handle);
167 }
168
169 } // namespace Toolkit
170
171 } // namespace Dali
172
173 #endif // __DALI_TOOLKIT_INTERNAL_SCROLL_CONNECTOR_H__