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