#include "hush.h" 
  
    // The drawing_canvas responds to press, motion and release events
    
    class drawing_canvas : public canvas {  
    public:
      
      drawing_canvas( char* path ) : canvas(path) {  
              geometry(200,100);
              bind(this);                 // become sensitive
              dragging = 0;
      }
      
      void press( event& ) { dragging = 1; }
      
      void motion( event& e) { 
      	if (dragging) circle(e.x(),e.y(),1,"-fill black");
      }
      
      void release( event&  ) { dragging = 0; }
      
    protected:
      int dragging; 
    };
  
    // To initialize the application
    
    class application : public session { 
    public:
      application( int argc, char* argv[] )
  			       : session(argc,argv,"draw") {}
      void main() {
       
          canvas* c = new drawing_canvas(".draw");
      
          c->pack();
          tk->pack(".quit");
      }
    };
    
    int main (int  argc, char* argv[]) { 
        session* s = new application(argc,argv);
        return s->run();
    }
  

slide: Drawing canvas