PropertyBuffer Attributes.
[platform/core/uifw/dali-core.git] / dali / internal / render / data-providers / property-buffer-data-provider.h
1 #ifndef DALI_INTERNAL_SCENE_GRAPH_PROPERTY_BUFFER_DATA_PROVIDER_H
2 #define DALI_INTERNAL_SCENE_GRAPH_PROPERTY_BUFFER_DATA_PROVIDER_H
3
4 /*
5  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 // EXTERNAL INCLUDES
21 #include <string>
22
23 // INTERNAL INCLUDES
24 #include <dali/integration-api/resource-declarations.h>
25 #include <dali/internal/common/buffer-index.h>
26
27 namespace Dali
28 {
29 namespace Internal
30 {
31 namespace SceneGraph
32 {
33
34 class PropertyBufferDataProvider
35 {
36 public:
37
38   /**
39    * Type for the data contained in the buffer
40    */
41   typedef Dali::Vector< char > BufferType;
42
43 public:
44   /**
45    * Constructor
46    */
47   PropertyBufferDataProvider()
48   {
49   }
50
51   /**
52    * Check if the data has changed
53    * @param[in] bufferIndex Index to access double buffered values
54    * @return true if the data has changed
55    */
56   virtual bool HasDataChanged( BufferIndex bufferIndex ) const = 0;
57
58   /**
59    * Get the number of attributes
60    * @param[in] bufferIndex Index to access double buffered values
61    * @return the number of attributes
62    */
63   virtual unsigned int GetAttributeCount( BufferIndex bufferIndex ) const = 0;
64
65   /**
66    * Get the name of an attribute
67    * @param[in] bufferIndex Index to access double buffered values
68    * @param[in] index Index of the attribute
69    * @return the name of the attribute
70    */
71   virtual const std::string& GetAttributeName( BufferIndex bufferIndex, unsigned int index ) const = 0;
72
73   /**
74    * Get the byte size of an attribute
75    * @param[in] bufferIndex Index to access double buffered values
76    * @param[in] index Index of the attribute
77    * @return the byte size of the attribute
78    */
79   virtual size_t GetAttributeSize( BufferIndex bufferIndex, unsigned int index ) const = 0;
80
81   /**
82    * Get the byte offset of an attribute
83    * @param[in] bufferIndex Index to access double buffered values
84    * @param[in] index Index of the attribute
85    * @return the byte offset of the attribute
86    */
87   virtual size_t GetAttributeOffset( BufferIndex bufferIndex, unsigned int index ) const = 0;
88
89   /**
90    * Get the property buffer data
91    * @param[in] bufferIndex Index to access double buffered values
92    * @return the property buffer's data array
93    */
94   virtual const BufferType& GetData( BufferIndex bufferIndex ) const = 0;
95
96   /**
97    * Get the size of the property buffer in bytes
98    * @param[in] bufferIndex Index to access double buffered values
99    * @return the size in bytes
100    */
101   virtual size_t GetDataSize( BufferIndex bufferIndex ) const = 0;
102
103   /**
104    * Get the size of an element of the buffer in bytes
105    * @param[in] bufferIndex Index to access double buffered values
106    * @return the element size in bytes
107    */
108   virtual size_t GetElementSize( BufferIndex bufferIndex ) const = 0;
109
110   /**
111    * Get the number of elements
112    * @param[in] bufferIndex Index to access double buffered values
113    * @return the number of elements
114    */
115   virtual unsigned int GetElementCount( BufferIndex bufferIndex ) const = 0;
116
117   /**
118    * Get if of the GPU buffer associated with this propertyBuffer
119    * @param[in] bufferIndex Index to access double buffered values
120    * @return the element size in bytes
121    */
122   virtual unsigned int GetGpuBufferId( BufferIndex bufferIndex ) const = 0;
123
124 protected:
125   /**
126    * No deletion through this interface
127    */
128   virtual ~PropertyBufferDataProvider()
129   {
130   }
131 };
132
133 } // namespace SceneGraph
134 } // namespace Internal
135 } // namespace Dali
136
137 #endif // DALI_INTERNAL_SCENE_GRAPH_PROPERTY_BUFFER_DATA_PROVIDER_H