1204009b9114b33f184d7178838861d2fa9c9f88cJason Sams/* 2204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * Copyright (C) 2013 The Android Open Source Project 3204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * 4204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * you may not use this file except in compliance with the License. 6204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * You may obtain a copy of the License at 7204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * 8204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * 10204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * Unless required by applicable law or agreed to in writing, software 11204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * See the License for the specific language governing permissions and 14204009b9114b33f184d7178838861d2fa9c9f88cJason Sams * limitations under the License. 15204009b9114b33f184d7178838861d2fa9c9f88cJason Sams */ 16204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 17204009b9114b33f184d7178838861d2fa9c9f88cJason Samspackage com.android.rs.image; 18204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 19204009b9114b33f184d7178838861d2fa9c9f88cJason Samsimport java.lang.Math; 20204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 21204009b9114b33f184d7178838861d2fa9c9f88cJason Samsimport android.renderscript.*; 22204009b9114b33f184d7178838861d2fa9c9f88cJason Samsimport android.util.Log; 23204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 24204009b9114b33f184d7178838861d2fa9c9f88cJason Samspublic class Histogram extends TestBase { 25204009b9114b33f184d7178838861d2fa9c9f88cJason Sams private ScriptC_histogram mScript; 26cb1b58aaa3412b9aef93715c420a8419b6dd3a3fJason Sams private ScriptIntrinsicHistogram mHist; 27204009b9114b33f184d7178838861d2fa9c9f88cJason Sams private Allocation mSum; 28204009b9114b33f184d7178838861d2fa9c9f88cJason Sams private Allocation mSums; 29204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 30204009b9114b33f184d7178838861d2fa9c9f88cJason Sams public void createTest(android.content.res.Resources res) { 31204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript = new ScriptC_histogram(mRS); 32cb1b58aaa3412b9aef93715c420a8419b6dd3a3fJason Sams mHist = ScriptIntrinsicHistogram.create(mRS, Element.U8_4(mRS)); 33204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 34204009b9114b33f184d7178838861d2fa9c9f88cJason Sams int w = mInPixelsAllocation.getType().getX(); 35204009b9114b33f184d7178838861d2fa9c9f88cJason Sams int h = mInPixelsAllocation.getType().getY(); 36204009b9114b33f184d7178838861d2fa9c9f88cJason Sams int step = 8; 37204009b9114b33f184d7178838861d2fa9c9f88cJason Sams int steps = (h + step - 1) / step; 38204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 39204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.set_gWidth(w); 40204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.set_gHeight(h); 41204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.set_gStep(step); 42204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.set_gSteps(steps); 43204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 44204009b9114b33f184d7178838861d2fa9c9f88cJason Sams Type.Builder tb = new Type.Builder(mRS, Element.I32(mRS)); 45204009b9114b33f184d7178838861d2fa9c9f88cJason Sams tb.setX(256).setY(steps); 46204009b9114b33f184d7178838861d2fa9c9f88cJason Sams Type t = tb.create(); 47204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mSums = Allocation.createTyped(mRS, t); 48204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mSum = Allocation.createSized(mRS, Element.I32(mRS), 256); 49204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 50204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.set_gSums(mSums); 51204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.set_gSum(mSum); 52204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.set_gSrc(mInPixelsAllocation); 53204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.set_gDest(mOutPixelsAllocation); 54204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 55204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.forEach_clear(mOutPixelsAllocation); 56204009b9114b33f184d7178838861d2fa9c9f88cJason Sams } 57204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 58204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 59204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 60204009b9114b33f184d7178838861d2fa9c9f88cJason Sams public void runTest() { 61204009b9114b33f184d7178838861d2fa9c9f88cJason Sams Script.LaunchOptions lo = new Script.LaunchOptions(); 62204009b9114b33f184d7178838861d2fa9c9f88cJason Sams lo.setX(0, 1); 63cb1b58aaa3412b9aef93715c420a8419b6dd3a3fJason Sams //mScript.forEach_pass1(mSums, lo); 64cb1b58aaa3412b9aef93715c420a8419b6dd3a3fJason Sams //mScript.forEach_pass2(mSum); 65cb1b58aaa3412b9aef93715c420a8419b6dd3a3fJason Sams 66cb1b58aaa3412b9aef93715c420a8419b6dd3a3fJason Sams mHist.setOutput(mSum); 672b0d8e60d7daeffa7c9a5e11cfbfc9e5e04933b7Jason Sams mHist.forEach_Dot(mInPixelsAllocation); 68204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 69204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.invoke_rescale(); 70204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 71204009b9114b33f184d7178838861d2fa9c9f88cJason Sams lo.setX(0, 1024); 72204009b9114b33f184d7178838861d2fa9c9f88cJason Sams mScript.forEach_draw(mOutPixelsAllocation, lo); 73204009b9114b33f184d7178838861d2fa9c9f88cJason Sams } 74204009b9114b33f184d7178838861d2fa9c9f88cJason Sams 75204009b9114b33f184d7178838861d2fa9c9f88cJason Sams} 76