REBOL [
    Title:   "Zoom into Images"
    Date:    24-April-2001
    Version: 0.2.0
    File:    %zoom-img.r
    Home:    http://www.ross-gill.com/
    Author:  "Christopher Ross-Gill"
    Rights:  "Copyright ©2001 Christopher Ross-Gill"
    Purpose: "Zoom in to images"
    History: {
        0.1.0 Crude but it works.
        0.2.0 It's inside the 'layout now.
    }
    Comments: {
        A fun video-style zoom technique using 'crop and 'fit.
        Why? Because I can achieve the effect by only loading
        one image (or two for two examples) and this minimal
        source code.
    }
]

img: load-image http://www.ross-gill.com/files/castle-flag.jpg
img2: load-image http://www.ross-gill.com/files/goatfell-jura.jpg

count: 0

view layout compose [
    size 240x180
    at 0x0
    img-face: image img 240x180 effect [fit] rate 10
    feel [
        engage: func [face action event][
            if action = 'time [
                switch count [
                    0 [
                        os: 0x0
                        os-inc: 2x0
                        cp: img/size
                    ]
                    10 [
                        txt/text: {ams presents} show txt
                    ]
                    50 [
                        txt/text: {} show txt
                        face/image: img2
                        os: 0x0
                        os-inc: 0x0
                        cp: img/size
                    ]
                    60 [
                        txt/text: {'The Isle of Arran'} show txt
                    ]
                    100 [
                        face/rate: none
                        unview/all
                        do http://www.ross-gill.com/arran.r
                    ]
                ]
                face/effect: compose [
                    crop
                    (os: os + os-inc)
                    (cp: cp - 2x1)
                    fit
                ] show face
                count: count + 1
            ]
        ]
    ]
    at 10x40
    txt: banner "" 220x40 white
]