blob: 0230f101553f1802513abcaa5fa77b95232ddee9 [file] [log] [blame]
/*
* Copyright (C) 2012 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.
*/
/** @file rs_element.rsh
* \brief Element routines
*
*
*/
#ifndef __RS_ELEMENT_RSH__
#define __RS_ELEMENT_RSH__
// New API's
#if (defined(RS_VERSION) && (RS_VERSION >= 16))
/**
* 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.
*
* @param e element to get data from
* @return number of sub-elements in this element
*/
extern uint32_t __attribute__((overloadable))
rsElementGetSubElementCount(rs_element e);
/**
* For complex elements, this function will return the
* sub-element at index
*
* @param e element to get data from
* @param index index of the sub-element to return
* @return sub-element in this element at given index
*/
extern rs_element __attribute__((overloadable))
rsElementGetSubElement(rs_element, uint32_t index);
/**
* For complex elements, this function will return the length of
* sub-element name at index
*
* @param e element to get data from
* @param index index of the sub-element to return
* @return length of the sub-element name including the null
* terminator (size of buffer needed to write the name)
*/
extern uint32_t __attribute__((overloadable))
rsElementGetSubElementNameLength(rs_element e, uint32_t index);
/**
* For complex elements, this function will return the
* sub-element name at index
*
* @param e element to get data from
* @param index index of the sub-element
* @param name array to store the name into
* @param nameLength length of the provided name array
* @return number of characters actually written, excluding the
* null terminator
*/
extern uint32_t __attribute__((overloadable))
rsElementGetSubElementName(rs_element e, uint32_t index, char *name, uint32_t nameLength);
/**
* For complex elements, some sub-elements could be statically
* sized arrays. This function will return the array size for
* sub-element at index
*
* @param e element to get data from
* @param index index of the sub-element
* @return array size of sub-element in this element at given
* index
*/
extern uint32_t __attribute__((overloadable))
rsElementGetSubElementArraySize(rs_element e, uint32_t index);
/**
* This function specifies the location of a sub-element within
* the element
*
* @param e element to get data from
* @param index index of the sub-element
* @return offset in bytes of sub-element in this element at
* given index
*/
extern uint32_t __attribute__((overloadable))
rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index);
/**
* Returns the size of element in bytes
*
* @param e element to get data from
* @return total size of the element in bytes
*/
extern uint32_t __attribute__((overloadable))
rsElementGetBytesSize(rs_element e);
/**
* Returns the element's data type
*
* @param e element to get data from
* @return element's data type
*/
extern rs_data_type __attribute__((overloadable))
rsElementGetDataType(rs_element e);
/**
* Returns the element's data kind
*
* @param e element to get data from
* @return element's data size
*/
extern rs_data_kind __attribute__((overloadable))
rsElementGetDataKind(rs_element e);
/**
* Returns the element's vector size
*
* @param e element to get data from
* @return length of the element vector (for float2, float3,
* etc.)
*/
extern uint32_t __attribute__((overloadable))
rsElementGetVectorSize(rs_element e);
#endif // (defined(RS_VERSION) && (RS_VERSION >= 16))
#endif // __RS_ELEMENT_RSH__