92666847b8199de68eec3cb9c0d91f7bc3d0d0fc
[platform/core/uifw/dali-toolkit.git] / capi / dali-toolkit / public-api / shader-effects / nine-patch-mask-effect.h
1 #ifndef __DALI_TOOLKIT_NINE_PATCH_MASK_EFFECT_H__
2 #define __DALI_TOOLKIT_NINE_PATCH_MASK_EFFECT_H__
3
4 /*
5  * Copyright (c) 2014 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 /**
22  * @addtogroup CAPI_DALI_TOOLKIT_SHADER_EFFECTS_MODULE
23  * @{
24  */
25
26 // INTERNAL INCLUDES
27 #include <dali/dali.h>
28
29 namespace Dali DALI_IMPORT_API
30 {
31
32 namespace Toolkit
33 {
34
35 /**
36  * @brief NinePatchMaskEffect is used to control which parts of an image are visible, using the alpha channel of a separate mask image.
37  *
38  * The mask image is expected to be smaller than the main image being viewed.
39  * Conceptually the mask image is divided into a 3x3 grid (9 patches). The middle patch is stretched whilst the outer border is not.
40  *
41  * Usage example:
42  *
43  * @code
44  *   ImageActor actor = ImageActor::New( Image( EXAMPLE_IMAGE_PATH ) );
45  *   NinePatchMaskEffect::Apply( actor, MASK_IMAGE_PATH );
46  * @endcode
47  *
48  * NinePatchMaskEffect is mutually exclusive with ImageActor::STYLE_NINE_PATCH i.e. the actor's main image should not be a nine-patch.
49  */
50 namespace NinePatchMaskEffect
51 {
52
53 /**
54  * @brief Apply the mask effect to an ImageActor.
55  *
56  * NinePatchMaskEffect is mutually exclusive with ImageActor::STYLE_NINE_PATCH i.e. the actor's main image should not be a nine-patch.
57  * @param [in] actor The actor which needs the effect. To remove the effect call actor.RemoveShaderEffect().
58  * @param [in] maskImage The path to a file containing the mask. The center pixels of the mask will be stretched.
59  */
60 void Apply( ImageActor actor, const std::string& maskImage );
61
62 /**
63  * @brief Apply the mask effect to an ImageActor.
64  *
65  * NinePatchMaskEffect is mutually exclusive with ImageActor::STYLE_NINE_PATCH i.e. the actor's main image should not be a nine-patch.
66  * @param [in] actor The actor which needs the effect. To remove the effect call actor.RemoveShaderEffect().
67  * @param [in] maskImage The path to a file containing the mask.
68  * @param [in] maskBorder Specifies the part of the mask image that will be stretched (left, top, right, bottom).
69  */
70 void Apply( ImageActor actor, const std::string& maskImage, const Vector4& maskBorder );
71
72 } // namespace NinePatchMaskEffect
73
74 } // namespace Toolkit
75
76 } // namespace Dali
77
78 /**
79  * @}
80  */
81 #endif // __DALI_TOOLKIT_NINE_PATCH_MASK_EFFECT_H__