From 968f557511f8c491eccef7c723595a3e53e8371f Mon Sep 17 00:00:00 2001 From: twanvl Date: Tue, 3 Aug 2010 18:44:44 +0000 Subject: [PATCH] recolor_image function can now be used with custom colors git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1477 0fc631ac-6414-0410-93d0-97cfa31319b6 --- doc/function/flip_horizontal.txt | 2 ++ doc/function/flip_vertical.txt | 2 ++ doc/function/invert_image.txt | 2 ++ doc/function/recolor_image.txt | 21 ++++++++++++++++++--- doc/function/rotate.txt | 4 +++- doc/function/saturate.txt | 2 ++ doc/function/symbol1_recolor_custom.png | Bin 0 -> 2535 bytes src/gfx/generated_image.cpp | 14 ++++++++++++++ src/gfx/generated_image.hpp | 11 +++++++++++ src/script/functions/image.cpp | 11 +++++++++-- 10 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 doc/function/symbol1_recolor_custom.png diff --git a/doc/function/flip_horizontal.txt b/doc/function/flip_horizontal.txt index c3af2872..14bdc90c 100644 --- a/doc/function/flip_horizontal.txt +++ b/doc/function/flip_horizontal.txt @@ -1,5 +1,7 @@ Function: flip_horizontal +DOC_MSE_VERSION: since 0.3.9 + --Usage-- > flip_horizontal(input: image) diff --git a/doc/function/flip_vertical.txt b/doc/function/flip_vertical.txt index 19c7b3d1..913f624e 100644 --- a/doc/function/flip_vertical.txt +++ b/doc/function/flip_vertical.txt @@ -1,5 +1,7 @@ Function: flip_vertical +DOC_MSE_VERSION: since 0.3.9 + --Usage-- > flip_vertical(input: image) diff --git a/doc/function/invert_image.txt b/doc/function/invert_image.txt index 01bbeecf..06e298c6 100644 --- a/doc/function/invert_image.txt +++ b/doc/function/invert_image.txt @@ -1,5 +1,7 @@ Function: invert_image +DOC_MSE_VERSION: since 0.3.9 + --Usage-- > invert_image(input: image) diff --git a/doc/function/recolor_image.txt b/doc/function/recolor_image.txt index 601a317c..2efa35fa 100644 --- a/doc/function/recolor_image.txt +++ b/doc/function/recolor_image.txt @@ -1,7 +1,10 @@ Function: recolor_image +DOC_MSE_VERSION: since 0.3.9 + --Usage-- > recolor_image(input: image, color: color) +> recolor_image(input: image, red: color, green: color, blue: color, white: color) Re-color an image: * Red is replaced by the color @@ -13,14 +16,26 @@ Re-color an image: This function is mostly intended to make symbols in a symbol font wich can match the text color. - --Parameters-- ! Parameter Type Description | @input@ [[type:image]] Image to recolor. | @color@ [[type:color]] Color by which to replace red. +Or +! Parameter Type Description +| @input@ [[type:image]] Image to recolor. +| @red@ [[type:color]] Color by which to replace red. +| @green@ [[type:color]] Color by which to replace green. +| @blue@ [[type:color]] Color by which to replace blue. +| @white@ [[type:color]] Color by which to replace white. + + --Examples-- -> recolor_image("symbol1.png", color: rgb(180,0,0)) == [[Image]] +> recolor_image("symbol1.png", color: rgb(180,0,0)) == [[Image]] >>> recolor_image("symbol1.png", color: rgb(180,0,0)) == "symbol1_red.png" -> recolor_image("symbol1.png", color: rgb(100,255,0)) == [[Image]] +> recolor_image("symbol1.png", color: rgb(100,255,0)) == [[Image]] >>> recolor_image("symbol1.png", color: rgb(100,255,0)) == "symbol1_green.png" + +Custom choices for green, blue and white are also possible: +>>> recolor_image("symbol1.png", red:rgb(0,170,0), green:rgb(200,0,255), blue:rgb(128,0,0), white:rgb(220,255,0)) +>>> == "symbol1_recolor_custom.png" diff --git a/doc/function/rotate.txt b/doc/function/rotate.txt index 3519dce1..5c36edc9 100644 --- a/doc/function/rotate.txt +++ b/doc/function/rotate.txt @@ -1,4 +1,6 @@ -Function: flip_vertical +Function: rotate + +DOC_MSE_VERSION: since 0.3.9 --Usage-- > rotate(input: image, angle: some_number) diff --git a/doc/function/saturate.txt b/doc/function/saturate.txt index 44b0d904..1895bcc4 100644 --- a/doc/function/saturate.txt +++ b/doc/function/saturate.txt @@ -1,5 +1,7 @@ Function: saturate +DOC_MSE_VERSION: since 0.3.9 + --Usage-- > saturate(input: image, amount: saturation amount) diff --git a/doc/function/symbol1_recolor_custom.png b/doc/function/symbol1_recolor_custom.png new file mode 100644 index 0000000000000000000000000000000000000000..ee81fb40b7490f105aace7446d9f026ca0d24831 GIT binary patch literal 2535 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 literal 0 HcmV?d00001 diff --git a/src/gfx/generated_image.cpp b/src/gfx/generated_image.cpp index 697cd8e0..622f54ae 100644 --- a/src/gfx/generated_image.cpp +++ b/src/gfx/generated_image.cpp @@ -221,6 +221,20 @@ bool RecolorImage::operator == (const GeneratedImage& that) const { && color == that2->color; } +Image RecolorImage2::generate(const Options& opt) const { + Image img = image->generate(opt); + recolor(img, red,green,blue,white); + return img; +} +bool RecolorImage2::operator == (const GeneratedImage& that) const { + const RecolorImage2* that2 = dynamic_cast(&that); + return that2 && *image == *that2->image + && red == that2->red + && green == that2->green + && blue == that2->blue + && white == that2->white; +} + // ----------------------------------------------------------------------------- : FlipImage Image FlipImageHorizontal::generate(const Options& opt) const { diff --git a/src/gfx/generated_image.hpp b/src/gfx/generated_image.hpp index d97a0343..7833cad3 100644 --- a/src/gfx/generated_image.hpp +++ b/src/gfx/generated_image.hpp @@ -227,6 +227,17 @@ class RecolorImage : public SimpleFilterImage { private: Color color; }; +/// Recolor an image, with custom colors +class RecolorImage2 : public SimpleFilterImage { + public: + inline RecolorImage2(const GeneratedImageP& image, Color red, Color green, Color blue, Color white) + : SimpleFilterImage(image), red(red), green(green), blue(blue), white(white) + {} + virtual Image generate(const Options& opt) const; + virtual bool operator == (const GeneratedImage& that) const; + private: + Color red,green,blue,white; +}; // ----------------------------------------------------------------------------- : FlipImage diff --git a/src/script/functions/image.cpp b/src/script/functions/image.cpp index d537fd84..07eb843f 100644 --- a/src/script/functions/image.cpp +++ b/src/script/functions/image.cpp @@ -93,8 +93,15 @@ SCRIPT_FUNCTION(invert_image) { SCRIPT_FUNCTION(recolor_image) { SCRIPT_PARAM_C(GeneratedImageP, input); - SCRIPT_PARAM(Color, color); - return intrusive(new RecolorImage(input,color)); + SCRIPT_OPTIONAL_PARAM(Color, red) { + SCRIPT_PARAM(Color, green); + SCRIPT_PARAM(Color, blue); + SCRIPT_PARAM_DEFAULT(Color, white, *wxWHITE); + return intrusive(new RecolorImage2(input,red,green,blue,white)); + } else { + SCRIPT_PARAM(Color, color); + return intrusive(new RecolorImage(input,color)); + } } SCRIPT_FUNCTION(enlarge) {