1bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma/* 2bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * Copyright (C) 2012 The Android Open Source Project 3bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * 4bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * Licensed under the Apache License, Version 2.0 (the "License"); 5bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * you may not use this file except in compliance with the License. 6bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * You may obtain a copy of the License at 7bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * 8bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * http://www.apache.org/licenses/LICENSE-2.0 9bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * 10bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * Unless required by applicable law or agreed to in writing, software 11bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * distributed under the License is distributed on an "AS IS" BASIS, 12bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * See the License for the specific language governing permissions and 14bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma * limitations under the License. 15bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma */ 16bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 17bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharmapackage com.android.rs.image; 18bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 19bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharmaimport android.renderscript.Allocation; 20bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharmaimport android.renderscript.Element; 21bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharmaimport android.renderscript.Sampler; 22bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharmaimport android.renderscript.Type; 23bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharmaimport android.widget.SeekBar; 24bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharmaimport android.widget.TextView; 25bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 26bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharmapublic class Vignette extends TestBase { 27bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma private ScriptC_vignette_full mScript_full = null; 28bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma private ScriptC_vignette_relaxed mScript_relaxed = null; 298fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma private ScriptC_vignette_approx_full mScript_approx_full = null; 308fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma private ScriptC_vignette_approx_relaxed mScript_approx_relaxed = null; 318fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma private final boolean approx; 32bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma private final boolean relaxed; 33bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma private float center_x = 0.5f; 34bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma private float center_y = 0.5f; 35bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma private float scale = 0.5f; 36bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma private float shade = 0.5f; 37bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma private float slope = 20.0f; 38bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 398fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma public Vignette(boolean approx, boolean relaxed) { 408fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma this.approx = approx; 41bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma this.relaxed = relaxed; 42bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 43bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 44bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public boolean onBar1Setup(SeekBar b, TextView t) { 45bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma t.setText("Scale"); 46bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setMax(100); 47bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setProgress(25); 48bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma return true; 49bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 50bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public boolean onBar2Setup(SeekBar b, TextView t) { 51bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma t.setText("Shade"); 52bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setMax(100); 53bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setProgress(50); 54bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma return true; 55bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 56bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public boolean onBar3Setup(SeekBar b, TextView t) { 57bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma t.setText("Slope"); 58bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setMax(100); 59bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setProgress(20); 60bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma return true; 61bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 62bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public boolean onBar4Setup(SeekBar b, TextView t) { 63bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma t.setText("Shift center X"); 64bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setMax(100); 65bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setProgress(50); 66bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma return true; 67bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 68bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public boolean onBar5Setup(SeekBar b, TextView t) { 69bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma t.setText("Shift center Y"); 70bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setMax(100); 71bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma b.setProgress(50); 72bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma return true; 73bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 74bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 75bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public void onBar1Changed(int progress) { 76bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma scale = progress / 50.0f; 77bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma do_init(); 78bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 79bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public void onBar2Changed(int progress) { 80bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma shade = progress / 100.0f; 81bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma do_init(); 82bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 83bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public void onBar3Changed(int progress) { 84bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma slope = (float)progress; 85bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma do_init(); 86bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 87bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public void onBar4Changed(int progress) { 88bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma center_x = progress / 100.0f; 89bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma do_init(); 90bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 91bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public void onBar5Changed(int progress) { 92bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma center_y = progress / 100.0f; 93bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma do_init(); 94bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 95bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 96bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma private void do_init() { 978fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma if (approx) { 988fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma if (relaxed) 998fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mScript_approx_relaxed.invoke_init_vignette( 1008fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mInPixelsAllocation.getType().getX(), 1018fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mInPixelsAllocation.getType().getY(), center_x, 1028fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma center_y, scale, shade, slope); 1038fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma else 1048fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mScript_approx_full.invoke_init_vignette( 1058fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mInPixelsAllocation.getType().getX(), 1068fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mInPixelsAllocation.getType().getY(), center_x, 1078fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma center_y, scale, shade, slope); 1088fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma } else if (relaxed) 109bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma mScript_relaxed.invoke_init_vignette( 110bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma mInPixelsAllocation.getType().getX(), 111bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma mInPixelsAllocation.getType().getY(), center_x, center_y, 112bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma scale, shade, slope); 113bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma else 114bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma mScript_full.invoke_init_vignette( 115bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma mInPixelsAllocation.getType().getX(), 116bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma mInPixelsAllocation.getType().getY(), center_x, center_y, 117bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma scale, shade, slope); 118bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 119bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 120bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public void createTest(android.content.res.Resources res) { 1218fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma if (approx) { 1228fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma if (relaxed) 1238fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mScript_approx_relaxed = new ScriptC_vignette_approx_relaxed( 1248fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mRS, res, R.raw.vignette_approx_relaxed); 1258fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma else 1268fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mScript_approx_full = new ScriptC_vignette_approx_full( 1278fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mRS, res, R.raw.vignette_approx_full); 1288fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma } else if (relaxed) 129bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma mScript_relaxed = new ScriptC_vignette_relaxed(mRS, res, 130bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma R.raw.vignette_relaxed); 1318fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma else 132bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma mScript_full = new ScriptC_vignette_full(mRS, res, 133bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma R.raw.vignette_full); 134bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma do_init(); 135bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 136bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 137bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma public void runTest() { 1388fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma if (approx) { 1398fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma if (relaxed) 1408fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mScript_approx_relaxed.forEach_root(mInPixelsAllocation, 1418fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mOutPixelsAllocation); 1428fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma else 1438fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mScript_approx_full.forEach_root(mInPixelsAllocation, 1448fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mOutPixelsAllocation); 1458fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma } else if (relaxed) 1468fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mScript_relaxed.forEach_root(mInPixelsAllocation, 1478fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mOutPixelsAllocation); 148bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma else 1498fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mScript_full.forEach_root(mInPixelsAllocation, 1508fa57118ad687f50b26cf2037717ecc3a22fdfe1Rajeev Sharma mOutPixelsAllocation); 151bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma } 152bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 153bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma} 154bb0dbf73739c36ac97453f9510cf3d84acfd57ccRajeev Sharma 155