2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://floralicense.org/license/
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.
19 * @file FUiEffects_RendererGraphicsEngineRenderStateCache.cpp
20 * @brief Implementation of class for render states cache
24 #include <renderer/graphics-engine/FUiEffects_RendererGraphicsEngineOpenGLImplementation.h>
25 #include <renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderStateCache.h>
26 #include <renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRender.h>
28 namespace Tizen { namespace Ui { namespace Effects { namespace _Renderer { namespace GraphicsEngine
32 RenderAlphaBlendCache::GetGlBlendFactor(Tizen::Ui::Effects::_Renderer::EngineModel::AlphaBlendProperty::BlendFactor::Value value)
36 case EngineModel::AlphaBlendProperty::BlendFactor::ZERO:
38 case EngineModel::AlphaBlendProperty::BlendFactor::ONE:
40 case EngineModel::AlphaBlendProperty::BlendFactor::SRC_COLOR:
42 case EngineModel::AlphaBlendProperty::BlendFactor::ONE_MINUS_SRC_COLOR:
43 return GL_ONE_MINUS_SRC_COLOR;
44 case EngineModel::AlphaBlendProperty::BlendFactor::DST_COLOR:
46 case EngineModel::AlphaBlendProperty::BlendFactor::ONE_MINUS_DST_COLOR:
47 return GL_ONE_MINUS_DST_COLOR;
48 case EngineModel::AlphaBlendProperty::BlendFactor::SRC_ALPHA:
50 case EngineModel::AlphaBlendProperty::BlendFactor::ONE_MINUS_SRC_ALPHA:
51 return GL_ONE_MINUS_SRC_ALPHA;
52 case EngineModel::AlphaBlendProperty::BlendFactor::DST_ALPHA:
54 case EngineModel::AlphaBlendProperty::BlendFactor::ONE_MINUS_DST_ALPHA:
55 return GL_ONE_MINUS_DST_ALPHA;
56 case EngineModel::AlphaBlendProperty::BlendFactor::CONSTANT_COLOR:
57 return GL_CONSTANT_COLOR;
58 case EngineModel::AlphaBlendProperty::BlendFactor::ONE_MINUS_CONSTANT_COLOR:
59 return GL_ONE_MINUS_CONSTANT_COLOR;
60 case EngineModel::AlphaBlendProperty::BlendFactor::CONSTANT_ALPHA:
61 return GL_CONSTANT_ALPHA;
62 case EngineModel::AlphaBlendProperty::BlendFactor::ONE_MINUS_CONSTANT_ALPHA:
63 return GL_ONE_MINUS_CONSTANT_ALPHA;
64 case EngineModel::AlphaBlendProperty::BlendFactor::SRC_ALPHA_SATURATE:
65 return GL_SRC_ALPHA_SATURATE;
67 ThrowJmp("RenderAlphaBlendCache::getGLBlendFactor: unknown blend factor");
70 RenderAlphaBlendCache::RenderAlphaBlendCache(Render* pRender, EngineModel::AlphaBlendProperty* pState)
71 : RenderStateCache(pRender)
73 , __source(static_cast<GLenum>(0))
74 , __destination(static_cast<GLenum>(0))
79 RenderAlphaBlendCache::~RenderAlphaBlendCache(void)
84 RenderAlphaBlendCache::Validate(Render* pRender)
94 if (!(__isEnabled = __pState->IsEnable()))
98 __source = GetGlBlendFactor(__pState->GetSourceFactor());
99 __destination = GetGlBlendFactor(__pState->GetDestinationFactor());
105 RenderAlphaBlendCache::Set(Render* pRender)
110 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
113 if (!__pState->IsEnable())
118 if (pRender->GetAlphaBlendSource() != __source || pRender->GetAlphaBlendDestination() != __destination)
120 glBlendFunc(__source, __destination);
127 RenderAlphaBlendCache::IsEnable(Render* pRender)
136 }}}}} // Tizen::Ui::Effects::_Renderer::GraphicsEngine