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 android.util.Log;
20ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
21ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray/**
22ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray *
23ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * @hide
24ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray **/
25ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayclass ScriptIntrinsic3DLUTThunker extends ScriptIntrinsic3DLUT {
26ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    android.renderscript.ScriptIntrinsic3DLUT mN;
27ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
28ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    android.renderscript.ScriptIntrinsic3DLUT getNObj() {
29ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return mN;
30ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
31ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
32ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    private ScriptIntrinsic3DLUTThunker(int id, RenderScript rs, Element e) {
33ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        super(id, rs, e);
34ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
35ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
36ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public static ScriptIntrinsic3DLUTThunker create(RenderScript rs, Element e) {
37ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker) rs;
38ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        ElementThunker et = (ElementThunker) e;
39ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
40ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        ScriptIntrinsic3DLUTThunker lut = new ScriptIntrinsic3DLUTThunker(0, rs, e);
41d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
42d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            lut.mN = android.renderscript.ScriptIntrinsic3DLUT.create(rst.mN, et.getNObj());
43d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException exc) {
44d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(exc);
45d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
46ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return lut;
47ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
48ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
49ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setLUT(Allocation lut) {
50ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        AllocationThunker lutt = (AllocationThunker) lut;
51d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
52d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.setLUT(lutt.getNObj());
53d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
54d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
55d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
56ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
57ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
58ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
59ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    /**
60ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     * Invoke the kernel and apply the lookup to each cell of ain
61ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     * and copy to aout.
62ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     *
63ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     * @param ain Input allocation
64ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     * @param aout Output allocation
65ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     */
66ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void forEach(Allocation ain, Allocation aout) {
67ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        AllocationThunker aint = (AllocationThunker)ain;
68ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        AllocationThunker aoutt = (AllocationThunker)aout;
69d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
70d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.forEach(aint.getNObj(), aoutt.getNObj());
71d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
72d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
73d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
74ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
75ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
76ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    /**
77ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     * Get a KernelID for this intrinsic kernel.
78ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     *
79ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     * @return Script.KernelID The KernelID object.
80ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray     */
81ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public Script.KernelID getKernelID() {
82ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        Script.KernelID k = createKernelID(0, 3, null, null);
83d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
84d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            k.mN = mN.getKernelID();
85d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
86d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
87d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
88ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return k;
89ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
90ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray}
91ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
92