From 89daad6bae798779e57f252e9da4fe4e62337124 Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Mon, 29 Jul 2013 14:30:02 -0700 Subject: Add basic support for intrinsics. Move sp<> into RScpp. Change-Id: I74cdee7069a624ded5091d53db3a4b8ce9894033 --- cpp/ScriptIntrinsics.cpp | 104 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 101 insertions(+), 3 deletions(-) (limited to 'cpp/ScriptIntrinsics.cpp') diff --git a/cpp/ScriptIntrinsics.cpp b/cpp/ScriptIntrinsics.cpp index 44c5bb63..76328c43 100644 --- a/cpp/ScriptIntrinsics.cpp +++ b/cpp/ScriptIntrinsics.cpp @@ -17,8 +17,6 @@ #include #include "RenderScript.h" -#include -#include "rsDefines.h" using namespace android; using namespace RSC; @@ -28,9 +26,19 @@ ScriptIntrinsic::ScriptIntrinsic(sp rs, int id, sp e) mID = RS::dispatch->ScriptIntrinsicCreate(rs->getContext(), id, e->getID()); } +ScriptIntrinsic3DLUT::ScriptIntrinsic3DLUT(sp rs, sp e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_3DLUT, e) { + +} +void ScriptIntrinsic3DLUT::forEach(sp ain, sp aout) { + Script::forEach(0, ain, aout, NULL, 0); +} +void ScriptIntrinsic3DLUT::setLUT(sp lut) { + Script::setVar(0, lut); +} + ScriptIntrinsicBlend::ScriptIntrinsicBlend(sp rs, sp e) : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_BLEND, e) { - } void ScriptIntrinsicBlend::blendClear(sp in, sp out) { @@ -95,6 +103,9 @@ void ScriptIntrinsicBlend::blendSubtract(sp in, sp out) Script::forEach(35, in, out, NULL, 0); } + + + ScriptIntrinsicBlur::ScriptIntrinsicBlur(sp rs, sp e) : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_BLUR, e) { @@ -108,3 +119,90 @@ void ScriptIntrinsicBlur::blur(sp in, sp out) { void ScriptIntrinsicBlur::setRadius(float radius) { Script::setVar(0, &radius, sizeof(float)); } + + + +ScriptIntrinsicColorMatrix::ScriptIntrinsicColorMatrix(sp rs, sp e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_COLOR_MATRIX, e) { + +} + +void ScriptIntrinsicColorMatrix::forEach(sp in, sp out) { + Script::forEach(0, in, out, NULL, 0); +} + + +void ScriptIntrinsicColorMatrix::setColorMatrix3(float* m) { + Script::setVar(0, (void*)m, sizeof(float) * 9); +} + + +void ScriptIntrinsicColorMatrix::setColorMatrix4(float* m) { + Script::setVar(0, (void*)m, sizeof(float) * 16); +} + + +void ScriptIntrinsicColorMatrix::setGreyscale() { + float matrix[] = {0.299f, 0.587f, 0.114f, 0.299f, 0.587f, 0.114f, 0.299f, 0.587f, 0.114f}; + setColorMatrix3(matrix); +} + + +void ScriptIntrinsicColorMatrix::setRGBtoYUV() { + float matrix[] = {0.299f,0.587f,0.114f,-0.14713f,-0.28886f,0.436f,0.615f,-0.51499f,-0.10001f}; + setColorMatrix3(matrix); +} + + +void ScriptIntrinsicColorMatrix::setYUVtoRGB() { + float matrix[] = {1.f,0.f,1.13983f,1.f,-0.39465f,-0.5806f,1.f,2.03211f,0.f}; + setColorMatrix3(matrix); +} + +ScriptIntrinsicConvolve3x3::ScriptIntrinsicConvolve3x3(sp rs, sp e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_CONVOLVE_3x3, e) { + +} + +void ScriptIntrinsicConvolve3x3::setInput(sp in) { + Script::setVar(1, in); +} + +void ScriptIntrinsicConvolve3x3::forEach(sp out) { + Script::forEach(0, NULL, out, NULL, 0); +} + +void ScriptIntrinsicConvolve3x3::setCoefficients(float* v) { + Script::setVar(0, (void*)v, sizeof(float) * 9); +} + +ScriptIntrinsicConvolve5x5::ScriptIntrinsicConvolve5x5(sp rs, sp e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_CONVOLVE_5x5, e) { + +} + +void ScriptIntrinsicConvolve5x5::setInput(sp in) { + Script::setVar(1, in); +} + +void ScriptIntrinsicConvolve5x5::forEach(sp out) { + Script::forEach(0, NULL, out, NULL, 0); +} + +void ScriptIntrinsicConvolve5x5::setCoefficients(float* v) { + Script::setVar(0, (void*)v, sizeof(float) * 25); +} + +/*ScriptIntrinsicLUT::ScriptIntrinsicLUT(sp rs, sp e) + : ScriptIntrinsic(rs, RS_SCRIPT_INTRINSIC_ID_LUT, e) { + +} + +void ScriptIntrinsicLUT::forEach(sp ain, sp aout) { + +} + +void ScriptIntrinsicLUT::setLUT(sp lut) { + +}*/ + -- cgit v1.2.3