summaryrefslogtreecommitdiff
path: root/indra/llimage/llimage.cpp
diff options
context:
space:
mode:
authorMerov Linden <merov@lindenlab.com>2014-01-03 17:31:04 -0800
committerMerov Linden <merov@lindenlab.com>2014-01-03 17:31:04 -0800
commit90cbda6db0d075dccc2369a68b02919b40f53cca (patch)
tree5aba103dfb23727ac8f5a101864f752789fe12fd /indra/llimage/llimage.cpp
parent35e30759c82e0fa425e2ee5ba235868a25b44169 (diff)
ACME-1236 : WIP : Add 2 new color correction filters. Add a la Instagram composite filters for testing in llimage_libtest
Diffstat (limited to 'indra/llimage/llimage.cpp')
-rwxr-xr-xindra/llimage/llimage.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index d84989f9c8..3d86abb26d 100755
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -1045,6 +1045,22 @@ void LLImageRaw::filterGamma(F32 gamma)
colorCorrect(gamma_lut,gamma_lut,gamma_lut);
}
+void LLImageRaw::filterColorBalance(F32 gamma_red, F32 gamma_green, F32 gamma_blue)
+{
+ U8 gamma_red_lut[256];
+ U8 gamma_green_lut[256];
+ U8 gamma_blue_lut[256];
+
+ for (S32 i = 0; i < 256; i++)
+ {
+ gamma_red_lut[i] = (U8)(255.0 * (llclampf((float)(pow((float)(i)/255.0,gamma_red)))));
+ gamma_green_lut[i] = (U8)(255.0 * (llclampf((float)(pow((float)(i)/255.0,gamma_green)))));
+ gamma_blue_lut[i] = (U8)(255.0 * (llclampf((float)(pow((float)(i)/255.0,gamma_blue)))));
+ }
+
+ colorCorrect(gamma_red_lut,gamma_green_lut,gamma_blue_lut);
+}
+
void LLImageRaw::filterLinearize(F32 tail)
{
// Get the histogram
@@ -1191,6 +1207,23 @@ void LLImageRaw::filterBrightness(S32 add)
colorCorrect(brightness_lut,brightness_lut,brightness_lut);
}
+void LLImageRaw::filterMinMax(S32 min, S32 max)
+{
+ U8 contrast_lut[256];
+ min = llclampb(min);
+ max = llclampb(max);
+
+ F32 slope = 255.0/(F32)(max - min);
+ F32 translate = -slope*min;
+
+ for (S32 i = 0; i < 256; i++)
+ {
+ contrast_lut[i] = (U8)(llclampb((S32)(slope*i + translate)));
+ }
+
+ colorCorrect(contrast_lut,contrast_lut,contrast_lut);
+}
+
// Filter Primitives
void LLImageRaw::colorTransform(const LLMatrix3 &transform)
{