Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / effects / inc / renderer / engine-model / FUiEffects_RendererEngineModelAlphaBlendProperty.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file           FUiEffects_RendererEngineModelAlphaBlendProperty.h
20  * @brief          Alpha blending properties class
21  *
22  */
23
24 #ifndef _FUI_EFFECTS_INTERNAL_RENDERER_ENGINE_MODEL_ALPHA_BLEND_PROPERTY_H_
25 #define _FUI_EFFECTS_INTERNAL_RENDERER_ENGINE_MODEL_ALPHA_BLEND_PROPERTY_H_
26
27 #include <renderer/engine-model/FUiEffects_RendererEngineModelProperty.h>
28
29 #include <string>
30
31 namespace Tizen { namespace Ui { namespace Effects { namespace _Renderer { namespace EngineModel
32 {
33 class PropertyVisitor;
34
35 class AlphaBlendProperty:
36         public Property
37 {
38 public:
39         class BlendFactor
40         {
41         public:
42                 enum BlendFactorEnum
43                 {
44                         ZERO = 0                                        ,
45                         ONE                             ,
46                         SRC_COLOR                       ,
47                         ONE_MINUS_SRC_COLOR                     ,
48                         DST_COLOR                       ,
49                         ONE_MINUS_DST_COLOR                     ,
50                         SRC_ALPHA                       ,
51                         ONE_MINUS_SRC_ALPHA             ,
52                         DST_ALPHA                       ,
53                         ONE_MINUS_DST_ALPHA                     ,
54                         CONSTANT_COLOR                  ,
55                         ONE_MINUS_CONSTANT_COLOR        ,
56                         CONSTANT_ALPHA                  ,
57                         ONE_MINUS_CONSTANT_ALPHA        ,
58                         SRC_ALPHA_SATURATE
59                 };
60                 typedef BlendFactorEnum Value;
61         };
62
63         AlphaBlendProperty(void);
64         virtual ~AlphaBlendProperty(void);
65
66         virtual void Visit(PropertyVisitor& v);
67
68         virtual bool IsEnable(void);
69         virtual BlendFactor::Value GetSourceFactor(void);
70         virtual BlendFactor::Value GetDestinationFactor(void);
71
72         virtual void SetFactors(BlendFactor::Value source, BlendFactor::Value destination);
73         virtual void Enable(bool isEnabled);
74
75         virtual CachePtr GetCache(void);
76         virtual void SetCache(CachePtr cache);
77         virtual void TouchCache(void);
78
79 private:
80         CachePtr __cache;
81         BlendFactor::Value __source;
82         BlendFactor::Value __destination;
83         bool __isEnabled;
84 };
85
86 typedef Tizen::Ui::Effects::_Renderer::System::SmartPtr<AlphaBlendProperty> AlphaBlendPropertyPtr;
87
88 }}}}} //Tizen::Ui::Effects::_Renderer::EngineModel
89
90 #endif //_FUI_EFFECTS_INTERNAL_RENDERER_ENGINE_MODEL_ALPHA_BLEND_PROPERTY_H_