[dali_1.1.38] Merge branch 'devel/master'
[platform/core/uifw/dali-core.git] / dali / internal / event / rendering / sampler-impl.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/internal/event/rendering/sampler-impl.h> // Dali::Internal::Sampler
20
21 // INTERNAL INCLUDES
22 #include <dali/devel-api/rendering/sampler.h> // Dali::Internal::Sampler
23 #include <dali/internal/event/common/stage-impl.h>
24 #include <dali/internal/update/manager/update-manager.h>
25 #include <dali/internal/render/renderers/render-sampler.h>
26
27 namespace Dali
28 {
29 namespace Internal
30 {
31
32 SamplerPtr Sampler::New( )
33 {
34   SamplerPtr sampler( new Sampler() );
35   sampler->Initialize();
36   return sampler;
37 }
38
39 void Sampler::SetFilterMode( Dali::FilterMode::Type minFilter, Dali::FilterMode::Type magFilter )
40 {
41   if( NULL != mRenderObject )
42   {
43     SetFilterModeMessage( mEventThreadServices.GetUpdateManager(), *mRenderObject, (unsigned int)minFilter, (unsigned int)magFilter );
44   }
45 }
46
47 void Sampler::SetWrapMode( Dali::WrapMode::Type rWrap, Dali::WrapMode::Type sWrap, Dali::WrapMode::Type tWrap )
48 {
49   if( NULL != mRenderObject )
50   {
51     SetWrapModeMessage( mEventThreadServices.GetUpdateManager(), *mRenderObject, (unsigned int)rWrap, (unsigned int)sWrap, (unsigned int)tWrap );
52   }
53 }
54
55 Render::Sampler* Sampler::GetSamplerRenderObject()
56 {
57   return mRenderObject;
58 }
59
60
61 Sampler::Sampler()
62 :mEventThreadServices( *Stage::GetCurrent() ),
63  mRenderObject( NULL )
64 {
65 }
66
67 void Sampler::Initialize()
68 {
69   SceneGraph::UpdateManager& updateManager = mEventThreadServices.GetUpdateManager();
70
71   mRenderObject = new Render::Sampler();
72   AddSamplerMessage( updateManager, *mRenderObject );
73 }
74
75 Sampler::~Sampler()
76 {
77   if( EventThreadServices::IsCoreRunning() && mRenderObject )
78   {
79     SceneGraph::UpdateManager& updateManager = mEventThreadServices.GetUpdateManager();
80     RemoveSamplerMessage( updateManager, *mRenderObject );
81   }
82 }
83
84 } // namespace Internal
85 } // namespace Dali