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 Murrayclass ScriptIntrinsicColorMatrixThunker extends ScriptIntrinsicColorMatrix {
22ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    android.renderscript.ScriptIntrinsicColorMatrix mN;
23ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
24ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    android.renderscript.ScriptIntrinsicColorMatrix getNObj() {
25ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return mN;
26ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
27ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
28ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    private ScriptIntrinsicColorMatrixThunker(int id, RenderScript rs) {
29ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        super(id, rs);
30ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
31ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
32ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public static ScriptIntrinsicColorMatrixThunker create(RenderScript rs, Element e) {
33ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker) rs;
34ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        ElementThunker et = (ElementThunker)e;
35ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
36ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        ScriptIntrinsicColorMatrixThunker cm =  new ScriptIntrinsicColorMatrixThunker(0, rs);
37d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
38d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            cm.mN = android.renderscript.ScriptIntrinsicColorMatrix.create(rst.mN, et.getNObj());
39d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException exc) {
40d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(exc);
41d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
42ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return cm;
43ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
44ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
45ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
46ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setColorMatrix(Matrix4f m) {
47d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
48d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.setColorMatrix(new android.renderscript.Matrix4f(m.getArray()));
49d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
50d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
51d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
52ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
53ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
54ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setColorMatrix(Matrix3f m) {
55d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
56d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.setColorMatrix(new android.renderscript.Matrix3f(m.getArray()));
57d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
58d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
59d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
60ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
61ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
62ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setGreyscale() {
63d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
64d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.setGreyscale();
65d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
66d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
67d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
68ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
69ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
70ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setYUVtoRGB() {
71d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
72d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.setYUVtoRGB();
73d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
74d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
75d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
76ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
77ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
78ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setRGBtoYUV() {
79d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
80d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.setRGBtoYUV();
81d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
82d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
83d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
84ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
85ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
86ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
87ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void forEach(Allocation ain, Allocation aout) {
88ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        AllocationThunker aint = (AllocationThunker)ain;
89ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        AllocationThunker aoutt = (AllocationThunker)aout;
90d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
91d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.forEach(aint.getNObj(), aoutt.getNObj());
92d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
93d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
94d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
95ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
96ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
97ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public Script.KernelID getKernelID() {
98ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        Script.KernelID k = createKernelID(0, 3, null, null);
99d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
100d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            k.mN = mN.getKernelID();
101d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
102d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
103d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
104ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return k;
105ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
106ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
107ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray}
108ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
109