Support multiple window rendering
[platform/core/uifw/dali-core.git] / dali / internal / event / rendering / sampler-impl.cpp
1 /*
2  * Copyright (c) 2019 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/internal/event/common/stage-impl.h>
23 #include <dali/internal/update/manager/update-manager.h>
24 #include <dali/internal/render/renderers/render-sampler.h>
25
26 namespace Dali
27 {
28 namespace Internal
29 {
30
31 SamplerPtr Sampler::New( )
32 {
33   SamplerPtr sampler( new Sampler() );
34   sampler->Initialize();
35   return sampler;
36 }
37
38 void Sampler::SetFilterMode( Dali::FilterMode::Type minFilter, Dali::FilterMode::Type magFilter )
39 {
40   if( NULL != mRenderObject )
41   {
42     SetFilterModeMessage( mEventThreadServices.GetUpdateManager(), *mRenderObject, static_cast< unsigned int >( minFilter ), static_cast< unsigned int >( magFilter ) );
43   }
44 }
45
46 void Sampler::SetWrapMode( Dali::WrapMode::Type rWrap, Dali::WrapMode::Type sWrap, Dali::WrapMode::Type tWrap )
47 {
48   if( NULL != mRenderObject )
49   {
50     SetWrapModeMessage( mEventThreadServices.GetUpdateManager(), *mRenderObject, static_cast< unsigned int >( rWrap ), static_cast< unsigned int >( sWrap ), static_cast< unsigned int >( tWrap ) );
51   }
52 }
53
54 Render::Sampler* Sampler::GetSamplerRenderObject()
55 {
56   return mRenderObject;
57 }
58
59
60 Sampler::Sampler()
61 :mEventThreadServices( EventThreadServices::Get() ),
62  mRenderObject( NULL )
63 {
64 }
65
66 void Sampler::Initialize()
67 {
68   SceneGraph::UpdateManager& updateManager = mEventThreadServices.GetUpdateManager();
69
70   mRenderObject = new Render::Sampler();
71   OwnerPointer< Render::Sampler > transferOwnership( mRenderObject );
72   AddSamplerMessage( updateManager, transferOwnership );
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