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_plugin.h File Reference

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <sys/time.h>
#include <sys/errno.h>
#include <sys/times.h>
#include <limits.h>
#include "afni.h"
#include <Xm/XmAll.h>
#include <dlfcn.h>

Go to the source code of this file.


Defines

#define PLUTO_X11_display   (GLOBAL_library.dc->display)
#define PLUTO_Xt_appcontext   (GLOBAL_library.dc->appcontext)
#define PLUTO_extract_series(ijk, ds)   THD_extract_series((ijk),(ds),0)
#define PLUTO_extract_series_raw(ijk, ds)   THD_extract_series((ijk),(ds),1)
#define PLUTO_register_0D_function   AFNI_register_0D_function
#define PLUTO_register_1D_function   AFNI_register_1D_function
#define PLUTO_register_2D_function   AFNI_register_2D_function
#define PLUTO_register_1D_funcstr   AFNI_register_1D_funcstr
#define PLUTO_cursorize(w)   NORMAL_cursorize(w)

Functions

void PLUTO_register_timeseries (char *, MRI_IMAGE *)
THD_3dim_datasetPLUTO_find_dset (MCW_idcode *)
THD_3dim_datasetPLUTO_find_dset_idc (char *)
THD_slist_find PLUTO_dset_finder (char *)
void PLUTO_histoplot (int, float, float, int *, char *, char *, char *, int, int **)
void PLUTO_scatterplot (int, float *, float *, char *, char *, char *, float, float)
void PLUTO_force_redisplay (void)
void PLUTO_force_rebar (void)
void PLUTO_register_workproc (XtWorkProc, XtPointer)
void PLUTO_remove_workproc (XtWorkProc)
Boolean PLUG_workprocess (XtPointer)
void PLUTO_register_timeout (int, generic_func *, XtPointer)
double PLUTO_cpu_time (void)
double PLUTO_elapsed_time (void)

Define Documentation

#define PLUTO_cursorize w       NORMAL_cursorize(w)
 

Definition at line 680 of file afni_plugin.h.

Referenced by AFNI_misc_CB(), DRAW_main(), NOTES_main(), NUD_main(), PLUG_startup_plugin_CB(), RCREND_main(), REND_main(), TAG_main(), and TTRR_setup_widgets().

#define PLUTO_extract_series ijk,
ds       THD_extract_series((ijk),(ds),0)
 

Definition at line 671 of file afni_plugin.h.

#define PLUTO_extract_series_raw ijk,
ds       THD_extract_series((ijk),(ds),1)
 

Definition at line 672 of file afni_plugin.h.

#define PLUTO_register_0D_function   AFNI_register_0D_function
 

Definition at line 674 of file afni_plugin.h.

Referenced by EXP0D_init().

#define PLUTO_register_1D_funcstr   AFNI_register_1D_funcstr
 

Definition at line 678 of file afni_plugin.h.

Referenced by PLUGIN_init().

#define PLUTO_register_1D_function   AFNI_register_1D_function
 

Definition at line 675 of file afni_plugin.h.

Referenced by PLUGIN_init().

#define PLUTO_register_2D_function   AFNI_register_2D_function
 

Definition at line 676 of file afni_plugin.h.

#define PLUTO_X11_display   (GLOBAL_library.dc->display)
 

Definition at line 15 of file afni_plugin.h.

#define PLUTO_Xt_appcontext   (GLOBAL_library.dc->appcontext)
 

Definition at line 16 of file afni_plugin.h.

Referenced by PLUTO_register_timeout(), and PLUTO_register_workproc().


Function Documentation

Boolean PLUG_workprocess XtPointer   
 

Definition at line 5178 of file afni_plugin.c.

References datap, free, num_workp, and workp.

Referenced by PLUTO_register_workproc().

05179 {
05180    int ii , ngood ;
05181    Boolean done ;
05182 
05183 #ifdef WPDEBUG
05184    { static int ncall=0 ;
05185      if( (ncall++) % 1000 == 0 )
05186        fprintf(stderr,"PLUG_workprocess: entry %d\n",ncall) ; }
05187 #endif
05188 
05189    if( num_workp == 0 ) return True ;
05190 
05191    for( ii=0,ngood=0 ; ii < num_workp ; ii++ ){
05192       if( workp[ii] != NULL ){
05193          done = workp[ii]( datap[ii] ) ;
05194          if( done == True ) workp[ii] = NULL ;
05195          else               ngood++ ;
05196       }
05197    }
05198 
05199    if( ngood == 0 ){
05200 #ifdef WPDEBUG
05201       fprintf(stderr,"Found no workprocs left\n") ;
05202 #endif
05203       free(workp) ; workp = NULL ; free(datap) ; datap = NULL ;
05204       num_workp = 0 ;
05205       return True ;
05206    }
05207    return False ;
05208 }

double PLUTO_cpu_time void   
 

Definition at line 5285 of file afni_plugin.c.

Referenced by new_RT_input().

05286 {
05287 #ifdef CLK_TCK
05288    struct tms ttt ;
05289 
05290    (void) times( &ttt ) ;
05291    return (  (double) (ttt.tms_utime
05292                                      /* + ttt.tms_stime */
05293                       )
05294            / (double) CLK_TCK ) ;
05295 #else
05296    return 0.0l ;
05297 #endif
05298 }

THD_slist_find PLUTO_dset_finder char *   
 

Definition at line 4807 of file afni_plugin.c.

References BADFIND, FIND_IDCODE, GLOBAL_library, MCW_IDSIZE, MCW_strncpy, AFNI_library_type::sslist, MCW_idcode::str, and THD_dset_in_sessionlist().

Referenced by process_NIML_AFNI_dataset(), process_NIML_AFNI_volumedata(), process_NIML_Node_ROI(), process_NIML_SUMA_ijk(), process_NIML_SUMA_ixyz(), and process_NIML_SUMA_node_normals().

04808 {
04809    MCW_idcode idcode ;
04810    THD_slist_find find ;
04811 
04812    BADFIND(find) ;
04813    if( idc == NULL ) return find ;
04814    MCW_strncpy( idcode.str , idc , MCW_IDSIZE ) ;
04815    find = THD_dset_in_sessionlist( FIND_IDCODE , &idcode ,
04816                                    GLOBAL_library.sslist , -1 ) ;
04817    return find ;
04818 }

double PLUTO_elapsed_time void   
 

Definition at line 5261 of file afni_plugin.c.

Referenced by new_RT_input(), RT_start_child(), and RT_worker().

05262 {
05263    struct timeval  new_tval ;
05264    struct timezone tzone ;
05265    static struct timeval old_tval ;
05266    static int first = 1 ;
05267 
05268    gettimeofday( &new_tval , &tzone ) ;
05269 
05270    if( first ){
05271       old_tval = new_tval ;
05272       first    = 0 ;
05273       return 0.0 ;
05274    }
05275 
05276    if( old_tval.tv_usec > new_tval.tv_usec ){
05277       new_tval.tv_usec += 1000000 ;
05278       new_tval.tv_sec -- ;
05279    }
05280 
05281    return (double)( (new_tval.tv_sec  - old_tval.tv_sec )
05282                    +(new_tval.tv_usec - old_tval.tv_usec)*1.0e-6 ) ;
05283 }

THD_3dim_dataset* PLUTO_find_dset MCW_idcode  
 

Definition at line 4791 of file afni_plugin.c.

References THD_slist_find::dset, ENTRY, FIND_IDCODE, GLOBAL_library, ISZERO_IDCODE, RETURN, AFNI_library_type::sslist, and THD_dset_in_sessionlist().

Referenced by AFNI_do_many_writes(), BFIT_main(), CLUST_main(), COPY_main(), CORREL_main(), DELAY_main(), DOT_main(), DRAW_choose_CB(), DRAW_finalize_dset_CB(), DRAW_receiver(), DSET2_dset_recv(), DSET2_main(), DSETN_main(), DUMP_main(), DUP_main(), EDIT_opts(), EXTRACT_main(), Fourier_Main(), HEMISUB_main(), HISTO_main(), IMREG_main(), MASKAVE_main(), NOTES_choose_CB(), NOTES_finalize_dset_CB(), NUD_choose_CB(), NUD_finalize_dset_CB(), patch_PLUGIN_dataset_links(), PERMTEST_main(), PLUG_choose_dataset_CB(), PLUG_finalize_user_dset_CB(), PLUTO_commandstring(), PLUTO_find_dset_idc(), POWER_main(), PRIC_main(), process_args(), RCREND_choose_CB(), RCREND_finalize_dset_CB(), RCREND_finalize_func_CB(), RCREND_state_to_widgets(), RCREND_xhair_recv(), RENAME_main(), REND_choose_CB(), REND_finalize_dset_CB(), REND_finalize_func_CB(), REND_state_to_widgets(), REND_xhair_recv(), REORDER_main(), ROIPLOT_main(), SCAT_main(), set_global_dsets_from_ids(), STATS_main(), STAVG_main(), THRESH_main(), VOLREG_main(), and ZPAD_main().

04792 {
04793    THD_slist_find find ;
04794 
04795 ENTRY("PLUTO_find_dset") ;
04796 
04797    if( idcode == NULL || ISZERO_IDCODE(*idcode) ) RETURN(NULL) ;
04798 
04799    find = THD_dset_in_sessionlist( FIND_IDCODE , idcode ,
04800                                    GLOBAL_library.sslist , -1 ) ;
04801 
04802    RETURN(find.dset) ;
04803 }

THD_3dim_dataset* PLUTO_find_dset_idc char *   
 

Definition at line 4778 of file afni_plugin.c.

References MCW_IDSIZE, MCW_strncpy, PLUTO_find_dset(), and MCW_idcode::str.

04779 {
04780    MCW_idcode idcode ;
04781    if( idc == NULL ) return NULL ;
04782    MCW_strncpy( idcode.str , idc , MCW_IDSIZE ) ;
04783    return PLUTO_find_dset( &idcode ) ;
04784 }

void PLUTO_force_rebar void   
 

Definition at line 5086 of file afni_plugin.c.

References AFNI_library_type::controllers, drive_MCW_imseq(), ENTRY, GLOBAL_library, IM3D_OPEN, isqDR_rebar, MAX_CONTROLLERS, Three_D_View::s123, Three_D_View::s231, and Three_D_View::s312.

Referenced by AFNI_seq_send_CB().

05087 {
05088    Three_D_View * im3d ;
05089    int ii ;
05090 
05091 ENTRY("PLUTO_force_rebar") ;
05092 
05093    for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
05094       im3d = GLOBAL_library.controllers[ii] ;
05095       if( IM3D_OPEN(im3d) ){
05096          drive_MCW_imseq( im3d->s123 , isqDR_rebar , NULL ) ;
05097          drive_MCW_imseq( im3d->s231 , isqDR_rebar , NULL ) ;
05098          drive_MCW_imseq( im3d->s312 , isqDR_rebar , NULL ) ;
05099       }
05100    }
05101    EXRETURN ;
05102 }

void PLUTO_force_redisplay void   
 

Definition at line 5063 of file afni_plugin.c.

References AFNI_set_viewpoint(), Three_D_View::anat_voxwarp, AFNI_library_type::controllers, ENTRY, Three_D_View::fim_voxwarp, GLOBAL_library, IM3D_OPEN, MAX_CONTROLLERS, REDISPLAY_ALL, and THD_warp::type.

Referenced by AFNI_seq_send_CB(), CLUST_main(), CORD_main(), DSETN_main(), ENV_coorder(), and ENV_redisplay().

05064 {
05065    Three_D_View * im3d ;
05066    int ii ;
05067 
05068 ENTRY("PLUTO_force_redisplay") ;
05069 
05070    for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
05071       im3d = GLOBAL_library.controllers[ii] ;
05072       if( IM3D_OPEN(im3d) ){
05073          im3d->anat_voxwarp->type =                       /* 11 Jul 1997 */
05074             im3d->fim_voxwarp->type = ILLEGAL_TYPE ;
05075          AFNI_set_viewpoint( im3d , -1,-1,-1 , REDISPLAY_ALL ) ;
05076       }
05077    }
05078    EXRETURN ;
05079 }

void PLUTO_histoplot int   ,
float   ,
float   ,
int *   ,
char *   ,
char *   ,
char *   ,
int   ,
int **   
 

Definition at line 4836 of file afni_plugin.c.

References AFNI_library_type::dc, MCW_DC::display, ENTRY, free, GLOBAL_library, malloc, plot_ts_lab(), and top.

Referenced by BFIT_main(), CORREL_main(), and HISTO_main().

04839 {
04840    int ii , nx , ny,jj ;
04841    float * xar , * yar , * zar=NULL , ** yzar ;
04842    float dx ;
04843 
04844 ENTRY("PLUTO_histoplot") ;
04845 
04846    if( nbin < 2 || hist == NULL ) EXRETURN ;
04847    if( bot >= top ){ bot = 0.0 ; top = nbin ; }
04848 
04849    nx  = 2*(nbin+1) ;
04850    dx  = (top-bot)/nbin ;
04851    xar = (float *) malloc(sizeof(float)*nx) ;
04852    yar = (float *) malloc(sizeof(float)*nx) ;
04853 
04854    if( jist == NULL || njist < 0 ) njist = 0 ;
04855    ny = njist + 1 ;
04856 
04857    yzar = (float **) malloc(sizeof(float *)*ny) ;
04858    yzar[0] = yar ;
04859    for( jj=0 ; jj < njist ; jj++ )
04860      yzar[jj+1] = (float *) malloc(sizeof(float)*nx) ;
04861 
04862    xar[0] = bot ; yar[0] = 0.0 ;
04863    for( ii=0 ; ii < nbin ; ii++ ){
04864      xar[2*ii+1] = bot+ii*dx     ; yar[2*ii+1] = (float) hist[ii] ;
04865      xar[2*ii+2] = bot+(ii+1)*dx ; yar[2*ii+2] = (float) hist[ii] ;
04866 
04867      for( jj=0 ; jj < njist ; jj++ )
04868        yzar[jj+1][2*ii+1] = yzar[jj+1][2*ii+2] = (float) jist[jj][ii] ;
04869    }
04870    xar[2*nbin+1] = top ; yar[2*nbin+1] = 0.0 ;
04871    for( jj=0 ; jj < njist ; jj++ )
04872      yzar[jj+1][0] = yzar[jj+1][2*nbin+1] = 0.0 ;
04873 
04874    plot_ts_lab( GLOBAL_library.dc->display ,
04875                 nx , xar , ny , yzar ,
04876                 xlab,ylab,tlab , NULL , NULL ) ;
04877 
04878    for( jj=0 ; jj < njist ; jj++ ) free(yzar[jj+1]) ;
04879    free(yzar) ; free(xar) ; free(yar) ;
04880    EXRETURN ;
04881 }

void PLUTO_register_timeout int   ,
generic_func  ,
XtPointer   
 

Definition at line 5236 of file afni_plugin.c.

References mytimeout::cd, ENTRY, mytimeout::func, generic_func, myXtNew, PLUG_dotimeout_CB(), and PLUTO_Xt_appcontext.

Referenced by PLUGIN_init().

05237 {
05238    mytimeout * myt ;
05239 
05240 ENTRY("PLUTO_register_timeout") ;
05241 
05242    if( func == NULL ){
05243       fprintf(stderr,"PLUTO_register_timeout: func=NULL on entry!\n") ;
05244       EXRETURN ;
05245    }
05246 
05247    if( msec < 0 ) msec = 0 ;
05248 
05249    myt       = myXtNew(mytimeout) ;
05250    myt->func = func ;
05251    myt->cd   = cd ;
05252 
05253    (void) XtAppAddTimeOut( PLUTO_Xt_appcontext , msec ,
05254                            PLUG_dotimeout_CB , (XtPointer) myt ) ;
05255 
05256    EXRETURN ;
05257 }

void PLUTO_register_timeseries char *   ,
MRI_IMAGE  
 

Definition at line 4760 of file afni_plugin.c.

References AFNI_add_timeseries(), ENTRY, mri_add_name(), and mri_to_float().

Referenced by AFNI_finalize_read_1D_CB(), GRA_refstore_choose_CB(), MASKAVE_main(), PRIC_main(), TSGEN_main(), and VOLREG_main().

04761 {
04762    MRI_IMAGE * qim ;
04763 
04764 ENTRY("PLUTO_register_timeseries") ;
04765 
04766    if( tsim != NULL ){
04767       qim = mri_to_float( tsim ) ;  /* a copy */
04768       mri_add_name( cname , qim ) ; /* the name */
04769       AFNI_add_timeseries( qim ) ;  /* give it to AFNI */
04770    }
04771    EXRETURN ;
04772 }

void PLUTO_register_workproc XtWorkProc   ,
XtPointer   
 

Definition at line 5112 of file afni_plugin.c.

References datap, ENTRY, malloc, num_workp, PLUG_workprocess(), PLUTO_Xt_appcontext, realloc, workp, and wpid.

Referenced by AFNI_init_niml(), AFNI_init_plugouts(), main(), PLUGIN_init(), and RT_startup().

05113 {
05114 ENTRY("PLUTO_register_workproc") ;
05115 
05116    if( func == NULL ){
05117       fprintf(stderr,"PLUTO_register_workproc: func=NULL on entry!\n") ;
05118       EXRETURN ;
05119    }
05120 
05121    if( num_workp == 0 ){
05122       workp = (XtWorkProc *) malloc( sizeof(XtWorkProc) ) ;
05123       datap = (XtPointer *)  malloc( sizeof(XtPointer) ) ;
05124       wpid  = XtAppAddWorkProc( PLUTO_Xt_appcontext, PLUG_workprocess, NULL ) ;
05125 #ifdef WPDEBUG
05126       fprintf(stderr,"PLUTO_register_workproc: wpid = %x\n",(int)wpid) ;
05127 #endif
05128    } else {
05129       workp = (XtWorkProc *) realloc( workp, sizeof(XtWorkProc)*(num_workp+1) ) ;
05130       datap = (XtPointer*)   realloc( datap, sizeof(XtPointer) *(num_workp+1) ) ;
05131    }
05132 
05133    workp[num_workp] = func ;
05134    datap[num_workp] = data ;
05135    num_workp++ ;
05136 
05137 #ifdef WPDEBUG
05138 fprintf(stderr,"PLUTO_register_workproc: have %d workprocs\n",num_workp) ;
05139 #endif
05140 
05141    EXRETURN ;
05142 }

void PLUTO_remove_workproc XtWorkProc   
 

Definition at line 5144 of file afni_plugin.c.

References datap, ENTRY, free, num_workp, workp, and wpid.

05145 {
05146    int ii , ngood ;
05147 
05148 ENTRY("PLUTO_remove_workproc") ;
05149 
05150    if( func == NULL || num_workp == 0 ){
05151       fprintf(stderr,"*** PLUTO_remove_workproc: illegal parameters!\n") ;
05152       EXRETURN ;
05153    }
05154 
05155    for( ii=0 ; ii < num_workp ; ii++ ){
05156       if( func == workp[ii] ) workp[ii] = NULL ;
05157    }
05158 
05159    for( ii=0,ngood=0 ; ii < num_workp ; ii++ )
05160       if( workp[ii] != NULL ) ngood++ ;
05161 
05162    if( ngood == 0 ){
05163 #ifdef WPDEBUG
05164       fprintf(stderr,"PLUTO_remove_workproc: No workprocs left\n") ;
05165 #endif
05166       XtRemoveWorkProc( wpid ) ;
05167       free(workp) ; workp = NULL ; free(datap) ; datap = NULL ;
05168       num_workp = 0 ;
05169    } else {
05170 #ifdef WPDEBUG
05171       fprintf(stderr,"PLUTO_remove_workproc: %d workprocs left\n",ngood) ;
05172 #endif
05173    }
05174 
05175    EXRETURN ;
05176 }

void PLUTO_scatterplot int   ,
float *   ,
float *   ,
char *   ,
char *   ,
char *   ,
float   ,
float   
 

Definition at line 4912 of file afni_plugin.c.

References a, AFNI_numenv(), create_memplot_surely(), AFNI_library_type::dc, MCW_DC::display, ENTRY, get_active_memplot(), GLOBAL_library, memplot_to_topshell(), mp, p10(), plotpak_line(), plotpak_periml(), plotpak_pwritf(), plotpak_set(), set_color_memplot(), set_thick_memplot(), and STGOOD.

Referenced by SCAT_main().

04915 {
04916    int ii , np , nnax,mmax , nnay,mmay ;
04917    float xbot,xtop , ybot,ytop , pbot,ptop ,
04918          xobot,xotop,yobot,yotop , xa,xb,ya,yb , dx,dy ;
04919    float *xar , *yar , *zar=NULL , **yzar ;
04920    float dsq , rx,ry ;
04921    char str[32] ;
04922    MEM_plotdata * mp ;
04923 
04924 ENTRY("PLUTO_scatterplot") ;
04925 
04926    if( npt < 2 || x == NULL || y == NULL ) EXRETURN ;
04927 
04928    /* find range of data */
04929 
04930    xbot = xtop = x[0] ; ybot = ytop = y[0] ;
04931    for( ii=1 ; ii < npt ; ii++ ){
04932            if( x[ii] < xbot ) xbot = x[ii] ;
04933       else if( x[ii] > xtop ) xtop = x[ii] ;
04934 
04935            if( y[ii] < ybot ) ybot = y[ii] ;
04936       else if( y[ii] > ytop ) ytop = y[ii] ;
04937    }
04938    if( xbot >= xtop || ybot >= ytop ){
04939       fprintf(stderr,"*** Data has no range in PLUTO_scatterplot!\n\a");
04940       EXRETURN ;
04941    }
04942 
04943    /*-- push range of x outwards --*/
04944 
04945    pbot = p10(xbot) ; ptop = p10(xtop) ; if( ptop < pbot ) ptop = pbot ;
04946    if( ptop != 0.0 ){
04947       np = (xtop-xbot) / ptop + 0.5 ;
04948       switch( np ){
04949          case 1:  ptop *= 0.1  ; break ;
04950          case 2:  ptop *= 0.2  ; break ;
04951          case 3:  ptop *= 0.25 ; break ;
04952          case 4:
04953          case 5:  ptop *= 0.5  ; break ;
04954       }
04955       xbot = floor( xbot/ptop ) * ptop ;
04956       xtop =  ceil( xtop/ptop ) * ptop ;
04957       nnax = floor( (xtop-xbot) / ptop + 0.5 ) ;
04958       mmax = (nnax < 3) ? 10
04959                         : (nnax < 6) ? 5 : 2 ;
04960    } else {
04961       nnax = 1 ; mmax = 10 ;
04962    }
04963 
04964    /*-- push range of y outwards --*/
04965 
04966    pbot = p10(ybot) ; ptop = p10(ytop) ; if( ptop < pbot ) ptop = pbot ;
04967    if( ptop != 0.0 ){
04968       np = (ytop-ybot) / ptop + 0.5 ;
04969       switch( np ){
04970          case 1:  ptop *= 0.1  ; break ;
04971          case 2:  ptop *= 0.2  ; break ;
04972          case 3:  ptop *= 0.25 ; break ;
04973          case 4:
04974          case 5:  ptop *= 0.5  ; break ;
04975       }
04976       ybot = floor( ybot/ptop ) * ptop ;
04977       ytop =  ceil( ytop/ptop ) * ptop ;
04978       nnay = floor( (ytop-ybot) / ptop + 0.5 ) ;
04979       mmay = (nnay < 3) ? 10
04980                         : (nnay < 6) ? 5 : 2 ;
04981    } else {
04982       nnay = 1 ; mmay = 10 ;
04983    }
04984 
04985    /*-- setup to plot --*/
04986 
04987    create_memplot_surely( "ScatPlot" , 1.3 ) ;
04988    set_thick_memplot( 0.0 ) ;
04989 
04990    /*-- plot labels, if any --*/
04991 
04992    xobot = 0.15 ; xotop = 1.27 ;  /* set objective size of plot */
04993    yobot = 0.1  ; yotop = 0.95 ;
04994 
04995    if( STGOOD(tlab) ){ yotop -= 0.02 ; yobot -= 0.01 ; }
04996 
04997    /* x-axis label? */
04998 
04999    set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
05000    if( STGOOD(xlab) )
05001       plotpak_pwritf( 0.5*(xobot+xotop) , yobot-0.06 , xlab , 16 , 0 , 0 ) ;
05002 
05003    /* y-axis label? */
05004 
05005    set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
05006    if( STGOOD(ylab) )
05007       plotpak_pwritf( xobot-0.12 , 0.5*(yobot+yotop) , ylab , 16 , 90 , 0 ) ;
05008 
05009    /* label at top? */
05010 
05011    set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
05012    if( STGOOD(tlab) )
05013       plotpak_pwritf( xobot+0.01 , yotop+0.01 , tlab , 18 , 0 , -2 ) ;
05014 
05015    /* plot axes */
05016 
05017    set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
05018    plotpak_set( xobot,xotop , yobot,yotop , xbot,xtop , ybot,ytop , 1 ) ;
05019    plotpak_periml( nnax,mmax , nnay,mmay ) ;
05020 
05021    /* plot data */
05022 
05023 #define DSQ 0.001
05024 
05025    dsq = AFNI_numenv( "AFNI_SCATPLOT_FRAC" ) ;   /* 15 Feb 2005 */
05026    if( dsq <= 0.0 || dsq >= 0.01 ) dsq = DSQ ;
05027 
05028    dx = dsq*(xtop-xbot) ;
05029    dy = dsq*(ytop-ybot) * (xotop-xobot)/(yotop-yobot) ;
05030    for( ii=0 ; ii < npt ; ii++ ){
05031 
05032 #if 0
05033       rx = (drand48()-0.5)*dx ;
05034       ry = (drand48()-0.5)*dy ;
05035 #else
05036       rx = ry = 0.0 ;
05037 #endif
05038       xa = x[ii]+rx - dx ; xb = x[ii]+rx + dx ;
05039       ya = y[ii]+ry - dy ; yb = y[ii]+ry + dy ;
05040 
05041       plotpak_line( xa,ya , xa,yb ) ;
05042       plotpak_line( xa,yb , xb,yb ) ;
05043       plotpak_line( xb,yb , xb,ya ) ;
05044       plotpak_line( xb,ya , xa,ya ) ;
05045    }
05046 
05047    if( a != 0.0f || b != 0.0f ){              /* 02 May 2005 */
05048      set_color_memplot( 0.8 , 0.0 , 0.0 ) ;
05049      plotpak_line( xbot,a*xbot+b , xtop,a*xtop+b ) ;
05050    }
05051 
05052    mp = get_active_memplot() ;
05053 
05054    (void) memplot_to_topshell( GLOBAL_library.dc->display , mp , NULL ) ;
05055 
05056    EXRETURN ;
05057 }
 

Powered by Plone

This site conforms to the following standards: