: 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 ;