c96bcdb98934a3be835d6df0207a1587e1242fff
[platform/core/uifw/dali-core.git] / dali / public-api / object / property-input.h
1 #ifndef __DALI_PROPERTY_INPUT_H__
2 #define __DALI_PROPERTY_INPUT_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/public-api/object/property.h>
23
24 namespace Dali
25 {
26
27 struct Vector2;
28 struct Vector3;
29 struct Vector4;
30 class Matrix3;
31 class Matrix;
32 class Quaternion;
33
34 /**
35  * @brief An abstract interface for receiving property values.
36  */
37 class DALI_IMPORT_API PropertyInput
38 {
39 public:
40
41   /**
42    * @brief Virtual destructor.
43    */
44   virtual ~PropertyInput() = 0;
45
46   /**
47    * @brief Query the type of property input.
48    *
49    * @return The property type.
50    */
51   virtual Property::Type GetType() const = 0;
52
53   /**
54    * @brief Retrieve a boolean value.
55    *
56    * @pre GetType() returns Property::BOOLEAN.
57    * @return The boolean value.
58    */
59   virtual const bool& GetBoolean() const = 0;
60
61   /**
62    * @brief Retrieve a float value.
63    *
64    * @pre GetType() returns Property::FLOAT.
65    * @return The float value.
66    */
67   virtual const float& GetFloat() const = 0;
68
69   /**
70    * @brief Retrieve an integer value.
71    *
72    * @pre GetType() returns Property::INTEGER.
73    * @return The integer value.
74    */
75   virtual const int& GetInteger() const = 0;
76
77   /**
78    * @brief Retrieve a Vector2 value.
79    *
80    * @pre GetType() returns Property::VECTOR2.
81    * @return The Vector2 value.
82    */
83   virtual const Vector2& GetVector2() const = 0;
84
85   /**
86    * @brief Retrieve a Vector3 value.
87    *
88    * @pre GetType() returns Property::VECTOR3.
89    * @return The Vector3 value.
90    */
91   virtual const Vector3& GetVector3() const = 0;
92
93   /**
94    * @brief Retrieve a Vector4 value.
95    *
96    * @pre GetType() returns Property::VECTOR4.
97    * @return The Vector4 value.
98    */
99   virtual const Vector4& GetVector4() const = 0;
100
101   /**
102    * @brief Retrieve a Matrix (3x3) value.
103    *
104    * @pre GetType() returns Property::Matrix3.
105    * @return The Matrix value.
106    */
107   virtual const Matrix3& GetMatrix3() const = 0;
108
109   /**
110    * @brief Retrieve a Matrix (4x4) value.
111    *
112    * @pre GetType() returns Property::Matrix4.
113    * @return The Matrix value.
114    */
115   virtual const Matrix& GetMatrix() const = 0;
116
117   /**
118    * @brief Retrieve a Quaternion value.
119    *
120    * @pre GetType() returns Property::Quaternion.
121    * @return The Quaternion value.
122    */
123   virtual const Quaternion& GetQuaternion() const = 0;
124 };
125
126 } // namespace Dali
127
128 #endif // __DALI_PROPERTY_INPUT_H__