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