16a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams/* 26a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * Copyright (C) 2014 The Android Open Source Project 36a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * 46a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 56a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * you may not use this file except in compliance with the License. 66a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * You may obtain a copy of the License at 76a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * 86a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * http://www.apache.org/licenses/LICENSE-2.0 96a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * 106a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * Unless required by applicable law or agreed to in writing, software 116a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 126a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * See the License for the specific language governing permissions and 146a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * limitations under the License. 156a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams */ 166a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 176a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samspackage com.android.rs.image2; 186a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 196a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samsimport android.support.v8.renderscript.*; 206a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 216a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 226a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samspublic class Resize extends TestBase { 236a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams private ScriptC_resize mScript; 246a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 256a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams private Allocation mScratchAllocation; 266a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams private int mWidth; 276a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams private int mHeight; 286a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 296a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams public Resize(boolean useIntrinsic) { 306a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams } 316a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 326a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams public void createTest(android.content.res.Resources res) { 336a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mWidth = mInPixelsAllocation.getType().getX(); 346a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mHeight = mInPixelsAllocation.getType().getY(); 356a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams float scale = 1.f / 32.f; 366a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 376a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams Type.Builder tb = new Type.Builder(mRS, mInPixelsAllocation.getElement()); 386a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams tb.setX((int)(mWidth * scale)); 396a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams tb.setY((int)(mHeight * scale)); 406a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams Type t = tb.create(); 416a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScratchAllocation = Allocation.createTyped(mRS, t); 426a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 436a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams // make small buffer 446a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript = new ScriptC_resize(mRS); 456a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.set_gIn(mInPixelsAllocation); 466a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.set_gWidthIn(mWidth); 476a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.set_gHeightIn(mHeight); 486a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.set_scale(1.f / scale); 496a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.forEach_nearest(mScratchAllocation); 506a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 516a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams // setup normal ops 526a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.set_gIn(mScratchAllocation); 536a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.set_gWidthIn(t.getX()); 546a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.set_gHeightIn(t.getY()); 556a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.set_scale(scale); 566a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams } 576a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 586a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams public void runTest() { 596a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams mScript.forEach_bicubic(mOutPixelsAllocation); 606a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams } 616a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams 626a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams} 63