summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMerov Linden <merov@lindenlab.com>2014-02-06 11:57:01 -0800
committerMerov Linden <merov@lindenlab.com>2014-02-06 11:57:01 -0800
commit2ba7552b9cd94b62c850365bcc537f0b3e344917 (patch)
tree744b2a12db06d60866a584a849a78e5f99b17366
parent9112a47f9be023dd83bf4de72d490d21d85e6b5e (diff)
ACME-1301 : Add colortransform as a secondary filter command
-rw-r--r--indra/integration_tests/llimage_libtest/filters/colortransform.xml16
-rwxr-xr-xindra/llimage/llimagefilter.cpp10
2 files changed, 26 insertions, 0 deletions
diff --git a/indra/integration_tests/llimage_libtest/filters/colortransform.xml b/indra/integration_tests/llimage_libtest/filters/colortransform.xml
new file mode 100644
index 0000000000..de4bebcce2
--- /dev/null
+++ b/indra/integration_tests/llimage_libtest/filters/colortransform.xml
@@ -0,0 +1,16 @@
+<llsd>
+ <array>
+ <array>
+ <string>colortransform</string>
+ <real>0.2125</real>
+ <real>0.7154</real>
+ <real>0.0721</real>
+ <real>0.2125</real>
+ <real>0.7154</real>
+ <real>0.0721</real>
+ <real>0.2125</real>
+ <real>0.7154</real>
+ <real>0.0721</real>
+ </array>
+ </array>
+</llsd>
diff --git a/indra/llimage/llimagefilter.cpp b/indra/llimage/llimagefilter.cpp
index 9093e4b59c..8f7e340d16 100755
--- a/indra/llimage/llimagefilter.cpp
+++ b/indra/llimage/llimagefilter.cpp
@@ -256,6 +256,16 @@ void LLImageFilter::executeFilter(LLPointer<LLImageRaw> raw_image)
kernel.mMatrix[k][j] = mFilterData[i][index++].asReal();
convolve(kernel,normalize,abs_value);
}
+ else if (filter_name == "colortransform")
+ {
+ LLMatrix3 transform;
+ S32 index = 1;
+ for (S32 k = 0; k < NUM_VALUES_IN_MAT3; k++)
+ for (S32 j = 0; j < NUM_VALUES_IN_MAT3; j++)
+ transform.mMatrix[k][j] = mFilterData[i][index++].asReal();
+ transform.transpose();
+ colorTransform(transform);
+ }
else
{
llwarns << "Filter unknown, cannot execute filter command : " << filter_name << llendl;