Doxygen Source Code Documentation
afni_splash.c File Reference
#include "afni.h"
#include "afni_splash.h"
#include <time.h>
#include "afni_broutim.h"
Go to the source code of this file.
Data Structures | |
struct | mday |
Defines | |
#define | USE_FADING |
#define | USE_WRITING |
#define | MMAX 82 |
#define | NXY 128 |
#define | JAN 1 |
#define | FEB 2 |
#define | MAR 3 |
#define | APR 4 |
#define | MAY 5 |
#define | JUN 6 |
#define | JUL 7 |
#define | AUG 8 |
#define | SEP 9 |
#define | OCT 10 |
#define | NOV 11 |
#define | DEC 12 |
#define | NTMAX 9 |
#define | NLBUF 4096 |
#define | ISTARRED(s) ( (s)[0]=='*' && (s)[1]=='*' && (s)[2]=='*' ) |
#define | NGMAX 32 |
#define | ACTIVATE_MASK (1) |
#define | NULL_MASK (0) |
#define | NWBUF 128 |
Functions | |
void * | SPLASH_popup_image (void *, MRI_IMAGE *) |
MRI_IMAGE * | SPLASH_decode26 (int, int, int, char **) |
MRI_IMAGE * | SPLASH_decodexx (int, int, int, int, byte *, byte *, byte *, char **) |
int | AFNI_find_jpegs (char *, char ***) |
int | AFNI_find_todays_face (void) |
void | AFNI_splashraise (void) |
void | AFNI_splashdown (void) |
void | AFNI_splashup (void) |
XtPointer | SPLASH_imseq_getim (int n, int type, XtPointer handle) |
void | AFNI_facedown (void *kd) |
int | gcd (int m, int n) |
void | AFNI_faceup (void) |
void | AFNI_broutim_CB (Widget w, XtPointer cd, XtPointer cbs) |
int | get_linbuf (char *str) |
void | AFNI_decode_geom (char *geom, int *ww, int *hh, int *xx, int *yy) |
void | AFNI_startup_layout_CB (XtPointer client_data, XtIntervalId *id) |
void | AFNI_save_layout_CB (Widget w, XtPointer cd, XtPointer cbs) |
void | AFNI_finalsave_layout_CB (Widget w, XtPointer cd, MCW_choose_cbs *cbs) |
void | AFNI_startup_script_CB (XtPointer client_data, XtIntervalId *id) |
void | AFNI_run_script_CB (Widget w, XtPointer cd, XtPointer cbs) |
void | AFNI_finalrun_script_CB (Widget w, XtPointer cd, MCW_choose_cbs *cbs) |
Variables | |
MRI_IMAGE * | imspl = NULL |
void * | handle = NULL |
int | do_write = 2 |
int | num_splash = 0 |
int | first_splash = -1 |
char ** | fname_splash = NULL |
int | num_face = 0 |
char ** | fname_face = NULL |
byte | map26 [26] |
char | alpha [MMAX] |
void * | face_phan = NULL |
mday | facials [] |
char * | linbuf |
Define Documentation
|
Definition at line 881 of file afni_splash.c. Referenced by AFNI_startup_layout_CB(). |
|
Definition at line 735 of file afni_splash.c. |
|
Definition at line 739 of file afni_splash.c. |
|
Definition at line 743 of file afni_splash.c. |
|
Definition at line 733 of file afni_splash.c. |
|
Definition at line 877 of file afni_splash.c. |
|
Definition at line 732 of file afni_splash.c. |
|
Definition at line 738 of file afni_splash.c. |
|
Definition at line 737 of file afni_splash.c. |
|
Definition at line 734 of file afni_splash.c. |
|
Definition at line 736 of file afni_splash.c. |
|
Definition at line 486 of file afni_splash.c. Referenced by SPLASH_decodexx(). |
|
Definition at line 879 of file afni_splash.c. Referenced by AFNI_startup_layout_CB(). |
|
Definition at line 817 of file afni_splash.c. Referenced by AFNI_startup_layout_CB(), AFNI_startup_script_CB(), and get_linbuf(). |
|
Definition at line 742 of file afni_splash.c. |
|
Definition at line 746 of file afni_splash.c. Referenced by AFNI_find_todays_face(). |
|
Definition at line 882 of file afni_splash.c. Referenced by AFNI_startup_layout_CB(). |
|
Definition at line 884 of file afni_splash.c. Referenced by AFNI_startup_layout_CB(). |
|
Definition at line 637 of file afni_splash.c. Referenced by AFNI_faceup(). |
|
Definition at line 741 of file afni_splash.c. |
|
Definition at line 740 of file afni_splash.c. |
|
Definition at line 36 of file afni_splash.c. |
|
Definition at line 38 of file afni_splash.c. |
Function Documentation
|
Definition at line 798 of file afni_splash.c. References mri_free(), NC_broutim, NLINE_broutim, NX_broutim, NY_broutim, PLUTO_popup_image(), and SPLASH_decodexx().
00799 { 00800 MRI_IMAGE *imbr ; 00801 imbr = SPLASH_decodexx( NX_broutim,NY_broutim,NLINE_broutim,NC_broutim, 00802 RMAP_broutim,GMAP_broutim,BMAP_broutim,BAR_broutim); 00803 (void) PLUTO_popup_image( NULL , imbr ) ; 00804 mri_free(imbr) ; return ; 00805 } |
|
Definition at line 852 of file afni_splash.c. References geom. Referenced by AFNI_drive_geom_graph(), AFNI_drive_open_plugin(), AFNI_drive_open_window(), and AFNI_startup_layout_CB().
00853 { 00854 int has_x , has_plus ; 00855 00856 *ww = *hh = *xx = *yy = -1 ; 00857 if( geom == NULL || geom[0] == '\0' ) return ; 00858 00859 has_x = strstr(geom,"x") != NULL ; 00860 has_plus = strstr(geom,"+") != NULL ; 00861 00862 if( has_x && has_plus ) 00863 sscanf(geom,"%dx%d+%d+%d",ww,hh,xx,yy) ; 00864 else if( has_x ) 00865 sscanf(geom,"%dx%d",ww,hh) ; 00866 else if( has_plus ) 00867 sscanf(geom,"+%d+%d",xx,yy) ; 00868 00869 return ; 00870 } |
|
Definition at line 634 of file afni_splash.c. References face_phan. Referenced by AFNI_faceup().
00634 { face_phan = NULL; } |
|
Definition at line 647 of file afni_splash.c. References AFNI_facedown(), AFNI_find_jpegs(), BEEPIT, AFNI_library_type::dc, drive_MCW_imseq(), ENTRY, face_phan, fim, fname_face, gcd(), generic_func, getenv(), GLOBAL_library, MCW_DC::height, isqDR_periodicmont, isqDR_record_disable, mri_dup2D(), mri_free(), mri_read_stuff(), mri_zeropad_2D(), NI_clock_time(), NI_sleep(), num_face, MRI_IMAGE::nx, NXY, MRI_IMAGE::ny, PLUTO_imseq_addto(), PLUTO_imseq_popim(), PLUTO_imseq_retitle(), PLUTO_imseq_setim(), and MCW_DC::width.
00648 { 00649 MRI_IMAGE *im , *fim ; 00650 int ii , nx,ny , nxdown,nxup , nydown,nyup ; 00651 int ctold,ctnew,mmss , ddss ; 00652 int jj , j0,dj=1 ; 00653 00654 ENTRY("AFNI_faceup") ; 00655 00656 if( num_face < 0 ){ BEEPIT; EXRETURN; } 00657 if( num_face == 0 ){ 00658 num_face = AFNI_find_jpegs( "face_" , &fname_face ) ; 00659 if( num_face <= 0 ){ BEEPIT; EXRETURN; } 00660 } 00661 if( face_phan != NULL ){ 00662 PLUGIN_imseq *ph = (PLUGIN_imseq *)face_phan ; 00663 XMapRaised( XtDisplay(ph->seq->wtop) , XtWindow(ph->seq->wtop) ) ; 00664 EXRETURN ; 00665 } 00666 00667 ctold = NI_clock_time() ; 00668 00669 ddss = num_face + 16449/num_face ; if( ddss > 222 ) ddss = 222 ; 00670 00671 if( num_face > 4 ){ 00672 ii = num_face / 2 ; 00673 do{ dj = 1 + lrand48() % ii ; } while( gcd(num_face,dj) > 1 ) ; 00674 } 00675 j0 = lrand48() % num_face ; 00676 00677 for( ii=0 ; ii < num_face ; ii++ ){ 00678 jj = (j0 + ii*dj) % num_face ; 00679 im = mri_read_stuff( fname_face[jj] ) ; 00680 if( im == NULL ) continue ; 00681 nx = im->nx ; ny = im->ny ; 00682 00683 nxdown = (NXY-nx) / 2 ; nxup = NXY - nx - nxdown ; 00684 nydown = (NXY-ny) / 2 ; nyup = NXY - ny - nydown ; 00685 if( nxdown != 0 || nydown != 0 || nxup != 0 || nyup != 0 ){ 00686 fim = mri_zeropad_2D( nxdown,nxup , nydown,nyup , im ) ; 00687 if( fim != NULL ){ mri_free(im) ; im = fim ; } 00688 } 00689 fim = mri_dup2D(2,im) ; mri_free(im) ; /* double size for fun */ 00690 if( face_phan == NULL ){ 00691 int sxx,syy ; char *sen ; PLUGIN_imseq *ph ; 00692 00693 face_phan = PLUTO_imseq_popim( fim,(generic_func *)AFNI_facedown,NULL ); 00694 sxx = (GLOBAL_library.dc->width-4*NXY)/2 ; if( sxx < 1 ) sxx = 1 ; 00695 syy = 100 ; 00696 sen = getenv("AFNI_SPLASH_XY") ; 00697 if( sen != NULL ){ 00698 int n,x,y ; 00699 n = sscanf(sen,"%d:%d",&x,&y) ; 00700 if( n == 2 && x >= 0 && x < GLOBAL_library.dc->width && 00701 y >= 0 && y < GLOBAL_library.dc->height ){ 00702 sxx = x ; syy = y ; 00703 } 00704 } 00705 ph = (PLUGIN_imseq *)face_phan ; 00706 XtVaSetValues( ph->seq->wtop , XmNx,sxx , XmNy,syy , NULL ) ; 00707 drive_MCW_imseq( ph->seq , isqDR_record_disable , (XtPointer)0 ) ; 00708 drive_MCW_imseq( ph->seq , isqDR_periodicmont , (XtPointer)1 ) ; 00709 00710 } else { 00711 PLUTO_imseq_addto( face_phan , fim ) ; 00712 } 00713 mri_free(fim) ; 00714 00715 ctnew = NI_clock_time() ; /* show 1 image every ddss ms [27 Dec 2004] */ 00716 mmss = ddss - (ctnew-ctold) ; 00717 ctold = ctnew ; ddss-- ; 00718 NI_sleep(mmss) ; 00719 } 00720 if( face_phan != NULL ){ 00721 PLUTO_imseq_retitle( face_phan , "Faces of AFNI" ) ; 00722 PLUTO_imseq_setim( face_phan , 0 ) ; 00723 } else { 00724 BEEPIT ; 00725 } 00726 00727 EXRETURN ; 00728 } |
|
Definition at line 1723 of file afni_splash.c. References AFNI_startup_script_CB(), MCW_choose_cbs::cval, and ENTRY. Referenced by AFNI_run_script_CB().
01724 { 01725 Three_D_View *im3d = (Three_D_View *) cd ; 01726 01727 ENTRY("AFNI_finalrun_script_CB") ; 01728 01729 AFNI_startup_script_CB( (XtPointer) cbs->cval , NULL ) ; 01730 EXRETURN ; 01731 } |
|
Definition at line 1420 of file afni_splash.c. References AFNI_controller_index(), AV_uformat_fval(), BEEPIT, MCW_pbar::bigmode, MCW_pbar::bigtop, AFNI_library_type::controllers, MCW_choose_cbs::cval, Three_D_View::dc, AFNI_library_type::dc, drive_MCW_imseq(), ENTRY, MCW_grapher::fdw_graph, AFNI_function_widgets::frame, AFNI_widget_set::func, AFNI_view_info::func_resam_mode, AFNI_view_info::func_thresh_top, AFNI_view_info::func_threshold, AFNI_view_info::func_visible, MCW_arrowval::fval, Three_D_View::g123, Three_D_View::g231, Three_D_View::g312, GLOBAL_library, IM3D_OPEN, MCW_imseq::image_frac, AFNI_function_widgets::inten_pbar, isq, isqDR_getopacity, MCW_DCOV::label_ov, MCW_grapher::mat, MAX_CONTROLLERS, MCW_widget_geom(), MCW_widget_visible(), MIN_PIN, MCW_pbar::mode, MCW_imseq::mont_gap, MCW_imseq::mont_gapcolor, MCW_imseq::mont_nx, MCW_imseq::mont_ny, MCW_imseq::mont_skip, MCW_DCOV::name_ov, MCW_DCOV::ncol_ov, AFNI_widget_set::nplugbut, MCW_pbar::num_panes, MCW_imseq::onoff_state, MCW_pbar::ov_index, MCW_DC::ovc, MCW_grapher::pin_top, AFNI_widget_set::plugint, AFNI_widget_set::pluglab, MCW_pbar::pval, AFNI_function_widgets::range_av, Three_D_View::s123, Three_D_View::s231, Three_D_View::s312, THD_filename_ok(), THR_FACTOR, AFNI_view_info::thr_resam_mode, AFNI_widget_set::top_shell, AFNI_view_info::use_autorange, Three_D_View::vinfo, Three_D_View::vwid, and MCW_imseq::wtop. Referenced by AFNI_save_layout_CB().
01421 { 01422 Three_D_View *im3d = (Three_D_View *) cd ; 01423 int cc,ww , gww,ghh,gxx,gyy ; 01424 FILE *fp , *gp ; 01425 MCW_imseq *isq ; 01426 MCW_grapher *gra ; 01427 float ifrac ; 01428 char mont[128] ; 01429 int matrix , pinnum ; 01430 01431 char *abet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; 01432 char *wnam[3] = { "axial" , "sagittal" , "coronal" } ; 01433 01434 int ipl , qq , ll ; 01435 char *plab ; 01436 01437 Three_D_View *qm3d = GLOBAL_library.controllers[0]; /* already open */ 01438 01439 #ifdef ALLOW_PLUGINS 01440 int npbut = qm3d->vwid->nplugbut; /* how many plugins */ 01441 char ** pluglab = qm3d->vwid->pluglab; /* their labels */ 01442 PLUGIN_interface ** plugint = qm3d->vwid->plugint; /* their interfaces */ 01443 #endif 01444 01445 MCW_DCOV *ovc = GLOBAL_library.dc->ovc ; /* 22 Jan 2003 */ 01446 Three_D_View *zm3d ; 01447 01448 ENTRY("AFNI_finalsave_layout_CB") ; 01449 01450 if( strcmp(cbs->cval,".afnirc") == 0 ){ BEEPIT; EXRETURN; } /* 12 Oct 2000 */ 01451 01452 /*-- 23 Jan 2003: open layout file if name is "OK", else don't use it --*/ 01453 01454 if( THD_filename_ok(cbs->cval) ){ 01455 fp = fopen( cbs->cval , "w" ) ; 01456 if( fp == NULL ){ BEEPIT; EXRETURN; } 01457 } else { 01458 fp = NULL ; 01459 } 01460 01461 if( fp != NULL ) fprintf(fp,"\n***LAYOUT\n") ; 01462 01463 /*-- 22 Jan 2002: maybe write a startup script to do same things --*/ 01464 01465 if( fp == NULL ) 01466 gp = fopen( ".afni.startup_script" , "w" ) ; 01467 else 01468 gp = NULL ; 01469 01470 if( gp != NULL ){ 01471 01472 fprintf(gp,"// AFNI startup script, from Datamode->Misc->Save Layout\n") ; 01473 01474 /* put in any extra overlay colors */ 01475 01476 for( qq=DEFAULT_NCOLOVR+1 ; qq < ovc->ncol_ov ; qq++ ) 01477 fprintf(gp,"ADD_OVERLAY_COLOR %s %s\n", 01478 ovc->name_ov[qq] , ovc->label_ov[qq] ) ; 01479 } else { 01480 if( fp == NULL ){ BEEPIT; EXRETURN; } 01481 } 01482 01483 /*-- loop over controllers --*/ 01484 01485 for( cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){ 01486 01487 /*-- controller open? */ 01488 01489 zm3d = GLOBAL_library.controllers[cc] ; 01490 01491 if( !IM3D_OPEN(zm3d) ) continue ; /* skip */ 01492 01493 /* print controller info */ 01494 01495 MCW_widget_geom( zm3d->vwid->top_shell , 01496 NULL,NULL , &gxx,&gyy ) ; 01497 01498 if( fp != NULL ) fprintf(fp," %c geom=+%d+%d\n" , abet[cc] , gxx,gyy ) ; 01499 01500 /*-- 22 Jan 2003: parallel output for startup script --*/ 01501 01502 if( gp != NULL ){ 01503 MCW_pbar *pbar = zm3d->vwid->func->inten_pbar ; 01504 01505 fprintf(gp,"OPEN_WINDOW %c geom=+%d+%d\n" , abet[cc] , gxx,gyy ) ; 01506 01507 if( XtIsManaged(zm3d->vwid->func->frame) ) 01508 fprintf(gp,"OPEN_PANEL %c.Define_Overlay\n" , abet[cc] ) ; 01509 01510 fprintf(gp,"SET_THRESHOLD %c.%04d %d\n" , abet[cc] , 01511 (int)(zm3d->vinfo->func_threshold/THR_FACTOR) , 01512 (int)(log10(zm3d->vinfo->func_thresh_top)+.01) ) ; 01513 01514 if( !pbar->bigmode ){ 01515 fprintf(gp,"SET_PBAR_ALL %c.%c%d" , abet[cc] , 01516 (pbar->mode) ? '+' : '-' , pbar->num_panes ) ; 01517 for( qq=0 ; qq < pbar->num_panes ; qq++ ) 01518 fprintf(gp," %s=%s", 01519 AV_uformat_fval(pbar->pval[qq]) , 01520 ovc->label_ov[pbar->ov_index[qq]] ) ; 01521 fprintf(gp,"\n") ; 01522 } else { 01523 fprintf(gp,"SET_PBAR_ALL %c.%c%d %f %s\n" , abet[cc] , 01524 (pbar->mode) ? '+' : '-' , 99 , 01525 pbar->bigtop , PBAR_get_bigmap(pbar) ) ; 01526 } 01527 01528 fprintf(gp,"SET_FUNC_VISIBLE %c.%c\n" , abet[cc] , 01529 (zm3d->vinfo->func_visible) ? '+' : '-' ) ; 01530 01531 fprintf(gp,"SET_FUNC_RESAM %c.%s.%s\n" , abet[cc] , 01532 RESAM_shortstr[zm3d->vinfo->func_resam_mode] , 01533 RESAM_shortstr[zm3d->vinfo->thr_resam_mode] ) ; 01534 01535 if( im3d->vinfo->use_autorange ) 01536 fprintf(gp,"SET_FUNC_AUTORANGE %c.+\n" , abet[cc] ) ; 01537 else 01538 fprintf(gp,"SET_FUNC_RANGE %c.%f\n" , abet[cc] , 01539 im3d->vwid->func->range_av->fval ) ; 01540 01541 } /* end of startup script stuff */ 01542 01543 /*-- loop over image viewers in this controller --*/ 01544 01545 for( ww=0 ; ww < 3 ; ww++ ){ 01546 01547 isq = (ww == 0) ? zm3d->s123 /* get the image */ 01548 :(ww == 1) ? zm3d->s231 /* viewer struct */ 01549 : zm3d->s312 ; 01550 01551 if( isq == NULL ) continue ; /* skip */ 01552 01553 /* get and print image viewer info */ 01554 01555 MCW_widget_geom( isq->wtop , &gww,&ghh , &gxx,&gyy ) ; 01556 01557 ifrac = (isq->onoff_state) ? isq->image_frac : 1.0 ; 01558 01559 if( isq->mont_nx > 1 || isq->mont_ny > 1 ){ 01560 sprintf(mont,"%dx%d:%d:%d:%s" , 01561 isq->mont_nx , isq->mont_ny , isq->mont_skip+1 , isq->mont_gap , 01562 zm3d->dc->ovc->label_ov[isq->mont_gapcolor]); 01563 } else { 01564 mont[0] = '\0' ; 01565 } 01566 01567 if( fp != NULL ){ 01568 if( mont[0] == '\0' ){ 01569 fprintf(fp, " %c.%simage geom=%dx%d+%d+%d ifrac=%s\n" , 01570 abet[cc] , wnam[ww] , gww,ghh,gxx,gyy , AV_uformat_fval(ifrac) ) ; 01571 } else { 01572 fprintf(fp, " %c.%simage geom=%dx%d+%d+%d ifrac=%s mont=%s\n" , 01573 abet[cc] , wnam[ww] , gww,ghh,gxx,gyy , AV_uformat_fval(ifrac) , mont ) ; 01574 } 01575 } 01576 01577 /*-- 22 Jan 2003: startup script stuff for image viewers --*/ 01578 01579 if( gp != NULL ){ 01580 int opval=9 ; 01581 drive_MCW_imseq( isq , isqDR_getopacity , &opval ) ; 01582 if( mont[0] == '\0' ){ 01583 fprintf(gp, "OPEN_WINDOW %c.%simage geom=+%d+%d ifrac=%s opacity=%d\n" , 01584 abet[cc] , wnam[ww] , gxx,gyy , AV_uformat_fval(ifrac) , opval ) ; 01585 } else { 01586 fprintf(gp, "OPEN_WINDOW %c.%simage geom=+%d+%d ifrac=%s mont=%s opacity=%d\n" , 01587 abet[cc] , wnam[ww] , gxx,gyy , AV_uformat_fval(ifrac) , mont , opval ) ; 01588 } 01589 } 01590 } 01591 01592 /*-- loop over graph viewers --*/ 01593 01594 for( ww=0 ; ww < 3 ; ww++ ){ 01595 01596 gra = (ww == 0) ? zm3d->g123 /* get the graph */ 01597 :(ww == 1) ? zm3d->g231 /* viewer struct */ 01598 : zm3d->g312 ; 01599 01600 if( gra == NULL ) continue ; /* ERROR */ 01601 01602 MCW_widget_geom( gra->fdw_graph , &gww,&ghh , &gxx,&gyy ) ; 01603 01604 pinnum = (gra->pin_top < MIN_PIN) ? 0 : gra->pin_top ; 01605 matrix = gra->mat ; 01606 01607 if( fp != NULL ){ 01608 if( pinnum > 0 ){ 01609 fprintf(fp , " %c.%sgraph geom=%dx%d+%d+%d matrix=%d pinnum=%d\n" , 01610 abet[cc] , wnam[ww] , gww,ghh,gxx,gyy , matrix,pinnum ) ; 01611 } else { 01612 fprintf(fp , " %c.%sgraph geom=%dx%d+%d+%d matrix=%d\n" , 01613 abet[cc] , wnam[ww] , gww,ghh,gxx,gyy , matrix ) ; 01614 } 01615 } 01616 01617 /*-- 22 Jan 2003: startup script stuff for graph viewers --*/ 01618 01619 if( gp != NULL ){ 01620 if( pinnum > 0 ){ 01621 fprintf(gp , "OPEN_WINDOW %c.%sgraph geom=%dx%d+%d+%d matrix=%d pinnum=%d\n" , 01622 abet[cc] , wnam[ww] , gww,ghh,gxx,gyy , matrix,pinnum ) ; 01623 } else { 01624 fprintf(gp , "OPEN_WINDOW %c.%sgraph geom=%dx%d+%d+%d matrix=%d\n" , 01625 abet[cc] , wnam[ww] , gww,ghh,gxx,gyy , matrix ) ; 01626 } 01627 } 01628 } 01629 01630 } /* end of loop over controllers */ 01631 01632 #ifdef ALLOW_PLUGINS 01633 /*-- loop over plugins --*/ 01634 01635 for( ipl=0 ; ipl < npbut ; ipl++ ){ 01636 01637 if( plugint[ipl]->wid == NULL || plugint[ipl]->wid->shell == NULL ) continue ; 01638 01639 cc = AFNI_controller_index( plugint[ipl]->im3d ) ; 01640 01641 if( cc < 0 || cc >= MAX_CONTROLLERS || !IM3D_OPEN(plugint[ipl]->im3d) ) continue ; 01642 01643 if( ! MCW_widget_visible(plugint[ipl]->wid->shell) ) continue ; 01644 01645 /* it passed all the test, so get its location */ 01646 01647 MCW_widget_geom( plugint[ipl]->wid->shell , &gww,&ghh , &gxx,&gyy ) ; 01648 01649 /* make a label for the plugin, stripping trailing 01650 blanks and replacing interior blanks with underscores */ 01651 01652 plab = strdup( pluglab[ipl] ) ; 01653 for( ll=strlen(plab) ; /* truncate trailing blanks */ 01654 ll >= 0 && isspace(plab[ll]) ; ll-- ) plab[ll] = '\0' ; 01655 if( ll < 0 ) continue ; /* all blanks?! ERROR */ 01656 ll++ ; 01657 for( qq=0 ; qq < ll ; qq++ ) if( isspace(plab[qq]) ) plab[qq] = '_' ; 01658 01659 if( fp != NULL ) fprintf(fp , " %c.plugin.%s geom=+%d+%d\n" , 01660 abet[cc] , plab , gxx,gyy ) ; 01661 } 01662 #endif 01663 01664 /*-- finito! --*/ 01665 01666 if( fp != NULL ) fclose(fp) ; 01667 if( gp != NULL ) fclose(gp) ; 01668 EXRETURN ; 01669 } |
|
Find all files of form 'prefix*.jpg' and 'prefix*.JPG' files in the path. Definition at line 548 of file afni_splash.c. References AFMALL, ENTRY, free, getenv(), malloc, MCW_free_wildcards, MCW_wildcards(), realloc, RETURN, and THD_MAX_NAME. Referenced by AFNI_faceup(), and AFNI_splashup().
00549 { 00550 char *epath , *elocal , *eee ; 00551 char edir[THD_MAX_NAME] , *ename ; 00552 int epos , ll , ii , id , nfile , nx,ny , num_file=0 ; 00553 char **ffile , **fflist=NULL ; 00554 00555 ENTRY("AFNI_find_jpegs") ; 00556 00557 if( prefix == NULL || *prefix == '\0' || fname == NULL ) RETURN(-1) ; 00558 00559 /*----- get path to search -----*/ 00560 00561 epath = getenv("AFNI_PLUGINPATH") ; 00562 if( epath == NULL ) epath = getenv("AFNI_PLUGIN_PATH") ; 00563 if( epath == NULL ) epath = getenv("PATH") ; 00564 if( epath == NULL ) epath = getenv("HOME") ; 00565 if( epath == NULL ){ RETURN(-1) ; } 00566 00567 /*----- copy path list into local memory -----*/ 00568 00569 ll = strlen(epath) ; 00570 elocal = AFMALL( char, sizeof(char) * (ll+2) ) ; 00571 00572 /*----- put a blank at the end -----*/ 00573 00574 strcpy( elocal , epath ) ; elocal[ll] = ' ' ; elocal[ll+1] = '\0' ; 00575 00576 /*----- replace colons (if any) with blanks -----*/ 00577 00578 for( ii=0 ; ii < ll ; ii++ ) 00579 if( elocal[ii] == ':' ) elocal[ii] = ' ' ; 00580 00581 /*----- extract blank delimited strings from elocal; 00582 use as directory names to look for matching files -----*/ 00583 00584 ename = (char *) malloc( 2*THD_MAX_NAME+32 ) ; /* string for wildcards */ 00585 epos = 0 ; /* scanning position in elocal */ 00586 00587 do{ 00588 ii = sscanf( elocal+epos , "%s%n" , edir , &id ); /* next substring */ 00589 if( ii < 1 ) break ; /* none -> done */ 00590 00591 /** check if edir occurs earlier in elocal **/ 00592 00593 eee = strstr( elocal , edir ) ; 00594 if( eee != NULL && (eee-elocal) < epos ){ epos += id ; continue ; } 00595 00596 epos += id ; /* char after last scanned */ 00597 00598 ii = strlen(edir) ; /* make sure dirname has */ 00599 if( edir[ii-1] != '/' ){ /* a trailing '/' on it */ 00600 edir[ii] = '/' ; edir[ii+1] = '\0' ; 00601 } 00602 00603 /* create wildcard for JPEG files in this directory */ 00604 00605 sprintf(ename,"%s%s*.jpg %s%s*.JPG" , edir,prefix,edir,prefix ) ; 00606 00607 MCW_wildcards( ename , &nfile , &ffile ) ; /* find matching files */ 00608 if( nfile <= 0 ) continue ; /* no files found */ 00609 00610 /** add files we found to list **/ 00611 00612 fflist = (char **)realloc(fflist,sizeof(char *)*(num_file+nfile)); 00613 for( ii=0 ; ii < nfile ; ii++ ) 00614 if( strstr(ffile[ii],"face_wildman.jpg") != NULL ) /* 20 May 2005 */ 00615 remove(ffile[ii]) ; 00616 else 00617 fflist[num_file++] = strdup(ffile[ii]) ; 00618 00619 MCW_free_wildcards( nfile , ffile ) ; /* toss the junk */ 00620 00621 } while( epos < ll ) ; /* scan until 'epos' is after end of epath */ 00622 00623 free(elocal) ; free(ename) ; /* toss more junk */ 00624 00625 if( num_file == 0 ) num_file = -1 ; /* flag that nothing was found */ 00626 *fname = fflist ; /* list of found files */ 00627 RETURN(num_file) ; /* return number of files found */ 00628 } |
|
Definition at line 761 of file afni_splash.c. References mday::day, fname_face, mday::label, mday::mon, NTMAX, num_face, and tt. Referenced by AFNI_splashup().
00762 { 00763 time_t tt ; 00764 struct tm *lt ; 00765 int ii , ntar , dd , tar[NTMAX] ; 00766 static int iold=-1 ; 00767 char *flab ; 00768 00769 if( num_face <= 0 || fname_face == NULL ) return -1 ; /* bad */ 00770 if( num_face == 1 ) return 0 ; /* duh */ 00771 00772 /* find if this day is in the 'facials' list */ 00773 00774 tt = time(NULL) ; /* seconds since 01 Jan 1970 */ 00775 lt = localtime( &tt ) ; /* break into pieces */ 00776 for( ii=0 ; facials[ii].day > 0 ; ii++ ) 00777 if( facials[ii].mon == lt->tm_mon+1 && facials[ii].day == lt->tm_mday ) break ; 00778 if( facials[ii].day <= 0 ) return -1 ; /* today is not special */ 00779 00780 /* OK, find face names that match */ 00781 00782 flab = facials[ii].label ; 00783 00784 for( ntar=dd=0 ; ntar < NTMAX && dd < num_face ; dd++ ) 00785 if( strstr(fname_face[dd],flab) != NULL ) tar[ntar++] = dd ; 00786 00787 if( ntar == 0 ) return -1 ; 00788 if( ntar == 1 ) return tar[0] ; 00789 ii = (lrand48()>>8) % ntar ; 00790 if( ii == iold ) ii = (ii+1)%ntar ; 00791 iold = ii ; return tar[ii] ; 00792 } |
|
Get a filename to run as an AFNI script. 22 Jan 2003 - RWCox. ----------------------------------------------------------------------------- Definition at line 1709 of file afni_splash.c. References AFNI_finalrun_script_CB(), ENTRY, MCW_choose_string(), AFNI_widget_set::picture, and Three_D_View::vwid.
01710 { 01711 Three_D_View *im3d = (Three_D_View *) cd ; 01712 01713 ENTRY("AFNI_run_script_CB") ; 01714 01715 MCW_choose_string( im3d->vwid->picture , 01716 "Enter AFNI script filename:" , 01717 NULL , AFNI_finalrun_script_CB , cd ) ; 01718 EXRETURN ; 01719 } |
|
Definition at line 1406 of file afni_splash.c. References AFNI_finalsave_layout_CB(), ENTRY, MCW_choose_string(), AFNI_widget_set::picture, and Three_D_View::vwid.
01407 { 01408 Three_D_View *im3d = (Three_D_View *) cd ; 01409 01410 ENTRY("AFNI_save_layout_CB") ; 01411 01412 MCW_choose_string( im3d->vwid->picture , 01413 "Layout filename [blank => .afni.startup_script]:" , 01414 NULL , AFNI_finalsave_layout_CB , cd ) ; 01415 EXRETURN ; 01416 } |
|
Definition at line 58 of file afni_splash.c. References COX_clock_time(), do_write, drive_MCW_imseq(), ENTRY, getenv(), handle, isqDR_reimage, mri_data_pointer(), mri_free(), myXtFree, MRI_IMAGE::nvox, MRI_IMAGE::pixel_size, PLUGIN_impopper::seq, SPLASH_popup_image(), and strtod(). Referenced by AFNI_splashup(), AFNI_startup_layout_CB(), and MAIN_workprocess().
00059 { 00060 PLUGIN_impopper *ppp = (PLUGIN_impopper *) handle ; 00061 00062 ENTRY("AFNI_splashdown") ; 00063 00064 if( handle != NULL ){ 00065 #ifdef USE_FADING 00066 float max_splash = 3.0 ; 00067 char *hh = getenv("AFNI_SPLASHTIME") ; 00068 if( hh != NULL ) max_splash = strtod(hh,NULL) ; 00069 if( max_splash > 0.0 ){ 00070 if( imspl != NULL ){ /* fade gently away */ 00071 byte *bspl ; int ii , nv , kk ; double et ; 00072 bspl = mri_data_pointer(imspl) ; 00073 nv = (imspl->pixel_size) * (imspl->nvox) ; 00074 et = COX_clock_time() ; 00075 do_write = 0 ; 00076 for( kk=0 ; kk < 10 ; kk++ ){ 00077 #if 0 00078 for( ii=0 ; ii < nv ; ii++ ) bspl[ii] *= 0.92 ; 00079 #else 00080 for( ii=0 ; ii < nv ; ii++ ) bspl[ii] = (15*bspl[ii]) >> 4 ; 00081 #endif 00082 SPLASH_popup_image(handle,imspl) ; 00083 drive_MCW_imseq( ppp->seq , isqDR_reimage , (XtPointer) 0 ) ; 00084 if( COX_clock_time()-et > 2.1 ) break ; 00085 } 00086 } 00087 } 00088 #endif 00089 SPLASH_popup_image(handle,NULL); myXtFree(handle) ; /* get rid of window */ 00090 } 00091 mri_free(imspl) ; imspl = NULL ; 00092 do_write = ( (lrand48() >> 8) % 3 == 0 ) ? 2 : 1 ; 00093 EXRETURN ; 00094 } |
|
Definition at line 46 of file afni_splash.c. References handle, ISQ_REALZ, PLUGIN_impopper::seq, and MCW_imseq::wtop. Referenced by AFNI_startup_layout_CB().
00046 : bring splash window to the top */ 00047 { 00048 PLUGIN_impopper *ppp = (PLUGIN_impopper *) handle ; 00049 00050 if( ppp != NULL && ISQ_REALZ(ppp->seq) ) 00051 XMapRaised( XtDisplay(ppp->seq->wtop) , XtWindow(ppp->seq->wtop) ) ; 00052 00053 return ; 00054 } |
|
Definition at line 105 of file afni_splash.c. References AFNI_find_jpegs(), AFNI_find_todays_face(), AFNI_splashdown(), AFNI_library_type::dc, drive_MCW_imseq(), ENTRY, first_splash, fname_face, fname_splash, getenv(), GLOBAL_library, handle, MCW_DC::height, ISQ_options::improc_code, ISQ_IMPROC_SHARP, ISQ_REALZ, isqDR_clearstat, isqDR_getoptions, isqDR_imhelptext, isqDR_offwid, isqDR_onoffwid, isqDR_options, isqDR_realize, isqDR_reimage, isqDR_title, IXOVER, JYOVER, malloc, MAX_XOVER, MAX_YOVER, mri_free(), mri_invert_inplace(), mri_overlay_2D(), mri_read_stuff(), mri_resize(), NC_blank, NC_facetitle, NLINE_facetitle, NORMAL_cursorize, NOVER, num_face, num_splash, MRI_IMAGE::nx, NX_facetitle, NX_TOPOVER, MRI_IMAGE::ny, NY_facetitle, NY_TOPOVER, PLUTO_popup_open, reload_DC_colordef(), PLUGIN_impopper::seq, SPLASH_decode26(), SPLASH_decodexx(), SPLASH_popup_image(), STATUS, MCW_DC::width, MCW_imseq::wimage, and MCW_imseq::wtop. Referenced by MAIN_workprocess().
00106 { 00107 PLUGIN_impopper *ppp ; 00108 MRI_IMAGE *imov ; 00109 int dd,ee ; 00110 char bb ; 00111 byte *bspl ; 00112 int sxx,syy ; 00113 char *sen ; 00114 static int ncall=0 , nov , dnov , nm=-1 ; 00115 00116 ENTRY("AFNI_splashup") ; 00117 00118 /*--- create splash image ---*/ 00119 00120 if( ! PLUTO_popup_open(handle) ){ 00121 00122 int nxov,nyov,ff ; 00123 00124 /* get some fun stuff, first time in */ 00125 00126 if( ncall == 0 ){ 00127 num_face = AFNI_find_jpegs( "face_" , &fname_face ) ; 00128 num_splash = AFNI_find_jpegs( "splash_" , &fname_splash ) ; 00129 if( num_splash > 0 ){ 00130 int np ; 00131 for( np=0 ; np < num_splash ; np++ ) 00132 if( strstr(fname_splash[np],"sscc") != NULL ) break ; 00133 if( np < num_splash ) first_splash = np ; 00134 #if 0 00135 for( np=0 ; np < num_splash ; np++ ) 00136 fprintf(stderr,"SPLASH: %s\n",fname_splash[np]) ; 00137 #endif 00138 } 00139 } 00140 00141 /* create basic splash image */ 00142 00143 mri_free(imspl) ; 00144 imspl = SPLASH_decodexx( NX_blank, NY_blank, NLINE_blank, NC_blank, 00145 RMAP_blank,GMAP_blank,BMAP_blank, BAR_blank ) ; 00146 00147 if( ncall==0 ){ /* initialize random */ 00148 nov = (lrand48() >> 8) % NOVER ; /* sub-image overlay */ 00149 dnov = 2*((lrand48() >> 8) % 2) - 1 ; /* index & direction */ 00150 } 00151 00152 /* Facial overlay: */ 00153 /* if have face jpegs, use them; else, use builtin faces [28 Mar 2003] */ 00154 00155 imov = NULL ; ff = 0 ; 00156 if( num_face > 0 ){ /* external face_*.jpg files */ 00157 static int *dold=NULL, ndold=0 ; int qq ; 00158 dd = AFNI_find_todays_face() ; /* 30 Mar 2005: find a */ 00159 if( dd >= 0 ){ ff=-1; goto Have_dd; } /* special face for today */ 00160 if( ndold == 0 && num_face > 1 ){ 00161 ndold = num_face/2 ; 00162 dold = (int *) malloc(sizeof(int)*ndold) ; 00163 for( qq=0 ; qq < ndold ; qq++ ) dold[qq] = -1 ; 00164 } 00165 Retry_dd: 00166 dd = (lrand48() >> 8) % num_face ; /* pick random file */ 00167 if( num_face > 1 ){ /* check if used recently */ 00168 for( qq=0 ; qq < ndold && dold[qq] != dd ; qq++ ) ; /* nada */ 00169 if( qq < ndold ) goto Retry_dd ; /* was recent */ 00170 for( qq=1 ; qq < ndold ; qq++ ) /* wasn't, so save in list */ 00171 dold[qq-1] = dold[qq] ; 00172 dold[ndold-1] = dd ; 00173 } 00174 Have_dd: 00175 imov = mri_read_stuff( fname_face[dd] ) ; /* read file */ 00176 if( imov != NULL && (imov->nx > MAX_XOVER || imov->ny > MAX_YOVER) ){ 00177 float xfac=MAX_XOVER/(float)(imov->nx), 00178 yfac=MAX_YOVER/(float)(imov->ny) ; /* rescale if too big */ 00179 int nxnew,nynew ; MRI_IMAGE *imq ; 00180 if( xfac > yfac ) xfac = yfac ; 00181 nxnew = (int)(xfac*imov->nx) ; nynew = (int)(xfac*imov->ny) ; 00182 imq = mri_resize( imov , nxnew,nynew ) ; /* kind of slow */ 00183 mri_free(imov); imov = imq; /* replace with rescaled image */ 00184 } 00185 if( ff == 0 && imov != NULL ){ /* ff = 2 for me, 1 for everyone else */ 00186 ff = (strstr(fname_face[dd],"_rwcox") != NULL) ? 2 : 1 ; 00187 } 00188 } 00189 if( imov == NULL ){ /* if didn't get face jpeg above */ 00190 nov = (nov+dnov+NOVER) % NOVER ; 00191 imov = SPLASH_decode26( xover[nov], yover[nov], lover[nov], bover[nov] ) ; 00192 } 00193 nxov = imov->nx ; nyov = imov->ny ; /* size of overlay image */ 00194 dd = IXOVER + (MAX_XOVER-nxov)/2 ; /* and location to put it */ 00195 ee = JYOVER + (MAX_YOVER-nyov)/2 ; 00196 mri_overlay_2D( imspl, imov, dd,ee ); mri_free(imov); 00197 if( ff > 0 ){ /* overlay title under face */ 00198 imov = SPLASH_decodexx( NX_facetitle,NY_facetitle,NLINE_facetitle, 00199 NC_facetitle,RMAP_facetitle, 00200 RMAP_facetitle,RMAP_facetitle , 00201 BAR_facetitle ) ; 00202 if( ff == 2 ) mri_invert_inplace( imov ) ; /* for me only */ 00203 dd = IXOVER + (MAX_XOVER-imov->nx)/2 ; ee += nyov+1 ; 00204 mri_overlay_2D( imspl, imov, dd,ee ) ; mri_free(imov) ; 00205 } 00206 00207 /* possibly replace the splash image at the top [26 Nov 2003] */ 00208 00209 if( (ncall > 0 || first_splash >= 0) && num_splash > 0 && 00210 (ncall <= num_splash || ((lrand48() >> 8 ) % 7) != 0) ){ 00211 00212 static int np=-1 , dp ; 00213 if( np < 0 ){ 00214 np = (first_splash >= 0) ? first_splash 00215 : (lrand48() >> 8) % num_splash ; 00216 dp = 2*((lrand48() >> 8)%2)-1 ; /* -1 or +1 */ 00217 } else 00218 np = (np+dp+num_splash)%(num_splash) ; 00219 imov = mri_read_stuff( fname_splash[np] ) ; 00220 if( imov != NULL ){ 00221 #if 0 00222 reload_DC_colordef( GLOBAL_library.dc ) ; 00223 if( imov->nx != NX_TOPOVER || imov->ny != NY_TOPOVER ){ 00224 MRI_IMAGE *imq ; 00225 imq = mri_resize( imov , NX_TOPOVER,NY_TOPOVER ) ; /* kind of slow */ 00226 if( imq != NULL ){ mri_free(imov); imov = imq; } 00227 } 00228 #endif 00229 STATUS("overlaying splash image") ; 00230 mri_overlay_2D( imspl , imov , 0,0 ) ; 00231 mri_free(imov) ; 00232 } 00233 00234 } /* end of replacing splash image */ 00235 00236 /*-- show the image at last! --*/ 00237 00238 handle = SPLASH_popup_image( handle, imspl ) ; 00239 #ifndef USE_FADING 00240 mri_free(imspl) ; imspl = NULL ; 00241 #endif 00242 00243 /* modify image display properties */ 00244 00245 ppp = (PLUGIN_impopper *) handle ; 00246 00247 if( ncall==0 ){ dd = MWM_DECOR_BORDER ; 00248 ee = 0 ; 00249 } else { dd = MWM_DECOR_BORDER | MWM_DECOR_TITLE | MWM_DECOR_MENU ; 00250 ee = MWM_FUNC_MOVE | MWM_FUNC_CLOSE ; 00251 } 00252 00253 /* 21 Sep 2000 -- allow user to control splash position */ 00254 00255 sxx = (GLOBAL_library.dc->width-NX_blank)/2 ; 00256 syy = 100 ; 00257 sen = getenv("AFNI_SPLASH_XY") ; 00258 if( sen != NULL ){ 00259 int n,x,y ; 00260 n = sscanf(sen,"%d:%d",&x,&y) ; 00261 if( n == 2 && x >= 0 && x < GLOBAL_library.dc->width && 00262 y >= 0 && y < GLOBAL_library.dc->height ){ 00263 00264 sxx = x ; syy = y ; 00265 } 00266 } 00267 00268 XtVaSetValues( ppp->seq->wtop , 00269 XmNx , sxx , 00270 XmNy , syy , 00271 XmNmwmDecorations , dd , 00272 XmNmwmFunctions , ee , 00273 /** XmNoverrideRedirect , True , **/ 00274 NULL ) ; 00275 00276 /* actually popup image display */ 00277 00278 drive_MCW_imseq( ppp->seq , isqDR_realize , NULL ) ; 00279 drive_MCW_imseq( ppp->seq , isqDR_onoffwid , (XtPointer) isqDR_offwid ) ; 00280 drive_MCW_imseq( ppp->seq , isqDR_clearstat , NULL ) ; 00281 #if 0 00282 drive_MCW_imseq( ppp->seq , isqDR_reimage , (XtPointer) 0 ) ; 00283 #endif 00284 00285 NORMAL_cursorize( ppp->seq->wimage ) ; /* 07 Dec 2001 */ 00286 00287 /* some super-frivolities */ 00288 00289 if( ncall==0 ){ 00290 drive_MCW_imseq( ppp->seq , isqDR_title , (XtPointer) "AFNI!" ) ; 00291 drive_MCW_imseq( ppp->seq , isqDR_imhelptext, 00292 (XtPointer) 00293 " \n" 00294 " Thou art indeed just, Lord, if I contend\n" 00295 " With thee; but, sir, so what I plead is just.\n" 00296 " Why do sinners' ways prosper? and why must\n" 00297 " Disappointment all I endeavour end?\n" 00298 " Wert thou my enemy, O thou my friend,\n" 00299 " How wouldst thou worse, I wonder, than thou dost\n" 00300 " Defeat, thwart me? Oh, the sots and thralls of lust\n" 00301 " Do in spare hours more thrive than I that spend,\n" 00302 " Sir, life upon thy cause. See, banks and brakes\n" 00303 " Now, leaved how thick! laced they are again\n" 00304 " With fretty chervil, look, and fresh wind shakes\n" 00305 " Them; birds build -- but not I build; no, but strain,\n" 00306 " Time's eunuch, and not breed one work that wakes.\n" 00307 " Mine, O thou lord of life, send my roots rain.\n" 00308 ) ; 00309 00310 #if 0 00311 { /* 21 Jun 2000 -- turn sharpening on */ 00312 ISQ_options opt ; 00313 drive_MCW_imseq( ppp->seq , isqDR_getoptions , (XtPointer) &opt ) ; 00314 opt.improc_code |= ISQ_IMPROC_SHARP ; 00315 drive_MCW_imseq( ppp->seq , isqDR_options , (XtPointer) &opt ) ; 00316 } 00317 #endif 00318 } 00319 00320 /*--- destroy splash image ---*/ 00321 00322 } else { 00323 ppp = (PLUGIN_impopper *) handle ; 00324 00325 /* bring splash window to the top */ 00326 00327 if( ISQ_REALZ(ppp->seq) ) 00328 XMapRaised( XtDisplay(ppp->seq->wtop) , XtWindow(ppp->seq->wtop) ) ; 00329 00330 AFNI_splashdown() ; /* off with their heads */ 00331 } 00332 00333 ncall++ ; EXRETURN ; 00334 } |
|
Definition at line 886 of file afni_splash.c. References ACTIVATE_MASK, AFNI_crosshair_visible_CB(), AFNI_decode_geom(), AFNI_make_controller(), AFNI_splashdown(), AFNI_splashraise(), AFNI_suck_file(), AFNI_view_xyz_CB(), AFNI_XHAIRS_SINGLE, AV_assign_ival(), client_data, AFNI_library_type::controllers, AFNI_imaging_widgets::crosshair_av, Three_D_View::dc, DC_find_overlay_color(), drive_MCW_grapher(), drive_MCW_imseq(), ENTRY, MCW_grapher::fdw_graph, FRAC_MIN, free, Three_D_View::g123, Three_D_View::g231, Three_D_View::g312, get_linbuf(), GLOBAL_library, graDR_setmatrix, graDR_setpinnum, AFNI_imaging_widgets::graph_xyz_pb, AFNI_imaging_widgets::graph_yzx_pb, AFNI_imaging_widgets::graph_zxy_pb, AFNI_widget_set::imag, AFNI_imaging_widgets::image_xyz_pb, AFNI_imaging_widgets::image_yzx_pb, AFNI_imaging_widgets::image_zxy_pb, isq, isqDR_setifrac, isqDR_setmontage, ISTARRED, linbuf, malloc, MAX_CONTROLLERS, MONT_NMAX, mp, my_getenv(), NGMAX, NLBUF, AFNI_widget_set::nplugbut, NULL_MASK, NWBUF, PLUG_startup_plugin_CB(), AFNI_widget_set::plugbut, AFNI_widget_set::plugint, AFNI_widget_set::pluglab, Three_D_View::s123, Three_D_View::s231, Three_D_View::s312, STATUS, strtod(), AFNI_widget_set::top_shell, Three_D_View::vwid, MCW_imseq::wtop, and YESSISH.
00887 { 00888 char *fname = (char *) client_data ; 00889 int nbuf , ii , goslow ; 00890 char *fbuf , *fptr ; 00891 char lword[NWBUF] ; 00892 00893 int controller_mask[MAX_CONTROLLERS] ; 00894 char controller_geom[MAX_CONTROLLERS][NGMAX] ; 00895 00896 int image_mask [MAX_CONTROLLERS][3] ; 00897 char image_geom [MAX_CONTROLLERS][3][NGMAX] ; 00898 float image_ifrac [MAX_CONTROLLERS][3] ; 00899 char image_mont [MAX_CONTROLLERS][3][NGMAX] ; 00900 00901 int graph_mask [MAX_CONTROLLERS][3] ; 00902 char graph_geom [MAX_CONTROLLERS][3][NGMAX] ; 00903 int graph_matrix [MAX_CONTROLLERS][3] ; 00904 int graph_pinnum [MAX_CONTROLLERS][3] ; 00905 00906 int cc,ww , gww,ghh,gxx,gyy ; 00907 char *e_asp ; 00908 int e_turnoff=0 ; 00909 00910 int * plugin_cont = NULL ; 00911 char **plugin_geom = NULL ; 00912 int ipl ; 00913 00914 Three_D_View *im3d = GLOBAL_library.controllers[0] ; /* already open */ 00915 00916 #ifdef ALLOW_PLUGINS 00917 int npbut = im3d->vwid->nplugbut ; /* how many plugins */ 00918 char ** pluglab = im3d->vwid->pluglab ; /* their labels */ 00919 PLUGIN_interface ** plugint = im3d->vwid->plugint ; /* their interfaces */ 00920 #endif 00921 00922 ENTRY("AFNI_startup_layout_CB") ; 00923 00924 if( fname == NULL || fname[0] == '\0' ){ AFNI_splashdown(); EXRETURN; } 00925 00926 /* read layout file */ 00927 00928 fbuf = AFNI_suck_file(fname); if( fbuf == NULL ){ AFNI_splashdown(); EXRETURN; } 00929 nbuf = strlen(fbuf) ; if( nbuf == 0 ){ AFNI_splashdown(); EXRETURN; } 00930 00931 fptr = fbuf ; linbuf = (char *) malloc(sizeof(char)*(NLBUF+1)) ; 00932 00933 if(PRINT_TRACING) 00934 { char str[256] ; 00935 sprintf(str,"Reading AFNI layout file = %s (%d bytes)",fname,nbuf) ; 00936 STATUS(str);} 00937 00938 /*-- read lines until find "***LAYOUT" --*/ 00939 00940 do { 00941 ii = get_linbuf( fptr ) ; fptr += ii ; 00942 if( linbuf[0] == '\0' || fptr-fbuf >= nbuf ){ /* didn't find it */ 00943 STATUS("no ***LAYOUT found") ; 00944 fprintf(stderr,"\n*** LAYOUT not found in layout file %s\n",fname); 00945 free(fbuf); free(linbuf); AFNI_splashdown(); EXRETURN; 00946 } 00947 } while( strncmp(linbuf,"***LAYOUT",9) != 0 ) ; 00948 00949 goslow = (strstr(linbuf,"slow") != NULL) ; /* slow down the startup? */ 00950 00951 /*-- initialize controllers, images, and graphs to do nothing --*/ 00952 00953 for( cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){ 00954 controller_geom[cc][0] = 00955 image_geom[cc][0][0] = image_geom[cc][1][0] = image_geom[cc][2][0] = 00956 image_mont[cc][0][0] = image_mont[cc][1][0] = image_mont[cc][2][0] = 00957 graph_geom[cc][0][0] = graph_geom[cc][1][0] = graph_geom[cc][1][0] = '\0' ; 00958 00959 controller_mask[cc] = 00960 image_mask[cc][0] = image_mask[cc][1] = image_mask[cc][2] = 00961 graph_mask[cc][0] = graph_mask[cc][1] = graph_mask[cc][2] = NULL_MASK ; 00962 00963 image_ifrac[cc][0] = image_ifrac[cc][1] = image_ifrac[cc][2] = 0.0 ; 00964 00965 graph_pinnum[cc][0] = graph_pinnum[cc][1] = graph_pinnum[cc][2] = 00966 graph_matrix[cc][0] = graph_matrix[cc][1] = graph_matrix[cc][2] = 0 ; 00967 } 00968 00969 /*-- initialize list of plugins --*/ 00970 00971 #ifdef ALLOW_PLUGINS 00972 if( npbut > 0 ){ 00973 plugin_cont = (int *) malloc(sizeof(int) *npbut) ; 00974 plugin_geom = (char **) malloc(sizeof(char *)*npbut) ; 00975 for( ipl=0 ; ipl < npbut ; ipl++ ){ 00976 plugin_cont[ipl] = -1 ; /* controller index to start it with */ 00977 plugin_geom[ipl] = NULL ; /* geometry string to start it with */ 00978 } 00979 } 00980 #endif 00981 00982 /*-- read and process further lines until a "***" line is found, or the end --*/ 00983 00984 do { 00985 ii = get_linbuf( fptr ) ; fptr += ii ; 00986 if( linbuf[0] == '\0' || ISTARRED(linbuf) ) break ; /* end of layout commands */ 00987 00988 /*-- first character of command determines controller --*/ 00989 00990 cc = linbuf[0] - 'A' ; 00991 if( cc < 0 || cc >= MAX_CONTROLLERS ) continue ; /* illegal value */ 00992 00993 controller_mask[cc] |= ACTIVATE_MASK ; /* must activate this one */ 00994 00995 if( linbuf[1] == '\0' ) continue; /* nothing more to do */ 00996 00997 /*-- do controller options --*/ 00998 00999 if( isspace(linbuf[1]) ){ 01000 01001 int jj=1 , nn ; 01002 01003 do { /* scan option words */ 01004 nn = 0 ; lword[0] = '\0' ; 01005 sscanf(linbuf+jj,"%s%n",lword,&nn) ; 01006 if( nn == 0 || lword[0] == '\0' ) break ; /* no more options */ 01007 jj += nn ; /* position for next word */ 01008 01009 if( strncmp(lword,"geom=",5) == 0 ){ /* geom= */ 01010 strcpy(controller_geom[cc],lword+5) ; 01011 } else { /* ILLEGAL */ 01012 fprintf(stderr,"\n** Illegal LAYOUT controller option: %s\n",lword) ; 01013 continue ; 01014 } 01015 } while(1) ; 01016 01017 /*-- do sub-windows (images and graphs) --*/ 01018 01019 } else if( linbuf[1] == '.' && strncmp(linbuf+1,".plugin.",8) != 0 ){ 01020 01021 int jj=2 , nn ; 01022 01023 nn = 0 ; lword[0] = '\0' ; /* get window name */ 01024 sscanf(linbuf+jj,"%s%n",lword,&nn) ; 01025 if( nn == 0 || lword[0] == '\0' ) continue ; /* not present -> goto next line */ 01026 jj += nn ; 01027 01028 if( strncmp(lword,"axial" ,5) == 0 ) ww = 0 ; /* get window orientation */ 01029 else if( strncmp(lword,"sagittal",8) == 0 ) ww = 1 ; 01030 else if( strncmp(lword,"coronal" ,7) == 0 ) ww = 2 ; 01031 else { 01032 fprintf(stderr,"\n** Illegal LAYOUT sub-window line: %s\n",linbuf) ; 01033 continue ; 01034 } 01035 01036 /*-- images --*/ 01037 01038 if( strstr(lword,"image") != NULL ){ 01039 01040 image_mask[cc][ww] |= ACTIVATE_MASK ; /* mark to open */ 01041 01042 do { /* scan option words */ 01043 nn = 0 ; lword[0] = '\0' ; 01044 sscanf(linbuf+jj,"%s%n",lword,&nn) ; 01045 if( nn == 0 || lword[0] == '\0' ) break ; /* no more options */ 01046 jj += nn ; 01047 01048 if( strncmp(lword,"geom=",5) == 0 ){ /* geom= */ 01049 strcpy(image_geom[cc][ww],lword+5) ; 01050 } else if( strncmp(lword,"ifrac=",6) == 0 ){ /* ifrac= */ 01051 image_ifrac[cc][ww] = strtod( lword+6 , NULL ) ; 01052 } else if( strncmp(lword,"mont=",5) == 0 ){ /* mont= */ 01053 strcpy(image_mont[cc][ww],lword+5) ; 01054 } else { 01055 fprintf(stderr,"\n** Illegal LAYOUT image option: %s\n",lword) ; 01056 continue ; 01057 } 01058 } while(1) ; 01059 01060 /*-- graphs --*/ 01061 01062 } else if( strstr(lword,"graph") != NULL ){ /* a graph window */ 01063 01064 graph_mask[cc][ww] |= ACTIVATE_MASK ; /* mark to open */ 01065 01066 do { /* scan option words */ 01067 nn = 0 ; lword[0] = '\0' ; 01068 sscanf(linbuf+jj,"%s%n",lword,&nn) ; 01069 if( nn == 0 || lword[0] == '\0' ) break ; /* no more options */ 01070 jj += nn ; 01071 01072 if( strncmp(lword,"geom=",5) == 0 ){ /* geom= */ 01073 strcpy(graph_geom[cc][ww],lword+5) ; 01074 } else if( strncmp(lword,"matrix=",7) == 0 ){ /* matrix= */ 01075 graph_matrix[cc][ww] = (int) strtod( lword+7 , NULL ) ; 01076 } else if( strncmp(lword,"pinnum=",7) == 0 ){ /* pinnum= */ 01077 graph_pinnum[cc][ww] = (int) strtod( lword+7 , NULL ) ; 01078 } else { 01079 fprintf(stderr,"\n** Illegal LAYOUT image option: %s\n",lword) ; 01080 continue ; 01081 } 01082 } while(1) ; 01083 01084 } else { /* ILLEGAL */ 01085 fprintf(stderr,"\n** Illegal LAYOUT line: %s\n",linbuf) ; 01086 continue ; 01087 } 01088 01089 /*-- plugin windows --*/ 01090 01091 } else if( strncmp(linbuf+1,".plugin.",8) == 0 ){ 01092 01093 #ifdef ALLOW_PLUGINS 01094 char *pname = linbuf+9 ; 01095 int pl,ll,qq , jj,nn ; 01096 01097 /* check name after .plugin. to match a plugin 01098 (but skip blanks in the plugin's label) */ 01099 01100 pl = strlen(pname) ; 01101 if( pl < 1 ){ 01102 fprintf(stderr,"\n** LAYOUT: unknown plugin line: %s\n",linbuf) ; 01103 continue ; 01104 } 01105 01106 for( ipl=0 ; ipl < npbut ; ipl++ ){ 01107 for( ll=strlen(pluglab[ipl]) ; /* truncate trailing blanks */ 01108 ll >= 0 && isspace(pluglab[ipl][ll]) ; ll-- ) ; /* nada */ 01109 if( ll < 0 ) continue ; /* all blanks?! ERROR */ 01110 if( pl < ll ) continue ; /* too short to match */ 01111 for( qq=0 ; qq < ll ; qq++ ) /* match each nonblank */ 01112 if( !isspace(pluglab[ipl][qq]) && pname[qq]!=pluglab[ipl][qq] ) break ; 01113 if( qq == ll ) break ; /* found a match */ 01114 } 01115 if( ipl >= npbut ){ 01116 fprintf(stderr,"\n** LAYOUT: unknown plugin line: %s\n",linbuf) ; 01117 01118 if( strncmp(pname,"RT Options",10) == 0 || 01119 strncmp(pname,"RT_Options",10) == 0 ) 01120 fprintf(stderr,"** [Realtime plugin is not active!]\n") ; 01121 01122 continue ; 01123 } 01124 01125 /* mark plugin to be turned on by this controller */ 01126 01127 if( plugin_cont[ipl] >= 0 ) 01128 fprintf(stderr,"\n** LAYOUT: 2nd callout for this plugin: %s\n",linbuf) ; 01129 01130 plugin_cont[ipl] = cc ; 01131 if( plugin_geom[ipl] != NULL ){ /* in case was set earlier */ 01132 free(plugin_geom[ipl]) ; plugin_geom[ipl] = NULL ; 01133 } 01134 01135 jj = 9+ll ; 01136 do { /* scan option words */ 01137 nn = 0 ; lword[0] = '\0' ; 01138 sscanf(linbuf+jj,"%s%n",lword,&nn) ; 01139 if( nn == 0 || lword[0] == '\0' ) break ; /* no more options */ 01140 jj += nn ; /* position for next word */ 01141 01142 if( strncmp(lword,"geom=",5) == 0 ){ /* geom= */ 01143 plugin_geom[ipl] = strdup(lword+5) ; 01144 } else { /* ILLEGAL */ 01145 fprintf(stderr,"\n** Illegal LAYOUT .plugin. option: %s\n",lword) ; 01146 continue ; 01147 } 01148 } while(1) ; 01149 #endif 01150 01151 /*-- Quien Sabe? --*/ 01152 01153 } else { /* bad news city, Arizona */ 01154 01155 fprintf(stderr,"\n** Illegal LAYOUT line: %s\n",linbuf) ; 01156 continue ; 01157 } 01158 01159 } while(1) ; /* end of loop over layout command lines */ 01160 01161 free(fbuf) ; free(linbuf) ; /* toss the trash */ 01162 01163 /*-- if any image geom commands are present, 01164 we might need to enforce the aspect ratio --*/ 01165 01166 e_asp = my_getenv("AFNI_ENFORCE_ASPECT") ; 01167 if( !YESSISH(e_asp) ){ 01168 putenv("AFNI_ENFORCE_ASPECT=YES") ; 01169 e_turnoff = 1 ; 01170 } 01171 01172 /*-- now do the commanded work --*/ 01173 01174 for( cc=0 ; cc < MAX_CONTROLLERS ; cc++ ){ /* loop over controllers */ 01175 01176 MCW_imseq *isq ; 01177 MCW_grapher *gra ; 01178 int singleton=0 ; 01179 01180 /*-- determine if this controller is to be active --*/ 01181 01182 if( (controller_mask[cc] & ACTIVATE_MASK) == 0 ) continue ; /* skip */ 01183 01184 AFNI_make_controller( cc ) ; /* open this controller (if not already open) */ 01185 01186 if( GLOBAL_library.controllers[cc] == NULL ) continue ; /* ERROR */ 01187 01188 if(goslow || PRINT_TRACING) sleep(1); 01189 01190 /* set location (ignore size part of geometry, if present) */ 01191 01192 if( controller_geom[cc][0] != '\0' ){ 01193 AFNI_decode_geom( controller_geom[cc] , &gww,&ghh,&gxx,&gyy ) ; 01194 if( gxx >= 0 && gyy >= 0 ) 01195 XtVaSetValues( GLOBAL_library.controllers[cc]->vwid->top_shell , 01196 XmNx , gxx , XmNy , gyy , NULL ) ; 01197 } 01198 01199 AFNI_splashraise() ; 01200 01201 if(goslow || PRINT_TRACING) sleep(1); 01202 01203 /*-- loop over image windows for this controller --*/ 01204 01205 for( ww=0 ; ww < 3 ; ww++ ){ 01206 01207 /* determine if this image is to be activated */ 01208 01209 if( (image_mask[cc][ww] & ACTIVATE_MASK) == 0 ) continue ; /* skip */ 01210 01211 /* simulate the button press */ 01212 01213 AFNI_view_xyz_CB( (ww == 0) ? GLOBAL_library.controllers[cc]->vwid->imag->image_xyz_pb 01214 :(ww == 1) ? GLOBAL_library.controllers[cc]->vwid->imag->image_yzx_pb 01215 : GLOBAL_library.controllers[cc]->vwid->imag->image_zxy_pb , 01216 GLOBAL_library.controllers[cc] , NULL ) ; 01217 01218 isq = (ww == 0) ? GLOBAL_library.controllers[cc]->s123 /* get the image */ 01219 :(ww == 1) ? GLOBAL_library.controllers[cc]->s231 /* viewer struct */ 01220 : GLOBAL_library.controllers[cc]->s312 ; 01221 01222 if( isq == NULL ) continue ; /* ERROR */ 01223 01224 if(goslow || PRINT_TRACING) sleep(1); 01225 01226 /* change the image fraction? */ 01227 01228 if( image_ifrac[cc][ww] >= FRAC_MIN && image_ifrac[cc][ww] <= 1.0 ){ 01229 01230 drive_MCW_imseq( isq , isqDR_setifrac , (XtPointer) &(image_ifrac[cc][ww]) ) ; 01231 01232 if(goslow || PRINT_TRACING) sleep(1); 01233 } 01234 01235 /* change the image montage layout? */ 01236 01237 if( image_mont[cc][ww][0] != '\0' ){ /* decode montage WxH[:spacing[:gap[:color]]] */ 01238 int mww=-1 , mhh=-1 , msp=-1 , mgap=-1 , nn ; 01239 char mcol[128] = "\0" ; 01240 01241 nn = sscanf( image_mont[cc][ww] , "%dx%d:%d:%d:%s" , &mww,&mhh,&msp,&mgap,mcol ) ; 01242 01243 if( nn >= 2 && mww >= 1 && mww <= MONT_NMAX && mhh >= 1 && mhh <= MONT_NMAX ){ 01244 int mp[5] ; 01245 mp[0] = mww ; mp[1] = mhh ; mp[2] = msp ; mp[3] = mgap ; 01246 mp[4] = DC_find_overlay_color(GLOBAL_library.controllers[cc]->dc,mcol); 01247 drive_MCW_imseq( isq , isqDR_setmontage , (XtPointer) mp ) ; 01248 01249 if( msp == 1 ) singleton++ ; 01250 01251 if(goslow || PRINT_TRACING) sleep(1); 01252 } 01253 } 01254 01255 /* change the image geometry? */ 01256 01257 if( image_geom[cc][ww][0] != '\0' ){ 01258 AFNI_decode_geom( image_geom[cc][ww] , &gww,&ghh,&gxx,&gyy ) ; 01259 if( gxx >= 0 && gyy >= 0 ) 01260 XtVaSetValues( isq->wtop , XmNx , gxx , XmNy , gyy , NULL ) ; 01261 if( gww > 0 && ghh > 0 ) 01262 XtVaSetValues( isq->wtop , XmNwidth , gww , XmNheight , ghh , NULL ) ; 01263 01264 if(goslow || PRINT_TRACING) sleep(1); 01265 } 01266 01267 AFNI_splashraise() ; 01268 01269 } /* end of loop over images */ 01270 01271 /* 11 Oct 2000: change crosshairs if any mont spacing=1 */ 01272 01273 if( singleton ){ 01274 AV_assign_ival( 01275 GLOBAL_library.controllers[cc]->vwid->imag->crosshair_av , 01276 AFNI_XHAIRS_SINGLE ) ; 01277 01278 AFNI_crosshair_visible_CB( 01279 GLOBAL_library.controllers[cc]->vwid->imag->crosshair_av , 01280 GLOBAL_library.controllers[cc] ) ; 01281 } 01282 01283 /*-- loop over graphs --*/ 01284 01285 for( ww=0 ; ww < 3 ; ww++ ){ 01286 01287 /* is this graph to be opened? */ 01288 01289 if( (graph_mask[cc][ww] & ACTIVATE_MASK) == 0 ) continue ; /* skip */ 01290 01291 /* simulate the button press */ 01292 01293 AFNI_view_xyz_CB( (ww == 0) ? GLOBAL_library.controllers[cc]->vwid->imag->graph_xyz_pb 01294 :(ww == 1) ? GLOBAL_library.controllers[cc]->vwid->imag->graph_yzx_pb 01295 : GLOBAL_library.controllers[cc]->vwid->imag->graph_zxy_pb , 01296 GLOBAL_library.controllers[cc] , NULL ) ; 01297 01298 gra = (ww == 0) ? GLOBAL_library.controllers[cc]->g123 /* get the graph */ 01299 :(ww == 1) ? GLOBAL_library.controllers[cc]->g231 /* viewer struct */ 01300 : GLOBAL_library.controllers[cc]->g312 ; 01301 01302 if( gra == NULL ) continue ; /* ERROR */ 01303 01304 if(goslow || PRINT_TRACING) sleep(1); 01305 01306 /* change the graph matrix (i.e., how many sub-graphs)? */ 01307 01308 if( graph_matrix[cc][ww] > 0 ){ 01309 drive_MCW_grapher( gra , graDR_setmatrix , (XtPointer) graph_matrix[cc][ww] ) ; 01310 if(goslow || PRINT_TRACING) sleep(1); 01311 } 01312 01313 /* make the graph length pinned? */ 01314 01315 if( graph_pinnum[cc][ww] > 1 ){ 01316 drive_MCW_grapher( gra, graDR_setpinnum, (XtPointer)graph_pinnum[cc][ww] ); 01317 if(goslow || PRINT_TRACING) sleep(1); 01318 } 01319 01320 /* change the graph window geometry? */ 01321 01322 if( graph_geom[cc][ww][0] != '\0' ){ 01323 AFNI_decode_geom( graph_geom[cc][ww] , &gww,&ghh,&gxx,&gyy ) ; 01324 if( gxx >= 0 && gyy >= 0 ) 01325 XtVaSetValues( gra->fdw_graph , XmNx , gxx , XmNy , gyy , NULL ) ; 01326 if( gww > 0 && ghh > 0 ) 01327 XtVaSetValues( gra->fdw_graph , XmNwidth , gww , XmNheight , ghh , NULL ) ; 01328 if(goslow || PRINT_TRACING) sleep(1); 01329 } 01330 01331 AFNI_splashraise() ; 01332 01333 } /* end of loop over graphs */ 01334 01335 #if 0 01336 XmUpdateDisplay( im3d->vwid->top_shell ) ; 01337 #endif 01338 01339 } /* end of loop over controllers */ 01340 01341 #ifdef ALLOW_PLUGINS 01342 /*-- now loop over plugins --*/ 01343 01344 for( ipl=0 ; ipl < npbut ; ipl++ ){ 01345 01346 cc = plugin_cont[ipl] ; if( cc < 0 ) continue ; 01347 01348 if( GLOBAL_library.controllers[cc] == NULL ) continue ; /* ERROR */ 01349 01350 PLUG_startup_plugin_CB( GLOBAL_library.controllers[cc]->vwid->plugbut[ipl] , 01351 GLOBAL_library.controllers[cc]->vwid->plugint[ipl] , 01352 NULL ) ; 01353 01354 if(goslow || PRINT_TRACING) sleep(1); 01355 01356 /* 13 Nov 2001: don't check interface widgets for customized plugins */ 01357 01358 if( GLOBAL_library.controllers[cc]->vwid->plugint[ipl]->call_method == PLUGIN_CALL_IMMEDIATELY ) 01359 continue ; 01360 01361 /* check interface widgets to see if plugin opened */ 01362 01363 if( GLOBAL_library.controllers[cc]->vwid->plugint[ipl]->wid == NULL || 01364 GLOBAL_library.controllers[cc]->vwid->plugint[ipl]->wid->shell == NULL ){ 01365 01366 fprintf(stderr,"\n** LAYOUT: couldn't start plugin %s\n",pluglab[ipl]) ; 01367 continue ; 01368 } 01369 01370 /* set the location of the interface widgets */ 01371 01372 if( plugin_geom[ipl] != NULL ){ 01373 AFNI_decode_geom( plugin_geom[ipl] , &gww,&ghh,&gxx,&gyy ) ; 01374 if( gxx >= 0 && gyy >= 0 ){ 01375 XtVaSetValues( 01376 GLOBAL_library.controllers[cc]->vwid->plugint[ipl]->wid->shell, 01377 XmNx , gxx , XmNy , gyy , NULL ) ; 01378 if(goslow || PRINT_TRACING) sleep(1); 01379 } 01380 } 01381 01382 AFNI_splashraise() ; 01383 01384 } /* end of loop over plugins */ 01385 #endif 01386 01387 /*--- done ---*/ 01388 01389 #ifdef ALLOW_PLUGINS 01390 if( npbut > 0 ){ 01391 for( ipl=0 ; ipl < npbut ; ipl++ ) 01392 if( plugin_geom[ipl] != NULL ) free(plugin_geom[ipl]) ; 01393 free(plugin_cont) ; free(plugin_geom) ; 01394 } 01395 #endif 01396 01397 if( e_turnoff ) putenv("AFNI_ENFORCE_ASPECT=NO") ; 01398 01399 AFNI_splashdown() ; EXRETURN ; 01400 } |
|
Run the startup script [21 Jan 2003]. Definition at line 1674 of file afni_splash.c. References AFNI_driver(), AFNI_suck_file(), client_data, ENTRY, free, get_linbuf(), GLOBAL_library, AFNI_library_type::ignore_lock, linbuf, malloc, and NLBUF. Referenced by AFNI_finalrun_script_CB().
01675 { 01676 char *fname = (char *)client_data ; 01677 char *fbuf , *fptr ; 01678 int ii , nbuf ; 01679 01680 ENTRY("AFNI_startup_script_CB") ; 01681 01682 if( fname == NULL ) EXRETURN ; 01683 01684 if( strchr(fname,' ') != NULL ){ /* if contains a blank, */ 01685 AFNI_driver(fname) ; /* execute a single command */ 01686 EXRETURN ; 01687 } 01688 01689 fbuf = AFNI_suck_file(fname); if( fbuf == NULL ) EXRETURN ; 01690 nbuf = strlen(fbuf) ; if( nbuf == 0 ) EXRETURN ; 01691 01692 fptr = fbuf ; linbuf = (char *) malloc(sizeof(char)*(NLBUF+1)) ; 01693 01694 GLOBAL_library.ignore_lock = 1 ; /* 06 Feb 2004 */ 01695 01696 while(1){ 01697 ii = get_linbuf( fptr ) ; fptr += ii ; 01698 if( linbuf[0] == '\0' || fptr-fbuf >= nbuf ){ free(linbuf); break; } 01699 AFNI_driver( linbuf ) ; 01700 } 01701 01702 GLOBAL_library.ignore_lock = 0 ; EXRETURN ; 01703 } |
|
Definition at line 639 of file afni_splash.c. Referenced by AFNI_faceup().
00639 { 00640 while( m > 0 ){ 00641 if( n > m ){ int t=m; m=n; n=t; } /* swap */ 00642 m -= n; 00643 } 00644 return n; 00645 } |
|
Definition at line 820 of file afni_splash.c. Referenced by AFNI_startup_layout_CB(), and AFNI_startup_script_CB().
00821 { 00822 int ii=0 , jj ; 00823 00824 if( str == NULL || str[0] == '\0' ){ linbuf[0] = '\0'; return 0; } 00825 00826 /* skip whitespace to find start of new line */ 00827 00828 SKIP_WHITESPACE: 00829 for( ; str[ii] != '\0' && isspace(str[ii]) ; ii++ ) ; /* nada */ 00830 00831 if( str[ii] == '\0' ){ linbuf[0] = '\0'; return ii; } /* at end of input */ 00832 00833 if( str[ii] == '!' || (str[ii]=='/' && str[ii+1]=='/') ){ /* skip comment */ 00834 for( ; str[ii] != '\0' && str[ii] != '\n' ; ii++ ) ; /* nada: skip to eol */ 00835 goto SKIP_WHITESPACE ; /* augh! a GOTO */ 00836 } 00837 00838 /* copy into linbuf */ 00839 00840 for( jj=0 ; jj < NLBUF && 00841 str[ii] != '\0' && 00842 str[ii] != '\n' && 00843 str[ii] != '!' && 00844 !(str[ii]=='/' && str[ii+1]=='/') 00845 ; ii++ , jj++ ) linbuf[jj] = str[ii] ; 00846 00847 linbuf[jj] = '\0' ; return ii ; 00848 } |
|
Definition at line 477 of file afni_splash.c. References map26, and SPLASH_decodexx(). Referenced by AFNI_splashup().
00478 { 00479 return SPLASH_decodexx( nx, ny, nl, 26,map26,map26,map26,im26 ) ; 00480 } |
|
Definition at line 491 of file afni_splash.c. References alpha, ENTRY, map26, MMAX, mri_new(), MRI_RGB_PTR, MRI_IMAGE::nvox, and RETURN. Referenced by AFNI_broutim_CB(), AFNI_splashup(), and SPLASH_decode26().
00494 { 00495 MRI_IMAGE *im ; 00496 byte *bim ; 00497 int ii,jj , cc,qq , dd,ee , kk ; 00498 char bb ; 00499 static int first=1 , ainv[256] ; 00500 00501 ENTRY("SPLASH_decodexx") ; 00502 00503 if( nmap == 0 ){ /* defaults from old to26.c program */ 00504 nmap = 26 ; 00505 rmap = bmap = gmap = map26 ; 00506 } 00507 00508 if( nx < 3 || ny < 3 || nl < 3 || 00509 rmap == NULL || gmap == NULL || 00510 bmap == NULL || imxx == NULL ) RETURN(NULL) ; 00511 00512 if( first ){ 00513 for( ii=0 ; ii < 256 ; ii++ ) ainv[ii] = -1 ; 00514 for( ii=0 ; ii < MMAX ; ii++ ){ 00515 bb = alpha[ii] ; ainv[bb] = ii ; 00516 } 00517 first = 0 ; 00518 } 00519 00520 im = mri_new( nx , ny , MRI_rgb ) ; 00521 bim = MRI_RGB_PTR(im) ; 00522 00523 /* decode the RLE image data into a real image array */ 00524 00525 cc = qq = 0 ; 00526 for( ii=0 ; ii < 3*im->nvox && qq < nl ; ){ 00527 bb = imxx[qq][cc++] ; if( bb == '\0' ) break ; 00528 jj = ainv[bb] ; 00529 if( jj >= 0 ){ 00530 bim[ii++] = rmap[jj]; bim[ii++] = gmap[jj]; bim[ii++] = bmap[jj]; 00531 } else { 00532 dd = bb - '0' ; 00533 bb = imxx[qq][cc++] ; if( bb == '\0' ) break ; 00534 jj = ainv[bb] ; 00535 for( ee=0 ; ee < dd && ii < 3*im->nvox ; ee++ ){ 00536 bim[ii++] = rmap[jj]; bim[ii++] = gmap[jj]; bim[ii++] = bmap[jj]; 00537 } 00538 } 00539 if( imxx[qq][cc] == '\0' ){ cc = 0 ; qq++ ; } 00540 } 00541 00542 RETURN(im) ; 00543 } |
|
XmNoverrideRedirect , True , * Definition at line 341 of file afni_splash.c. References AFNI_get_date_trivia(), AFNI_get_friend(), MCW_imseq_status::aux, create_memplot_surely(), do_write, ENTRY, get_active_memplot(), handle, PLUGIN_impopper::im, isqCR_getimage, isqCR_getmemplot, isqCR_getoverlay, isqCR_getqimage, isqCR_getstatus, mp, mri_copy(), mri_zeropad_2D(), myXtNew, MCW_imseq_status::num_series, MCW_imseq_status::num_total, MCW_imseq_status::parent, plotpak_pwritf(), RETURN, MCW_imseq_status::send_CB, set_color_memplot(), set_thick_memplot(), MCW_imseq_status::slice_proj, MCW_imseq_status::transforms0D, and MCW_imseq_status::transforms2D. Referenced by SPLASH_popup_image().
00342 { 00343 PLUGIN_impopper *imp = (PLUGIN_impopper *) handle ; 00344 00345 ENTRY("SPLASH_imseq_getim") ; 00346 00347 if( imp == NULL ) RETURN(NULL) ; 00348 00349 /*--- control info ---*/ 00350 00351 if( type == isqCR_getstatus ){ 00352 MCW_imseq_status *stat = myXtNew( MCW_imseq_status ) ; 00353 stat->num_total = 1 ; 00354 stat->num_series = 1 ; 00355 stat->send_CB = PLUGIN_seq_send_CB ; 00356 stat->parent = (XtPointer) imp ; 00357 stat->aux = NULL ; 00358 00359 stat->transforms0D = NULL ; /* 31 Jan 2002: remove all functions */ 00360 stat->transforms2D = NULL ; 00361 stat->slice_proj = NULL ; 00362 00363 RETURN((XtPointer) stat) ; 00364 } 00365 00366 /*--- no overlay ---*/ 00367 00368 if( type == isqCR_getoverlay ) RETURN(NULL) ; 00369 00370 /*--- return a copy of the image 00371 (since the imseq will delete it when it is done) ---*/ 00372 00373 if( type == isqCR_getimage || type == isqCR_getqimage ){ 00374 MRI_IMAGE *im = NULL ; 00375 #ifndef USE_WRITING 00376 if( imp->im != NULL ) im = mri_copy( imp->im ) ; 00377 #else 00378 if( imp->im != NULL ){ 00379 if( do_write ) im = mri_zeropad_2D( 0,0,0,50 , imp->im ) ; /* 26 Feb 2001 */ 00380 else im = mri_copy( imp->im ) ; 00381 } 00382 #endif 00383 RETURN((XtPointer) im) ; 00384 } 00385 00386 #ifdef USE_WRITING 00387 /*--- 26 Feb 2001: a line plot (for some more fun!)---*/ 00388 00389 if( do_write && type == isqCR_getmemplot ){ 00390 int ii ; 00391 ii = create_memplot_surely("SPLASH memplot",1.0) ; 00392 if( ii == 0 ){ 00393 MEM_plotdata *mp = get_active_memplot() ; 00394 00395 set_thick_memplot(0.003) ; /* slightly thick lines */ 00396 00397 if( do_write == 2 || 1 ){ 00398 char *sf = AFNI_get_date_trivia() ; 00399 int nn = strlen(sf) , ss=28 ; 00400 if( nn > 37 ) ss = (int)(28.0*37.0/nn) ; 00401 set_color_memplot(1.0,1.0,0.7) ; /* whitish */ 00402 plotpak_pwritf( 0.5,0.089 , "Today is:" , 30 , 0 , 0 ) ; 00403 set_color_memplot(1.0,1.0,0.1) ; /* yellow */ 00404 plotpak_pwritf( 0.5,0.033 , sf , ss , 0 , 0 ) ; 00405 } else { 00406 char *sf = AFNI_get_friend() ; 00407 char *mf = strstr(sf," for ") ; 00408 int nn = strlen(sf) ; 00409 set_color_memplot(1.0,1.0,0.5) ; /* orangish */ 00410 if( nn < 36 || mf == NULL ){ 00411 plotpak_pwritf( 0.5,0.060 , sf , 28 , 0 , 0 ) ; 00412 } else { 00413 *mf = '\0' ; 00414 plotpak_pwritf( 0.5,0.089 , sf , 28 , 0 , 0 ) ; 00415 plotpak_pwritf( 0.5,0.033 , mf+1, 28 , 0 , 0 ) ; 00416 } 00417 } 00418 set_thick_memplot(0.0) ; 00419 RETURN((XtPointer)mp) ; /* will be deleted by imseq */ 00420 } 00421 } 00422 #endif 00423 00424 RETURN(NULL) ; /* default action = return nothing */ 00425 } |
|
Definition at line 431 of file afni_splash.c. References AFNI_library_type::dc, drive_MCW_imseq(), ENTRY, GLOBAL_library, handle, PLUGIN_impopper::im, isqDR_destroy, mri_copy(), mri_free(), myXtNew, open_MCW_imseq(), RETURN, PLUGIN_impopper::seq, and SPLASH_imseq_getim(). Referenced by AFNI_splashdown(), and AFNI_splashup().
00432 { 00433 PLUGIN_impopper *imp = (PLUGIN_impopper *) handle ; 00434 00435 ENTRY("SPLASH_popup_image") ; 00436 00437 /*-- input image is NULL ==> popdown, if applicable --*/ 00438 00439 if( im == NULL ){ 00440 if( imp != NULL ) 00441 drive_MCW_imseq( imp->seq , isqDR_destroy , NULL ) ; 00442 00443 RETURN ((void *) imp) ; 00444 } 00445 00446 /*-- input = no popper handle ==> create one --*/ 00447 00448 if( imp == NULL ){ 00449 imp = myXtNew(PLUGIN_impopper) ; 00450 imp->seq = NULL ; imp->im = NULL ; 00451 } 00452 00453 /*-- input = non-null image ==> replace image --*/ 00454 00455 mri_free( imp->im ) ; /* toss old copy */ 00456 imp->im = mri_copy( im ) ; /* make new copy */ 00457 00458 /*-- input = inactive popper handle ==> activate it --*/ 00459 00460 if( imp->seq == NULL ) 00461 imp->seq = open_MCW_imseq( GLOBAL_library.dc , 00462 SPLASH_imseq_getim , (XtPointer) imp ) ; 00463 00464 /*-- unlike PLUTO_popup_image, actual popup is left to caller --*/ 00465 00466 RETURN ((void *) imp) ; 00467 } |
Variable Documentation
|
Initial value: "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" ",<.>/?;:'[{]}|=+-_)(*&^%$#@!`~" Definition at line 487 of file afni_splash.c. Referenced by SPLASH_decodexx(). |
|
Definition at line 39 of file afni_splash.c. Referenced by AFNI_splashdown(), and SPLASH_imseq_getim(). |
|
add files we found to list * Definition at line 632 of file afni_splash.c. Referenced by AFNI_facedown(), and AFNI_faceup(). |
|
Initial value: { {MAR,30,"face_vincent" } , {FEB,12,"face_lincoln" } , {JAN, 3,"face_tolkien" } , {MAR,14,"face_einstein"} , {APR,27,"face_grant" } , {JUL,22,"face_rbirn" } , {SEP, 7,"face_rwcox" } , {OCT,16,"face_rwcox" } , {NOV,17,"face_brodman" } , {0,0,NULL} } Definition at line 748 of file afni_splash.c. |
|
Definition at line 99 of file afni_splash.c. Referenced by AFNI_splashup(). |
|
Definition at line 103 of file afni_splash.c. Referenced by AFNI_faceup(), AFNI_find_todays_face(), and AFNI_splashup(). |
|
Definition at line 100 of file afni_splash.c. Referenced by AFNI_splashup(). |
|
Definition at line 34 of file afni_splash.c. Referenced by AFNI_splashdown(), AFNI_splashraise(), AFNI_splashup(), SPLASH_imseq_getim(), and SPLASH_popup_image(). |
|
Definition at line 33 of file afni_splash.c. |
|
Definition at line 818 of file afni_splash.c. Referenced by AFNI_startup_layout_CB(), AFNI_startup_script_CB(), and get_linbuf(). |
|
Initial value: { 30, 50, 70, 90, 106, 118, 130, 140, 146, 152, 158, 164, 170, 176, 182, 190, 198, 206, 212, 218, 224, 230, 236, 242, 248, 254 } Definition at line 473 of file afni_splash.c. Referenced by SPLASH_decode26(), and SPLASH_decodexx(). |
|
Definition at line 102 of file afni_splash.c. Referenced by AFNI_faceup(), AFNI_find_todays_face(), and AFNI_splashup(). |
|
Definition at line 98 of file afni_splash.c. Referenced by AFNI_splashup(). |