1da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff/* 2da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * Copyright (C) 2012 The Android Open Source Project 3da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * 4da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * Licensed under the Apache License, Version 2.0 (the "License"); 5da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * you may not use this file except in compliance with the License. 6da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * You may obtain a copy of the License at 7da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * 8da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * http://www.apache.org/licenses/LICENSE-2.0 9da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * 10da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * Unless required by applicable law or agreed to in writing, software 11da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * distributed under the License is distributed on an "AS IS" BASIS, 12da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * See the License for the specific language governing permissions and 14da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * limitations under the License. 15da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff */ 16da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 17da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriffpackage com.android.rs.image2; 18da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 199538bdd3c77968c7673719c580ae653ede4654d6Irfan Sheriffimport java.lang.Math; 20da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 21da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriffimport android.support.v8.renderscript.*; 22da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriffimport android.util.Log; 23da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 24da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriffpublic class CrossProcess extends TestBase { 25da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff private ScriptIntrinsicLUT mIntrinsic; 26da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 27da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff public void createTest(android.content.res.Resources res) { 28da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff mIntrinsic = ScriptIntrinsicLUT.create(mRS, Element.U8_4(mRS)); 29da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff for (int ct=0; ct < 256; ct++) { 309538bdd3c77968c7673719c580ae653ede4654d6Irfan Sheriff float f = ((float)ct) / 255.f; 31da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 32da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff float r = f; 33da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff if (r < 0.5f) { 34b8aad91f059527e04abaf8a83ed1ce6b5f09c55dIrfan Sheriff r = 4.0f * r * r * r; 35da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff } else { 36da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff r = 1.0f - r; 379538bdd3c77968c7673719c580ae653ede4654d6Irfan Sheriff r = 1.0f - (4.0f * r * r * r); 389538bdd3c77968c7673719c580ae653ede4654d6Irfan Sheriff } 399538bdd3c77968c7673719c580ae653ede4654d6Irfan Sheriff mIntrinsic.setRed(ct, (int)(r * 255.f + 0.5f)); 40da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 41da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff float g = f; 42da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff if (g < 0.5f) { 43da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff g = 2.0f * g * g; 44da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff } else { 45da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff g = 1.0f - g; 46da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff g = 1.0f - (2.0f * g * g); 47da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff } 48da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff mIntrinsic.setGreen(ct, (int)(g * 255.f + 0.5f)); 49da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 509538bdd3c77968c7673719c580ae653ede4654d6Irfan Sheriff float b = f * 0.5f + 0.25f; 51da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff mIntrinsic.setBlue(ct, (int)(b * 255.f + 0.5f)); 52da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff } 539538bdd3c77968c7673719c580ae653ede4654d6Irfan Sheriff 549538bdd3c77968c7673719c580ae653ede4654d6Irfan Sheriff } 55da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 56da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff public void runTest() { 57da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff mIntrinsic.forEach(mInPixelsAllocation, mOutPixelsAllocation); 58da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff } 59da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 60da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff} 61da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff