Home | History | Annotate | Download | only in rs
      1 /*
      2  * Copyright (C) 2009 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef ANDROID_RS_ADAPTER_H
     18 #define ANDROID_RS_ADAPTER_H
     19 
     20 #include "rsAllocation.h"
     21 
     22 // ---------------------------------------------------------------------------
     23 namespace android {
     24 namespace renderscript {
     25 
     26 
     27 class Adapter1D : public ObjectBase
     28 {
     29 
     30 public:
     31     // By policy this allocation will hold a pointer to the type
     32     // but will not destroy it on destruction.
     33     Adapter1D(Context *);
     34     Adapter1D(Context *, Allocation *);
     35     void reset();
     36     void * getElement(uint32_t x);
     37 
     38     void setAllocation(Allocation *a) {mAllocation.set(a);}
     39 
     40     uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);}
     41 
     42     const Type * getBaseType() const {return mAllocation->getType();}
     43 
     44     inline void setY(uint32_t y) {mY = y;}
     45     inline void setZ(uint32_t z) {mZ = z;}
     46     inline void setLOD(uint32_t lod) {mLOD = lod;}
     47     inline void setFace(uint32_t face) {mFace = face;}
     48     //void setArray(uint32_t num, uint32_t value);
     49 
     50     void subData(uint32_t xoff, uint32_t count, const void *data);
     51     void data(const void *data);
     52 
     53 protected:
     54     ObjectBaseRef<Allocation> mAllocation;
     55     uint32_t mY;
     56     uint32_t mZ;
     57     uint32_t mLOD;
     58     uint32_t mFace;
     59 };
     60 
     61 class Adapter2D : public ObjectBase
     62 {
     63 
     64 public:
     65     // By policy this allocation will hold a pointer to the type
     66     // but will not destroy it on destruction.
     67     Adapter2D(Context *);
     68     Adapter2D(Context *, Allocation *);
     69     void reset();
     70     void * getElement(uint32_t x, uint32_t y) const;
     71 
     72     uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);}
     73     uint32_t getDimY() const {return mAllocation->getType()->getLODDimY(mLOD);}
     74     const Type * getBaseType() const {return mAllocation->getType();}
     75 
     76     void setAllocation(Allocation *a) {mAllocation.set(a);}
     77     inline void setZ(uint32_t z) {mZ = z;}
     78     inline void setLOD(uint32_t lod) {mLOD = lod;}
     79     inline void setFace(uint32_t face) {mFace = face;}
     80     //void setArray(uint32_t num, uint32_t value);
     81 
     82     void data(const void *data);
     83     void subData(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void *data);
     84 
     85 protected:
     86     ObjectBaseRef<Allocation> mAllocation;
     87     uint32_t mZ;
     88     uint32_t mLOD;
     89     uint32_t mFace;
     90 };
     91 
     92 
     93 }
     94 }
     95 #endif
     96 
     97