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.
18 * @file FUiEffects_RendererRendererObject.h
19 * @brief This is the header file for the RendererObject class
22 #ifndef _FUI_EFFECTS_INTERNAL_RENDERER_RENDEREROBJECT_H_
23 #define _FUI_EFFECTS_INTERNAL_RENDERER_RENDEREROBJECT_H_
25 #include <renderer/engine-model/FUiEffects_RendererEngineModelDrawable.h>
26 #include <renderer/engine-model/FUiEffects_RendererEngineModelPropertyHolderMaterial.h>
27 #include <renderer/engine-model/FUiEffects_RendererEngineModelFloatPropertyHolder.h>
28 #include <renderer/engine-model/FUiEffects_RendererEngineModelMatrix4fPropertyHolder.h>
29 #include <renderer/engine-model/FUiEffects_RendererEngineModelAlphaBlendProperty.h>
30 #include <renderer/math/FUiEffects_RendererMathMatrix.h>
32 #include "FUiEffects_RendererEffectShader.h"
33 #include "FUiEffects_RendererRendererGeometry.h"
34 #include "FUiEffects_RendererMemoryTexture2DProperty.h"
36 #include <FUiEffects_EffectErrorMessages.h>
38 namespace Tizen { namespace Ui { namespace Effects { namespace _Renderer
42 * @class RendererObject
43 * @brief This class represents renderer object
47 : public EngineModel::Drawable
56 result r = GetLastResult();
57 SysTryReturnVoidResult(NID_UI_EFFECT, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
59 opacity = EngineModel::FloatPropertyHolderPtr(new (std::nothrow) EngineModel::FloatPropertyHolder);
60 alphablend = EngineModel::AlphaBlendPropertyPtr(new (std::nothrow) EngineModel::AlphaBlendProperty);
61 normalMtr = EngineModel::Matrix4fPropertyHolderPtr(new (std::nothrow) EngineModel::Matrix4fPropertyHolder);
62 modelMtr = EngineModel::Matrix4fPropertyHolderPtr(new (std::nothrow) EngineModel::Matrix4fPropertyHolder);
63 setMaterial(EngineModel::PropertyHolderMaterialPtr(new (std::nothrow) EngineModel::PropertyHolderMaterial));
66 SysTryReturnVoidResult(NID_UI_EFFECT, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
67 SysTryReturnVoidResult(NID_UI_EFFECT, System::GetImpl(opacity) != null, E_OUT_OF_MEMORY, _UiEffectError::OUT_OF_MEMORY);
68 SysTryReturnVoidResult(NID_UI_EFFECT, System::GetImpl(alphablend) != null, E_OUT_OF_MEMORY, _UiEffectError::OUT_OF_MEMORY);
69 SysTryReturnVoidResult(NID_UI_EFFECT, System::GetImpl(normalMtr) != null, E_OUT_OF_MEMORY, _UiEffectError::OUT_OF_MEMORY);
70 SysTryReturnVoidResult(NID_UI_EFFECT, System::GetImpl(modelMtr) != null, E_OUT_OF_MEMORY, _UiEffectError::OUT_OF_MEMORY);
71 SysTryReturnVoidResult(NID_UI_EFFECT, System::GetImpl(__mat) != null, E_OUT_OF_MEMORY, _UiEffectError::OUT_OF_MEMORY);
74 normalMtr->Set(Math::Matrix4f::GetIdentity());
75 modelMtr->Set(Math::Matrix4f::GetIdentity());
77 __mat->AddProperty(OPACITY_STR, opacity);
78 __mat->AddProperty("AlphaBlendProp", alphablend);
79 __mat->AddProperty(MODEL_MTR_STR, modelMtr);
80 __mat->AddProperty(NORMAL_MTR_STR, normalMtr);
93 * Sets new geometry for drawable
95 * @param [in] aGeom New geometry
99 void setGeometry(RendererGeometryPtr aGeom)
101 EngineModel::Drawable::SetGeometry(aGeom);
106 * Sets new material for drawable
108 * @param [in] aGeom New material
112 void setMaterial(EngineModel::PropertyHolderMaterialPtr aMat)
114 EngineModel::Drawable::SetMaterial(aMat);
119 * Gets current geometry of drawable
121 * @return RendererGeometryPtr
123 RendererGeometryPtr GetGeom(void) const
129 * Gets current material of drawable
131 * @return EngineModel::PropertyHolderMaterialPtr
133 EngineModel::PropertyHolderMaterialPtr GetMat(void) const
141 * Hidden copy constructor
143 RendererObject(const RendererObject &rhs);
146 * Hidden assignment operator
148 RendererObject& operator=(const RendererObject &rhs);
151 EngineModel::Matrix4fPropertyHolderPtr normalMtr;
152 EngineModel::Matrix4fPropertyHolderPtr modelMtr;
154 EngineModel::FloatPropertyHolderPtr opacity;
155 EngineModel::AlphaBlendPropertyPtr alphablend;
158 RendererGeometryPtr __geom;
159 EngineModel::PropertyHolderMaterialPtr __mat;
162 typedef System::SmartPtr<RendererObject> RendererObjectPtr;
164 } } } } // Tizen::Ui::Effects::_EffectRenderer
166 #endif //_FUI_EFFECTS_INTERNAL_RENDERER_RENDEREROBJECT_H_