All pastes #411620 Raw Edit

Quickdraw

public text v1 · immutable
#411620 ·published 2007-03-27 04:01 UTC
rendered paste body
( 1 )
m: +src   SI A A add, ;
m: srcstride   SS A A add, ;
m: dststride   DS P P add, ;
m: si!   ?lit if 0 SI addi, ; then
   T SI mr,   M drop ;
m: ss!   T SS mr,  M drop ;
: ds!   B/P @ * { T DS mr, } drop ;
m: cpixel   M lookup M +src M pixel ;
m: spixel   M ?lookup M if M pixel
   M then  M +src ;
: pixels   for pixel next ;
m: cpixels   M for M cpixel
   M next  M srcstride M dststride ;
m: spixels   M for M spixel
   M next  M srcstride M dststride ;
: vline   DW @ 1 - swap for pixel
   dup stride next drop ;
: si! si! ; : ss! ss! ; : +src +src ;
: cpixels cpixels ; : spixels pixels ;

( 2 )
: >ds   DW @ - negate ds! ;
: straight   drop dup >ds SW @ -
   negate ss! 1 si! ;
: mirror   drop dup >ds  dup 1 - +a
   SW @ + ss!  -1 si! ;
: flip    1 - SW @ * +a
   dup >ds  SW @ + negate ss!   1 si! ;
: topsy   1 - SW @ * over + 1 - +a  dup
   >ds  SW @ - ss!  -1 si! ;

: cdraw   for dup cpixels next  drop ;
: sdraw   for dup spixels next  drop ;