REBOL [ Title: "double-key.r" Date: 20-May-2003 Version: 0.0.2 File: %double-key.r Author: "Romano Paolo Tenca" Purpose: "How to merge three images with a 2 colors key" Email: rotenca@telvia.it Web: http://www.rebol.it/~romano Category: [3 vid view] ] double-key-ctx: context [ image1: clr1: msk: none image2: layout [ origin 0x0 image1: image effect [ draw [image msk 0x0 clr1] key 0.0.0 ] ] system/words/double-key: double-key: func [ source1 "Image to merge" source2 "Image to merge" mask "Image to merge with two colors to key" color1 "The color in mask to change with source1" color2 "The color in mask to change with source2" ][ image1/size: image2/size: mask/size image1/image: source1 image2/image: source2 clr1: color1 msk: mask image1/effect/4: color2 make image! image2 ] set 'prova func [s1 s2 m c /local im1][ im1: make image! layout [ origin 0x0 backdrop source2 image 2x2 effect [ draw [image mask 0x0 c] key 254 ] ] make image! layout [ origin 0x0 backdrop source1 image im1 effect [key 255.255.255] ] ] ] ;end of double-key code ;Test - can be deleted source1: make image! 2x2 repeat n 4 [poke source1 n red] source2: make image! 2x2 repeat n 4 [poke source2 n blue] mask: make image! 2x2 #{} poke mask 1 black poke mask 2 white poke mask 3 orange poke mask 4 yellow result1: double-key source1 source2 mask black white result2: double-key source1 source2 mask orange yellow view center-face layout [ style im image 100x100 effect [fit] across im source1 "source1" im source2 "source2" return pad 54x0 im mask "mask" below guide h4 as-is white black "black=source1^/white=source2" im result1 "result" return h4 as-is white black "orange=source1^/yellow=source2" im result2 "result" ] halt