1221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams/* 269cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams * Copyright (C) 2012 The Android Open Source Project 3221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * 4221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * you may not use this file except in compliance with the License. 6221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * You may obtain a copy of the License at 7221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * 8221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * 10221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * Unless required by applicable law or agreed to in writing, software 11221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * See the License for the specific language governing permissions and 14221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * limitations under the License. 15221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams */ 16221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 17221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#ifndef __ANDROID_TYPE_H__ 18221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#define __ANDROID_TYPE_H__ 19221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 20221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include <rs.h> 21221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include "RenderScript.h" 22b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams#include "Element.h" 23221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 2469cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsnamespace android { 2569cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsnamespace renderscriptCpp { 2669cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams 27221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsclass Type : public BaseObj { 28221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsprotected: 29221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams friend class Allocation; 30221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 31221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mDimX; 32221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mDimY; 33221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mDimZ; 34221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mDimMipmaps; 35221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mDimFaces; 36221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams size_t mElementCount; 3769cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams sp<const Element> mElement; 38221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 39221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void calcElementCount(); 40221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams virtual void updateFromNative(); 41221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 42221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samspublic: 43221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 4469cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams sp<const Element> getElement() const { 45221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mElement; 46221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 47221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 48221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t getX() const { 49221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mDimX; 50221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 51221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 52221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t getY() const { 53221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mDimY; 54221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 55221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 56221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t getZ() const { 57221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mDimZ; 58221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 59221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 60221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool hasMipmaps() const { 61221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mDimMipmaps; 62221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 63221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 64221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool hasFaces() const { 65221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mDimFaces; 66221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 67221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 68221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams size_t getCount() const { 69221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mElementCount; 70221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 71221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 72221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams size_t getSizeBytes() const { 73221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mElementCount * mElement->getSizeBytes(); 74221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 75221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 76221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 77221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams Type(void *id, RenderScript *rs); 78221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 79221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 80221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams class Builder { 81221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams protected: 82221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams RenderScript *mRS; 83221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mDimX; 84221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mDimY; 85221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams uint32_t mDimZ; 86221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mDimMipmaps; 87221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams bool mDimFaces; 8869cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams sp<const Element> mElement; 89221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 90221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams public: 9169cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams Builder(RenderScript *rs, sp<const Element> e); 92221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 93221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void setX(uint32_t value); 94221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void setY(int value); 95221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void setMipmaps(bool value); 96221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams void setFaces(bool value); 9769cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams sp<const Type> create(); 98221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams }; 99221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 100221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams}; 101221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 10269cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams} 10369cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams} 104221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#endif 105