1 #ifndef __DALI_TOOLKIT_SHADER_EFFECT_DISTANCEFIELD_H__
2 #define __DALI_TOOLKIT_SHADER_EFFECT_DISTANCEFIELD_H__
5 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
11 // http://floralicense.org/license/
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.
21 #include <dali/dali.h>
23 namespace Dali DALI_IMPORT_API
30 * DistanceFieldEffect is a custom shader effect to achieve distance field on Image actors
32 class DistanceFieldEffect : public ShaderEffect
37 * Create an uninitialized DistanceFieldEffect; this can be initialized with DistanceFieldEffect::New()
38 * Calling member functions with an uninitialized Dali::Object is not allowed.
40 DistanceFieldEffect();
45 virtual ~DistanceFieldEffect();
48 * Create an initialized DistanceFieldEffect.
49 * @return A handle to a newly allocated Dali resource.
51 static DistanceFieldEffect New();
54 * Set the shadow state
55 * @param[in] shadowEnable value - true, enable shadow.
56 * @note Shadow cannot be used with glow/and or outline.
58 void SetShadow(bool shadowEnable);
61 * Set the shadow color multiplier (e.g. output RGB)
62 * @param[in] color Shadow color value
64 void SetShadowColor(const Vector4& color);
67 * Set the shadow offset
68 * @param[in] color shadow offset value
70 void SetShadowOffset(const Vector2& color);
74 * @param[in] glowEnable value - true, enable glow.
77 void SetGlow(bool glowEnable);
80 * Set the glow color multiplier (e.g. output RGB)
81 * @param[in] color Glow color value
83 void SetGlowColor(const Vector4& color);
86 * Set the glow boundary factor
87 * @param[in] glowBoundary glow boundary
89 void SetGlowBoundary(float glowBoundary);
92 * Set the outline state
93 * @param[in] outlineEnable value - true, enable outline.
96 void SetOutline(bool outlineEnable);
99 * Set the outline color multiplier (e.g. output RGB)
100 * @param[in] color Outline color value
102 void SetOutlineColor(const Vector4& color);
105 * Sets the outline parameters.
106 * @param[in] outlineParams Thickness of outline. The outline thickness is determined by two parameters.
107 * params[0] (0-1) Specifies the distance field value for the center of the outline.
108 * 0 <= params[0] <= 1
109 * params[1] (0-1) Specifies the softness/width/anti-aliasing of the outlines inner edge.
110 * 0 <= params[0] <= 1
112 void SetOutlineParams(const Vector2& outlineParams);
115 * Set soft edge smoothing
116 * @param[in] smoothing Specify the distance field value for the center of the edge.
119 void SetSmoothingEdge(float smoothing);
122 * Get the name for the outline-enable property
123 * @return A std::string containing the property name
125 const std::string& GetOutlineEnablePropertyName() const;
128 * Get the name for the glow-enable property
129 * @return A std::string containing the property name
131 const std::string& GetGlowEnablePropertyName() const;
134 * Get the name for the shadow-enable property
135 * @return A std::string containing the property name
137 const std::string& GetShadowEnablePropertyName() const;
140 * Get the name for the radius property
141 * @return A std::string containing the property name
143 const std::string& GetColorPropertyName() const;
146 * Get the name for the smoothing property
147 * @return A std::string containing the property name
149 const std::string& GetSmoothingPropertyName() const;
152 * Get the name for the outline color property
153 * @return A std::string containing the property name
155 const std::string& GetOutlineColorPropertyName() const;
158 * Get the name for the outline size property
159 * @return A std::string containing the property name
161 const std::string& GetOutlineSizePropertyName() const;
164 * Get the name for the shadow color property
165 * @return A std::string containing the property name
167 const std::string& GetShadowColorPropertyName() const;
170 * Get the name for the shadow offset property
171 * @return A std::string containing the property name
173 const std::string& GetShadowOffsetPropertyName() const;
176 * Get the name for the glow color property
177 * @return A std::string containing the property name
179 const std::string& GetGlowColorPropertyName() const;
182 * Get the name for the glow boundary property
183 * @return A std::string containing the property name
185 const std::string& GetGlowBoundaryPropertyName() const;
188 DistanceFieldEffect(ShaderEffect handle);
192 } // namespace Toolkit
196 #endif // __DALI_TOOLKIT_SHADER_EFFECT_SPOT_H__