slider.c File Reference

#include <stdio.h>
#include "core_math.h"

Include dependency graph for slider.c:

Go to the source code of this file.

Defines

#define REMOVE_REC_DRIVER()   char old_rec[4]; int rem_flag ; rem_flag = scig_driverX11(old_rec);
#define RESTORE_DRIVER()   if (rem_flag == 1) C2F(SetDriver)(old_rec,PI0,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0);

Functions

int C2F() getgeom (double *)
int C2F() dr1 (char x0[], char x1[], integer *x2, integer *x3, integer *x4, integer *x5, integer *x6, integer *x7, double *dx1, double *dx2, double *dx3, double *dx4, integer lx0, integer lx1)
int C2F() dr (char x0[], char x1[], integer *x2, integer *x3, integer *x4, integer *x5, integer *x6, integer *x7, double *dx1, double *dx2, double *dx3, double *dx4, integer lx0, integer lx1)
static void block_draw_rect_1 (double r[], double percent)
static void block_draw_rect_2 (double r[], double percent)
static void block_draw_rect_3 (double r[], double percent)
static int scig_driverX11 (char *old)
static int set_block_win (int win)
static int set_slider_color (int color)
void slider (integer *flag, integer *nevprt, double *t, double *xd, double *x, integer *nx, double *z, integer *nz, double *tvec, integer *ntvec, double *rpar, integer *nrpar, integer *ipar, integer *nipar, double *u, integer *nu, double *y, integer *ny)


Define Documentation

 
#define REMOVE_REC_DRIVER (  )     char old_rec[4]; int rem_flag ; rem_flag = scig_driverX11(old_rec);

Definition at line 71 of file slider.c.

Referenced by slider().

 
#define RESTORE_DRIVER (  )     if (rem_flag == 1) C2F(SetDriver)(old_rec,PI0,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0);

Definition at line 72 of file slider.c.

Referenced by slider().


Function Documentation

static void block_draw_rect_1 ( double  r[],
double  percent 
) [static]

Definition at line 20 of file slider.c.

References C2F, dr(), dr1(), L, PD0, PI0, w, and x.

Referenced by slider().

00021 {
00022   integer alumode,verbose=0,narg;
00023   static integer in=6;
00024   double w = r[2]*percent;
00025   double x = r[0];
00026   C2F(dr)("xget","alufunction",&verbose,&alumode,&narg,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00027   if ( alumode != in ) C2F(dr1)("xset","alufunction",&in,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00028   C2F(dr1)("xfrect","v",PI0,PI0,PI0,PI0,PI0,PI0,&x,r+1,&w,r+3,0L,0L);
00029   if ( alumode != in ) C2F(dr1)("xset","alufunction",&alumode,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00030 }

Here is the call graph for this function:

Here is the caller graph for this function:

static void block_draw_rect_2 ( double  r[],
double  percent 
) [static]

Definition at line 32 of file slider.c.

References C2F, dr(), dr1(), L, PD0, PI0, w, and x.

Referenced by slider().

00033 {
00034   integer alumode,verbose=0,narg;
00035   /* integer flag =0;  double ang=0.0;  char foo[24]; */
00036   static integer in=6;
00037   double x = r[0]+ r[2]*percent-2;
00038   double w = 4;
00039   C2F(dr)("xget","alufunction",&verbose,&alumode,&narg,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00040   if ( alumode != in ) C2F(dr1)("xset","alufunction",&in,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00041   C2F(dr1)("xfrect","v",PI0,PI0,PI0,PI0,PI0,PI0,&x,r+1,&w,r+3,0L,0L);
00042   /* sprintf(foo,"%5.3f",percent);
00043      C2F(dr1)("xstring",foo,PI0,PI0,PI0,&flag,PI0,PI0,r,r+1,&ang,PD0,0L,0L);
00044   */
00045 
00046   if ( alumode != in ) C2F(dr1)("xset","alufunction",&alumode,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00047 }

Here is the call graph for this function:

Here is the caller graph for this function:

static void block_draw_rect_3 ( double  r[],
double  percent 
) [static]

Definition at line 50 of file slider.c.

References C2F, dr(), dr1(), foo(), L, PD0, PI0, x, and y.

Referenced by slider().

00051 {
00052   integer alumode,verbose=0,narg;
00053   integer flag =0;  double ang=0.0;  char foo[24];
00054   static integer in=6;
00055   double x = r[0] + (1.0/10)*r[2];
00056   double y = r[1] - r[3] + 2 ;
00057   C2F(dr)("xget","alufunction",&verbose,&alumode,&narg,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00058   if ( alumode != in ) C2F(dr1)("xset","alufunction",&in,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00059   sprintf(foo,"%5.3f",percent);
00060   C2F(dr1)("xstring",foo,PI0,PI0,PI0,&flag,PI0,PI0,&x,&y,&ang,PD0,0L,0L);
00061   if ( alumode != in ) C2F(dr1)("xset","alufunction",&alumode,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00062 }

Here is the call graph for this function:

Here is the caller graph for this function:

int C2F() dr ( char  x0[],
char  x1[],
integer x2,
integer x3,
integer x4,
integer x5,
integer x6,
integer x7,
double *  dx1,
double *  dx2,
double *  dx3,
double *  dx4,
integer  lx0,
integer  lx1 
)

Definition at line 332 of file Xcall.c.

References all(), C2F, ReleaseWinHdc(), and SetWinhdc().

00334 { 
00335 #ifdef _MSC_VER
00336   if ( DriverId == 0 && DriverName[0] != 'I' ) 
00337     {
00338       SetWinhdc();
00339       C2F(all)(x0,x1,x2,x3,x4,x5,x6,x7,dx1,dx2,dx3,dx4,lx0,lx1);
00340       ReleaseWinHdc();
00341     }
00342   else 
00343     {
00344       C2F(all)(x0,x1,x2,x3,x4,x5,x6,x7,dx1,dx2,dx3,dx4,lx0,lx1);
00345     }
00346 #else
00347       C2F(all)(x0,x1,x2,x3,x4,x5,x6,x7,dx1,dx2,dx3,dx4,lx0,lx1);
00348 #endif
00349   return 0;
00350 }

Here is the call graph for this function:

int C2F() dr1 ( char  x0[],
char  x1[],
integer x2,
integer x3,
integer x4,
integer x5,
integer x6,
integer x7,
double *  dx1,
double *  dx2,
double *  dx3,
double *  dx4,
integer  lx0,
integer  lx1 
)

Definition at line 196 of file Xcall1.c.

References in_word_set(), NULL, and sciprint().

00199 { 
00200   const struct funreplace *fr;
00201   fr=in_word_set(x0,strlen(x0));
00202   if ( fr != NULL ) 
00203     {
00204       (*(fr->action))(x0,x1,x2,x3,x4,x5,x6,x7,dx1,dx2,dx3,dx4,lx0,lx1);
00205     }
00206   else 
00207     {
00208       sciprint("\n Unknow X operator <%s>\r\n",x0);
00209     }
00210   return(0);
00211 }

Here is the call graph for this function:

int C2F() getgeom ( double *   ) 

Referenced by slider().

Here is the caller graph for this function:

static int scig_driverX11 ( char *  old  )  [static]

Definition at line 74 of file slider.c.

References C2F, GetDriver1(), PD0, PI0, and SetDriver().

00075 {
00076   GetDriver1(old,PI0,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0);
00077   if ( old[0] == 'R' )
00078     {
00079       C2F(SetDriver)("X11",PI0,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0);
00080       return 1;
00081     }
00082   return 0;
00083 }

Here is the call graph for this function:

static int set_block_win ( int  win  )  [static]

Definition at line 90 of file slider.c.

References C2F, cur, dr(), L, PD0, and PI0.

Referenced by slider().

00091 {
00092   static int verbose = 0, cur,narg;
00093   C2F(dr)("xget","window",&verbose,&cur,&narg,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00094   if ( cur != win ) 
00095     C2F(dr)("xset","window",&win,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00096   return cur ;
00097 }

Here is the call graph for this function:

Here is the caller graph for this function:

static int set_slider_color ( int  color  )  [static]

Definition at line 105 of file slider.c.

References C2F, cur, dr(), L, PD0, and PI0.

Referenced by slider().

00106 {
00107   static int verbose = 0, cur,narg;
00108   C2F(dr)("xget","color",&verbose,&cur,&narg,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00109   if ( cur != color ) 
00110     C2F(dr)("xset","color",&color,PI0,PI0,PI0,PI0,PI0,PD0,PD0,PD0,PD0,0L,0L);
00111   return cur ;
00112 }

Here is the call graph for this function:

Here is the caller graph for this function:

void slider ( integer flag,
integer nevprt,
double *  t,
double *  xd,
double *  x,
integer nx,
double *  z,
integer nz,
double *  tvec,
integer ntvec,
double *  rpar,
integer nrpar,
integer ipar,
integer nipar,
double *  u,
integer nu,
double *  y,
integer ny 
)

Definition at line 122 of file slider.c.

References Abs, block_draw_rect_1(), block_draw_rect_2(), block_draw_rect_3(), C2F, cur, dr1(), getgeom(), int, L, Max, Min, PI0, REMOVE_REC_DRIVER, RESTORE_DRIVER, sciprint(), set_block_win(), set_slider_color(), and val.

00127 {
00128   
00129   int wid, idb = 0 ; /* XXX remettre idb avec son common */
00130   int cur; 
00131   static double th=2 ; /* border thickness */
00132   static double t3d = 4.0 ; /* 3d look thickness */
00133   int curcolor;
00134   if ( idb == 1 ) 
00135     sciprint("Slider t=%10.3f, flag=%d \r\n",*t,*flag);
00136 
00137   switch ( *flag ) {
00138   case 2 : 
00139     /* standard case */ 
00140     wid= (int) z[1];
00141     if( wid < 0) return;
00142     cur = set_block_win(wid) ; 
00143     {
00144       double val = Min(rpar[1],Max(rpar[0],u[0]));
00145       double percent = (val - rpar[0])/(rpar[1]-rpar[0]);
00146       if ( Abs(z[0] - percent) > 0.01 ) /* a mettre en parametre XXXXX */
00147         {
00148           REMOVE_REC_DRIVER();
00149           curcolor=set_slider_color(ipar[1]);
00150           switch (ipar[0]) 
00151             {
00152             case 1 : 
00153               block_draw_rect_1(z+2,z[0]);
00154               block_draw_rect_1(z+2,percent);
00155               break;
00156             case 2 :
00157               block_draw_rect_2(z+2,z[0]);
00158               block_draw_rect_2(z+2,percent);
00159               break;
00160             case 3 :
00161               block_draw_rect_3(z+2,z[0]);
00162               block_draw_rect_3(z+2,percent);
00163               break;
00164             }
00165           curcolor=set_slider_color(curcolor);
00166           z[0] = percent;
00167           RESTORE_DRIVER();
00168         }
00169     }
00170     set_block_win(cur);
00171     break;
00172   case 4 : 
00173     /* initial case */ 
00174     z[0]= 0.0;
00175     C2F(getgeom)(z+1);
00176     z[2] = z[2]+ t3d +th ; 
00177     z[4] -= t3d + 2*th  ;
00178     z[3] = z[3] + z[5] ;
00179     z[5] -= t3d  ;
00180     wid= (int) z[1];
00181     if( wid < 0) return;
00182     cur = set_block_win(wid) ; 
00183     {
00184       REMOVE_REC_DRIVER();
00185       curcolor=set_slider_color(ipar[1]);
00186       C2F(dr1)("xclea","v",PI0,PI0,PI0,PI0,PI0,PI0,z+2,z+3,z+4,z+5,0L,0L);
00187       switch (ipar[0]) 
00188         {
00189         case 1 : 
00190           block_draw_rect_1(z+2,z[0]);
00191           break;
00192         case 2 :
00193           block_draw_rect_2(z+2,z[0]);
00194           break;
00195         case 3 :
00196           block_draw_rect_3(z+2,z[0]);
00197           break;
00198 
00199         }
00200       curcolor=set_slider_color(curcolor);
00201       RESTORE_DRIVER();
00202     }
00203     set_block_win(cur);
00204     break;
00205   }
00206 }

Here is the call graph for this function:


Generated on Sun Mar 4 16:12:25 2007 for Scilab [trunk] by  doxygen 1.5.1