1721a5a24e2278f4012109865d62b98190b3185afJason Sams/*
2721a5a24e2278f4012109865d62b98190b3185afJason Sams * Copyright (C) 2014 The Android Open Source Project
3721a5a24e2278f4012109865d62b98190b3185afJason Sams *
4721a5a24e2278f4012109865d62b98190b3185afJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5721a5a24e2278f4012109865d62b98190b3185afJason Sams * you may not use this file except in compliance with the License.
6721a5a24e2278f4012109865d62b98190b3185afJason Sams * You may obtain a copy of the License at
7721a5a24e2278f4012109865d62b98190b3185afJason Sams *
8721a5a24e2278f4012109865d62b98190b3185afJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9721a5a24e2278f4012109865d62b98190b3185afJason Sams *
10721a5a24e2278f4012109865d62b98190b3185afJason Sams * Unless required by applicable law or agreed to in writing, software
11721a5a24e2278f4012109865d62b98190b3185afJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12721a5a24e2278f4012109865d62b98190b3185afJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13721a5a24e2278f4012109865d62b98190b3185afJason Sams * See the License for the specific language governing permissions and
14721a5a24e2278f4012109865d62b98190b3185afJason Sams * limitations under the License.
15721a5a24e2278f4012109865d62b98190b3185afJason Sams */
16721a5a24e2278f4012109865d62b98190b3185afJason Sams
17721a5a24e2278f4012109865d62b98190b3185afJason Samspackage com.android.rs.imagejb;
18721a5a24e2278f4012109865d62b98190b3185afJason Sams
19721a5a24e2278f4012109865d62b98190b3185afJason Samsimport java.lang.Math;
20721a5a24e2278f4012109865d62b98190b3185afJason Sams
21721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.renderscript.Allocation;
22721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.renderscript.Element;
23721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.renderscript.RenderScript;
24721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.renderscript.Script;
25721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.renderscript.ScriptC;
26721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.renderscript.Type;
27721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.renderscript.Short4;
28721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.util.Log;
29721a5a24e2278f4012109865d62b98190b3185afJason Sams
30721a5a24e2278f4012109865d62b98190b3185afJason Samspublic class Posterize extends TestBase {
31721a5a24e2278f4012109865d62b98190b3185afJason Sams    private ScriptC_posterize mScript;
32721a5a24e2278f4012109865d62b98190b3185afJason Sams    boolean mUseInvokes;
33721a5a24e2278f4012109865d62b98190b3185afJason Sams
34721a5a24e2278f4012109865d62b98190b3185afJason Sams    Posterize(boolean useInvoke) {
35721a5a24e2278f4012109865d62b98190b3185afJason Sams        mUseInvokes = useInvoke;
36721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
37721a5a24e2278f4012109865d62b98190b3185afJason Sams
38721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void createTest(android.content.res.Resources res) {
39721a5a24e2278f4012109865d62b98190b3185afJason Sams        mScript = new ScriptC_posterize(mRS);
40721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
41721a5a24e2278f4012109865d62b98190b3185afJason Sams
42721a5a24e2278f4012109865d62b98190b3185afJason Sams    void setParams(float intensHigh, float intensLow, int r, int g, int b) {
43721a5a24e2278f4012109865d62b98190b3185afJason Sams        if (mUseInvokes) {
44721a5a24e2278f4012109865d62b98190b3185afJason Sams            mScript.invoke_setParams(intensHigh, intensLow,
45721a5a24e2278f4012109865d62b98190b3185afJason Sams                                     (short)r, (short)g, (short)b);
46721a5a24e2278f4012109865d62b98190b3185afJason Sams        } else {
47721a5a24e2278f4012109865d62b98190b3185afJason Sams            mScript.set_intensityLow(intensLow);
48721a5a24e2278f4012109865d62b98190b3185afJason Sams            mScript.set_intensityHigh(intensHigh);
49721a5a24e2278f4012109865d62b98190b3185afJason Sams            mScript.set_color(new Short4((short)r, (short)g, (short)b, (short)255));
50721a5a24e2278f4012109865d62b98190b3185afJason Sams        }
51721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
52721a5a24e2278f4012109865d62b98190b3185afJason Sams
53721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void runTest() {
54721a5a24e2278f4012109865d62b98190b3185afJason Sams        mScript.set_inputImage(mInPixelsAllocation);
55721a5a24e2278f4012109865d62b98190b3185afJason Sams        setParams(.2f, 0.f, 255, 0, 0);
56721a5a24e2278f4012109865d62b98190b3185afJason Sams        mScript.forEach_root(mInPixelsAllocation, mOutPixelsAllocation);
57721a5a24e2278f4012109865d62b98190b3185afJason Sams        setParams(.4f, 0.2f, 0, 255, 0);
58721a5a24e2278f4012109865d62b98190b3185afJason Sams        mScript.forEach_root(mOutPixelsAllocation, mOutPixelsAllocation);
59721a5a24e2278f4012109865d62b98190b3185afJason Sams        setParams(.6f, 0.4f, 0, 0, 255);
60721a5a24e2278f4012109865d62b98190b3185afJason Sams        mScript.forEach_root(mOutPixelsAllocation, mOutPixelsAllocation);
61721a5a24e2278f4012109865d62b98190b3185afJason Sams        setParams(.8f, 0.6f, 255, 255, 0);
62721a5a24e2278f4012109865d62b98190b3185afJason Sams        mScript.forEach_root(mOutPixelsAllocation, mOutPixelsAllocation);
63721a5a24e2278f4012109865d62b98190b3185afJason Sams        setParams(1.0f, 0.8f, 0, 255, 255);
64721a5a24e2278f4012109865d62b98190b3185afJason Sams        mScript.forEach_root(mOutPixelsAllocation, mOutPixelsAllocation);
65721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
66721a5a24e2278f4012109865d62b98190b3185afJason Sams
67721a5a24e2278f4012109865d62b98190b3185afJason Sams}
68