1ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray/*
2ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Copyright (C) 2013 The Android Open Source Project
3ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray *
4ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Licensed under the Apache License, Version 2.0 (the "License");
5ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * you may not use this file except in compliance with the License.
6ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * You may obtain a copy of the License at
7ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray *
8ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray *      http://www.apache.org/licenses/LICENSE-2.0
9ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray *
10ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Unless required by applicable law or agreed to in writing, software
11ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * distributed under the License is distributed on an "AS IS" BASIS,
12ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * See the License for the specific language governing permissions and
14ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * limitations under the License.
15ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray */
16ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
17ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murraypackage android.support.v8.renderscript;
18ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
19ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport java.io.IOException;
20ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport java.io.InputStream;
21ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.content.res.Resources;
22ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.content.res.AssetManager;
23ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.graphics.Bitmap;
24ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.graphics.BitmapFactory;
25ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.view.Surface;
26ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.util.Log;
27ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.util.TypedValue;
28ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
29ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayclass AllocationThunker extends Allocation {
30ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    android.renderscript.Allocation mN;
31ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    //Allocation mAdaptedAllocation;
32ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
33ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    android.renderscript.Allocation getNObj() {
34ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return mN;
35ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
36ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
37ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static android.renderscript.Allocation.MipmapControl
38ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        convertMipmapControl(MipmapControl mc) {
39ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
40ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        switch(mc) {
41ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        case MIPMAP_NONE:
42ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return android.renderscript.Allocation.MipmapControl.MIPMAP_NONE;
43ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        case MIPMAP_FULL:
44ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return android.renderscript.Allocation.MipmapControl.MIPMAP_FULL;
45ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        case MIPMAP_ON_SYNC_TO_TEXTURE:
46ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return android.renderscript.Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE;
47ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
48ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return null;
49ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
50ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
51ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public Type getType() {
52ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return TypeThunker.find(mN.getType());
53ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
54ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
55ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public Element getElement() {
56ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return getType().getElement();
57ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
58ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
59ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public int getUsage() {
60ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return mN.getUsage();
61ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
62ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
63ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public int getBytesSize() {
64ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return mN.getBytesSize();
65ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
66ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
67ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    AllocationThunker(RenderScript rs, Type t, int usage, android.renderscript.Allocation na) {
68ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        super(0, rs, t, usage);
69ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
70ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mType = t;
71ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mUsage = usage;
72ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN = na;
73ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
74ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
75ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void syncAll(int srcLocation) {
76ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.syncAll(srcLocation);
77ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
78ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
79ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void ioSend() {
80ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.ioSend();
81ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
82ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
83ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void ioReceive() {
84ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.ioReceive();
85ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
86ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
87ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(BaseObj[] d) {
88ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        if (d == null) {
89ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
90ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
91ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.BaseObj[] dN = new android.renderscript.BaseObj[d.length];
92ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        for (int i = 0; i < d.length; i++) {
93ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            dN[i] = d[i].getNObj();
94ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
95ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFrom(dN);
96ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
97ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
98ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFromUnchecked(int[] d) {
99ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFromUnchecked(d);
100ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
101ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFromUnchecked(short[] d) {
102ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFromUnchecked(d);
103ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
104ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFromUnchecked(byte[] d) {
105ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFromUnchecked(d);
106ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
107ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFromUnchecked(float[] d) {
108ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFromUnchecked(d);
109ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
110ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
111ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(int[] d) {
112ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFrom(d);
113ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
114ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(short[] d) {
115ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFrom(d);
116ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
117ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(byte[] d) {
118ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFrom(d);
119ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
120ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(float[] d) {
121ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFrom(d);
122ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
123ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(Bitmap b) {
124ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFrom(b);
125ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
126ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(Allocation a) {
127ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        AllocationThunker at = (AllocationThunker)a;
128ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyFrom(at.mN);
129ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
130ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
131ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
132ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setFromFieldPacker(int xoff, FieldPacker fp) {
133ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.FieldPacker nfp =
134ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            new android.renderscript.FieldPacker(fp.getData());
135ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.setFromFieldPacker(xoff, nfp);
136ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
137ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setFromFieldPacker(int xoff, int component_number, FieldPacker fp) {
138ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.FieldPacker nfp =
139ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            new android.renderscript.FieldPacker(fp.getData());
140ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.setFromFieldPacker(xoff, component_number, nfp);
141ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
142ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
143ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void generateMipmaps() {
144ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.generateMipmaps();
145ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
146ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
147ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFromUnchecked(int off, int count, int[] d) {
148ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy1DRangeFromUnchecked(off, count, d);
149ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
150ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFromUnchecked(int off, int count, short[] d) {
151ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy1DRangeFromUnchecked(off, count, d);
152ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
153ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFromUnchecked(int off, int count, byte[] d) {
154ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy1DRangeFromUnchecked(off, count, d);
155ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
156ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFromUnchecked(int off, int count, float[] d) {
157ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy1DRangeFromUnchecked(off, count, d);
158ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
159ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
160ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, int[] d) {
161ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy1DRangeFrom(off, count, d);
162ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
163ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, short[] d) {
164ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy1DRangeFrom(off, count, d);
165ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
166ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, byte[] d) {
167ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy1DRangeFrom(off, count, d);
168ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
169ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, float[] d) {
170ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy1DRangeFrom(off, count, d);
171ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
172ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
173ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, Allocation data, int dataOff) {
174ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        AllocationThunker at = (AllocationThunker)data;
175ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy1DRangeFrom(off, count, at.mN, dataOff);
176ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
177ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
178ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, byte[] data) {
179ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy2DRangeFrom(xoff, yoff, w, h, data);
180ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
181ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, short[] data) {
182ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy2DRangeFrom(xoff, yoff, w, h, data);
183ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
184ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, int[] data) {
185ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy2DRangeFrom(xoff, yoff, w, h, data);
186ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
187ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, float[] data) {
188ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy2DRangeFrom(xoff, yoff, w, h, data);
189ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
190ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
191ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h,
192ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                Allocation data, int dataXoff, int dataYoff) {
193ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        AllocationThunker at = (AllocationThunker)data;
194ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy2DRangeFrom(xoff, yoff, w, h, at.mN, dataXoff, dataYoff);
195ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
196ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, Bitmap data) {
197ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copy2DRangeFrom(xoff, yoff, data);
198ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
199ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
200ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
201ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(Bitmap b) {
202ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyTo(b);
203ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
204ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(byte[] d) {
205ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyTo(d);
206ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
207ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(short[] d) {
208ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyTo(d);
209ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
210ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(int[] d) {
211ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyTo(d);
212ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
213ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(float[] d) {
214ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN.copyTo(d);
215ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
216ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
217ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    // creation
218ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
219ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
220ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static {
221ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mBitmapOptions.inScaled = false;
222ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
223ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
224ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createTyped(RenderScript rs, Type type, MipmapControl mips, int usage) {
225ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
226ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        TypeThunker tt = (TypeThunker)type;
227ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
228ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.Allocation a =
229ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            android.renderscript.Allocation.createTyped(rst.mN, tt.mN,
230ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        convertMipmapControl(mips), usage);
231ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
232ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return new AllocationThunker(rs, type, usage, a);
233ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
234ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
235ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createFromBitmap(RenderScript rs, Bitmap b,
236ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                              MipmapControl mips,
237ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                              int usage) {
238ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
239ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
240ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.Allocation a =
241ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                android.renderscript.Allocation.createFromBitmap(
242ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                rst.mN, b, convertMipmapControl(mips), usage);
243ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        TypeThunker tt = new TypeThunker(rs, a.getType());
244ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
245ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return new AllocationThunker(rs, tt, usage, a);
246ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
247ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
248ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createCubemapFromBitmap(RenderScript rs, Bitmap b,
249ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                     MipmapControl mips,
250ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                     int usage) {
251ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
252ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.Allocation a =
253ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                android.renderscript.Allocation.createCubemapFromBitmap(
254ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                rst.mN, b, convertMipmapControl(mips), usage);
255ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        TypeThunker tt = new TypeThunker(rs, a.getType());
256ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return new AllocationThunker(rs, tt, usage, a);
257ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
258ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
259ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createCubemapFromCubeFaces(RenderScript rs,
260ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap xpos,
261ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap xneg,
262ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap ypos,
263ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap yneg,
264ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap zpos,
265ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap zneg,
266ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        MipmapControl mips,
267ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        int usage) {
268ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
269ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.Allocation a =
270ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                android.renderscript.Allocation.createCubemapFromCubeFaces(
271ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                rst.mN, xpos, xneg, ypos, yneg, zpos, zneg,
272ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                convertMipmapControl(mips), usage);
273ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        TypeThunker tt = new TypeThunker(rs, a.getType());
274ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return new AllocationThunker(rs, tt, usage, a);
275ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
276ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
277ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createFromBitmapResource(RenderScript rs,
278ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                      Resources res,
279ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                      int id,
280ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                      MipmapControl mips,
281ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                      int usage) {
282ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
283ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
284ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.Allocation a =
285ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                android.renderscript.Allocation.createFromBitmapResource(
286ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                rst.mN, res, id, convertMipmapControl(mips), usage);
287ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        TypeThunker tt = new TypeThunker(rs, a.getType());
288ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return new AllocationThunker(rs, tt, usage, a);
289ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
290ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
291ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createFromString(RenderScript rs,
292ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                              String str,
293ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                              int usage) {
294ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
295ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.Allocation a =
296ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                android.renderscript.Allocation.createFromString(
297ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                rst.mN, str, usage);
298ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        TypeThunker tt = new TypeThunker(rs, a.getType());
299ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return new AllocationThunker(rs, tt, usage, a);
300ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
301ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
302ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createSized(RenderScript rs, Element e,
303ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                         int count, int usage) {
304ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
305ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        ElementThunker et = (ElementThunker) e;
306ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.Allocation a =
307ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            android.renderscript.Allocation.createSized(rst.mN, (android.renderscript.Element)e.getNObj(), count, usage);
308ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        TypeThunker tt = new TypeThunker(rs, a.getType());
309ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return new AllocationThunker(rs, tt, usage, a);
310ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
311ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
312ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray}