: 4rot { a b c d }
b c d a ;
: 4swap { a b c d e f g h }
e f g h a b c d ;
: 4dup { a b c d }
a b c d a b c d ;
: 4drop
2drop 2drop ;
: 4over { a b c d e f g h }
a b c d e f g h a b c d ;
: 8dup
4over 4over ;
: gradify-rgba-deltas { r1 g1 b1 a1 r2 g2 b2 a2 }
r2 r1 -
g2 g1 -
b2 b1 -
a2 a1 - ;
: gradify-rgba ( rgba-addr -- r g b a )
dup c@ swap ( r addr )
1 + dup c@ swap ( r g addr )
1 + dup c@ swap ( r g b addr )
1 + c@ ;
: gradify-line ( r1 g1 b1 a1 ) { addr width rdelta gdelta bdelta adelta }
width 0 ?do
4dup
\ red
4rot ( g b a r )
i rdelta width */ + addr c!
addr 1 + to addr
rot ( b a g )
i gdelta width */ + addr c!
addr 1 + to addr
swap ( a b )
i bdelta width */ + addr c!
addr 1 + to addr
( a )
i adelta width */ + addr c!
addr 1 + to addr
loop
4drop ;