home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0400 / CCE_0423.ZIP / CCE_0423.PD / GEM.ZOO / slider.cc < prev    next >
C/C++ Source or Header  |  1992-04-26  |  1KB  |  60 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  This file is public domain.
  4. //
  5. /////////////////////////////////////////////////////////////////////////////
  6.  
  7. #include "Slider.h"
  8.  
  9.  
  10. Slider::Slider(int knob, int rack, GEMform& f) :
  11.     GEMobject(rack,&f),
  12.     K(knob,f,this)
  13. {
  14.     // Should we enforce this?
  15.     TouchExit(TRUE);
  16.     K.TouchExit(TRUE);
  17.  
  18.     f.CallBack(this);
  19.     f.CallBack(&K);
  20. }
  21.  
  22.  
  23. // Not implemented yet...
  24. Slider::operator int() const { return 1; }
  25. Slider::operator double() const { return 1; }
  26. void Slider::operator() (int) {}
  27. void Slider::operator() (double) {}
  28. void Slider::Range(int min, int max) {}
  29.  
  30.  
  31. void Slider::touch(int x, int y)
  32. {
  33.     int halfw=K.me->ob_width/2;
  34.     int halfh=K.me->ob_height/2;
  35.  
  36.     if (x<halfw) x=halfw;
  37.     if (y<halfh) y=halfh;
  38.     if (x>me->ob_width+halfw-K.me->ob_width) x=me->ob_width-K.me->ob_width+halfw;
  39.     if (y>me->ob_height+halfh-K.me->ob_height) y=me->ob_height-K.me->ob_height+halfh;
  40.  
  41.     int OldX=K.me->ob_x,OldY=K.me->ob_y;
  42.     int NewX=x-K.me->ob_width/2,NewY=y-K.me->ob_height/2;
  43.  
  44.     if (OldX!=NewX || OldY!=NewY) {
  45.         K.MoveTo(x-halfw,y-halfh);
  46.         form->RedrawObject(myindex,OldX,OldY,K.me->ob_width,K.me->ob_height);
  47.         form->RedrawObject(K.myindex);
  48.     }
  49. }
  50.  
  51. Knob::Knob(int RSCindex, GEMform& f, GEMobject *tell) :
  52.     GEMobject(RSCindex,&f),
  53.     Tell(tell)
  54. { }
  55.  
  56. void Knob::touch(int x, int y)
  57. {
  58.     Tell->touch(me->ob_x+x,me->ob_y+y);
  59. }
  60.