class drawtool : public canvas {\fbox{drawtool}
public: drawtool() : canvas() { }(I)
drawtool(char* p, char* opts="") : canvas(p,0) { init(opts); redirect(c); } int operator()(){(II)
if ( !strcmp( "drawtool" ,*argv) ) create(--argc,++argv); else if (!strcmp("self",argv[1]) ) tk->result(self()->path()); else self()->eval( flatten(--argc,++argv) ); return OK; } protected: tablet* c; void init(char* options); void create(int argc, char* argv[]) {(III)
char* name = *argv; char* args = flatten(--argc,++argv); handler* h = new drawtool(name, args ); tk->action(name,h); } };