FileDocCategorySizeDatePackage
ScriptIntrinsicLUT.javaAPI DocAndroid 5.1 API4331Thu Mar 12 22:22:56 GMT 2015android.support.v8.renderscript

ScriptIntrinsicLUT

public class ScriptIntrinsicLUT extends ScriptIntrinsic
Intrinsic for applying a per-channel lookup table. Each channel of the input has an independant lookup table. The tables are 256 entries in size and can cover the full value range of {@link Element#U8_4}.

Fields Summary
private final Matrix4f
mMatrix
private Allocation
mTables
private final byte[]
mCache
private boolean
mDirty
Constructors Summary
protected ScriptIntrinsicLUT(int id, RenderScript rs)


         
        super(id, rs);
    
Methods Summary
public static android.support.v8.renderscript.ScriptIntrinsicLUTcreate(RenderScript rs, Element e)
Supported elements types are {@link Element#U8_4} The defaults tables are identity.

param
rs The RenderScript context
param
e Element type for intputs and outputs
return
ScriptIntrinsicLUT

        if (rs.isNative) {
            RenderScriptThunker rst = (RenderScriptThunker) rs;
            return ScriptIntrinsicLUTThunker.create(rs, e);
        }

        int id = rs.nScriptIntrinsicCreate(3, e.getID(rs));

        ScriptIntrinsicLUT si = new ScriptIntrinsicLUT(id, rs);
        si.mTables = Allocation.createSized(rs, Element.U8(rs), 1024);
        for (int ct=0; ct < 256; ct++) {
            si.mCache[ct] = (byte)ct;
            si.mCache[ct + 256] = (byte)ct;
            si.mCache[ct + 512] = (byte)ct;
            si.mCache[ct + 768] = (byte)ct;
        }
        si.setVar(0, si.mTables);
        return si;
    
public voidforEach(Allocation ain, Allocation aout)
Invoke the kernel and apply the lookup to each cell of ain and copy to aout.

param
ain Input allocation
param
aout Output allocation

        if (mDirty) {
            mDirty = false;
            mTables.copyFromUnchecked(mCache);
        }
        forEach(0, ain, aout, null);
    
public Script.KernelIDgetKernelID()
Get a KernelID for this intrinsic kernel.

return
Script.KernelID The KernelID object.

        return createKernelID(0, 3, null, null);
    
public voidsetAlpha(int index, int value)
Set an entry in the alpha channel lookup table

param
index Must be 0-255
param
value Must be 0-255

        validate(index, value);
        mCache[index+768] = (byte)value;
        mDirty = true;
    
public voidsetBlue(int index, int value)
Set an entry in the blue channel lookup table

param
index Must be 0-255
param
value Must be 0-255

        validate(index, value);
        mCache[index+512] = (byte)value;
        mDirty = true;
    
public voidsetGreen(int index, int value)
Set an entry in the green channel lookup table

param
index Must be 0-255
param
value Must be 0-255

        validate(index, value);
        mCache[index+256] = (byte)value;
        mDirty = true;
    
public voidsetRed(int index, int value)
Set an entry in the red channel lookup table

param
index Must be 0-255
param
value Must be 0-255

        validate(index, value);
        mCache[index] = (byte)value;
        mDirty = true;
    
private voidvalidate(int index, int value)

        if (index < 0 || index > 255) {
            throw new RSIllegalArgumentException("Index out of range (0-255).");
        }
        if (value < 0 || value > 255) {
            throw new RSIllegalArgumentException("Value out of range (0-255).");
        }