Thank you Maxim, Carl and Christian for all your answers.

You're right Carl that pairs are better seen as numbers.
And they are still are convenient even though they don't have all other
types' features.

I appreciate Christian's code with its nice use of reverse and select (d:
select [x y x] :d).

Regards,

Alain.
>
> Dear Alain,
>
> > either d = 'x [bx/pane/offset/x: - tmp * sf/data ] [ ; how to improve
that
> ?
> >                             bx/pane/offset/y: - tmp * sf/data ]
>
> The function MIX-PAIRS as defined below takes two PAIR!s and a word of
value
> X or Y. Depending on the latter MIX-PAIRS returns a new PAIR! which is
> composed by A's axis as supplied in the 'D argument and B's opposite axis.
> This lets you 'simulate' touching only one axis easily.
>
> Sounds very confusing, I know, but look at the following code snippet, you
> will get the idea:
>
> ;------------ cut'n'paste -- (beware of
> line-breaks) -------------------------
> REBOL []
> mix-pairs: func [a [pair!] b [pair!] 'd [word!] /local way] [
>   (a * way: pick [1x0 0x1] :d = 'x) + (b * reverse way)
> ]
> scroll: func [bx sf 'd] [
>   bx/pane/offset: mix-pairs bx/size - bx/pane/size * sf/data
bx/pane/offset
> :d
>
>
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   ;--  bx/pane/offset is modified only for the direction supplied in :d
>   ;    by setting the opposite axis back to the value before the
> modification
>   ;
>   show bx
> ]
> d: 'x
> view layout [
>   across bx: box 200x100 white with [
>     pane: make-face/spec 'box [size: 40x40 color: red]
>   ]
>   sf: slider 20x100 [scroll bx sf :d] return
>   tg: btn "toggle" [d: select [x y x] :d
>     sf/data: bx/pane/offset/:d / (bx/size/:d - bx/pane/size/:d)
>     show [tg sf]
> ] ]
> ;------------ cut'n'paste -- (beware of
> line-breaks) -------------------------
>
> regards,
>
> Christian
>
>
>
> --
> To unsubscribe from this list, just send an email to
> [EMAIL PROTECTED] with unsubscribe as the subject.
>
>
>

-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to