USING: kernel arrays math.vectors mortar mortar.sugar x.gc slot-accessors geom.pos ; IN: x.pen SYMBOL: { "window" "gc" } accessors define-simple-class "create" !( window -- pen ) [ new-empty swap >>window new* >>gc 0 0 2array >>pos ] add-class-method { "line-to" ! ( pen point -- pen ) [ 2dup >r dup $window swap dup $gc swap $pos r> <---- draw-line >>pos ] "line-by" ! ( pen offset -- pen ) [ 2dup >r dup $window swap dup $gc swap $pos dup r> v+ <---- draw-line <-- move-by ] "draw-string" ! ( pen string -- pen ) [ >r dup dup $window swap dup $gc swap $pos r> <---- draw-string ] } add-methods