Doxygen Source Code Documentation
plug_nth_dataset.c File Reference
#include "afni.h"Go to the source code of this file.
Defines | |
| #define | DSETN_VERSION "Version 1.1 <October, 2002>" |
| #define | NMAX 9 |
Functions | |
| char * | DSETN_main (PLUGIN_interface *) |
| void | DSETN_func (MRI_IMAGE *) |
| void | DSETN_dset_recv (int why, int np, int *ijk, void *aux) |
| int | set_global_dsets_from_ids (void) |
| void | DSETN_func_init (void) |
| DEFINE_PLUGIN_PROTOTYPE PLUGIN_interface * | PLUGIN_init (int ncall) |
Variables | |
| char | helpstring [] |
| THD_3dim_dataset * | dset [NMAX] |
| MCW_idcode | g_id [NMAX] |
| int | ovc [NMAX] |
| int | g_dset_recv = -1 |
| int | g_valid_data = 0 |
| char * | lr [2] = { "Left" , "Right" } |
| char * | ez [2] = { "Extend" , "Zero" } |
| PLUGIN_interface * | plint = NULL |
Define Documentation
|
|
Definition at line 7 of file plug_nth_dataset.c. |
|
|
Definition at line 75 of file plug_nth_dataset.c. Referenced by DSETN_func(), DSETN_main(), PLUGIN_init(), and set_global_dsets_from_ids(). |
Function Documentation
|
||||||||||||||||||||
|
Definition at line 233 of file plug_nth_dataset.c. References AFNI_receive_control(), ENTRY, EVERYTHING_SHUTDOWN, g_dset_recv, g_valid_data, MCW_TIMER_KILL, MCW_USER_KILL, plint, PLUTO_popup_worker(), RECEIVE_ALTERATION, RECEIVE_DSETCHANGE, and set_global_dsets_from_ids(). Referenced by DSETN_main().
00234 {
00235 PLUGIN_interface * plint = (PLUGIN_interface *)aux;
00236
00237 ENTRY( "DSETN_dset_recv" );
00238
00239 switch ( why )
00240 {
00241 default:
00242 {
00243 fprintf( stderr, "warning: DSETN_dset_recv() called with invalid "
00244 "why code, %d\n", why );
00245 EXRETURN;
00246 }
00247
00248 case RECEIVE_ALTERATION: /* may take effect before DSETCHANGE */
00249 case RECEIVE_DSETCHANGE:
00250 {
00251 /* start by noting the number of valid data sets */
00252 int num_valid = set_global_dsets_from_ids( );
00253
00254 if ( g_valid_data != 1 || num_valid <= 0 )
00255 {
00256 /* shut the plugin down - "he's only _mostly_ dead" */
00257
00258 g_valid_data = 0;
00259
00260 AFNI_receive_control( plint->im3d, g_dset_recv,
00261 EVERYTHING_SHUTDOWN, NULL );
00262 g_dset_recv = -1;
00263 PLUTO_popup_worker( plint,
00264 "Warning: plugin 'Dataset#N'\n"
00265 "has lost its dataset links.\n"
00266 "To plot 1-D overlays, please\n"
00267 "re-run the plugin.",
00268 MCW_USER_KILL | MCW_TIMER_KILL ) ;
00269 }
00270 }
00271 }
00272
00273 EXRETURN;
00274 }
|
|
|
Definition at line 278 of file plug_nth_dataset.c. References ADDTO_IMARR, AFNI_needs_dset_ijk(), DESTROY_IMARR, ENTRY, FREE_IMARR, g_valid_data, IMARR_COUNT, IMARR_SUBIM, INIT_IMARR, ISVALID_DSET, MAX, mri_add_name(), MRI_FLOAT_PTR, mri_move_guts(), mri_new(), NMAX, MRI_IMAGE::nx, ovc, and THD_extract_series(). Referenced by PLUGIN_init().
00279 {
00280 int id , ny , nxtop=0 , ijk , ii ;
00281 MRI_IMARR *tar ;
00282 MRI_IMAGE *tsim , *zim ;
00283 float *tsar , *dar ;
00284 int ovi[NMAX] ;
00285 char str[16+4*NMAX] ;
00286
00287 ENTRY( "DSETN_func" );
00288
00289 if ( g_valid_data != 1 )
00290 EXRETURN ; /* nothing to do */
00291
00292 INIT_IMARR(tar) ;
00293 ijk = AFNI_needs_dset_ijk() ; /* voxel index from AFNI */
00294
00295 for( id=0 ; id < NMAX ; id++ ){
00296 if( ISVALID_DSET(dset[id]) ){
00297 tsim = THD_extract_series( ijk,dset[id], 0 ) ; /* get data */
00298 if( tsim == NULL ) continue ;
00299 ovi[IMARR_COUNT(tar)] = ovc[id] ;
00300 ADDTO_IMARR(tar,tsim) ;
00301 nxtop = MAX(nxtop,tsim->nx) ;
00302 }
00303 }
00304
00305 ny = IMARR_COUNT(tar) ;
00306
00307 if( ny == 0 || nxtop < 2 ){ DESTROY_IMARR(tar); EXRETURN; } /* no data */
00308
00309 if( ny == 1 ){ /* one dataset */
00310 tsim = IMARR_SUBIM(tar,0); FREE_IMARR(tar);
00311 mri_move_guts(qim,tsim);
00312 sprintf(str,"color: %d",ovi[0]) ; mri_add_name(str,qim) ;
00313 EXRETURN;
00314 }
00315 /* multiple datasets */
00316
00317 tsim = mri_new( nxtop , ny , MRI_float ) ;
00318 tsar = MRI_FLOAT_PTR(tsim) ;
00319 strcpy(str,"color:") ;
00320 for( id=0 ; id < ny ; id++ ){
00321 zim = IMARR_SUBIM(tar,id) ;
00322 dar = MRI_FLOAT_PTR(zim) ;
00323 memcpy( tsar , dar , sizeof(float)*zim->nx) ;
00324 if( zim->nx < nxtop ){ /* 18 Mar 2004: fill with infinity */
00325 for( ii=zim->nx ; ii < nxtop ; ii++ ) tsar[ii] = WAY_BIG ;
00326 }
00327 tsar += nxtop ;
00328 sprintf(str+strlen(str)," %d",ovi[id]) ;
00329 }
00330
00331 DESTROY_IMARR(tar) ;
00332 mri_move_guts(qim,tsim) ; mri_add_name(str,qim) ;
00333 EXRETURN;
00334 }
|
|
|
Definition at line 97 of file plug_nth_dataset.c. References plint, and PLUG_startup_plugin_CB(). Referenced by PLUGIN_init().
00098 {
00099 PLUG_startup_plugin_CB( NULL , (XtPointer)plint , NULL ) ;
00100 }
|
|
|
Definition at line 155 of file plug_nth_dataset.c. References AFNI_receive_init(), DSETN_dset_recv(), ENTRY, ez, g_dset_recv, g_valid_data, ISVALID_DSET, lr, NMAX, ovc, plint, PLUTO_find_dset(), PLUTO_force_redisplay(), RECEIVE_DSETCHANGE_MASK, RETURN, and ZERO_IDCODE. Referenced by PLUGIN_init().
00156 {
00157 MCW_idcode *idc ;
00158 char *str , *tag ;
00159 int id=0 ;
00160
00161 ENTRY( "DSETN_main" ) ;
00162
00163 if( plint == NULL )
00164 RETURN("***********************\n"
00165 "DSETN_main: NULL input\n"
00166 "***********************") ;
00167
00168 for( id=0 ; id < NMAX ; id++ ){ /* 18 Mar 2004: renullification */
00169 dset[id] = NULL ;
00170 ZERO_IDCODE(g_id[id]);
00171 }
00172
00173 id = 0 ;
00174
00175 while( (tag=PLUTO_get_optiontag(plint)) != NULL ){
00176
00177 /* Input */
00178
00179 if( strcmp(tag,"Input") == 0 ){
00180 idc = PLUTO_get_idcode(plint) ;
00181 dset[id] = PLUTO_find_dset(idc) ;
00182
00183 if ( ! ISVALID_DSET( dset[id] ) )
00184 RETURN("******************************\n"
00185 "DSETN_main: bad input dataset\n"
00186 "******************************") ;
00187
00188 g_id[id] = *idc ;
00189 ovc [id] = PLUTO_get_overlaycolor(plint) ;
00190 id++ ; continue ;
00191 }
00192
00193 #ifdef USE_WHERE
00194 /* Where */
00195
00196 if( strcmp(tag,"Where") == 0 ){
00197 str = PLUTO_get_string(plint) ;
00198 justify = (strcmp(str,lr[0]) != 0) ;
00199 continue ;
00200 }
00201
00202 /* How */
00203
00204 if( strcmp(tag,"How") == 0 ){
00205 str = PLUTO_get_string(plint) ;
00206 fill = (strcmp(str,ez[0]) != 0) ;
00207 continue ;
00208 }
00209 #endif
00210
00211 }
00212
00213 if ( id <= 0 ) /* no data - nothing to do */
00214 RETURN( NULL ) ;
00215
00216 g_valid_data = 1 ; /* valid data, woohooo! */
00217
00218 if ( g_dset_recv < 0 )
00219 g_dset_recv = AFNI_receive_init( plint->im3d, RECEIVE_DSETCHANGE_MASK,
00220 DSETN_dset_recv, plint ,
00221 "DSETN_dset_recv" ) ;
00222 if ( g_dset_recv < 0 )
00223 RETURN("*************************************\n"
00224 "DSETN_main: failed AFNI_receive_init\n"
00225 "*************************************") ;
00226
00227 PLUTO_force_redisplay() ;
00228 RETURN( NULL );
00229 }
|
|
|
Definition at line 105 of file plug_nth_dataset.c. References AFNI_register_nD_func_init(), AFNI_register_nD_function(), ANAT_ALL_MASK, DSETN_func(), DSETN_func_init(), DSETN_main(), ENTRY, ez, FUNC_ALL_MASK, generic_func, helpstring, lr, NEEDS_DSET_INDEX, NMAX, plint, PLUTO_add_hint(), PLUTO_set_runlabels(), PLUTO_set_sequence(), PROCESS_MRI_IMAGE, RETURN, and ZERO_IDCODE.
00106 {
00107 int id ;
00108
00109 ENTRY("PLUGIN_init - Dataset#N") ;
00110
00111 if( ncall > 0 ) RETURN( NULL ); /* only one interface */
00112
00113 AFNI_register_nD_function ( 1 , "Dataset#N" , (generic_func *)DSETN_func ,
00114 NEEDS_DSET_INDEX|PROCESS_MRI_IMAGE ) ;
00115 AFNI_register_nD_func_init( 1 , (generic_func *) DSETN_func_init ) ; /* 21 Jul 2003 */
00116
00117 plint = PLUTO_new_interface( "Dataset#N", "Controls 1D function Dataset#N",
00118 helpstring, PLUGIN_CALL_VIA_MENU, DSETN_main ) ;
00119
00120 PLUTO_add_hint( plint , "Controls 1D function Dataset#N" ) ;
00121
00122 PLUTO_set_sequence( plint , "A:funcs:dataset#N" ) ;
00123
00124 PLUTO_set_runlabels( plint , "Set+Keep" , "Set+Close" ) ; /* 04 Nov 2003 */
00125
00126 for( id=0 ; id < NMAX ; id++ ){
00127 PLUTO_add_option( plint , "Input" , "Input" , FALSE ) ;
00128 PLUTO_add_dataset(plint , "Dataset" ,
00129 ANAT_ALL_MASK , FUNC_ALL_MASK ,
00130 DIMEN_4D_MASK | BRICK_ALLREAL_MASK ) ;
00131 PLUTO_add_overlaycolor( plint , "Color" ) ;
00132 }
00133
00134 #ifdef USE_WHERE
00135 PLUTO_add_option( plint , "Where" , "Where" , FALSE ) ;
00136 PLUTO_add_string( plint, "Justify", 2, lr, justify ) ;
00137
00138 PLUTO_add_option( plint , "How" , "How" , FALSE ) ;
00139 PLUTO_add_string( plint, "Fill", 2, ez, fill ) ;
00140 #endif
00141
00142 /* init the global lists */
00143 for ( id=0 ; id < NMAX ; id++ ){
00144 dset[id] = NULL;
00145 ZERO_IDCODE(g_id[id]);
00146 }
00147
00148 RETURN( plint ) ;
00149 }
|
|
|
Definition at line 336 of file plug_nth_dataset.c. References dptr, ENTRY, ISVALID_DSET, ISZERO_IDCODE, NMAX, PLUTO_find_dset(), RETURN, and ZERO_IDCODE. Referenced by DSETN_dset_recv().
00337 {
00338 THD_3dim_dataset * dptr;
00339 int idcount, num_valid = 0;
00340
00341 ENTRY( "set_global_dsets_from_ids" );
00342
00343 for ( idcount = 0; idcount < NMAX; idcount++ )
00344 {
00345 if ( ! ISZERO_IDCODE( g_id[idcount] ) )
00346 {
00347 dptr = PLUTO_find_dset( &g_id[idcount] );
00348 if ( ! ISVALID_DSET( dptr ) )
00349 {
00350 dptr = NULL;
00351 ZERO_IDCODE( g_id[idcount] ); /* lost dataset */
00352 }
00353 else /* a good one */
00354 num_valid++;
00355 }
00356 else /* just being safe */
00357 dptr = NULL;
00358
00359 dset[idcount] = dptr;
00360 }
00361
00362 RETURN( num_valid );
00363 }
|
Variable Documentation
|
|
Definition at line 77 of file plug_nth_dataset.c. |
|
|
Definition at line 93 of file plug_nth_dataset.c. Referenced by DSETN_main(), and PLUGIN_init(). |
|
|
Definition at line 80 of file plug_nth_dataset.c. Referenced by DSETN_dset_recv(), and DSETN_main(). |
|
|
Definition at line 78 of file plug_nth_dataset.c. |
|
|
Definition at line 81 of file plug_nth_dataset.c. Referenced by DSETN_dset_recv(), DSETN_func(), and DSETN_main(). |
|
|
Definition at line 29 of file plug_nth_dataset.c. Referenced by PLUGIN_init(). |
|
|
Definition at line 92 of file plug_nth_dataset.c. Referenced by DSETN_main(), and PLUGIN_init(). |
|
|
Definition at line 79 of file plug_nth_dataset.c. Referenced by DSETN_func(), and DSETN_main(). |
|
|
Definition at line 95 of file plug_nth_dataset.c. Referenced by DSETN_dset_recv(), DSETN_func_init(), DSETN_main(), and PLUGIN_init(). |