1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.renderscript; 18 19 /** 20 * Intrinsic Gausian blur filter. Applies a gaussian blur of the 21 * specified radius to all elements of an allocation. 22 * 23 * @deprecated Renderscript has been deprecated in API level 31. Please refer to the <a 24 * href="https://developer.android.com/guide/topics/renderscript/migration-guide">migration 25 * guide</a> for the proposed alternatives. 26 **/ 27 @Deprecated 28 public final class ScriptIntrinsicBlur extends ScriptIntrinsic { 29 private final float[] mValues = new float[9]; 30 private Allocation mInput; 31 ScriptIntrinsicBlur(long id, RenderScript rs)32 private ScriptIntrinsicBlur(long id, RenderScript rs) { 33 super(id, rs); 34 } 35 36 /** 37 * Create an intrinsic for applying a blur to an allocation. The 38 * default radius is 5.0. 39 * 40 * Supported elements types are {@link Element#U8}, 41 * {@link Element#U8_4}. 42 * 43 * @param rs The RenderScript context 44 * @param e Element type for inputs and outputs 45 * 46 * @return ScriptIntrinsicBlur 47 */ create(RenderScript rs, Element e)48 public static ScriptIntrinsicBlur create(RenderScript rs, Element e) { 49 if ((!e.isCompatible(Element.U8_4(rs))) && (!e.isCompatible(Element.U8(rs)))) { 50 throw new RSIllegalArgumentException("Unsupported element type."); 51 } 52 long id = rs.nScriptIntrinsicCreate(5, e.getID(rs)); 53 ScriptIntrinsicBlur sib = new ScriptIntrinsicBlur(id, rs); 54 sib.setRadius(5.f); 55 return sib; 56 } 57 58 /** 59 * Set the input of the blur. 60 * Must match the element type supplied during create. 61 * 62 * @param ain The input allocation 63 */ setInput(Allocation ain)64 public void setInput(Allocation ain) { 65 if (ain.getType().getY() == 0) { 66 throw new RSIllegalArgumentException("Input set to a 1D Allocation"); 67 } 68 Element e = ain.getElement(); 69 if ((!e.isCompatible(Element.U8_4(mRS))) && (!e.isCompatible(Element.U8(mRS)))) { 70 throw new RSIllegalArgumentException("Unsupported element type."); 71 } 72 mInput = ain; 73 setVar(1, ain); 74 } 75 76 /** 77 * Set the radius of the Blur. 78 * 79 * Supported range 0 < radius <= 25 80 * 81 * @param radius The radius of the blur 82 */ setRadius(float radius)83 public void setRadius(float radius) { 84 if (radius <= 0 || radius > 25) { 85 throw new RSIllegalArgumentException("Radius out of range (0 < r <= 25)."); 86 } 87 setVar(0, radius); 88 } 89 90 /** 91 * Apply the filter to the input and save to the specified 92 * allocation. 93 * 94 * @param aout Output allocation. Must match creation element 95 * type. 96 */ forEach(Allocation aout)97 public void forEach(Allocation aout) { 98 if (aout.getType().getY() == 0) { 99 throw new RSIllegalArgumentException("Output is a 1D Allocation"); 100 } 101 forEach(0, (Allocation) null, aout, null); 102 } 103 104 /** 105 * Apply the filter to the input and save to the specified 106 * allocation. 107 * 108 * @param aout Output allocation. Must match creation element 109 * type. 110 * @param opt LaunchOptions for clipping 111 */ forEach(Allocation aout, Script.LaunchOptions opt)112 public void forEach(Allocation aout, Script.LaunchOptions opt) { 113 if (aout.getType().getY() == 0) { 114 throw new RSIllegalArgumentException("Output is a 1D Allocation"); 115 } 116 forEach(0, (Allocation) null, aout, null, opt); 117 } 118 119 120 /** 121 * Get a KernelID for this intrinsic kernel. 122 * 123 * @return Script.KernelID The KernelID object. 124 */ getKernelID()125 public Script.KernelID getKernelID() { 126 return createKernelID(0, 2, null, null); 127 } 128 129 /** 130 * Get a FieldID for the input field of this intrinsic. 131 * 132 * @return Script.FieldID The FieldID object. 133 */ getFieldID_Input()134 public Script.FieldID getFieldID_Input() { 135 return createFieldID(1, null); 136 } 137 } 138