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 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #include <dali/public-api/shader-effects/shader-effect.h>
31 * DistanceFieldEffect is a custom shader effect to achieve distance field on Image actors
33 class DALI_IMPORT_API DistanceFieldEffect : public ShaderEffect
38 * Create an uninitialized DistanceFieldEffect; this can be initialized with DistanceFieldEffect::New()
39 * Calling member functions with an uninitialized Dali::Object is not allowed.
41 DistanceFieldEffect();
46 * This is non-virtual since derived Handle types must not contain data or virtual methods.
48 ~DistanceFieldEffect();
51 * Create an initialized DistanceFieldEffect.
52 * @return A handle to a newly allocated Dali resource.
54 static DistanceFieldEffect New();
57 * Set the shadow state
58 * @param[in] shadowEnable value - true, enable shadow.
59 * @note Shadow cannot be used with glow/and or outline.
61 void SetShadow(bool shadowEnable);
64 * Set the shadow color multiplier (e.g. output RGB)
65 * @param[in] color Shadow color value
67 void SetShadowColor(const Vector4& color);
70 * Set the shadow offset
71 * @param[in] color shadow offset value
73 void SetShadowOffset(const Vector2& color);
77 * @param[in] glowEnable value - true, enable glow.
80 void SetGlow(bool glowEnable);
83 * Set the glow color multiplier (e.g. output RGB)
84 * @param[in] color Glow color value
86 void SetGlowColor(const Vector4& color);
89 * Set the glow boundary factor
90 * @param[in] glowBoundary glow boundary
92 void SetGlowBoundary(float glowBoundary);
95 * Set the outline state
96 * @param[in] outlineEnable value - true, enable outline.
99 void SetOutline(bool outlineEnable);
102 * Set the outline color multiplier (e.g. output RGB)
103 * @param[in] color Outline color value
105 void SetOutlineColor(const Vector4& color);
108 * Sets the outline parameters.
109 * @param[in] outlineParams Thickness of outline. The outline thickness is determined by two parameters.
110 * params[0] (0-1) Specifies the distance field value for the center of the outline.
111 * 0 <= params[0] <= 1
112 * params[1] (0-1) Specifies the softness/width/anti-aliasing of the outlines inner edge.
113 * 0 <= params[0] <= 1
115 void SetOutlineParams(const Vector2& outlineParams);
118 * Set soft edge smoothing
119 * @param[in] smoothing Specify the distance field value for the center of the edge.
122 void SetSmoothingEdge(float smoothing);
125 * Get the name for the outline-enable property
126 * @return A std::string containing the property name
128 const std::string& GetOutlineEnablePropertyName() const;
131 * Get the name for the glow-enable property
132 * @return A std::string containing the property name
134 const std::string& GetGlowEnablePropertyName() const;
137 * Get the name for the shadow-enable property
138 * @return A std::string containing the property name
140 const std::string& GetShadowEnablePropertyName() const;
143 * Get the name for the radius property
144 * @return A std::string containing the property name
146 const std::string& GetColorPropertyName() const;
149 * Get the name for the smoothing property
150 * @return A std::string containing the property name
152 const std::string& GetSmoothingPropertyName() const;
155 * Get the name for the outline color property
156 * @return A std::string containing the property name
158 const std::string& GetOutlineColorPropertyName() const;
161 * Get the name for the outline size property
162 * @return A std::string containing the property name
164 const std::string& GetOutlineSizePropertyName() const;
167 * Get the name for the shadow color property
168 * @return A std::string containing the property name
170 const std::string& GetShadowColorPropertyName() const;
173 * Get the name for the shadow offset property
174 * @return A std::string containing the property name
176 const std::string& GetShadowOffsetPropertyName() const;
179 * Get the name for the glow color property
180 * @return A std::string containing the property name
182 const std::string& GetGlowColorPropertyName() const;
185 * Get the name for the glow boundary property
186 * @return A std::string containing the property name
188 const std::string& GetGlowBoundaryPropertyName() const;
191 DALI_INTERNAL DistanceFieldEffect(ShaderEffect handle);
195 } // namespace Toolkit
199 #endif // __DALI_TOOLKIT_SHADER_EFFECT_SPOT_H__