9f8b33a07bef9524b9611db8f0ebcbed000d22e3
[platform/core/uifw/dali-toolkit.git] / capi / dali-toolkit / public-api / shader-effects / iris-effect.h
1 #ifndef __DALI_TOOLKIT_SHADER_EFFECT_IRIS_H__
2 #define __DALI_TOOLKIT_SHADER_EFFECT_IRIS_H__
3
4 //
5 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
6 //
7 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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  * @addtogroup CAPI_DALI_FRAMEWORK
22  * @{
23  */
24
25 // INTERNAL INCLUDES
26 #include <dali/dali.h>
27
28 namespace Dali DALI_IMPORT_API
29 {
30
31 namespace Toolkit
32 {
33
34 /**
35  * IrisEffect is a custom shader effect to achieve iris effects in Image actors
36  */
37 class IrisEffect : public ShaderEffect
38 {
39
40 public:
41
42   /**
43    * Create an uninitialized IrisEffect; this can be initialized with IrisEffect::New()
44    * Calling member functions with an uninitialized Dali::Object is not allowed.
45    */
46   IrisEffect();
47
48   /**
49    * Virtual destructor.
50    */
51   virtual ~IrisEffect();
52
53   /**
54    * Create an initialized IrisEffect
55    * @return A handle to a newly allocated Dali resource.
56    */
57   static IrisEffect New();
58
59   /**
60    * Set the radius of the iris effect (in texture coordinate distance,
61    * i.e. 0.0 (no circle) to 1.0 (complete circle), to > 1.0 (extending
62    * outside of texture)
63    *
64    * @note For Atlas Textures results may be unpredictable.
65    *
66    * @param [in] radius The new radius.
67    */
68   void SetRadius(float radius);
69
70   /**
71    * Set the blend factor of the iris effect.
72    *
73    * The lower the value, the larger the blending portion
74    * (between Opaque & Transparent)
75    *
76    * Blending will account for 1 / blendFactor of the radius
77    * of the texture.
78    *
79    * @param [in] value The new blend Factor.
80    */
81   void SetBlendFactor(float value);
82
83   /**
84    * Sets the center point of the iris (in texture coordinates)
85    *
86    * @param[in] center The center point.
87    */
88   void SetCenter( const Vector2& center );
89
90   /**
91    * Get the name for the radius property
92    * which can be used in Animation API's
93    * @return A std::string containing the property name
94    */
95   const std::string& GetRadiusPropertyName() const;
96
97   /**
98    * Get the name for the blend factor property
99    * @return A std::string containing the property name
100    */
101   const std::string& GetBlendFactorPropertyName() const;
102
103   /**
104    * Get the name for the center property
105    * @return A std::string containing the property name
106    */
107   const std::string& GetCenterPropertyName() const;
108
109
110 private: // Not intended for application developers
111   IrisEffect(ShaderEffect handle);
112 };
113
114 }
115 }
116
117 /**
118  * @}
119  */
120 #endif