1d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams/* 2d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * Copyright (C) 2009 The Android Open Source Project 3d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * 4d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * you may not use this file except in compliance with the License. 6d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * You may obtain a copy of the License at 7d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * 8d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * 10d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * Unless required by applicable law or agreed to in writing, software 11d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * See the License for the specific language governing permissions and 14d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * limitations under the License. 15d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams */ 16d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 17d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams#ifndef ANDROID_COMPONENT_H 18d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams#define ANDROID_COMPONENT_H 19d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 20d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams#include "rsUtils.h" 21e23d239828a229eb7d4d33c9630070f0a87833e1Alex Sakhartchouk#include "rsDefines.h" 22d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 23d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams// --------------------------------------------------------------------------- 24d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsnamespace android { 25d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsnamespace renderscript { 26d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 27d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 28d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams// An element is a group of Components that occupies one cell in a structure. 29afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukclass Component { 30d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samspublic: 31d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams Component(); 32d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams ~Component(); 33d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 34d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams void set(RsDataType dt, RsDataKind dk, bool norm, uint32_t vecSize=1); 35d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 36d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams void dumpLOGV(const char *prefix) const; 37d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 38d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams RsDataType getType() const {return mType;} 39d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams RsDataKind getKind() const {return mKind;} 40d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams bool getIsNormalized() const {return mNormalized;} 41d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams uint32_t getVectorSize() const {return mVectorSize;} 42d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams bool getIsFloat() const {return mIsFloat;} 43d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams bool getIsSigned() const {return mIsSigned;} 44d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams uint32_t getBits() const {return mBits;} 452d1220c27ae91f0b307f283fe66cb767b63dfe38Alex Sakhartchouk uint32_t getBitsUnpadded() const {return mBitsUnpadded;} 46d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 47fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk // Helpers for reading / writing this class out 48fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk void serialize(OStream *stream) const; 49fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk void loadFromStream(IStream *stream); 50fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 51e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Sams bool isReference() const; 52e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Sams 53d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsprotected: 54d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams RsDataType mType; 55d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams RsDataKind mKind; 56d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams bool mNormalized; 57d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams uint32_t mVectorSize; 58d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 59d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams // derived 60d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams uint32_t mBits; 612d1220c27ae91f0b307f283fe66cb767b63dfe38Alex Sakhartchouk uint32_t mBitsUnpadded; 62d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams uint32_t mTypeBits; 63d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams bool mIsFloat; 64d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams bool mIsSigned; 65d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams bool mIsPixel; 66d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams}; 67d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 68d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 69d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 70d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 71d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams#endif 72d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 73