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