Script.java revision 684b23513c9137ddc04b06ac05a4b15be06ad2f4
1/*
2 * Copyright (C) 2008 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
17package android.renderscript;
18
19/**
20 *
21 **/
22public class Script extends BaseObj {
23    /**
24     * Only intended for use by generated reflected code.
25     *
26     * @param slot
27     */
28    protected void invoke(int slot) {
29        mRS.nScriptInvoke(getID(), slot);
30    }
31
32    /**
33     * Only intended for use by generated reflected code.
34     *
35     * @param slot
36     * @param v
37     */
38    protected void invoke(int slot, FieldPacker v) {
39        if (v != null) {
40            mRS.nScriptInvokeV(getID(), slot, v.getData());
41        } else {
42            mRS.nScriptInvoke(getID(), slot);
43        }
44    }
45
46    /**
47     * Only intended for use by generated reflected code.
48     *
49     * @param slot
50     * @param ain
51     * @param aout
52     * @param v
53     */
54    protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) {
55        if (ain == null && aout == null) {
56            throw new RSIllegalArgumentException(
57                "At least one of ain or aout is required to be non-null.");
58        }
59        int in_id = 0;
60        if (ain != null) {
61            in_id = ain.getID();
62        }
63        int out_id = 0;
64        if (aout != null) {
65            out_id = aout.getID();
66        }
67        byte[] params = null;
68        if (v != null) {
69            params = v.getData();
70        }
71        mRS.nScriptForEach(getID(), slot, in_id, out_id, params);
72    }
73
74
75    Script(int id, RenderScript rs) {
76        super(id, rs);
77    }
78
79
80    /**
81     * Only intended for use by generated reflected code.
82     *
83     * @param va
84     * @param slot
85     */
86    public void bindAllocation(Allocation va, int slot) {
87        mRS.validate();
88        if (va != null) {
89            mRS.nScriptBindAllocation(getID(), va.getID(), slot);
90        } else {
91            mRS.nScriptBindAllocation(getID(), 0, slot);
92        }
93    }
94
95    /**
96     * Only intended for use by generated reflected code.
97     *
98     * @param index
99     * @param v
100     */
101    public void setVar(int index, float v) {
102        mRS.nScriptSetVarF(getID(), index, v);
103    }
104
105    /**
106     * Only intended for use by generated reflected code.
107     *
108     * @param index
109     * @param v
110     */
111    public void setVar(int index, double v) {
112        mRS.nScriptSetVarD(getID(), index, v);
113    }
114
115    /**
116     * Only intended for use by generated reflected code.
117     *
118     * @param index
119     * @param v
120     */
121    public void setVar(int index, int v) {
122        mRS.nScriptSetVarI(getID(), index, v);
123    }
124
125    /**
126     * Only intended for use by generated reflected code.
127     *
128     * @param index
129     * @param v
130     */
131    public void setVar(int index, long v) {
132        mRS.nScriptSetVarJ(getID(), index, v);
133    }
134
135    /**
136     * Only intended for use by generated reflected code.
137     *
138     * @param index
139     * @param v
140     */
141    public void setVar(int index, boolean v) {
142        mRS.nScriptSetVarI(getID(), index, v ? 1 : 0);
143    }
144
145    /**
146     * Only intended for use by generated reflected code.
147     *
148     * @param index
149     * @param o
150     */
151    public void setVar(int index, BaseObj o) {
152        mRS.nScriptSetVarObj(getID(), index, (o == null) ? 0 : o.getID());
153    }
154
155    /**
156     * Only intended for use by generated reflected code.
157     *
158     * @param index
159     * @param v
160     */
161    public void setVar(int index, FieldPacker v) {
162        mRS.nScriptSetVarV(getID(), index, v.getData());
163    }
164
165    public void setTimeZone(String timeZone) {
166        mRS.validate();
167        try {
168            mRS.nScriptSetTimeZone(getID(), timeZone.getBytes("UTF-8"));
169        } catch (java.io.UnsupportedEncodingException e) {
170            throw new RuntimeException(e);
171        }
172    }
173
174    public static class Builder {
175        RenderScript mRS;
176
177        Builder(RenderScript rs) {
178            mRS = rs;
179        }
180    }
181
182
183    public static class FieldBase {
184        protected Element mElement;
185        protected Allocation mAllocation;
186
187        protected void init(RenderScript rs, int dimx) {
188            mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT);
189        }
190
191        protected void init(RenderScript rs, int dimx, int usages) {
192            mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT | usages);
193        }
194
195        protected FieldBase() {
196        }
197
198        public Element getElement() {
199            return mElement;
200        }
201
202        public Type getType() {
203            return mAllocation.getType();
204        }
205
206        public Allocation getAllocation() {
207            return mAllocation;
208        }
209
210        //@Override
211        public void updateAllocation() {
212        }
213    }
214}
215
216