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