Added sampler properties, test cases.
[platform/core/uifw/dali-core.git] / dali / internal / update / effects / scene-graph-sampler.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 // CLASS HEADER
18 #include "scene-graph-sampler.h"
19
20 // EXTERNAL HEADERS
21
22
23 namespace Dali
24 {
25 namespace Internal
26 {
27 namespace SceneGraph
28 {
29
30 Sampler::Sampler( const std::string& textureUnitUniformName )
31 : mMinFilter( Dali::Sampler::DEFAULT ),
32   mMagFilter( Dali::Sampler::DEFAULT ),
33   mUWrapMode( Dali::Sampler::CLAMP_TO_EDGE ),
34   mVWrapMode( Dali::Sampler::CLAMP_TO_EDGE ),
35   mAffectsTransparency( false ),
36   mTextureUnitUniformName( textureUnitUniformName ),
37   mTextureId( 0u ),
38   mFullyOpaque(true)
39 {
40 }
41
42 Sampler::~Sampler()
43 {
44 }
45
46 void Sampler::SetTextureUnitUniformName( const std::string& textureUnitUniformName )
47 {
48   mTextureUnitUniformName = textureUnitUniformName;
49 }
50
51 void Sampler::SetTexture( BufferIndex bufferIndex, Integration::ResourceId textureId )
52 {
53   if( mTextureId[bufferIndex] != textureId )
54   {
55     mTextureId.Set( bufferIndex, textureId );
56     mConnectionObservers.ConnectionsChanged(*this);
57   }
58 }
59
60 void Sampler::SetFilterMode( BufferIndex bufferIndex, FilterMode minFilter, FilterMode magFilter )
61 {
62   mMinFilter[bufferIndex] = minFilter;
63   mMagFilter[bufferIndex] = magFilter;
64 }
65
66 void Sampler::SetWrapMode( BufferIndex bufferIndex, WrapMode uWrap, WrapMode vWrap )
67 {
68 }
69
70 const std::string& Sampler::GetTextureUnitUniformName() const
71 {
72   return mTextureUnitUniformName;
73 }
74
75 Integration::ResourceId Sampler::GetTextureId( BufferIndex bufferIndex ) const
76 {
77   return mTextureId[bufferIndex];
78 }
79
80 Sampler::FilterMode Sampler::GetMinifyFilterMode( BufferIndex bufferIndex ) const
81 {
82   return static_cast<Sampler::FilterMode>(mMinFilter[bufferIndex]);
83 }
84
85 Sampler::FilterMode Sampler::GetMagnifyFilterMode( BufferIndex bufferIndex ) const
86 {
87   return static_cast<Sampler::FilterMode>(mMagFilter[bufferIndex]);
88 }
89
90 Sampler::WrapMode Sampler::GetUWrapMode( BufferIndex bufferIndex ) const
91 {
92   return static_cast<Sampler::WrapMode>(mUWrapMode[bufferIndex]);
93 }
94
95 Sampler::WrapMode Sampler::GetVWrapMode( BufferIndex bufferIndex ) const
96 {
97   return static_cast<Sampler::WrapMode>(mVWrapMode[bufferIndex]);
98 }
99
100 bool Sampler::AffectsTransparency( BufferIndex bufferIndex ) const
101 {
102   return mAffectsTransparency[bufferIndex] ;
103 }
104
105 void Sampler::SetFullyOpaque( bool fullyOpaque )
106 {
107   mFullyOpaque = fullyOpaque;
108 }
109
110 bool Sampler::IsFullyOpaque( BufferIndex bufferIndex ) const
111 {
112   return mFullyOpaque;
113 }
114
115 void Sampler::ConnectToSceneGraph( SceneController& sceneController, BufferIndex bufferIndex )
116 {
117 }
118
119 void Sampler::DisconnectFromSceneGraph(SceneController& sceneController, BufferIndex bufferIndex)
120 {
121 }
122
123 void Sampler::AddConnectionObserver( ConnectionObservers::Observer& observer )
124 {
125   mConnectionObservers.Add(observer);
126 }
127
128 void Sampler::RemoveConnectionObserver( ConnectionObservers::Observer& observer )
129 {
130   mConnectionObservers.Remove(observer);
131 }
132
133 void Sampler::ResetDefaultProperties( BufferIndex bufferIndex )
134 {
135   mTextureId.CopyPrevious( bufferIndex );
136   mMinFilter.CopyPrevious( bufferIndex );
137   mMagFilter.CopyPrevious( bufferIndex );
138   mUWrapMode.CopyPrevious( bufferIndex );
139   mVWrapMode.CopyPrevious( bufferIndex );
140   mAffectsTransparency.CopyPrevious( bufferIndex );
141 }
142
143 } // namespace SceneGraph
144 } // namespace Internal
145 } // namespace Dali