13a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams/* 23a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * Copyright (C) 2012 The Android Open Source Project 33a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * 43a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 53a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * you may not use this file except in compliance with the License. 63a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * You may obtain a copy of the License at 73a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * 83a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 93a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * 103a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * Unless required by applicable law or agreed to in writing, software 113a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 123a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * See the License for the specific language governing permissions and 143a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams * limitations under the License. 153a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams */ 163a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 173a5b8011765906c15b5474b2bc43d80f6746cb45Jason Samspackage com.android.rs.image; 183a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 193a5b8011765906c15b5474b2bc43d80f6746cb45Jason Samsimport java.lang.Math; 203a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 213a5b8011765906c15b5474b2bc43d80f6746cb45Jason Samsimport android.renderscript.Allocation; 223a5b8011765906c15b5474b2bc43d80f6746cb45Jason Samsimport android.renderscript.Element; 233a5b8011765906c15b5474b2bc43d80f6746cb45Jason Samsimport android.renderscript.RenderScript; 243a5b8011765906c15b5474b2bc43d80f6746cb45Jason Samsimport android.renderscript.ScriptIntrinsicLUT; 253a5b8011765906c15b5474b2bc43d80f6746cb45Jason Samsimport android.util.Log; 263a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 273a5b8011765906c15b5474b2bc43d80f6746cb45Jason Samspublic class CrossProcess extends TestBase { 283a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams private ScriptIntrinsicLUT mIntrinsic; 293a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 303a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams public void createTest(android.content.res.Resources res) { 313a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams mIntrinsic = ScriptIntrinsicLUT.create(mRS, Element.U8_4(mRS)); 323a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams for (int ct=0; ct < 256; ct++) { 333a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams float f = ((float)ct) / 255.f; 343a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 353a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams float r = f; 363a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams if (r < 0.5f) { 373a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams r = 4.0f * r * r * r; 383a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams } else { 393a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams r = 1.0f - r; 403a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams r = 1.0f - (4.0f * r * r * r); 413a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams } 423a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams mIntrinsic.setRed(ct, (int)(r * 255.f + 0.5f)); 433a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 443a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams float g = f; 453a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams if (g < 0.5f) { 463a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams g = 2.0f * g * g; 473a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams } else { 483a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams g = 1.0f - g; 493a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams g = 1.0f - (2.0f * g * g); 503a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams } 513a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams mIntrinsic.setGreen(ct, (int)(g * 255.f + 0.5f)); 523a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 533a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams float b = f * 0.5f + 0.25f; 543a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams mIntrinsic.setBlue(ct, (int)(b * 255.f + 0.5f)); 553a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams } 563a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 573a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams } 583a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 593a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams public void runTest() { 603a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams mIntrinsic.forEach(mInPixelsAllocation, mOutPixelsAllocation); 613a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams } 623a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams 633a5b8011765906c15b5474b2bc43d80f6746cb45Jason Sams} 64