Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

afni_lock.c File Reference

#include "afni.h"

Go to the source code of this file.


Functions

void AFNI_time_lock_change_CB (Widget w, XtPointer cd, XtPointer calld)
void AFNI_time_lock_carryout (Three_D_View *im3d)
void AFNI_lock_enforce_CB (Widget w, XtPointer cd, XtPointer calld)
void AFNI_lock_change_CB (Widget w, XtPointer cd, XtPointer calld)
void AFNI_lock_clear_CB (Widget w, XtPointer cd, XtPointer calld)
void AFNI_lock_setall_CB (Widget w, XtPointer cd, XtPointer calld)
void AFNI_lock_carryout (Three_D_View *im3d)
void AFNI_ijk_lock_change_CB (Widget w, XtPointer cd, XtPointer calld)
void AFNI_thresh_lock_carryout (Three_D_View *im3d)
void AFNI_equate_pbars (Three_D_View *lh3d, Three_D_View *rh3d)
void AFNI_pbar_lock_carryout (Three_D_View *im3d)
void AFNI_thrdrag_lock_carryout (Three_D_View *im3d)
void AFNI_range_lock_carryout (Three_D_View *im3d)

Function Documentation

void AFNI_equate_pbars Three_D_View   lh3d,
Three_D_View   rh3d
 

Definition at line 382 of file afni_lock.c.

References AFNI_controller_index(), AFNI_driver(), AV_uformat_fval(), MCW_pbar::bigflip, MCW_pbar::bigmode, MCW_pbar::bigrota, MCW_pbar::bigtop, AFNI_library_type::dc, ENTRY, AFNI_widget_set::func, GLOBAL_library, IM3D_OPEN, AFNI_function_widgets::inten_pbar, MCW_DCOV::label_ov, MCW_pbar::mode, MCW_pbar::num_panes, MCW_pbar::ov_index, MCW_DC::ovc, MCW_pbar::pval, and Three_D_View::vwid.

Referenced by AFNI_pbar_lock_carryout().

00383 {
00384    MCW_pbar *lbar , *rbar ;
00385    char cmd[1024] ;
00386    int cc , qq ;
00387    MCW_DCOV *ovc = GLOBAL_library.dc->ovc ;
00388 
00389 ENTRY("AFNI_equate_pbars") ;
00390 
00391    if( !IM3D_OPEN(lh3d) || !IM3D_OPEN(rh3d) ) EXRETURN ;
00392 
00393    lbar = lh3d->vwid->func->inten_pbar ;
00394    rbar = rh3d->vwid->func->inten_pbar ;
00395 
00396    cc = AFNI_controller_index(lh3d) ; if( cc < 0 ) EXRETURN ;
00397 
00398    if( !rbar->bigmode ){
00399      sprintf(cmd,"SET_PBAR_ALL %c.%c%d" , 'A'+cc ,
00400              (rbar->mode) ? '+' : '-' , rbar->num_panes ) ;
00401      for( qq=0 ; qq < rbar->num_panes ; qq++ )
00402        sprintf(cmd+strlen(cmd)," %s=%s",
00403                AV_uformat_fval(rbar->pval[qq]) ,
00404                ovc->label_ov[rbar->ov_index[qq]] ) ;
00405    } else {
00406      sprintf(cmd,"SET_PBAR_ALL %c.%c%d %f %s\n" , 'A'+cc ,
00407              (rbar->mode) ? '+' : '-' , 99 ,
00408              rbar->bigtop , PBAR_get_bigmap(rbar) ) ;
00409      if( rbar->bigflip )
00410        sprintf(cmd+strlen(cmd)," FLIP") ;
00411      if( rbar->bigrota )
00412        sprintf(cmd+strlen(cmd)," ROTA=%d",rbar->bigrota) ;
00413    }
00414 
00415    AFNI_driver( cmd ) ; EXRETURN ;
00416 }

void AFNI_ijk_lock_change_CB Widget    w,
XtPointer    cd,
XtPointer    calld
 

Definition at line 273 of file afni_lock.c.

References AFNI_library_type::controllers, AFNI_widget_set::dmode, ENTRY, GLOBAL_library, AFNI_library_type::ijk_lock, AFNI_datamode_widgets::ijk_lock_bbox, IM3D_VALID, MAX_CONTROLLERS, MCW_set_bbox(), MCW_val_bbox(), RESET_AFNI_QUIT, and Three_D_View::vwid.

00274 {
00275    Three_D_View *im3d = (Three_D_View *) cd ;
00276    Three_D_View *qq3d ;
00277    int           bval , ii , bold ;
00278 
00279 ENTRY("AFNI_ijk_lock_change_CB") ;
00280 
00281    if( ! IM3D_VALID(im3d) ) EXRETURN ;
00282 
00283    /* get current global setting and compare to changed lock box */
00284 
00285    bold = GLOBAL_library.ijk_lock ;
00286    bval = MCW_val_bbox( im3d->vwid->dmode->ijk_lock_bbox ) ;
00287    if( bval == bold ) EXRETURN ;                     /* same --> nothing to do */
00288 
00289    /* new value --> save in global setting */
00290 
00291    GLOBAL_library.ijk_lock = bval ;
00292 
00293    /* set all other controller lock boxes to the same value */
00294 
00295    for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
00296      qq3d = GLOBAL_library.controllers[ii] ;
00297      if( qq3d == im3d || ! IM3D_VALID(qq3d) ) continue ;
00298 
00299      MCW_set_bbox( qq3d->vwid->dmode->ijk_lock_bbox , bval ) ;
00300    }
00301    RESET_AFNI_QUIT(im3d) ;
00302    EXRETURN ;
00303 }

void AFNI_lock_carryout Three_D_View   im3d
 

Definition at line 190 of file afni_lock.c.

References AFNI_controller_index(), AFNI_set_viewpoint(), AFNI_transform_vector(), Three_D_View::anat_now, AFNI_library_type::controller_lock, AFNI_library_type::controllers, CURRENT_DAXES, ENTRY, GLOBAL_library, AFNI_view_info::i1, AFNI_library_type::ignore_lock, THD_ivec3::ijk, AFNI_library_type::ijk_lock, IM3D_OPEN, AFNI_view_info::j2, AFNI_view_info::k3, LOAD_ANAT_VIEW, LOAD_FVEC3, MAX_CONTROLLERS, THD_dataxes::nxx, THD_dataxes::nyy, THD_dataxes::nzz, REDISPLAY_ALL, SAVE_VPT, THD_3dmm_to_3dind(), THD_dicomm_to_3dmm(), Three_D_View::vinfo, AFNI_view_info::xi, AFNI_view_info::yj, and AFNI_view_info::zk.

Referenced by AFNI_lock_enforce_CB(), and AFNI_set_viewpoint().

00191 {
00192    Three_D_View *qq3d ;
00193    int ii,jj,kk , cc , glock ;
00194    THD_fvec3 old_fv , fv ;
00195    THD_ivec3 iv ;
00196    THD_dataxes *qaxes , *daxes ;
00197    static int busy = 0 ;  /* !=0 if this routine is "busy" */
00198 
00199 ENTRY("AFNI_lock_carryout") ;
00200 
00201    /* first, determine if there is anything to do */
00202 
00203    glock = GLOBAL_library.controller_lock ;
00204 
00205    if( busy )                       EXRETURN ;  /* routine already busy */
00206    if( glock == 0 )                 EXRETURN ;  /* nothing to do */
00207    if( !IM3D_OPEN(im3d) )           EXRETURN ;  /* bad input */
00208    if( GLOBAL_library.ignore_lock ) EXRETURN ;  /* ordered not to do anything */
00209 
00210    ii = AFNI_controller_index(im3d) ;           /* which one am I? */
00211 
00212    if( ii < 0 ) EXRETURN ;                      /* nobody? bad input! */
00213    if( ((1<<ii) & glock) == 0 ) EXRETURN ;      /* input not locked */
00214 
00215    /* something to do? */
00216 
00217    busy = 1 ;  /* don't let this routine be called recursively */
00218 
00219    /* load Dicom location of current point of view in this controller */
00220 
00221    LOAD_FVEC3( old_fv , im3d->vinfo->xi, im3d->vinfo->yj, im3d->vinfo->zk ) ;
00222 
00223    LOAD_ANAT_VIEW(im3d) ;  /* prepare coordinates */
00224    daxes = CURRENT_DAXES(im3d->anat_now) ;
00225 
00226    /* loop through other controllers:
00227         for those that ARE open, ARE NOT the current one,
00228         and ARE locked, transform the above vector to the
00229         controller's dataset, and then jump to that point */
00230 
00231    for( cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){
00232 
00233      qq3d = GLOBAL_library.controllers[cc] ; /* controller */
00234 
00235      if( IM3D_OPEN(qq3d) && qq3d != im3d && ((1<<cc) & glock) != 0 ){
00236 
00237        LOAD_ANAT_VIEW(qq3d) ;  /* prepare coordinates */
00238        qaxes = CURRENT_DAXES(qq3d->anat_now) ;
00239 
00240        if( !GLOBAL_library.ijk_lock ){  /* xyz coord lock */
00241 
00242          fv = AFNI_transform_vector( im3d->anat_now, old_fv, qq3d->anat_now ) ;
00243          fv = THD_dicomm_to_3dmm( qq3d->anat_now , fv ) ;
00244          iv = THD_3dmm_to_3dind ( qq3d->anat_now , fv ) ;
00245          ii = iv.ijk[0] ; jj = iv.ijk[1] ; kk = iv.ijk[2] ;
00246 
00247        } else {   /* 11 Sep 2000: ijk index lock */
00248 
00249          ii = im3d->vinfo->i1 * qaxes->nxx / daxes->nxx ;
00250          jj = im3d->vinfo->j2 * qaxes->nyy / daxes->nyy ;
00251          kk = im3d->vinfo->k3 * qaxes->nzz / daxes->nzz ;
00252        }
00253 
00254        /* if have good new ijk coords, jump to them */
00255 
00256        if( ii >= 0 && ii < qaxes->nxx &&
00257            jj >= 0 && jj < qaxes->nyy && kk >= 0 && kk < qaxes->nzz   ){
00258 
00259          SAVE_VPT(qq3d) ;
00260          AFNI_set_viewpoint( qq3d , ii,jj,kk , REDISPLAY_ALL ) ; /* jump */
00261        }
00262      }
00263    }
00264 
00265    busy = 0 ;  /* OK, let this routine be activated again */
00266    EXRETURN ;
00267 }

void AFNI_lock_change_CB Widget    w,
XtPointer    cd,
XtPointer    calld
 

Definition at line 116 of file afni_lock.c.

References AFNI_library_type::controller_lock, AFNI_library_type::controllers, AFNI_widget_set::dmode, ENTRY, GLOBAL_library, IM3D_VALID, AFNI_datamode_widgets::lock_bbox, MAX_CONTROLLERS, MCW_set_bbox(), MCW_val_bbox(), RESET_AFNI_QUIT, and Three_D_View::vwid.

00117 {
00118    Three_D_View *im3d = (Three_D_View *) cd ;
00119    Three_D_View *qq3d ;
00120    int           bval , ii , bold ;
00121 
00122 ENTRY("AFNI_lock_change_CB") ;
00123 
00124    if( ! IM3D_VALID(im3d) ) EXRETURN ;
00125 
00126    /* get current global setting and compare to changed lock box */
00127 
00128    bold = GLOBAL_library.controller_lock ;
00129    bval = MCW_val_bbox( im3d->vwid->dmode->lock_bbox ) ;
00130    if( bval == bold ) EXRETURN ;                     /* same --> nothing to do */
00131 
00132    /* new value --> save in global setting */
00133 
00134    GLOBAL_library.controller_lock = bval ;
00135 
00136    /* set all other controller lock boxes to the same value */
00137 
00138    for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
00139      qq3d = GLOBAL_library.controllers[ii] ;
00140      if( qq3d == im3d || ! IM3D_VALID(qq3d) ) continue ;
00141 
00142      MCW_set_bbox( qq3d->vwid->dmode->lock_bbox , bval ) ;
00143    }
00144    RESET_AFNI_QUIT(im3d) ;
00145    EXRETURN ;
00146 }

void AFNI_lock_clear_CB Widget    w,
XtPointer    cd,
XtPointer    calld
 

Definition at line 150 of file afni_lock.c.

References AFNI_library_type::controller_lock, AFNI_library_type::controllers, AFNI_widget_set::dmode, ENTRY, GLOBAL_library, IM3D_VALID, AFNI_datamode_widgets::lock_bbox, MAX_CONTROLLERS, MCW_set_bbox(), and Three_D_View::vwid.

00151 {
00152    Three_D_View *qq3d ;
00153    int ii ;
00154 
00155 ENTRY("AFNI_lock_clear_CB") ;
00156 
00157    GLOBAL_library.controller_lock = 0 ;
00158    for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
00159      qq3d = GLOBAL_library.controllers[ii] ;
00160      if( IM3D_VALID(qq3d) )
00161        MCW_set_bbox( qq3d->vwid->dmode->lock_bbox , 0 ) ;
00162    }
00163    EXRETURN ;
00164 }

void AFNI_lock_enforce_CB Widget    w,
XtPointer    cd,
XtPointer    calld
 

Definition at line 103 of file afni_lock.c.

References AFNI_lock_carryout(), AFNI_time_lock_carryout(), ENTRY, and RESET_AFNI_QUIT.

00104 {
00105    Three_D_View *im3d = (Three_D_View *) cd ;
00106 
00107 ENTRY("AFNI_lock_enforce_CB") ;
00108    AFNI_lock_carryout( im3d ) ;
00109    AFNI_time_lock_carryout( im3d ) ;  /* 03 Nov 1998 */
00110    RESET_AFNI_QUIT(im3d) ;
00111    EXRETURN ;
00112 }

void AFNI_lock_setall_CB Widget    w,
XtPointer    cd,
XtPointer    calld
 

Definition at line 168 of file afni_lock.c.

References AFNI_library_type::controller_lock, AFNI_library_type::controllers, AFNI_widget_set::dmode, ENTRY, GLOBAL_library, IM3D_VALID, AFNI_datamode_widgets::lock_bbox, MAX_CONTROLLERS, MCW_set_bbox(), and Three_D_View::vwid.

00169 {
00170    Three_D_View *qq3d ;
00171    int ii ;
00172 
00173 ENTRY("AFNI_lock_setall_CB") ;
00174 
00175    GLOBAL_library.controller_lock = 0 ;
00176    for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ )
00177      GLOBAL_library.controller_lock |= (1<<ii) ;
00178 
00179    for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
00180      qq3d = GLOBAL_library.controllers[ii] ;
00181      if( IM3D_VALID(qq3d) )
00182        MCW_set_bbox( qq3d->vwid->dmode->lock_bbox ,
00183                      GLOBAL_library.controller_lock ) ;
00184    }
00185    EXRETURN ;
00186 }

void AFNI_pbar_lock_carryout Three_D_View   im3d
 

Definition at line 420 of file afni_lock.c.

References AFNI_controller_index(), AFNI_equate_pbars(), AFNI_library_type::controller_lock, AFNI_library_type::controllers, ENTRY, getenv(), GLOBAL_library, AFNI_library_type::ignore_lock, IM3D_OPEN, and MAX_CONTROLLERS.

Referenced by AFNI_inten_pbar_CB().

00421 {
00422    Three_D_View *qq3d ;
00423    static int busy = 0 ;  /* !=0 if this routine is "busy" */
00424    int glock , cc,ii ;
00425    char *eee ;
00426 
00427 ENTRY("AFNI_pbar_lock_carryout") ;
00428 
00429    /* first, determine if there is anything to do */
00430 
00431    glock = GLOBAL_library.controller_lock ;     /* not a handgun */
00432 
00433    if( busy )                         EXRETURN;  /* routine already busy */
00434    if( glock == 0 )                   EXRETURN;  /* nothing to do */
00435    if( !IM3D_OPEN(im3d) )             EXRETURN;  /* bad input */
00436    if( GLOBAL_library.ignore_lock )   EXRETURN;  /* ordered not to do anything */
00437 
00438    eee = getenv( "AFNI_PBAR_LOCK" ) ;            /* determine how to lock */
00439    if( eee == NULL ) EXRETURN ;
00440    if( *eee != 'Y' && *eee != 'y' ) EXRETURN ;
00441 
00442    ii = AFNI_controller_index(im3d) ;           /* which one am I? */
00443 
00444    if( ii < 0 ) EXRETURN ;                      /* nobody? bad input! */
00445    if( ((1<<ii) & glock) == 0 ) EXRETURN ;      /* input not locked */
00446 
00447    /* something to do? */
00448 
00449    busy = 1 ;  /* don't let this routine be called recursively */
00450 
00451    /* loop through other controllers:
00452         for those that ARE open, ARE NOT the current one, and ARE locked */
00453 
00454    for( cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){
00455 
00456      qq3d = GLOBAL_library.controllers[cc] ; /* controller */
00457 
00458      if( IM3D_OPEN(qq3d) && qq3d != im3d && ((1<<cc) & glock) != 0 ){
00459 
00460        AFNI_equate_pbars( qq3d , im3d ) ;
00461      }
00462    }
00463 
00464    busy = 0 ;  /* OK, let this routine be activated again */
00465    EXRETURN ;
00466 }

void AFNI_range_lock_carryout Three_D_View   im3d
 

Definition at line 555 of file afni_lock.c.

References AFNI_controller_index(), AFNI_driver(), AFNI_library_type::controller_lock, AFNI_library_type::controllers, ENTRY, AFNI_view_info::fim_range, AFNI_widget_set::func, getenv(), GLOBAL_library, AFNI_library_type::ignore_lock, IM3D_OPEN, MAX_CONTROLLERS, MCW_val_bbox(), AFNI_function_widgets::range_bbox, Three_D_View::vinfo, and Three_D_View::vwid.

Referenced by AFNI_range_bbox_CB().

00556 {
00557    Three_D_View *qq3d ;
00558    static int busy = 0 ;  /* !=0 if this routine is "busy" */
00559    int glock , cc,ii,nn ;
00560    float val ;
00561    char cmd[64] , *eee ;
00562 
00563 ENTRY("AFNI_range_lock_carryout") ;
00564 
00565    /* first, determine if there is anything to do */
00566 
00567    glock = GLOBAL_library.controller_lock ;      /* not a handgun */
00568 
00569    if( busy )                         EXRETURN;  /* routine already busy */
00570    if( glock == 0 )                   EXRETURN;  /* nothing to do */
00571    if( !IM3D_OPEN(im3d) )             EXRETURN;  /* bad input */
00572    if( GLOBAL_library.ignore_lock )   EXRETURN;  /* ordered not to do anything */
00573 
00574    eee = getenv( "AFNI_RANGE_LOCK" );            /* determine how to lock */
00575    if( eee == NULL )                  EXRETURN;
00576    if( *eee != 'Y' && *eee != 'y' )   EXRETURN;
00577 
00578    ii = AFNI_controller_index(im3d);             /* which one am I? */
00579 
00580    if( ii < 0 )                       EXRETURN;  /* nobody? bad input! */
00581    if( ((1<<ii) & glock) == 0 )       EXRETURN;  /* input not locked */
00582 
00583    /* get range of this controller */
00584 
00585    val = im3d->vinfo->fim_range ;
00586    if( val <= 0.0 )                   EXRETURN;  /* shouldn't happen */
00587 
00588    /* count how OTHER controllers are are open and locked;
00589       if none of them, there is nothing to do [29 Apr 2005] */
00590 
00591    for( nn=cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){
00592      qq3d = GLOBAL_library.controllers[cc] ;
00593      if( qq3d != im3d && IM3D_OPEN(qq3d) && ((1<<cc) & glock) != 0 ) nn++ ;
00594    }
00595    if( nn < 1 )                       EXRETURN ;
00596 
00597    /* something to do? */
00598 
00599    busy = 1 ;  /* don't let this routine be called recursively */
00600 
00601    /* loop through other controllers:
00602         for those that ARE open, and ARE locked, set the new range */
00603 
00604    for( cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){
00605 
00606      qq3d = GLOBAL_library.controllers[cc] ; /* controller */
00607 
00608      if( IM3D_OPEN(qq3d) && ((1<<cc) & glock) != 0 ){  /* open and locked */
00609 
00610        if( qq3d == im3d &&    /* no need to set current if not autoRanged */
00611            MCW_val_bbox(im3d->vwid->func->range_bbox) == 0 ) continue;
00612 
00613        sprintf( cmd , "SET_FUNC_RANGE %c.%.6f" , 'A'+cc , val ) ;
00614        AFNI_driver( cmd ) ;
00615      }
00616    }
00617 
00618    busy = 0 ;  /* OK, let this routine be activated again */
00619    EXRETURN ;
00620 }

void AFNI_thrdrag_lock_carryout Three_D_View   im3d
 

Definition at line 470 of file afni_lock.c.

References AFNI_controller_index(), AFNI_set_thr_pval(), AFNI_library_type::controller_lock, AFNI_library_type::controllers, DSET_BRICK_STATAUX, DSET_BRICK_STATCODE, ENTRY, Three_D_View::fim_now, AFNI_widget_set::func, AFNI_view_info::func_thresh_top, AFNI_view_info::func_threshold, getenv(), GLOBAL_library, AFNI_library_type::ignore_lock, IM3D_OPEN, MAX_CONTROLLERS, THD_pval_to_stat(), THD_stat_to_pval(), THR_FACTOR, AFNI_view_info::thr_index, AFNI_function_widgets::thr_scale, THR_TOP_EXPON, Three_D_View::vinfo, and Three_D_View::vwid.

Referenced by AFNI_thr_scale_drag_CB().

00471 {
00472    Three_D_View *qq3d ;
00473    static int busy = 0 ;  /* !=0 if this routine is "busy" */
00474    int glock , cc,ii , dothresh,dopval , ival , stop ;
00475    float thresh , pval , tval ;
00476    char *eee ;
00477 
00478 ENTRY("AFNI_thrdrag_lock_carryout") ;
00479 
00480    /* first, determine if there is anything to do */
00481 
00482    glock = GLOBAL_library.controller_lock ;     /* not a handgun */
00483 
00484    if( busy )                         EXRETURN;  /* routine already busy */
00485    if( glock == 0 )                   EXRETURN;  /* nothing to do */
00486    if( !IM3D_OPEN(im3d) )             EXRETURN;  /* bad input */
00487    if( GLOBAL_library.ignore_lock )   EXRETURN;  /* ordered not to do anything */
00488 
00489    eee = getenv( "AFNI_THRESH_LOCK" ) ;          /* determine how to lock */
00490    if( eee == NULL ) EXRETURN ;
00491    dothresh = (*eee == 'V' || *eee == 'v') ;
00492    dopval   = (*eee == 'P' || *eee == 'p') && im3d->fim_now != NULL ;
00493    if( !dothresh && !dopval ) EXRETURN ;         /* no command? */
00494 
00495    ii = AFNI_controller_index(im3d) ;           /* which one am I? */
00496 
00497    if( ii < 0 ) EXRETURN ;                      /* nobody? bad input! */
00498    if( ((1<<ii) & glock) == 0 ) EXRETURN ;      /* input not locked */
00499 
00500    /* something to do? */
00501 
00502    busy = 1 ;  /* don't let this routine be called recursively */
00503 
00504    ival   = rint(im3d->vinfo->func_threshold/THR_FACTOR) ;
00505    thresh = im3d->vinfo->func_threshold * im3d->vinfo->func_thresh_top ;
00506    stop   = (int)( rint( pow(10.0,THR_TOP_EXPON) ) - 1.0 ) ;
00507 
00508    if( dopval ){
00509      pval = THD_stat_to_pval( thresh ,
00510                 DSET_BRICK_STATCODE(im3d->fim_now,im3d->vinfo->thr_index) ,
00511                 DSET_BRICK_STATAUX (im3d->fim_now,im3d->vinfo->thr_index)  ) ;
00512      if( pval < 0.0 || pval > 1.0 ){ dopval = 0; dothresh = 1; }
00513    }
00514 
00515    /* loop through other controllers:
00516         for those that ARE open, ARE NOT the current
00517         one, and ARE locked, set the new threshold */
00518 
00519    for( cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){
00520 
00521      qq3d = GLOBAL_library.controllers[cc] ; /* controller */
00522 
00523      if( IM3D_OPEN(qq3d) && qq3d != im3d && ((1<<cc) & glock) != 0 ){
00524 
00525        if( qq3d->vinfo->func_thresh_top == im3d->vinfo->func_thresh_top ){
00526 
00527          if( dopval && qq3d->fim_now != NULL &&
00528              DSET_BRICK_STATCODE(qq3d->fim_now,qq3d->vinfo->thr_index) > 0 ){
00529 
00530            tval = THD_pval_to_stat( pval ,
00531                     DSET_BRICK_STATCODE(qq3d->fim_now,qq3d->vinfo->thr_index),
00532                     DSET_BRICK_STATAUX (qq3d->fim_now,qq3d->vinfo->thr_index) );
00533            ival = rint( tval/(THR_FACTOR*qq3d->vinfo->func_thresh_top) ) ;
00534            if( ival < 0 ) ival = 0 ; else if( ival > stop ) ival = stop ;
00535 
00536          } else if( !dothresh ){
00537            continue ;  /* skip this [dopval set, but not a statistic] */
00538          }
00539 
00540          /* set the slider and pval marker */
00541 
00542          XmScaleSetValue( qq3d->vwid->func->thr_scale , ival ) ;
00543          qq3d->vinfo->func_threshold = THR_FACTOR * ival ;
00544          AFNI_set_thr_pval( qq3d ) ;
00545        }
00546      }
00547    }
00548 
00549    busy = 0 ;  /* OK, let this routine be activated again */
00550    EXRETURN ;
00551 }

void AFNI_thresh_lock_carryout Three_D_View   im3d
 

Definition at line 307 of file afni_lock.c.

References AFNI_controller_index(), AFNI_driver(), AFNI_library_type::controller_lock, AFNI_library_type::controllers, DSET_BRICK_STATAUX, DSET_BRICK_STATCODE, ENTRY, Three_D_View::fim_now, AFNI_view_info::func_thresh_top, AFNI_view_info::func_threshold, getenv(), GLOBAL_library, AFNI_library_type::ignore_lock, IM3D_OPEN, MAX_CONTROLLERS, THD_stat_to_pval(), AFNI_view_info::thr_index, and Three_D_View::vinfo.

Referenced by AFNI_thr_scale_CB(), and AFNI_thresh_top_CB().

00308 {
00309    Three_D_View *qq3d ;
00310    static int busy = 0 ;  /* !=0 if this routine is "busy" */
00311    int glock , cc,ii , dopval,dothresh ;
00312    float thresh , pval , tval ;
00313    char cmd[64] , *eee ;
00314 
00315 ENTRY("AFNI_thresh_lock_carryout") ;
00316 
00317    /* first, determine if there is anything to do */
00318 
00319    glock = GLOBAL_library.controller_lock ;     /* not a handgun */
00320 
00321    if( busy )                         EXRETURN;  /* routine already busy */
00322    if( glock == 0 )                   EXRETURN;  /* nothing to do */
00323    if( !IM3D_OPEN(im3d) )             EXRETURN;  /* bad input */
00324    if( GLOBAL_library.ignore_lock )   EXRETURN;  /* ordered not to do anything */
00325 
00326    eee = getenv( "AFNI_THRESH_LOCK" ) ;          /* determine how to lock */
00327    if( eee == NULL ) EXRETURN ;
00328    dothresh = (*eee == 'V' || *eee == 'v') ;
00329    dopval   = (*eee == 'P' || *eee == 'p') && im3d->fim_now != NULL ;
00330    if( !dothresh && !dopval ) EXRETURN ;         /* no command? */
00331 
00332    ii = AFNI_controller_index(im3d) ;           /* which one am I? */
00333 
00334    if( ii < 0 ) EXRETURN ;                      /* nobody? bad input! */
00335    if( ((1<<ii) & glock) == 0 ) EXRETURN ;      /* input not locked */
00336 
00337    /* something to do? */
00338 
00339    busy = 1 ;  /* don't let this routine be called recursively */
00340 
00341    /* get true threshold of this controller => all others get this value, too*/
00342 
00343    thresh = im3d->vinfo->func_threshold * im3d->vinfo->func_thresh_top ;
00344 
00345    /* get p-value corresponding, if that is what's being locked */
00346 
00347    if( dopval ){
00348      pval = THD_stat_to_pval( thresh ,
00349                 DSET_BRICK_STATCODE(im3d->fim_now,im3d->vinfo->thr_index) ,
00350                 DSET_BRICK_STATAUX (im3d->fim_now,im3d->vinfo->thr_index)  ) ;
00351      if( pval < 0.0 || pval > 1.0 ){ dopval = 0; dothresh = 1; }
00352    }
00353 
00354    /* loop through other controllers:
00355         for those that ARE open, ARE NOT the current
00356         one, and ARE locked, set the new threshold */
00357 
00358    for( cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){
00359 
00360      qq3d = GLOBAL_library.controllers[cc] ; /* controller */
00361 
00362      if( IM3D_OPEN(qq3d) && qq3d != im3d && ((1<<cc) & glock) != 0 ){
00363 
00364        if( dothresh )
00365          sprintf( cmd , "SET_THRESHNEW %c %.4f **" , 'A'+cc , thresh ) ;
00366        else if( dopval && qq3d->fim_now != NULL &&
00367                 DSET_BRICK_STATCODE(qq3d->fim_now,qq3d->vinfo->thr_index) > 0 )
00368          sprintf( cmd , "SET_THRESHNEW %c %g *p" , 'A'+cc , pval ) ;
00369        else
00370          continue ;  /* pval, but not a statistic? */
00371 
00372        AFNI_driver( cmd ) ;
00373      }
00374    }
00375 
00376    busy = 0 ;  /* OK, let this routine be activated again */
00377    EXRETURN ;
00378 }

void AFNI_time_lock_carryout Three_D_View   im3d
 

Definition at line 41 of file afni_lock.c.

References AFNI_controller_index(), AFNI_time_index_CB(), AV_assign_ival(), AFNI_library_type::controller_lock, AFNI_library_type::controllers, ENTRY, GLOBAL_library, AFNI_library_type::ignore_lock, IM3D_OPEN, AFNI_widget_set::imag, MCW_arrowval::ival, MAX_CONTROLLERS, AFNI_view_info::time_index, AFNI_imaging_widgets::time_index_av, AFNI_library_type::time_lock, AFNI_view_info::time_on, AFNI_view_info::top_index, Three_D_View::vinfo, and Three_D_View::vwid.

Referenced by AFNI_lock_enforce_CB(), and AFNI_time_index_CB().

00042 {
00043    Three_D_View *qq3d ;
00044    MCW_arrowval *tav ;
00045    int new_index , qq_index , qq_top , cc , glock , ii ;
00046    static int busy = 0 ;  /* !=0 if this routine is "busy" */
00047 
00048 ENTRY("AFNI_time_lock_carryout") ;
00049 
00050    /* first, determine if there is anything to do */
00051 
00052    glock = GLOBAL_library.controller_lock ;     /* not a handgun */
00053 
00054    if( busy )                       EXRETURN ;  /* routine already busy */
00055    if( glock == 0 )                 EXRETURN ;  /* nothing to do */
00056    if( !IM3D_OPEN(im3d) )           EXRETURN ;  /* bad input */
00057    if( GLOBAL_library.ignore_lock ) EXRETURN ;  /* ordered not to do anything */
00058    if( ! GLOBAL_library.time_lock ) EXRETURN ;  /* don't lock time */
00059 
00060    ii = AFNI_controller_index(im3d) ;           /* which one am I? */
00061 
00062    if( ii < 0 ) EXRETURN ;                      /* nobody? bad input! */
00063    if( ((1<<ii) & glock) == 0 ) EXRETURN ;      /* input not locked */
00064 
00065    /* something to do? */
00066 
00067    busy = 1 ;  /* don't let this routine be called recursively */
00068 
00069    /* load time index of this controller => all others get this value, too*/
00070 
00071    new_index = im3d->vinfo->time_index ;
00072 
00073    /* loop through other controllers:
00074         for those that ARE open, ARE NOT the current
00075         one, and ARE locked, jump to the new time index */
00076 
00077    for( cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){
00078 
00079      qq3d = GLOBAL_library.controllers[cc] ; /* controller */
00080 
00081      if( IM3D_OPEN(qq3d) && qq3d != im3d && ((1<<cc) & glock) != 0 ){
00082 
00083        qq_index = qq3d->vinfo->time_index ;           /* old index */
00084        qq_top   = qq3d->vinfo->top_index ;            /* max allowed */
00085 
00086        if( qq3d->vinfo->time_on && qq_top > 1 && qq_index != new_index ){
00087          tav = qq3d->vwid->imag->time_index_av ;
00088          AV_assign_ival( tav , new_index ) ;         /* will check range */
00089          if( tav->ival != qq_index )
00090            AFNI_time_index_CB( tav , (XtPointer) qq3d ) ;
00091        }
00092      }
00093    }
00094 
00095    busy = 0 ;  /* OK, let this routine be activated again */
00096    EXRETURN ;
00097 }

void AFNI_time_lock_change_CB Widget    w,
XtPointer    cd,
XtPointer    calld
 

Definition at line 7 of file afni_lock.c.

References AFNI_library_type::controllers, AFNI_widget_set::dmode, ENTRY, GLOBAL_library, IM3D_VALID, MAX_CONTROLLERS, MCW_set_bbox(), MCW_val_bbox(), RESET_AFNI_QUIT, AFNI_library_type::time_lock, AFNI_datamode_widgets::time_lock_bbox, and Three_D_View::vwid.

00008 {
00009    Three_D_View *im3d = (Three_D_View *) cd ;
00010    Three_D_View *qq3d ;
00011    int           bval , ii , bold ;
00012 
00013 ENTRY("AFNI_time_lock_change_CB") ;
00014 
00015    if( ! IM3D_VALID(im3d) ) EXRETURN ;
00016 
00017    /* get current global setting and compare to changed lock box */
00018 
00019    bold = GLOBAL_library.time_lock ;
00020    bval = MCW_val_bbox( im3d->vwid->dmode->time_lock_bbox ) ;
00021    if( bval == bold ) EXRETURN ;                     /* same --> nothing to do */
00022 
00023    /* new value --> save in global setting */
00024 
00025    GLOBAL_library.time_lock = bval ;
00026 
00027    /* set all other controller lock boxes to the same value */
00028 
00029    for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
00030      qq3d = GLOBAL_library.controllers[ii] ;
00031      if( qq3d == im3d || ! IM3D_VALID(qq3d) ) continue ;
00032 
00033      MCW_set_bbox( qq3d->vwid->dmode->time_lock_bbox , bval ) ;
00034    }
00035    RESET_AFNI_QUIT(im3d) ;
00036    EXRETURN ;
00037 }
 

Powered by Plone

This site conforms to the following standards: