• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 androidx.renderscript;
18 
19 import android.util.Log;
20 
21 /**
22  *
23  * Intrinsic for converting RGB to RGBA by using a 3D lookup table.  The
24  * incoming r,g,b values are use as normalized x,y,z coordinates into a 3D
25  * allocation.  The 8 nearest values are sampled and linearly interpolated.  The
26  * result is placed in the output.
27  *
28  * @deprecated Renderscript has been deprecated in API level 31. Please refer to the <a
29  * href="https://developer.android.com/guide/topics/renderscript/migration-guide">migration
30  * guide</a> for the proposed alternatives.
31  **/
32 @Deprecated
33 public class ScriptIntrinsic3DLUT extends ScriptIntrinsic {
34     private Allocation mLUT;
35     private Element mElement;
36     // API level for the intrinsic
37     private static final int INTRINSIC_API_LEVEL = 19;
38 
ScriptIntrinsic3DLUT(long id, RenderScript rs, Element e)39     protected ScriptIntrinsic3DLUT(long id, RenderScript rs, Element e) {
40         super(id, rs);
41         mElement = e;
42     }
43 
44     /**
45      * Supported elements types are {@link Element#U8_4}
46      *
47      * The defaults tables are identity.
48      *
49      * @param rs The RenderScript context
50      * @param e Element type for intputs and outputs
51      *
52      * @return ScriptIntrinsic3DLUT
53      */
create(RenderScript rs, Element e)54     public static ScriptIntrinsic3DLUT create(RenderScript rs, Element e) {
55         if (!e.isCompatible(Element.U8_4(rs))) {
56             throw new RSIllegalArgumentException("Element must be compatible with uchar4.");
57         }
58         long id;
59         boolean mUseIncSupp = rs.isUseNative() &&
60                               android.os.Build.VERSION.SDK_INT < INTRINSIC_API_LEVEL;
61 
62         id = rs.nScriptIntrinsicCreate(8, e.getID(rs), mUseIncSupp);
63 
64         ScriptIntrinsic3DLUT si = new ScriptIntrinsic3DLUT(id, rs, e);
65         si.setIncSupp(mUseIncSupp);
66         return si;
67     }
68 
69     /**
70      * Sets the {@link androidx.renderscript.Allocation} to be used as
71      * the lookup table.
72      *
73      * The lookup table must use the same
74      * {@link androidx.renderscript.Element} as the intrinsic.
75      *
76      */
77 
78     public void setLUT(Allocation lut) {
79         final Type t = lut.getType();
80 
81         if (t.getZ() == 0) {
82             throw new RSIllegalArgumentException("LUT must be 3d.");
83         }
84 
85         if (!t.getElement().isCompatible(mElement)) {
86             throw new RSIllegalArgumentException("LUT element type must match.");
87         }
88 
89         mLUT = lut;
90         setVar(0, mLUT);
91     }
92 
93 
94     /**
95      * Invoke the kernel and apply the lookup to each cell of ain
96      * and copy to aout.
97      *
98      * @param ain Input allocation
99      * @param aout Output allocation
100      */
101     public void forEach(Allocation ain, Allocation aout) {
102         forEach(0, ain, aout, null);
103     }
104 
105     /**
106      * Get a KernelID for this intrinsic kernel.
107      *
108      * @return Script.KernelID The KernelID object.
109      */
110     public Script.KernelID getKernelID() {
111         return createKernelID(0, 3, null, null);
112     }
113 }
114 
115