diff --git a/src/gfx/gfx.hpp b/src/gfx/gfx.hpp index a5d279f6..d74a4d6d 100644 --- a/src/gfx/gfx.hpp +++ b/src/gfx/gfx.hpp @@ -95,6 +95,9 @@ void mask_blend(Image& img1, const Image& img2, const Image& mask); /// Saturate an image, amount should be in range [0...100] void saturate(Image& image, int amount); +/// Desaturate an image +void desaturate(Image& image); + // ----------------------------------------------------------------------------- : Combining /// Ways in which images can be combined, similair to what Photoshop supports diff --git a/src/gfx/image_effects.cpp b/src/gfx/image_effects.cpp index 5160ebfc..b0041799 100644 --- a/src/gfx/image_effects.cpp +++ b/src/gfx/image_effects.cpp @@ -30,3 +30,15 @@ void saturate(Image& image, int amount) { pix += 3; } } + +void desaturate(Image& image) { + Byte* pix = image.GetData(); + Byte* end = pix + image.GetWidth() * image.GetHeight() * 3; + while (pix != end) { + int r = pix[0], g = pix[1], b = pix[2]; + pix[0] = (r+r+g+b) / 4; + pix[1] = (g+r+g+b) / 4; + pix[2] = (b+r+g+b) / 4; + pix += 3; + } +}