[PD-cvs] pd/src desire.c,1.1.2.217.2.127,1.1.2.217.2.128

Mathieu Bouchard matju at users.sourceforge.net
Sat Jan 13 19:24:52 CET 2007


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13506

Modified Files:
      Tag: desiredata
	desire.c 
Log Message:
slider val is outputted correctly, and now it's a float instead of an int, to support fractions of centipixels.


Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.217.2.127
retrieving revision 1.1.2.217.2.128
diff -C2 -d -r1.1.2.217.2.127 -r1.1.2.217.2.128
*** desire.c	11 Jan 2007 22:01:43 -0000	1.1.2.217.2.127
--- desire.c	13 Jan 2007 18:24:47 -0000	1.1.2.217.2.128
***************
*** 5668,5674 ****
  
  struct t_slider : t_iemgui {
!     int      val;
!     double   min,max;
!     double   k;
      int      steady;
      int      is_log;
--- 5668,5673 ----
  
  struct t_slider : t_iemgui {
!     t_float   val;
!     t_float   min,max;
      int      steady;
      int      is_log;
***************
*** 6768,6776 ****
      double l = (double)(x->orient ? x->h : x->w)-1;
      int m = (int)(l*100);
-     double span = x->is_log ? log(x->max/x->min) : (x->max - x->min);
      if(w < IEM_SL_MINSIZE) w = IEM_SL_MINSIZE;
      if (x->orient) SET(h,w); else SET(w,w);
      if(x->val > m) SET(val,m);
-     SET(k,span/l);
  }
  
--- 6767,6773 ----
***************
*** 6784,6789 ****
      SET(min,min);
      SET(max,max);
!     double diff = x->is_log ? log(x->max/x->min) : (x->max-x->min);
!     SET(k,diff / (double)(x->orient ? (x->h-1) : (x->w-1)));
  }
  
--- 6781,6790 ----
      SET(min,min);
      SET(max,max);
! }
! 
! // the value/centipixel ratio
! static double slider_ratio (t_slider *x) {
! 	double diff = x->is_log ? log(x->max/x->min) : (x->max-x->min);
! 	return diff / (double)(x->orient ? (x->h-1) : (x->w-1));
  }
  
***************
*** 6791,6805 ****
      if(x->min > x->max) CLAMP(f,x->max,x->min);
      else                CLAMP(f,x->min,x->max);
!     double g = (x->is_log ? log(f/x->min) : (f-x->min)) / x->k;
!     SET(val,(int)(100.0*g + 0.49999));
!     //SET(val,(int)f);
  }
  
  static void slider_bang(t_slider *x) {
!     double t = (double)(x->val)*x->k*0.01;
      double out = x->is_log ? x->min*exp(t) : x->min+t;
      if (fabs(out) < 1.0e-10) out = 0.0;
!     //outlet_float(x->ob_outlet, out);
!     outlet_float(x->ob_outlet, x->val);
      if(x->snd && x->snd->s_thing) pd_float(x->snd->s_thing, out);
  }
--- 6792,6803 ----
      if(x->min > x->max) CLAMP(f,x->max,x->min);
      else                CLAMP(f,x->min,x->max);
!     SET(val,floor(100.0 * (x->is_log ? log(f/x->min) : (f-x->min)) / slider_ratio(x) + 0.5));
  }
  
  static void slider_bang(t_slider *x) {
!     double t = (double)x->val * slider_ratio(x) * 0.01;
      double out = x->is_log ? x->min*exp(t) : x->min+t;
      if (fabs(out) < 1.0e-10) out = 0.0;
!     outlet_float(x->ob_outlet, out);
      if(x->snd && x->snd->s_thing) pd_float(x->snd->s_thing, out);
  }
***************
*** 6827,6831 ****
  
  static int slider_pickle(t_slider *x, t_foo *foo) {
!     return pd_pickle(foo, "iiddbiaaaiiiiccci;b",
  	&x->w,&x->h,&x->min,&x->max,&x->is_log,&x->isa,&x->snd,&x->rcv,&x->lab,
  	&x->ldx,&x->ldy,&x->font_style,&x->fontsize,&x->bcol,&x->fcol,&x->lcol,&x->val,&x->steady);
--- 6825,6829 ----
  
  static int slider_pickle(t_slider *x, t_foo *foo) {
!     return pd_pickle(foo, "iiffbiaaaiiiicccf;b",
  	&x->w,&x->h,&x->min,&x->max,&x->is_log,&x->isa,&x->snd,&x->rcv,&x->lab,
  	&x->ldx,&x->ldy,&x->font_style,&x->fontsize,&x->bcol,&x->fcol,&x->lcol,&x->val,&x->steady);





More information about the Pd-cvs mailing list