• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 public:
30     // By policy this allocation will hold a pointer to the type
31     // but will not destroy it on destruction.
32     Adapter1D(Context *);
33     Adapter1D(Context *, Allocation *);
34     void reset();
35     void * getElement(uint32_t x);
36 
setAllocation(Allocation * a)37     void setAllocation(Allocation *a) {mAllocation.set(a);}
38 
getDimX()39     uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);}
40 
getBaseType()41     const Type * getBaseType() const {return mAllocation->getType();}
42 
setY(uint32_t y)43     inline void setY(uint32_t y) {mY = y;}
setZ(uint32_t z)44     inline void setZ(uint32_t z) {mZ = z;}
setLOD(uint32_t lod)45     inline void setLOD(uint32_t lod) {mLOD = lod;}
setFace(uint32_t face)46     inline void setFace(uint32_t face) {mFace = face;}
47     //void setArray(uint32_t num, uint32_t value);
48 
49     void subData(uint32_t xoff, uint32_t count, const void *data);
50     void data(const void *data);
51 
52     virtual void serialize(OStream *stream) const;
getClassId()53     virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_ADAPTER_1D; }
54     static Adapter1D *createFromStream(Context *rsc, IStream *stream);
55 
56 protected:
57     ObjectBaseRef<Allocation> mAllocation;
58     uint32_t mY;
59     uint32_t mZ;
60     uint32_t mLOD;
61     uint32_t mFace;
62 };
63 
64 class Adapter2D : public ObjectBase {
65 
66 public:
67     // By policy this allocation will hold a pointer to the type
68     // but will not destroy it on destruction.
69     Adapter2D(Context *);
70     Adapter2D(Context *, Allocation *);
71     void reset();
72     void * getElement(uint32_t x, uint32_t y) const;
73 
getDimX()74     uint32_t getDimX() const {return mAllocation->getType()->getLODDimX(mLOD);}
getDimY()75     uint32_t getDimY() const {return mAllocation->getType()->getLODDimY(mLOD);}
getBaseType()76     const Type * getBaseType() const {return mAllocation->getType();}
77 
setAllocation(Allocation * a)78     void setAllocation(Allocation *a) {mAllocation.set(a);}
setZ(uint32_t z)79     inline void setZ(uint32_t z) {mZ = z;}
setLOD(uint32_t lod)80     inline void setLOD(uint32_t lod) {mLOD = lod;}
setFace(uint32_t face)81     inline void setFace(uint32_t face) {mFace = face;}
82     //void setArray(uint32_t num, uint32_t value);
83 
84     void data(const void *data);
85     void subData(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void *data);
86 
87     virtual void serialize(OStream *stream) const;
getClassId()88     virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_ADAPTER_2D; }
89     static Adapter2D *createFromStream(Context *rsc, IStream *stream);
90 
91 protected:
92     ObjectBaseRef<Allocation> mAllocation;
93     uint32_t mZ;
94     uint32_t mLOD;
95     uint32_t mFace;
96 };
97 
98 }
99 }
100 #endif
101 
102