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/dali.h>
24 namespace Dali DALI_IMPORT_API
31 * DistanceFieldEffect is a custom shader effect to achieve distance field on Image actors
33 class 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 virtual ~DistanceFieldEffect();
49 * Create an initialized DistanceFieldEffect.
50 * @return A handle to a newly allocated Dali resource.
52 static DistanceFieldEffect New();
55 * Set the shadow state
56 * @param[in] shadowEnable value - true, enable shadow.
57 * @note Shadow cannot be used with glow/and or outline.
59 void SetShadow(bool shadowEnable);
62 * Set the shadow color multiplier (e.g. output RGB)
63 * @param[in] color Shadow color value
65 void SetShadowColor(const Vector4& color);
68 * Set the shadow offset
69 * @param[in] color shadow offset value
71 void SetShadowOffset(const Vector2& color);
75 * @param[in] glowEnable value - true, enable glow.
78 void SetGlow(bool glowEnable);
81 * Set the glow color multiplier (e.g. output RGB)
82 * @param[in] color Glow color value
84 void SetGlowColor(const Vector4& color);
87 * Set the glow boundary factor
88 * @param[in] glowBoundary glow boundary
90 void SetGlowBoundary(float glowBoundary);
93 * Set the outline state
94 * @param[in] outlineEnable value - true, enable outline.
97 void SetOutline(bool outlineEnable);
100 * Set the outline color multiplier (e.g. output RGB)
101 * @param[in] color Outline color value
103 void SetOutlineColor(const Vector4& color);
106 * Sets the outline parameters.
107 * @param[in] outlineParams Thickness of outline. The outline thickness is determined by two parameters.
108 * params[0] (0-1) Specifies the distance field value for the center of the outline.
109 * 0 <= params[0] <= 1
110 * params[1] (0-1) Specifies the softness/width/anti-aliasing of the outlines inner edge.
111 * 0 <= params[0] <= 1
113 void SetOutlineParams(const Vector2& outlineParams);
116 * Set soft edge smoothing
117 * @param[in] smoothing Specify the distance field value for the center of the edge.
120 void SetSmoothingEdge(float smoothing);
123 * Get the name for the outline-enable property
124 * @return A std::string containing the property name
126 const std::string& GetOutlineEnablePropertyName() const;
129 * Get the name for the glow-enable property
130 * @return A std::string containing the property name
132 const std::string& GetGlowEnablePropertyName() const;
135 * Get the name for the shadow-enable property
136 * @return A std::string containing the property name
138 const std::string& GetShadowEnablePropertyName() const;
141 * Get the name for the radius property
142 * @return A std::string containing the property name
144 const std::string& GetColorPropertyName() const;
147 * Get the name for the smoothing property
148 * @return A std::string containing the property name
150 const std::string& GetSmoothingPropertyName() const;
153 * Get the name for the outline color property
154 * @return A std::string containing the property name
156 const std::string& GetOutlineColorPropertyName() const;
159 * Get the name for the outline size property
160 * @return A std::string containing the property name
162 const std::string& GetOutlineSizePropertyName() const;
165 * Get the name for the shadow color property
166 * @return A std::string containing the property name
168 const std::string& GetShadowColorPropertyName() const;
171 * Get the name for the shadow offset property
172 * @return A std::string containing the property name
174 const std::string& GetShadowOffsetPropertyName() const;
177 * Get the name for the glow color property
178 * @return A std::string containing the property name
180 const std::string& GetGlowColorPropertyName() const;
183 * Get the name for the glow boundary property
184 * @return A std::string containing the property name
186 const std::string& GetGlowBoundaryPropertyName() const;
189 DistanceFieldEffect(ShaderEffect handle);
193 } // namespace Toolkit
197 #endif // __DALI_TOOLKIT_SHADER_EFFECT_SPOT_H__