2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <dali-toolkit-test-suite-utils.h>
19 #include <dali-toolkit/dali-toolkit.h>
23 #include <dali-toolkit/devel-api/shader-effects/alpha-discard-effect.h>
24 #include <dali-toolkit/devel-api/shader-effects/dissolve-effect.h>
25 #include <dali-toolkit/devel-api/shader-effects/distance-field-effect.h>
26 #include <dali-toolkit/devel-api/shader-effects/image-region-effect.h>
27 #include <dali-toolkit/devel-api/shader-effects/motion-blur-effect.h>
28 #include <dali-toolkit/devel-api/shader-effects/motion-stretch-effect.h>
31 using namespace Dali::Toolkit;
33 int UtcDaliCreateAlphaDiscardEffect(void)
35 ToolkitTestApplication application;
37 Property::Map effect = Toolkit::CreateAlphaDiscardEffect();
38 DALI_TEST_CHECK(!effect.Empty());
40 Property::Value* customShaderValue = effect.Find(Toolkit::Visual::Property::SHADER);
41 DALI_TEST_CHECK(customShaderValue);
43 Property::Map customShader;
44 DALI_TEST_CHECK(customShaderValue->Get(customShader));
46 Property::Value* vertexShaderValue = customShader.Find(Visual::Shader::Property::VERTEX_SHADER);
47 DALI_TEST_CHECK(!vertexShaderValue);
49 Property::Value* fragmentShaderValue = customShader.Find(Visual::Shader::Property::FRAGMENT_SHADER);
50 DALI_TEST_CHECK(fragmentShaderValue);
52 std::string fragmentShader;
53 DALI_TEST_CHECK(fragmentShaderValue->Get(fragmentShader));
54 DALI_TEST_CHECK(!fragmentShader.empty());
56 Property::Value* gridXValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_X);
57 DALI_TEST_CHECK(!gridXValue);
59 Property::Value* gridYValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_Y);
60 DALI_TEST_CHECK(!gridYValue);
62 Property::Value* hintsValue = customShader.Find(Visual::Shader::Property::HINTS);
63 DALI_TEST_CHECK(!hintsValue);
68 int UtcDaliCreateDissolveEffect(bool highPrecision)
70 ToolkitTestApplication application;
72 Property::Map effect = Toolkit::CreateDissolveEffect(highPrecision);
73 DALI_TEST_CHECK(!effect.Empty());
75 Property::Value* customShaderValue = effect.Find(Toolkit::Visual::Property::SHADER);
76 DALI_TEST_CHECK(customShaderValue);
78 Property::Map customShader;
79 DALI_TEST_CHECK(customShaderValue->Get(customShader));
81 Property::Value* vertexShaderValue = customShader.Find(Visual::Shader::Property::VERTEX_SHADER);
82 DALI_TEST_CHECK(vertexShaderValue);
84 std::string vertexShader;
85 DALI_TEST_CHECK(vertexShaderValue->Get(vertexShader));
86 DALI_TEST_CHECK(!vertexShader.empty());
88 Property::Value* fragmentShaderValue = customShader.Find(Visual::Shader::Property::FRAGMENT_SHADER);
89 DALI_TEST_CHECK(fragmentShaderValue);
91 std::string fragmentShader;
92 DALI_TEST_CHECK(fragmentShaderValue->Get(fragmentShader));
93 DALI_TEST_CHECK(!fragmentShader.empty());
95 Property::Value* gridXValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_X);
96 DALI_TEST_CHECK(gridXValue);
99 DALI_TEST_CHECK(gridXValue->Get(gridX));
100 DALI_TEST_CHECK(gridX > 1);
102 Property::Value* gridYValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_Y);
103 DALI_TEST_CHECK(gridYValue);
106 DALI_TEST_CHECK(gridYValue->Get(gridY));
107 DALI_TEST_CHECK(gridY > 1);
109 Property::Value* hintsValue = customShader.Find(Visual::Shader::Property::HINTS);
110 DALI_TEST_CHECK(hintsValue);
114 DALI_TEST_CHECK(hintsValue->Get(hints));
115 DALI_TEST_CHECK(hints == Shader::Hint::OUTPUT_IS_TRANSPARENT);
117 Actor actor = Actor::New();
118 Toolkit::DissolveEffectSetCentralLine(actor, Vector2::ONE, Vector2::ONE, 0.0f);
119 DALI_TEST_CHECK(actor.GetPropertyIndex("uPercentage") != Property::INVALID_INDEX);
124 int UtcDaliCreateDissolveEffectHighPrecision(void)
126 return UtcDaliCreateDissolveEffect(true);
129 int UtcDaliCreateDissolveEffectMediumPrecision(void)
131 return UtcDaliCreateDissolveEffect(false);
134 int UtcDaliCreateDissolveEffect(void)
136 ToolkitTestApplication application;
138 Property::Map effect = Toolkit::CreateDistanceFieldEffect();
139 DALI_TEST_CHECK(!effect.Empty());
141 Property::Value* customShaderValue = effect.Find(Toolkit::Visual::Property::SHADER);
142 DALI_TEST_CHECK(customShaderValue);
144 Property::Map customShader;
145 DALI_TEST_CHECK(customShaderValue->Get(customShader));
147 Property::Value* vertexShaderValue = customShader.Find(Visual::Shader::Property::VERTEX_SHADER);
148 DALI_TEST_CHECK(!vertexShaderValue);
150 Property::Value* fragmentShaderValue = customShader.Find(Visual::Shader::Property::FRAGMENT_SHADER);
151 DALI_TEST_CHECK(fragmentShaderValue);
153 std::string fragmentShader;
154 DALI_TEST_CHECK(fragmentShaderValue->Get(fragmentShader));
155 DALI_TEST_CHECK(!fragmentShader.empty());
157 Property::Value* gridXValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_X);
158 DALI_TEST_CHECK(!gridXValue);
160 Property::Value* hintsValue = customShader.Find(Visual::Shader::Property::HINTS);
161 DALI_TEST_CHECK(hintsValue);
165 DALI_TEST_CHECK(hintsValue->Get(hints));
166 DALI_TEST_CHECK(hints == Shader::Hint::OUTPUT_IS_TRANSPARENT);
171 int UtcDaliCreateImageRegionEffect(void)
173 ToolkitTestApplication application;
175 Property::Map effect = Toolkit::CreateImageRegionEffect();
176 DALI_TEST_CHECK(!effect.Empty());
178 Property::Value* customShaderValue = effect.Find(Toolkit::Visual::Property::SHADER);
179 DALI_TEST_CHECK(customShaderValue);
181 Property::Map customShader;
182 DALI_TEST_CHECK(customShaderValue->Get(customShader));
184 Property::Value* vertexShaderValue = customShader.Find(Visual::Shader::Property::VERTEX_SHADER);
185 DALI_TEST_CHECK(vertexShaderValue);
187 std::string vertexShader;
188 DALI_TEST_CHECK(vertexShaderValue->Get(vertexShader));
189 DALI_TEST_CHECK(!vertexShader.empty());
191 Property::Value* fragmentShaderValue = customShader.Find(Visual::Shader::Property::FRAGMENT_SHADER);
192 DALI_TEST_CHECK(!fragmentShaderValue);
194 Property::Value* gridXValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_X);
195 DALI_TEST_CHECK(!gridXValue);
197 Property::Value* gridYValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_Y);
198 DALI_TEST_CHECK(!gridYValue);
200 Property::Value* hintsValue = customShader.Find(Visual::Shader::Property::HINTS);
201 DALI_TEST_CHECK(!hintsValue);
206 int UtcDaliCreateMotionBlurEffect(void)
208 ToolkitTestApplication application;
210 Property::Map effect = Toolkit::CreateMotionBlurEffect();
211 DALI_TEST_CHECK(!effect.Empty());
213 Property::Value* customShaderValue = effect.Find(Toolkit::Visual::Property::SHADER);
214 DALI_TEST_CHECK(customShaderValue);
216 Property::Map customShader;
217 DALI_TEST_CHECK(customShaderValue->Get(customShader));
219 Property::Value* vertexShaderValue = customShader.Find(Visual::Shader::Property::VERTEX_SHADER);
220 DALI_TEST_CHECK(vertexShaderValue);
222 std::string vertexShader;
223 DALI_TEST_CHECK(vertexShaderValue->Get(vertexShader));
224 DALI_TEST_CHECK(!vertexShader.empty());
226 Property::Value* fragmentShaderValue = customShader.Find(Visual::Shader::Property::FRAGMENT_SHADER);
227 DALI_TEST_CHECK(fragmentShaderValue);
229 std::string fragmentShader;
230 DALI_TEST_CHECK(fragmentShaderValue->Get(fragmentShader));
231 DALI_TEST_CHECK(!fragmentShader.empty());
233 Property::Value* gridXValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_X);
234 DALI_TEST_CHECK(gridXValue);
237 DALI_TEST_CHECK(gridXValue->Get(gridX));
238 DALI_TEST_CHECK(gridX > 1);
240 Property::Value* gridYValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_Y);
241 DALI_TEST_CHECK(gridYValue);
244 DALI_TEST_CHECK(gridYValue->Get(gridY));
245 DALI_TEST_CHECK(gridY > 1);
247 Property::Value* hintsValue = customShader.Find(Visual::Shader::Property::HINTS);
248 DALI_TEST_CHECK(hintsValue);
252 DALI_TEST_CHECK(hintsValue->Get(hints));
253 DALI_TEST_CHECK(hints == Shader::Hint::OUTPUT_IS_TRANSPARENT);
255 unsigned int sampleCount(4);
256 Actor actor = Actor::New();
257 Toolkit::SetMotionBlurProperties(actor, sampleCount);
258 DALI_TEST_CHECK(actor.GetPropertyIndex("uBlurTexCoordScale") != Property::INVALID_INDEX);
259 DALI_TEST_CHECK(actor.GetPropertyIndex("uGeometryStretchFactor") != Property::INVALID_INDEX);
260 DALI_TEST_CHECK(actor.GetPropertyIndex("uSpeedScalingFactor") != Property::INVALID_INDEX);
261 DALI_TEST_CHECK(actor.GetPropertyIndex("uObjectFadeStart") != Property::INVALID_INDEX);
262 DALI_TEST_CHECK(actor.GetPropertyIndex("uObjectFadeEnd") != Property::INVALID_INDEX);
263 DALI_TEST_CHECK(actor.GetPropertyIndex("uAlphaScale") != Property::INVALID_INDEX);
264 DALI_TEST_CHECK(actor.GetPropertyIndex("uNumSamples") != Property::INVALID_INDEX);
265 DALI_TEST_CHECK(actor.GetPropertyIndex("uModelLastFrame") != Property::INVALID_INDEX);
270 int UtcDaliCreateMotionStretchEffect(void)
272 ToolkitTestApplication application;
274 Property::Map effect = Toolkit::CreateMotionStretchEffect();
275 DALI_TEST_CHECK(!effect.Empty());
277 Property::Value* customShaderValue = effect.Find(Toolkit::Visual::Property::SHADER);
278 DALI_TEST_CHECK(customShaderValue);
280 Property::Map customShader;
281 DALI_TEST_CHECK(customShaderValue->Get(customShader));
283 Property::Value* vertexShaderValue = customShader.Find(Visual::Shader::Property::VERTEX_SHADER);
284 DALI_TEST_CHECK(vertexShaderValue);
286 std::string vertexShader;
287 DALI_TEST_CHECK(vertexShaderValue->Get(vertexShader));
288 DALI_TEST_CHECK(!vertexShader.empty());
290 Property::Value* fragmentShaderValue = customShader.Find(Visual::Shader::Property::FRAGMENT_SHADER);
291 DALI_TEST_CHECK(fragmentShaderValue);
293 std::string fragmentShader;
294 DALI_TEST_CHECK(fragmentShaderValue->Get(fragmentShader));
295 DALI_TEST_CHECK(!fragmentShader.empty());
297 Property::Value* gridXValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_X);
298 DALI_TEST_CHECK(gridXValue);
301 DALI_TEST_CHECK(gridXValue->Get(gridX));
302 DALI_TEST_CHECK(gridX > 1);
304 Property::Value* gridYValue = customShader.Find(Visual::Shader::Property::SUBDIVIDE_GRID_Y);
305 DALI_TEST_CHECK(gridYValue);
308 DALI_TEST_CHECK(gridYValue->Get(gridY));
309 DALI_TEST_CHECK(gridY > 1);
311 Property::Value* hintsValue = customShader.Find(Visual::Shader::Property::HINTS);
312 DALI_TEST_CHECK(hintsValue);
316 DALI_TEST_CHECK(hintsValue->Get(hints));
317 DALI_TEST_CHECK(hints == Shader::Hint::OUTPUT_IS_TRANSPARENT);
319 Actor actor = Actor::New();
320 Toolkit::SetMotionStretchProperties(actor);
321 DALI_TEST_CHECK(actor.GetPropertyIndex("uGeometryStretchFactor") != Property::INVALID_INDEX);
322 DALI_TEST_CHECK(actor.GetPropertyIndex("uSpeedScalingFactor") != Property::INVALID_INDEX);
323 DALI_TEST_CHECK(actor.GetPropertyIndex("uObjectFadeStart") != Property::INVALID_INDEX);
324 DALI_TEST_CHECK(actor.GetPropertyIndex("uObjectFadeEnd") != Property::INVALID_INDEX);
325 DALI_TEST_CHECK(actor.GetPropertyIndex("uAlphaScale") != Property::INVALID_INDEX);
326 DALI_TEST_CHECK(actor.GetPropertyIndex("uModelLastFrame") != Property::INVALID_INDEX);