summaryrefslogtreecommitdiffstats
path: root/renderscript/include/rs_element.rsh
blob: 91233c21db48055d2112839cf01dad0e2dafcf74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Don't edit this file!  It is auto-generated by frameworks/rs/api/gen_runtime.

/*
 * rs_element.rsh: Element functions
 *
 * The term "element" is used a bit ambiguously in RenderScript, as both
 * the type of an item of an allocation and the instantiation of that type:
 *
 * rs_element is a handle to a type specification, and
 *
 * In functions like rsGetElementAt(), "element" means the instantiation
 * of the type, i.e. an item of an allocation.
 *
 * The functions below let you query the characteristics of the type specificiation.
 *
 * To create complex elements, use the Element.Builder Java class.
 * For common elements, in Java you can simply use one of the many predefined elements
 * like F32_2.  You can't create elements from a script.
 *
 * An element can be a simple data type as found in C/C++, a handle type,
 * a structure, or a fixed size vector (of size 2, 3, or 4) of sub-elements.
 *
 * Elements can also have a kind, which is semantic information used mostly to
 * interpret pixel data.
 */
#ifndef RENDERSCRIPT_RS_ELEMENT_RSH
#define RENDERSCRIPT_RS_ELEMENT_RSH

/*
 * rsElementGetBytesSize: Return the size of an element
 *
 * Returns the size in bytes that an instantiation of this element will occupy.
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern uint32_t __attribute__((overloadable))
    rsElementGetBytesSize(rs_element e);
#endif

/*
 * rsElementGetDataKind: Return the kind of an element
 *
 * Returns the element's data kind.  This is used to interpret pixel data.
 *
 * See rs_data_kind.
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern rs_data_kind __attribute__((overloadable))
    rsElementGetDataKind(rs_element e);
#endif

/*
 * rsElementGetDataType: Return the data type of an element
 *
 * Returns the element's base data type.  This can be a type similar to C/C++ (e.g. RS_TYPE_UNSIGNED_8),
 * a handle (e.g. RS_TYPE_ALLOCATION and RS_TYPE_ELEMENT), or a more complex numerical type
 * (e.g.RS_TYPE_UNSIGNED_5_6_5 and RS_TYPE_MATRIX_4X4).
 *
 * If the element describes a vector, this function returns the data type of one of its items.
 *
 * If the element describes a structure, RS_TYPE_NONE is returned.
 *
 * See rs_data_type.
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern rs_data_type __attribute__((overloadable))
    rsElementGetDataType(rs_element e);
#endif

/*
 * rsElementGetSubElement: Return a sub element of a complex element
 *
 * For the element represents a structure, this function returns the sub-element at
 * the specified index.
 *
 * If the element is not a structure or the index is greater or equal to the number
 * of sub-elements, an invalid handle is returned.
 *
 * Parameters:
 *   e Element to query
 *   index Index of the sub-element to return
 *
 * Returns: Sub-element at the given index
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern rs_element __attribute__((overloadable))
    rsElementGetSubElement(rs_element e, uint32_t index);
#endif

/*
 * rsElementGetSubElementArraySize: Return the array size of a sub element of a complex element
 *
 * For complex elements, some sub-elements could be statically
 * sized arrays. This function returns the array size of the
 * sub-element at the index.
 *
 * Parameters:
 *   e Element to query
 *   index Index of the sub-element
 *
 * Returns: Array size of the sub-element at the given index
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern uint32_t __attribute__((overloadable))
    rsElementGetSubElementArraySize(rs_element e, uint32_t index);
#endif

/*
 * rsElementGetSubElementCount: Return the number of sub-elements
 *
 * Elements could be simple, such as an int or a float, or a
 * structure with multiple sub-elements, such as a collection of
 * floats, float2, float4.  This function returns zero for simple
 * elements or the number of sub-elements otherwise.
 *
 * Parameters:
 *   e Element to get data from
 *
 * Returns: Number of sub-elements in this element
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern uint32_t __attribute__((overloadable))
    rsElementGetSubElementCount(rs_element e);
#endif

/*
 * rsElementGetSubElementName: Return the name of a sub-element
 *
 * For complex elements, this function returns the name of the sub-element
 * at the specified index.
 *
 * Parameters:
 *   e Element to get data from
 *   index Index of the sub-element
 *   name Array to store the name into
 *   nameLength Length of the provided name array
 *
 * Returns: Number of characters actually written, excluding the null terminator
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern uint32_t __attribute__((overloadable))
    rsElementGetSubElementName(rs_element e, uint32_t index, char* name, uint32_t nameLength);
#endif

/*
 * rsElementGetSubElementNameLength: Return the length of the name of a sub-element
 *
 * For complex elements, this function will return the length of
 * sub-element name at index
 *
 * Parameters:
 *   e Element to get data from
 *   index Index of the sub-element to return
 *
 * Returns: Length of the sub-element name including the null terminator (size of buffer needed to write the name)
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern uint32_t __attribute__((overloadable))
    rsElementGetSubElementNameLength(rs_element e, uint32_t index);
#endif

/*
 * This function specifies the location of a sub-element within
 * the element
 *
 * Parameters:
 *   e Element to get data from
 *   index Index of the sub-element
 *
 * Returns: Offset in bytes of sub-element in this element at given index
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern uint32_t __attribute__((overloadable))
    rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index);
#endif

/*
 * Returns the element's vector size
 *
 * Parameters:
 *   e Element to get data from
 *
 * Returns: Length of the element vector (for float2, float3, etc.)
 */
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
extern uint32_t __attribute__((overloadable))
    rsElementGetVectorSize(rs_element e);
#endif

#endif // RENDERSCRIPT_RS_ELEMENT_RSH