10f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/* 20f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Copyright (C) 2009 The Android Open Source Project 30f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 40f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 50f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * you may not use this file except in compliance with the License. 60f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * You may obtain a copy of the License at 70f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 80f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * http://www.apache.org/licenses/LICENSE-2.0 90f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Unless required by applicable law or agreed to in writing, software 110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See the License for the specific language governing permissions and 140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * limitations under the License. 150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#ifndef ANDROID_COMPONENT_H 180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define ANDROID_COMPONENT_H 190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsUtils.h" 210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsDefines.h" 220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// --------------------------------------------------------------------------- 240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesnamespace android { 250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesnamespace renderscript { 260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// An element is a group of Components that occupies one cell in a structure. 290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesclass Component { 300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinespublic: 310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines Component(); 320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ~Component(); 330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void set(RsDataType dt, RsDataKind dk, bool norm, uint32_t vecSize=1); 350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void dumpLOGV(const char *prefix) const; 370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RsDataType getType() const {return mType;} 390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RsDataKind getKind() const {return mKind;} 400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines bool getIsNormalized() const {return mNormalized;} 410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t getVectorSize() const {return mVectorSize;} 420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines bool getIsFloat() const {return mIsFloat;} 430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines bool getIsSigned() const {return mIsSigned;} 440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t getBits() const {return mBits;} 450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t getBitsUnpadded() const {return mBitsUnpadded;} 460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // Helpers for reading / writing this class out 480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void serialize(OStream *stream) const; 490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines void loadFromStream(IStream *stream); 500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines bool isReference() const; 520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesprotected: 540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RsDataType mType; 550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RsDataKind mKind; 560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines bool mNormalized; 570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t mVectorSize; 580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines // derived 600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t mBits; 610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t mBitsUnpadded; 620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint32_t mTypeBits; 630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines bool mIsFloat; 640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines bool mIsSigned; 650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines bool mIsPixel; 660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}; 670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#endif 720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 73