package at.favre.lib.dali.builder.processor; import android.graphics.Bitmap; import android.support.v8.renderscript.Allocation; import android.support.v8.renderscript.Element; import android.support.v8.renderscript.Matrix4f; import android.support.v8.renderscript.RSRuntimeException; import android.support.v8.renderscript.RenderScript; import android.support.v8.renderscript.ScriptIntrinsicColorMatrix; /** * Created by PatrickF on 03.06.2014. */ public class RenderScriptColorFilter implements IBitmapProcessor { private RenderScript rs; private float[] data; public RenderScriptColorFilter(RenderScript rs,float[] matrix) { this.rs = rs; this.data = matrix; } @Override public Bitmap manipulate(Bitmap bitmapOriginal) { try { Allocation input = Allocation.createFromBitmap(rs, bitmapOriginal); final Allocation output = Allocation.createTyped(rs, input.getType()); ScriptIntrinsicColorMatrix mScript = ScriptIntrinsicColorMatrix.create(rs, Element.U8(rs)); Matrix4f matrix4f = new Matrix4f(data); mScript.setColorMatrix(matrix4f); output.copyTo(bitmapOriginal); } catch (RSRuntimeException e) { //fallback } return bitmapOriginal; } @Override public String getProcessorTag() { return this.getClass().getSimpleName()+": "; } }