Merge "Improve Selection handle hit region so not above the handle" into devel/master
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / devel-api / shader-effects / mask-effect.cpp
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 // CLASS HEADER
19 #include <dali-toolkit/devel-api/shader-effects/mask-effect.h>
20
21 namespace Dali
22 {
23
24 namespace Toolkit
25 {
26
27 MaskEffect::MaskEffect()
28 {
29 }
30
31 MaskEffect::~MaskEffect()
32 {
33 }
34
35 MaskEffect MaskEffect::New( Image maskImage )
36 {
37   const char* ALPHA_MASK_FRAGMENT_SHADER_SOURCE =
38   "void main()                                                                    \n"
39   "{                                                                              \n"
40   "  highp vec4 mask = texture2D(sEffect, vTexCoord);                             \n"
41   "  gl_FragColor = texture2D(sTexture, vTexCoord) * uColor * vec4(1,1,1,mask.a); \n"
42   "}                                                                              \n";
43
44   ShaderEffect shader = ShaderEffect::New( "", // Use default
45                                            ALPHA_MASK_FRAGMENT_SHADER_SOURCE,
46                                            GeometryType( GEOMETRY_TYPE_IMAGE ),
47                                            ShaderEffect::GeometryHints( ShaderEffect::HINT_BLENDING ) );
48
49   shader.SetEffectImage( maskImage );
50
51   return MaskEffect( shader );
52 }
53
54 //Call the Parent copy constructor to add reference to the implementation for this object
55 MaskEffect::MaskEffect( ShaderEffect handle )
56 : ShaderEffect( handle )
57 {
58 }
59
60 } // namespace Toolkit
61
62 } // namespace Dali