24983d83aa63762f03241b47c80171a6c3422b4f
[platform/core/uifw/dali-core.git] / dali / public-api / actors / image-actor.h
1 #ifndef __DALI_IMAGE_ACTOR_H__
2 #define __DALI_IMAGE_ACTOR_H__
3
4 /*
5  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
6  *
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
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
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 // EXTERNAL INCLUDES
22 #include <string>
23
24 // INTERNAL INCLUDES
25 #include <dali/public-api/actors/actor.h>
26 #include <dali/public-api/math/rect.h>
27 #include <dali/public-api/images/image.h>
28 #include <dali/public-api/shader-effects/shader-effect.h>
29 #include <dali/public-api/actors/blending.h>
30 #include <dali/public-api/actors/sampling.h>
31
32 namespace Dali
33 {
34 /**
35  * @addtogroup dali_core_actors
36  * @{
37  */
38
39 namespace Internal DALI_INTERNAL
40 {
41 class ImageActor;
42 }
43
44 /**
45  * @DEPRECATED_1_1.11 Use an actor with renderer instead.
46  * @brief An actor for displaying images.
47  *
48  * Allows the developer to add an actor to stage which displays the content of an Image object.
49  *
50  * By default ImageActor can be viewed from all angles.
51  *
52  * If an ImageActor is created without setting size, then the actor takes the size of the image -
53  * this is the natural size.
54  * Setting a size on the ImageActor, e.g through the @ref Actor::SetSize api or through an animation will
55  * stop the natural size being used.
56  *
57  * @SINCE_1_0.0
58  * @remarks This is an experimental feature and might not be supported in the next release. We do recommend not to use it. Use of ImageActor should be avoided unless shader effects need to be applied.
59  */
60 class DALI_IMPORT_API ImageActor : public Actor
61 {
62 public:
63
64   /**
65    * @brief An enumeration of properties belonging to the ImageActor class
66    * @SINCE_1_0.0
67    * @remarks This is an experimental feature and might not be supported in the next release.
68    * We do recommend not to use it.
69    */
70   struct Property
71   {
72     enum
73     {
74       /**
75        * @brief name "pixelArea",   type Rect<int>
76        * @SINCE_1_0.0
77        * @remarks This is an experimental feature and might not be supported in the next release.
78        * We do recommend not to use it.
79        */
80       PIXEL_AREA = DEFAULT_DERIVED_ACTOR_PROPERTY_START_INDEX,
81       /**
82        * @DEPRECATED_1_1.11
83        * @brief name "style",       type std::string
84        * @SINCE_1_0.0
85        * @remarks This is an experimental feature and might not be supported in the next release.
86        * We do recommend not to use it.
87        */
88       STYLE,
89       /**
90        * @DEPRECATED_1_1.11
91        * @brief name "border",      type Vector4
92        * @SINCE_1_0.0
93        * @remarks This is an experimental feature and might not be supported in the next release.
94        * We do recommend not to use it.
95        */
96       BORDER,
97       /**
98        * @brief name "image",       type Map {"filename":"", "loadPolicy":...}
99        * @SINCE_1_0.0
100        * @remarks This is an experimental feature and might not be supported in the next release.
101        * We do recommend not to use it.
102        */
103       IMAGE,
104     };
105   };
106
107   /**
108    * @DEPRECATED_1_1.11. Only quad style supported.
109    *
110    * @brief Style determines how the Image is rendered.
111    *
112    * STYLE_QUAD:
113    *
114    *  0---------2           0-----------------2
115    *  |        /|           |                /|
116    *  |  A    / |           |      A       /  |
117    *  |      /  |           |            /    |
118    *  |     /   | SCALE (X) |          /      |
119    *  |    /    | --------> |        /        |
120    *  |   /     |           |      /          |
121    *  |  /      |           |    /            |
122    *  | /    B  |           |  /        B     |
123    *  |/        |           |/                |
124    *  1---------3           1-----------------3
125    *
126    * Image is rendered as a textured rectangle. The texture
127    * is scaled uniformly as the quad is resized.
128    *
129    * @SINCE_1_0.0
130    * @remarks This is an experimental feature and might not be supported in the next release.
131    * We do recommend not to use it.
132    */
133   enum Style
134   {
135     /**
136      * @DEPRECATED_1_1.11
137      * @brief As a simple quad.
138      * @SINCE_1_0.0
139      * @remarks This is an experimental feature and might not be supported in the next release.
140      * We do recommend not to use it.
141      */
142     STYLE_QUAD,
143     /**
144      * @DEPRECATED_1_1.11
145      * @brief As a nine-patch.
146      * @SINCE_1_0.0
147      * @remarks This is an experimental feature and might not be supported in the next release.
148      * We do recommend not to use it.
149      */
150     STYLE_NINE_PATCH,
151     /**
152      * @DEPRECATED_1_1.11
153      * @brief As a nine-patch without center section being rendered.
154      * @SINCE_1_0.0
155      * @remarks This is an experimental feature and might not be supported in the next release.
156      * We do recommend not to use it.
157      */
158     STYLE_NINE_PATCH_NO_CENTER
159   };
160
161   /**
162    * @brief Pixel area is relative to the top-left (0,0) of the image.
163    * @SINCE_1_0.0
164    * @remarks This is an experimental feature and might not be supported in the next release.
165    * We do recommend not to use it.
166    */
167   typedef Rect<int> PixelArea;
168
169   static const BlendingMode::Type DEFAULT_BLENDING_MODE; ///< default value is BlendingMode::AUTO
170
171   /**
172    * @brief Create an uninitialized ImageActor handle.
173    *
174    * This can be initialized with ImageActor::New(...).
175    * Calling member functions with an uninitialized ImageActor handle is not allowed.
176    * @SINCE_1_0.0
177    * @remarks This is an experimental feature and might not be supported in the next release.
178    * We do recommend not to use it.
179    */
180   ImageActor();
181
182   /**
183    * @brief Create an empty image actor object.
184    *
185    * @SINCE_1_0.0
186    * @remarks This is an experimental feature and might not be supported in the next release.
187    * We do recommend not to use it.
188    * @return A handle to a newly allocated actor.
189    */
190   static ImageActor New();
191
192   /**
193    * @brief Create a image actor object.
194    *
195    * The actor will take the image's natural size unless a custom size
196    * is chosen, e.g. via Actor:SetSize().
197    * If the handle is empty, ImageActor will display nothing.
198    * @SINCE_1_0.0
199    * @remarks This is an experimental feature and might not be supported in the next release.
200    * We do recommend not to use it.
201    * @param[in] image The image to display.
202    * @return A handle to a newly allocated actor.
203    * @pre ImageActor must be initialized.
204    */
205   static ImageActor New(Image image);
206
207   /**
208    * @brief Create a image actor object.
209    *
210    * The actor will take the image's natural size unless a custom size
211    * is chosen, e.g. via Actor:SetSize().
212    * If the handle is empty, ImageActor will display nothing.
213    * @SINCE_1_0.0
214    * @remarks This is an experimental feature and might not be supported in the next release.
215    * We do recommend not to use it.
216    * @param [in] image The image to display.
217    * @param [in] pixelArea The area of the image to display.
218    * This in pixels, relative to the top-left (0,0) of the image.
219    * @return A handle to a newly allocated actor.
220    * @pre ImageActor must be initialized.
221    */
222   static ImageActor New(Image image, PixelArea pixelArea);
223
224   /**
225    * @brief Downcast a handle to ImageActor handle.
226    *
227    *
228    * If handle points to a ImageActor the downcast produces valid
229    * handle. If not the returned handle is left uninitialized.
230    *
231    * @SINCE_1_0.0
232    * @remarks This is an experimental feature and might not be supported in the next release.
233    * We do recommend not to use it.
234    * @param[in] handle Handle to an object
235    * @return Handle to a ImageActor or an uninitialized handle
236    */
237   static ImageActor DownCast( BaseHandle handle );
238
239   /**
240    * @brief Destructor
241    *
242    * This is non-virtual since derived Handle types must not contain data or virtual methods.
243    * @SINCE_1_0.0
244    * @remarks This is an experimental feature and might not be supported in the next release.
245    * We do recommend not to use it.
246    */
247   ~ImageActor();
248
249   /**
250    * @brief Copy constructor
251    *
252    * @SINCE_1_0.0
253    * @remarks This is an experimental feature and might not be supported in the next release.
254    * We do recommend not to use it.
255    * @param [in] copy The actor to copy
256    */
257   ImageActor(const ImageActor& copy);
258
259   /**
260    * @brief Assignment operator
261    *
262    * @SINCE_1_0.0
263    * @remarks This is an experimental feature and might not be supported in the next release.
264    * We do recommend not to use it.
265    * @param [in] rhs The actor to copy
266    * @return A reference to this
267    */
268   ImageActor& operator=(const ImageActor& rhs);
269
270   /**
271    * @brief Set the image rendered by the actor.
272    *
273    * If actor was already displaying a different image, the old image is dropped and actor may
274    * temporarily display nothing. Setting an empty image (handle) causes the current image to be
275    * dropped and actor displays nothing.
276    * The actor will take the image's natural size unless a custom size
277    * is chosen, e.g. via Actor::SetSize().
278    *
279    * @SINCE_1_0.0
280    * @remarks This is an experimental feature and might not be supported in the next release.
281    * We do recommend not to use it.
282    * @param [in] image The image to display
283    * @pre ImageActor must be initialized.
284    */
285   void SetImage(Image image);
286
287   /**
288    * @brief Retrieve the image rendered by the actor.
289    *
290    * If no image is assigned, an empty handle is returned.
291    * @SINCE_1_0.0
292    * @remarks This is an experimental feature and might not be supported in the next release.
293    * We do recommend not to use it.
294    * @return The image
295    */
296   Image GetImage();
297
298   /**
299    * @brief Set a region of the image to display, in pixels.
300    *
301    * When the image is loaded the actor's size will be reset to the pixelArea,
302    * unless a custom size was chosen, e.g. via Actor::SetSize().
303    * @SINCE_1_0.0
304    * @remarks This is an experimental feature and might not be supported in the next release.
305    * We do recommend not to use it.
306    * @param [in] pixelArea The area of the image to display.
307    * This in pixels, relative to the top-left (0,0) of the image.
308    * @pre Image must be initialized.
309    * @note PixelArea should be inside the image data size. It gets clamped by GL.
310    */
311   void SetPixelArea(const PixelArea& pixelArea);
312
313   /**
314    * @brief Retrieve the region of the image to display, in pixels.
315    *
316    * @SINCE_1_0.0
317    * @remarks This is an experimental feature and might not be supported in the next release.
318    * We do recommend not to use it.
319    * @return The pixel area, or a default-constructed area if none was set.
320    * @pre Image must be initialized.
321    */
322   PixelArea GetPixelArea() const;
323
324   /**
325    * @DEPRECATED_1_1.11
326    *
327    * @brief Set how the image is rendered; the default is STYLE_QUAD.
328    *
329    * @SINCE_1_0.0
330    * @remarks This is an experimental feature and might not be supported in the next release.
331    * We do recommend not to use it.
332    * @param [in] style The new style
333    * @pre Image must be initialized.
334    * @note The style specified is set (so GetStyle will return what's set) but ignored internally.
335    */
336   void SetStyle(Style style);
337
338   /**
339    * @DEPRECATED_1_1.11
340    *
341    * @brief Query how the image is rendered.
342    *
343    * @SINCE_1_0.0
344    * @remarks This is an experimental feature and might not be supported in the next release.
345    * We do recommend not to use it.
346    * @return The rendering style
347    * @pre Image must be initialized.
348    * @note This just returns the style set by SetStyle. In reality, only STYLE_QUAD is supported.
349    */
350   Style GetStyle() const;
351
352   /**
353    * @DEPRECATED_1_1.11
354    *
355    * @brief Set the border used with ImageActor::STYLE_NINE_PATCH.
356    *
357    * The values are in pixels from the left, top, right, and bottom of the image respectively.
358    * i.e. ImageActor::SetNinePatchBorder( Vector4(1,2,3,4) ) sets the left-border to 1, top-border to 2, right-border to 3, and bottom-border to 4 pixels.
359    * @SINCE_1_0.0
360    * @remarks This is an experimental feature and might not be supported in the next release.
361    * We do recommend not to use it.
362    * @param [in] border The new nine-patch border
363    */
364   void SetNinePatchBorder(const Vector4& border);
365
366   /**
367    * @DEPRECATED_1_1.11
368    *
369    * @brief Retrieve the border used with ImageActor::STYLE_NINE_PATCH.
370    *
371    * @SINCE_1_0.0
372    * @remarks This is an experimental feature and might not be supported in the next release.
373    * We do recommend not to use it.
374    * @return The nine-patch border.
375    */
376   Vector4 GetNinePatchBorder() const;
377
378
379   /**
380    * @brief Allows modification of an actors position in the depth sort algorithm.
381    *
382    * The offset can be altered for each coplanar actor hence allowing an order of painting.
383    * @SINCE_1_0.0
384    * @remarks This is an experimental feature and might not be supported in the next release.
385    * We do recommend not to use it.
386    * @param [in] depthOffset The offset to be given to the actor. Positive values pushing it up front.
387    * @pre The Actor has been initialized.
388    * @see Layer::Behavior
389    */
390   void SetSortModifier(float depthOffset);
391
392   /**
393    * @brief Retrieves the offset used to modify an actors position in the depth sort algorithm.
394    *
395    * The offset can be altered for each coplanar actor hence allowing an order of painting.
396    * @SINCE_1_0.0
397    * @remarks This is an experimental feature and might not be supported in the next release.
398    * We do recommend not to use it.
399    * @return  The offset that has been given to the actor. Positive values pushing it further back.
400    * @pre The Actor has been initialized.
401    * @see Layer::Behavior
402    */
403   float GetSortModifier() const;
404
405   /**
406    * @brief Sets the blending mode.
407    *
408    * Possible values are: BlendingMode::OFF, BlendingMode::AUTO and BlendingMode::ON. Default is BlendingMode::AUTO.
409    *
410    * If blending is disabled (BlendingMode::OFF) fade in and fade out animations do not work.
411    *
412    * <ul>
413    *   <li> \e OFF Blending is disabled.
414    *   <li> \e AUTO Blending is enabled only if the renderable actor has alpha channel.
415    *   <li> \e ON Blending is enabled.
416    * </ul>
417    *
418    * @SINCE_1_0.0
419    * @remarks This is an experimental feature and might not be supported in the next release.
420    * We do recommend not to use it.
421    * @param[in] mode The blending mode
422    */
423   void SetBlendMode( BlendingMode::Type mode );
424
425   /**
426    * @brief Retrieves the blending mode.
427    *
428    * @SINCE_1_0.0
429    * @remarks This is an experimental feature and might not be supported in the next release.
430    * We do recommend not to use it.
431    * @return The blending mode, one of BlendingMode::OFF, BlendingMode::AUTO or BlendingMode::ON.
432    */
433   BlendingMode::Type GetBlendMode() const;
434
435   /**
436    * @brief Specify the pixel arithmetic used when the actor is blended.
437    *
438    * @SINCE_1_0.0
439    * @remarks This is an experimental feature and might not be supported in the next release.
440    * We do recommend not to use it.
441    * @param[in] srcFactorRgba Specifies how the red, green, blue, and alpha source blending factors are computed.
442    * The options are BlendingFactor::ZERO, ONE, SRC_COLOR, ONE_MINUS_SRC_COLOR, DST_COLOR, ONE_MINUS_DST_COLOR,
443    * SRC_ALPHA, ONE_MINUS_SRC_ALPHA, DST_ALPHA, ONE_MINUS_DST_ALPHA, CONSTANT_COLOR, ONE_MINUS_CONSTANT_COLOR,
444    * GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA, and GL_SRC_ALPHA_SATURATE.
445    *
446    * @param[in] destFactorRgba Specifies how the red, green, blue, and alpha destination blending factors are computed.
447    * The options are BlendingFactor::ZERO, ONE, SRC_COLOR, ONE_MINUS_SRC_COLOR, DST_COLOR, ONE_MINUS_DST_COLOR,
448    * SRC_ALPHA, ONE_MINUS_SRC_ALPHA, DST_ALPHA, ONE_MINUS_DST_ALPHA, CONSTANT_COLOR, ONE_MINUS_CONSTANT_COLOR,
449    * GL_CONSTANT_ALPHA, and GL_ONE_MINUS_CONSTANT_ALPHA.
450    */
451   void SetBlendFunc( BlendingFactor::Type srcFactorRgba, BlendingFactor::Type destFactorRgba );
452
453   /**
454    * @brief Specify the pixel arithmetic used when the actor is blended.
455    *
456    * @SINCE_1_0.0
457    * @remarks This is an experimental feature and might not be supported in the next release.
458    * We do recommend not to use it.
459    * @param[in] srcFactorRgb Specifies how the red, green, and blue source blending factors are computed.
460    * The options are BlendingFactor::ZERO, ONE, SRC_COLOR, ONE_MINUS_SRC_COLOR, DST_COLOR, ONE_MINUS_DST_COLOR,
461    * SRC_ALPHA, ONE_MINUS_SRC_ALPHA, DST_ALPHA, ONE_MINUS_DST_ALPHA, CONSTANT_COLOR, ONE_MINUS_CONSTANT_COLOR,
462    * GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA, and GL_SRC_ALPHA_SATURATE.
463    *
464    * @param[in] destFactorRgb Specifies how the red, green, blue, and alpha destination blending factors are computed.
465    * The options are BlendingFactor::ZERO, ONE, SRC_COLOR, ONE_MINUS_SRC_COLOR, DST_COLOR, ONE_MINUS_DST_COLOR,
466    * SRC_ALPHA, ONE_MINUS_SRC_ALPHA, DST_ALPHA, ONE_MINUS_DST_ALPHA, CONSTANT_COLOR, ONE_MINUS_CONSTANT_COLOR,
467    * GL_CONSTANT_ALPHA, and GL_ONE_MINUS_CONSTANT_ALPHA.
468    *
469    * @param[in] srcFactorAlpha Specifies how the alpha source blending factor is computed.
470    * The options are the same as for srcFactorRgb.
471    *
472    * @param[in] destFactorAlpha Specifies how the alpha source blending factor is computed.
473    * The options are the same as for destFactorRgb.
474    */
475   void SetBlendFunc( BlendingFactor::Type srcFactorRgb,   BlendingFactor::Type destFactorRgb,
476                      BlendingFactor::Type srcFactorAlpha, BlendingFactor::Type destFactorAlpha );
477
478   /**
479    * @brief Query the pixel arithmetic used when the actor is blended.
480    *
481    * @SINCE_1_0.0
482    * @remarks This is an experimental feature and might not be supported in the next release.
483    * We do recommend not to use it.
484    * @param[out] srcFactorRgb Specifies how the red, green and blue source blending factors are computed.
485    * @param[out] destFactorRgb Specifies how the red, green and blue destination blending factors are computed.
486    * @param[out] srcFactorAlpha Specifies how the alpha source blending factor is computed.
487    * @param[out] destFactorAlpha Specifies how the alpha destination blending factor is computed.
488    */
489   void GetBlendFunc( BlendingFactor::Type& srcFactorRgb,   BlendingFactor::Type& destFactorRgb,
490                      BlendingFactor::Type& srcFactorAlpha, BlendingFactor::Type& destFactorAlpha ) const;
491
492   /**
493    * @brief Specify the equation used when the actor is blended.
494    *
495    * The options are BlendingEquation::ADD, BlendingEquation::SUBTRACT, or BlendingEquation::REVERSE_SUBTRACT.
496    * @SINCE_1_0.0
497    * @remarks This is an experimental feature and might not be supported in the next release.
498    * We do recommend not to use it.
499    * @param[in] equationRgba The equation used for combining red, green, blue, and alpha components.
500    */
501   void SetBlendEquation( BlendingEquation::Type equationRgba );
502
503   /**
504    * @brief Specify the equation used when the actor is blended.
505    *
506    * @SINCE_1_0.0
507    * @remarks This is an experimental feature and might not be supported in the next release.
508    * We do recommend not to use it.
509    * @param[in] equationRgb The equation used for combining red, green, and blue components.
510    * @param[in] equationAlpha The equation used for combining the alpha component.
511    * The options are BlendingEquation::ADD, BlendingEquation::SUBTRACT, or BlendingEquation::REVERSE_SUBTRACT.
512    */
513   void SetBlendEquation( BlendingEquation::Type equationRgb, BlendingEquation::Type equationAlpha );
514
515   /**
516    * @brief Query the equation used when the actor is blended.
517    *
518    * @SINCE_1_0.0
519    * @remarks This is an experimental feature and might not be supported in the next release.
520    * We do recommend not to use it.
521    * @param[out] equationRgb The equation used for combining red, green, and blue components.
522    * @param[out] equationAlpha The equation used for combining the alpha component.
523    */
524   void GetBlendEquation( BlendingEquation::Type& equationRgb, BlendingEquation::Type& equationAlpha ) const;
525
526   /**
527    * @brief Specify the color used when the actor is blended; the default is Vector4::ZERO.
528    *
529    * @SINCE_1_0.0
530    * @remarks This is an experimental feature and might not be supported in the next release.
531    * We do recommend not to use it.
532    * @param[in] color The blend color
533    */
534   void SetBlendColor( const Vector4& color );
535
536   /**
537    * @brief Query the color used when the actor is blended.
538    *
539    * @SINCE_1_0.0
540    * @remarks This is an experimental feature and might not be supported in the next release.
541    * We do recommend not to use it.
542    * @return The blend color
543    */
544   const Vector4& GetBlendColor() const;
545
546   /**
547    * @brief Sets the filtering mode.
548    *
549    * Possible values are: FilterMode::NEAREST and FilterMode::LINEAR. Default is FilterMode::LINEAR.
550    *
551    * <ul>
552    *   <li> \e NEAREST Use nearest filtering
553    *   <li> \e LINEAR Use linear filtering
554    * </ul>
555    *
556    * @SINCE_1_0.0
557    * @remarks This is an experimental feature and might not be supported in the next release.
558    * We do recommend not to use it.
559    * @param[in] minFilter The minification filtering mode
560    * @param[in] magFilter The magnification filtering mode
561    */
562   void SetFilterMode( FilterMode::Type minFilter, FilterMode::Type magFilter );
563
564   /**
565    * @brief Retrieves the filtering mode.
566    *
567    * @SINCE_1_0.0
568    * @remarks This is an experimental feature and might not be supported in the next release.
569    * We do recommend not to use it.
570    * @param[out] minFilter The return minification value
571    * @param[out] magFilter The return magnification value
572    */
573   void GetFilterMode( FilterMode::Type& minFilter, FilterMode::Type& magFilter) const;
574
575   /**
576    * @brief Sets the shader effect for the ImageActor.
577    *
578    * Shader effects provide special effects like ripple and bend.
579    * Setting a shader effect removes any shader effect previously set by @ref ImageActor::SetShaderEffect.
580    * @SINCE_1_0.0
581    * @remarks This is an experimental feature and might not be supported in the next release.
582    * We do recommend not to use it.
583    * @param [in] effect The shader effect
584    * @pre The actor has been initialized.
585    * @pre Effect has been initialized.
586    */
587   void SetShaderEffect( ShaderEffect effect );
588
589   /**
590    * @brief Retrieve the custom shader effect for the ImageActor.
591    *
592    * If default shader is used an empty handle is returned.
593    *
594    * @SINCE_1_0.0
595    * @remarks This is an experimental feature and might not be supported in the next release.
596    * We do recommend not to use it.
597    * @return The shader effect
598    * @pre The Actor has been initialized.
599    */
600   ShaderEffect GetShaderEffect() const;
601
602   /**
603    * @brief Removes the current shader effect.
604    *
605    * @SINCE_1_0.0
606    * @remarks This is an experimental feature and might not be supported in the next release.
607    * We do recommend not to use it.
608    * @pre The Actor has been initialized.
609    */
610   void RemoveShaderEffect();
611
612
613 public: // Not intended for application developers
614
615   explicit DALI_INTERNAL ImageActor(Internal::ImageActor*);
616 };
617
618
619 /**
620  * @brief Sets the shader effect for all ImageActors in a tree of Actors.
621  *
622  * @SINCE_1_0.0
623  * @remarks This is an experimental feature and might not be supported in the next release.
624  * We do recommend not to use it.
625  * @param [in] actor Root of a tree of actors
626  * @param [in] effect The shader effect
627  * @see ImageActor::SetShaderEffect
628  *
629  */
630 DALI_IMPORT_API void SetShaderEffectRecursively( Dali::Actor actor, Dali::ShaderEffect effect );
631
632 /**
633  * @brief Removes the shader effect from all ImageActors in a tree of Actors.
634  *
635  * @SINCE_1_0.0
636  * @remarks This is an experimental feature and might not be supported in the next release.
637  * We do recommend not to use it.
638  * @param [in] actor Root of a tree of actors
639  * @see ImageActor::RemoveShaderEffect
640  *
641  */
642 DALI_IMPORT_API void RemoveShaderEffectRecursively( Dali::Actor actor );
643
644 /**
645  * @}
646  */
647 } // namespace Dali
648
649 #endif // __DALI_IMAGE_ACTOR_H__