Doxygen Source Code Documentation
plug_crender.c File Reference
#include "afni.h"#include "cox_render.h"#include "mcw_graf.h"#include "parser.h"#include <ctype.h>#include "rickr/r_new_resam_dset.h"#include "rickr/r_idisp.h"Go to the source code of this file.
Define Documentation
|
|
Value: do{ int nn , iq ; \ if( (name)->num == (name)->nall ){ \ nn = (name)->nall = 1.1*(name)->nall + INC_RSA ; \ (name)->rsarr = realloc( (name)->rsarr,sizeof(RENDER_state *)*nn ); \ for( iq=(name)->num ; iq < (name)->nall ; iq++ ) (name)->rsarr[iq] = NULL ; } \ nn = (name)->num ; ((name)->num)++ ; \ (name)->rsarr[nn] = (imm) ; break ; } while(0) Definition at line 838 of file plug_crender.c. Referenced by RCREND_draw_CB(), RCREND_read_states(), REND_draw_CB(), and REND_read_states(). |
|
|
Definition at line 515 of file plug_crender.c. Referenced by RCREND_open_imseq(). |
|
|
Definition at line 514 of file plug_crender.c. Referenced by RCREND_open_imseq(). |
|
|
Definition at line 137 of file plug_crender.c. Referenced by RCREND_help_CB(). |
|
|
Definition at line 7158 of file plug_crender.c. |
|
|
|
|
|
Value: |
|
|
Value: |
|
|
|
|
|
Value: |
|
|
|
|
|
Definition at line 340 of file plug_crender.c. Referenced by draw_image_line(), and ovc_to_rgb_bytes(). |
|
|
Value: do{ if( xhair_flag && dset!=NULL && \ ! EQUIV_DATAXES(dset->daxes,im3d->wod_daxes) ){ \ MCW_set_bbox( xhair_bbox , 0 ) ; xhair_flag = 0 ; \ (void) MCW_popup_message( xhair_bbox->wrowcol , \ " Can't overlay AFNI crosshairs\n" \ "because dataset grid and AFNI\n" \ "viewing grid don't coincide." , \ MCW_USER_KILL | MCW_TIMER_KILL ) ; \ XBell(dc->display,100) ; EXRETURN ; \ } } while(0) Definition at line 3784 of file plug_crender.c. Referenced by RCREND_xhair_CB(), RCREND_xhair_overlay(), RCREND_xhair_recv(), and RCREND_xhair_underlay(). |
|
|
Value: ( im3d->vinfo->i1 != xhair_ixold || \
im3d->vinfo->j2 != xhair_jyold || \
im3d->vinfo->k3 != xhair_kzold || \
im3d->vinfo->xhairs_orimask != xhair_omold )Definition at line 417 of file plug_crender.c. Referenced by RCREND_draw_CB(). |
|
|
Definition at line 256 of file plug_crender.c. Referenced by RCREND_main(), and RCREND_make_widgets(). |
|
|
Definition at line 693 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_make_cutout(). |
|
|
Definition at line 314 of file plug_crender.c. Referenced by rd_set_debug_level(). |
|
|
Definition at line 315 of file plug_crender.c. |
|
|
Value: ( ( wfunc_color_pbar->bigcolor[index].r == 0 ) && \
( wfunc_color_pbar->bigcolor[index].g == 0 ) && \
( wfunc_color_pbar->bigcolor[index].b == 0 ) )Definition at line 307 of file plug_crender.c. Referenced by RCREND_reload_func_dset(). |
|
|
Definition at line 1889 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1893 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_state_changed(), RCREND_cutout_type_CB(), RCREND_load_cutout_state(), RCREND_read_states(), and RCREND_textact_CB(). |
|
|
Definition at line 1891 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1888 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1886 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_state_changed(), RCREND_cutout_type_CB(), RCREND_make_cutout(), and RCREND_read_states(). |
|
|
Definition at line 1909 of file plug_crender.c. Referenced by RCREND_clusters_av_CB(), RCREND_cutout_blobs(), RCREND_kill_clusters_CB(), and RCREND_read_states(). |
|
|
Definition at line 1890 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1887 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1911 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), and RCREND_cutout_set_CB(). |
|
|
Definition at line 1912 of file plug_crender.c. |
|
|
Definition at line 1898 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1899 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1906 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1907 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1896 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1897 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1904 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1905 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1902 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1903 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1900 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1901 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1892 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 1894 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_set_CB(), and RCREND_read_states(). |
|
|
Definition at line 471 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), and RCREND_read_states(). |
|
|
Definition at line 470 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_cutout_state_changed(), and RCREND_read_states(). |
|
|
Definition at line 8527 of file plug_crender.c. |
|
|
Definition at line 620 of file plug_crender.c. Referenced by RCREND_autorange_label(). |
|
|
Value: do{ int nn ; \ if( (name) != NULL ){ \ for( nn=0 ; nn < (name)->num ; nn++ ) free((name)->rsarr[nn]) ; \ free((name)->rsarr); free((name)); (name) = NULL; } break; } while(0) Definition at line 851 of file plug_crender.c. Referenced by RCREND_autocompute_CB(), RCREND_done_CB(), RCREND_draw_CB(), RCREND_read_exec_CB(), RCREND_read_this_finalize_CB(), REND_autocompute_CB(), REND_done_CB(), REND_draw_CB(), REND_read_exec_CB(), and REND_read_this_finalize_CB(). |
|
|
Value: ( (f).xyz[0] = (f).xyz[0] / (a) , \
(f).xyz[1] = (f).xyz[1] / (a) , \
(f).xyz[2] = (f).xyz[2] / (a) )Definition at line 396 of file plug_crender.c. Referenced by xhairs_to_image_pts(). |
|
|
Value: ((func_dset != NULL && func_see_overlay) || \
func_see_ttatlas || (xhair_flag && xhair_ovc > 0) )Definition at line 546 of file plug_crender.c. Referenced by RCREND_draw_CB(). |
|
|
Value: do{ for( ; fptr[0] != '\n' && fptr[0] != '\0' ; fptr++ ) ; \ if( fptr[0] == '\0' ) goto Finished ; \ fptr++ ; } while(0) Definition at line 7922 of file plug_crender.c. |
|
|
Value: do{ int sel_height ; XtPointer sel_ptr ; \ if( wfunc_thr_scale != NULL ){ \ XtVaGetValues( wfunc_thr_scale , \ XmNuserData , &sel_ptr , NULL ) ; \ sel_height = (int) sel_ptr ; \ XtVaSetValues( wfunc_thr_scale , \ XmNheight , sel_height , NULL ) ; \ XtManageChild(wfunc_thr_scale) ; \ } } while(0) Definition at line 698 of file plug_crender.c. Referenced by RCREND_color_bbox_CB(), RCREND_color_pbar_CB(), RCREND_colornum_av_CB(), RCREND_cutout_type_CB(), RCREND_draw_CB(), RCREND_numcutout_CB(), RCREND_open_func_CB(), RCREND_palette_av_CB(), RCREND_pbarmenu_CB(), RCREND_reload_dataset(), RCREND_set_pbar_top_CB(), and RCREND_thr_scale_CB(). |
|
|
Value: Definition at line 847 of file plug_crender.c. Referenced by RCREND_read_states(), and REND_read_states(). |
|
|
|
Definition at line 367 of file plug_crender.c. |
|
|
Definition at line 638 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), RCREND_color_pbar_CB(), RCREND_finalize_func_CB(), RCREND_range_av_CB(), RCREND_range_bbox_CB(), and RCREND_reload_func_dset(). |
|
|
Value: ( tempA_fvec3.xyz[0] = (v).xyz[0] * (A).mat[0][0] \
+(v).xyz[1] * (A).mat[1][0] \
+(v).xyz[2] * (A).mat[2][0] ,\
tempA_fvec3.xyz[1] = (v).xyz[0] * (A).mat[0][1] \
+(v).xyz[1] * (A).mat[1][1] \
+(v).xyz[2] * (A).mat[2][1] ,\
tempA_fvec3.xyz[2] = (v).xyz[0] * (A).mat[0][2] \
+(v).xyz[1] * (A).mat[1][2] \
+(v).xyz[2] * (A).mat[2][2] , tempA_fvec3 )Definition at line 384 of file plug_crender.c. Referenced by rotate_xhair_points(). |
|
|
Value: do{ GETSTR ; if(ISTARRED(str)) goto SkipSection ; \ strcpy(left,str) ; \ GETSTR ; if(ISTARRED(str)) goto SkipSection ; \ strcpy(middle,str) ; \ GETSTR ; if(ISTARRED(str)) goto SkipSection ; \ strcpy(right,str) ; } while(0) Definition at line 7940 of file plug_crender.c. Referenced by RCREND_read_states(). |
|
|
Value: do{ int nu=0,qq; \ if( fptr-fbuf >= nbuf || fptr[0] == '\0' ) goto Finished ; \ str[0]='\0'; qq=sscanf(fptr,"%127s%n",str,&nu); nused+=nu;fptr+=nu; \ if( str[0]=='\0' || qq==0 || nu==0 ) goto Finished ; \ } while(0) Definition at line 7927 of file plug_crender.c. |
|
|
Value: do{ GETSSS ; \ while(str[0]=='!' || (str[0]=='/' && str[1]=='/') || \ (str[0]=='#' && str[1]=='\0') ){EOLSKIP; GETSSS;} \ } while(0) Definition at line 7934 of file plug_crender.c. Referenced by RCREND_read_states(). |
|
|
Definition at line 4044 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), RCREND_xhair_underlay(), REND_cutout_blobs(), and REND_xhair_underlay(). |
|
|
Definition at line 4048 of file plug_crender.c. |
|
|
Definition at line 4047 of file plug_crender.c. Referenced by RCREND_xhair_underlay(). |
|
|
Definition at line 7157 of file plug_crender.c. Referenced by RCREND_overlay_ttatlas(). |
|
|
Definition at line 708 of file plug_crender.c. Referenced by RCREND_color_bbox_CB(), RCREND_colornum_av_CB(), RCREND_cutout_type_CB(), RCREND_numcutout_CB(), RCREND_open_func_CB(), RCREND_palette_av_CB(), RCREND_pbarmenu_CB(), RCREND_reload_dataset(), and RCREND_set_pbar_top_CB(). |
|
|
|
|
|
Definition at line 829 of file plug_crender.c. |
|
|
Value: do{ int iq ; (name) = (RENDER_state_array *) malloc(sizeof(RENDER_state_array)) ; \ (name)->num = 0 ; (name)->nall = INC_RSA ; \ (name)->rsarr = (RENDER_state **)malloc(sizeof(RENDER_state *)*INC_RSA) ; \ for( iq=0 ; iq < INC_RSA ; iq++ ) (name)->rsarr[iq] = NULL ; \ break ; } while(0) Definition at line 831 of file plug_crender.c. Referenced by RCREND_draw_CB(), RCREND_read_states(), REND_draw_CB(), and REND_read_states(). |
|
|
|
Definition at line 3266 of file plug_crender.c. |
|
|
Value: ( ( (ds)->daxes->xxorient == ORI_L2R_TYPE ) && \ ( (ds)->daxes->yyorient == ORI_P2A_TYPE ) && \ ( (ds)->daxes->zzorient == ORI_I2S_TYPE ) ) Definition at line 379 of file plug_crender.c. |
|
|
Value: ( ( (ds)->daxes->xxorient == ORI_R2L_TYPE ) && \ ( (ds)->daxes->yyorient == ORI_A2P_TYPE ) && \ ( (ds)->daxes->zzorient == ORI_I2S_TYPE ) ) Definition at line 376 of file plug_crender.c. Referenced by RCREND_reload_dataset(). |
|
|
Definition at line 7920 of file plug_crender.c. |
|
|
|
|
|
Definition at line 467 of file plug_crender.c. Referenced by RCREND_environ_CB(), RCREND_func_widgets(), RCREND_load_cutout_state(), RCREND_make_widgets(), RCREND_numcutout_CB(), RCREND_read_states(), and RCREND_state_to_widgets(). |
|
|
Value: (void) XtVaCreateManagedWidget( \
"dialog" , xmSeparatorWidgetClass , script_menu , \
XmNseparatorType , XmSINGLE_LINE , NULL ) |
|
|
Definition at line 489 of file plug_crender.c. Referenced by RCREND_load_cutout_state(), RCREND_opacity_scale_CB(), and RCREND_read_states(). |
|
|
Definition at line 503 of file plug_crender.c. Referenced by RCREND_autocompute_CB(), and RCREND_cutout_blobs(). |
|
|
Definition at line 1008 of file plug_crender.c. Referenced by RCREND_make_widgets(). |
|
|
Definition at line 549 of file plug_crender.c. |
|
|
Definition at line 550 of file plug_crender.c. |
|
|
Definition at line 373 of file plug_crender.c. |
|
|
|
|
|
Definition at line 229 of file plug_crender.c. Referenced by RCREND_func_widgets(), RCREND_main(), and RCREND_make_widgets(). |
|
|
Definition at line 650 of file plug_crender.c. Referenced by RCREND_draw_CB(). |
|
|
Definition at line 649 of file plug_crender.c. Referenced by RCREND_draw_CB(). |
|
|
Definition at line 7948 of file plug_crender.c. Referenced by RCREND_read_states(). |
|
|
26 Apr 2002: add hints to these arrows as well * Definition at line 1839 of file plug_crender.c. Referenced by RCREND_make_cutout(), RCREND_read_states(), and RCREND_state_to_widgets(). |
|
|
Definition at line 4045 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), REND_cutout_blobs(), and REND_xhair_underlay(). |
|
|
Definition at line 7254 of file plug_crender.c. Referenced by RCREND_xhair_overlay(), REND_xhair_overlay(), and THD_autonudge(). |
|
|
|
|
|
Definition at line 4049 of file plug_crender.c. |
|
|
Definition at line 17 of file plug_crender.c. Referenced by RCREND_help_CB(). |
|
|
Definition at line 130 of file plug_crender.c. Referenced by RCREND_make_widgets(). |
|
|
Definition at line 9394 of file plug_crender.c. Referenced by r_debug_check(), and rd_debug_choice(). |
|
|
Definition at line 9395 of file plug_crender.c. Referenced by r_debug_check(), and rd_debug_choice(). |
|
|
Definition at line 9396 of file plug_crender.c. Referenced by r_debug_check(), and rd_debug_choice(). |
|
|
Definition at line 9397 of file plug_crender.c. Referenced by r_debug_check(), and rd_debug_choice(). |
|
|
Definition at line 9392 of file plug_crender.c. Referenced by r_debug_check(), and rd_debug_choice(). |
|
|
Definition at line 9393 of file plug_crender.c. Referenced by r_debug_check(), and rd_debug_choice(). |
|
|
Definition at line 9391 of file plug_crender.c. Referenced by rd_debug_choice(). |
|
|
Definition at line 9398 of file plug_crender.c. Referenced by r_debug_check(), and rd_debug_choice(). |
|
|
|
|
|
|
Definition at line 827 of file plug_crender.c. Referenced by RCREND_imseq_getim(), RCREND_read_exec_CB(), RCREND_read_states(), RCREND_read_this_finalize_CB(), RCREND_save_many_CB(), RCREND_script_load_CB(), REND_imseq_getim(), REND_read_exec_CB(), REND_read_states(), REND_read_this_finalize_CB(), REND_save_many_CB(), and REND_script_load_CB(). |
|
|
Definition at line 8274 of file plug_crender.c. |
|
|
Definition at line 8272 of file plug_crender.c. Referenced by RCREND_save_state(), and REND_save_state(). |
|
|
-- skip ahead to next section keyword --* Definition at line 8270 of file plug_crender.c. |
|
|
Definition at line 8525 of file plug_crender.c. Referenced by RCREND_state_to_widgets(), and REND_state_to_widgets(). |
|
|
Definition at line 8284 of file plug_crender.c. Referenced by RCREND_save_state(), and REND_save_state(). |
|
|
Definition at line 8286 of file plug_crender.c. Referenced by RCREND_save_state(), and REND_save_state(). |
|
|
Definition at line 8281 of file plug_crender.c. Referenced by RCREND_save_state(), and REND_save_state(). |
|
|
Value: if( rs->nnn[0] != '\0' && RSDIFF_STR(nnn) ) \ sss = THD_zzprintf( sss , " " #nnn " = %s\n" , rs->nnn ) Definition at line 8277 of file plug_crender.c. Referenced by RCREND_save_state(), and REND_save_state(). |
|
|
Definition at line 774 of file plug_crender.c. Referenced by RCREND_help_CB(). |
|
|
Definition at line 740 of file plug_crender.c. Referenced by RCREND_help_CB(). |
|
|
Value: wname = \
XtVaCreateManagedWidget( \
"dialog" , xmPushButtonWidgetClass , script_menu , \
LABEL_ARG( label ) , \
XmNmarginHeight , 0 , \
XmNtraversalOn , False , \
XmNinitialResourcesPersistent , False , \
NULL ) ; \
XtAddCallback( wname , XmNactivateCallback , \
RCREND_script_CB , NULL ) ; |
|
|
Value: XtVaCreateManagedWidget( \
"AFNI" , xmSeparatorWidgetClass , (ww) , \
XmNseparatorType , XmSINGLE_LINE , \
XmNinitialResourcesPersistent , False , \
NULL )Definition at line 1025 of file plug_crender.c. Referenced by NUD_make_widgets(), RCREND_func_widgets(), RCREND_make_widgets(), REND_func_widgets(), and REND_make_widgets(). |
|
|
Value: XtVaCreateManagedWidget( \
"AFNI" , xmSeparatorWidgetClass , (ww) , \
XmNseparatorType , XmDOUBLE_LINE , \
XmNorientation , XmVERTICAL , \
XmNinitialResourcesPersistent , False , \
NULL )Definition at line 1031 of file plug_crender.c. Referenced by NUD_make_widgets(), RCREND_func_widgets(), RCREND_make_widgets(), REND_func_widgets(), and REND_make_widgets(). |
|
|
Definition at line 1914 of file plug_crender.c. |
|
|
|
|
|
Definition at line 504 of file plug_crender.c. Referenced by RCREND_autocompute_CB(), and RCREND_cutout_blobs(). |
|
|
Definition at line 8437 of file plug_crender.c. Referenced by RCREND_widgets_to_state(), and REND_widgets_to_state(). |
|
|
Definition at line 4349 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), and RCREND_cutout_set_CB(). |
|
|
Definition at line 4353 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), and RCREND_cutout_set_CB(). |
|
|
Definition at line 4350 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), and RCREND_cutout_set_CB(). |
|
|
Definition at line 4354 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), and RCREND_cutout_set_CB(). |
|
|
Definition at line 4351 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), and RCREND_cutout_set_CB(). |
|
|
Definition at line 4355 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), and RCREND_cutout_set_CB(). |
|
|
Value: do{ XmString xstr ; \ xstr = XmStringCreateLtoR( NO_DATASET_STRING , \ XmFONTLIST_DEFAULT_TAG ) ; \ XtVaSetValues( wfunc_info_lab , XmNlabelString,xstr , NULL ) ; \ XmStringFree(xstr) ; \ \ xstr = RCREND_range_label() ; \ XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ; \ XmStringFree(xstr) ; \ \ xstr = RCREND_autorange_label() ; \ XtVaSetValues( wfunc_range_bbox->wbut[0], XmNlabelString,xstr, NULL ) ; \ XmStringFree(xstr) ; \ \ AV_SENSITIZE( wfunc_color_av , False ) ; \ AV_SENSITIZE( wfunc_thresh_av , False ) ; \ } while(0) Definition at line 552 of file plug_crender.c. Referenced by RCREND_finalize_dset_CB(), and RCREND_main(). |
|
|
Definition at line 716 of file plug_crender.c. Referenced by RCREND_help_CB(). |
|
|
Value: (( ISVALID_DSET(ds) ) && \ ( DSET_INMEMORY(ds) ) && \ \ ( DSET_BRICK_TYPE(ds,0) == MRI_short || \ DSET_BRICK_TYPE(ds,0) == MRI_byte || \ (DSET_BRICK_TYPE(ds,0) == MRI_float && float_ok)) \ ) Definition at line 3269 of file plug_crender.c. Referenced by RCREND_load_dsl(), and REND_load_dsl(). |
|
|
|
|
|
Definition at line 505 of file plug_crender.c. Referenced by RCREND_cutout_blobs(). |
|
|
Definition at line 506 of file plug_crender.c. Referenced by RCREND_cutout_blobs(). |
|
|
Definition at line 507 of file plug_crender.c. Referenced by RCREND_cutout_blobs(). |
Function Documentation
|
||||||||||||||||||||
|
Definition at line 9327 of file plug_crender.c. References abs, BOUND_VAL, ENTRY, CR_debug::level, MRI_RGB_PTR, MRI_IMAGE::nx, MRI_IMAGE::ny, RETURN, x2, THD_fvec3::xyz, and y1. Referenced by draw_xhairs_in_image().
09329 {
09330 byte * bp = MRI_RGB_PTR(im);
09331 int x, y; /* computed positions to plot */
09332 int x1, y1, x2, y2; /* start and end positions */
09333 int xtot, ytot; /* cumulative directional steps */
09334 int xdir, ydir; /* direction of steps */
09335 int xsteps, ysteps, points; /* total steps to make */
09336 int index; /* image index */
09337 int pc; /* point counter */
09338
09339
09340 ENTRY( "draw_image_line" );
09341
09342 x1 = (int)( p1->xyz[0] + im->nx / 2 + 0.001 );
09343 y1 = (int)( p1->xyz[1] + im->ny / 2 + 0.001 );
09344 x2 = (int)( p2->xyz[0] + im->nx / 2 + 0.001 );
09345 y2 = (int)( p2->xyz[1] + im->ny / 2 + 0.001 );
09346
09347 if ( x1 == x2 && y1 == y2 )
09348 RETURN(0);
09349
09350 BOUND_VAL( 0, x1, im->nx-1 ); /* just to be safe */
09351 BOUND_VAL( 0, y1, im->ny-1 );
09352 BOUND_VAL( 0, x2, im->nx-1 );
09353 BOUND_VAL( 0, y2, im->ny-1 );
09354
09355 if ( x2 > x1 ) xdir = 1;
09356 else xdir = -1;
09357
09358 if ( y2 > y1 ) ydir = 1;
09359 else ydir = -1;
09360
09361 xsteps = abs(x2 - x1) + 1;
09362 ysteps = abs(y2 - y1) + 1;
09363 points = (xsteps >= ysteps) ? xsteps : ysteps; /* points to plot */
09364
09365 xtot = ytot = 0;
09366 for ( pc = 0; pc < points; pc++ )
09367 {
09368 x = x1 + xdir * (xtot/points); /* hmmmm, that's a lot of work to */
09369 y = y1 + ydir * (ytot/points); /* allow arbitrary direction, alas */
09370
09371 index = 3 * (x + y * im->nx);
09372
09373 bp[index] = rgb[0];
09374 bp[index+1] = rgb[1];
09375 bp[index+2] = rgb[2];
09376
09377 xtot += xsteps;
09378 ytot += ysteps;
09379 }
09380
09381 if ( gcr_debug.level > 0 )
09382 {
09383 printf( "++ drawing line from (%f,%f) to (%f,%f)\n",
09384 p1->xyz[0], p1->xyz[1], p2->xyz[0], p2->xyz[1] );
09385 printf( "-- as line from (%d,%d) to (%d,%d)\n", x1, y1, x2, y2 );
09386 }
09387
09388 RETURN(0);
09389 }
|
|
||||||||||||
|
Definition at line 9300 of file plug_crender.c. References draw_image_line(), ENTRY, MCW_DC::ovc, ovc_to_rgb_bytes(), RETURN, xhair_ovc, CR_xhairs::xp, CR_xhairs::yp, and CR_xhairs::zp. Referenced by RCREND_draw_CB().
09301 {
09302 THD_fvec3 * p1, * p2;
09303 byte rgb[3] = {0,0,0};
09304
09305 ENTRY( "draw_xhairs_in_image" );
09306
09307 if ( !x || !im )
09308 RETURN(-1);
09309
09310 ovc_to_rgb_bytes( xhair_ovc, rgb, dc->ovc );
09311
09312 draw_image_line( im, &x->xp[0][0], &x->xp[0][1], rgb );
09313 draw_image_line( im, &x->xp[1][0], &x->xp[1][1], rgb );
09314 draw_image_line( im, &x->yp[0][0], &x->yp[0][1], rgb );
09315 draw_image_line( im, &x->yp[1][0], &x->yp[1][1], rgb );
09316 draw_image_line( im, &x->zp[0][0], &x->zp[0][1], rgb );
09317 draw_image_line( im, &x->zp[1][0], &x->zp[1][1], rgb );
09318
09319 RETURN(0);
09320 }
|
|
||||||||||||
|
Definition at line 9040 of file plug_crender.c. References AFNI_view_info::crosshair_gap, THD_3dim_dataset::daxes, ENTRY, fa, fb, CR_debug::level, LOAD_FVEC3, THD_dataxes::nxx, THD_dataxes::nyy, THD_dataxes::nzz, ORIMASK_AP, ORIMASK_IS, ORIMASK_LR, r_idisp_vec3f(), RETURN, Three_D_View::vinfo, CR_debug::xhairs, AFNI_view_info::xhairs_orimask, AFNI_view_info::xi, CR_xhairs::xp, THD_dataxes::xxdel, THD_dataxes::xxorg, THD_fvec3::xyz, AFNI_view_info::yj, CR_xhairs::yp, THD_dataxes::yydel, THD_dataxes::yyorg, AFNI_view_info::zk, CR_xhairs::zp, THD_dataxes::zzdel, and THD_dataxes::zzorg. Referenced by RCREND_draw_CB().
09041 {
09042 THD_dataxes * dax = dset->daxes;
09043 float xi, yj, zk;
09044 float fa, fb;
09045 int om, gap;
09046
09047 ENTRY( "get_xhair_points" );
09048
09049 if ( ! pts || ! dset )
09050 RETURN(-1);
09051
09052 xi = im3d->vinfo->xi; /* get Dicomm mm coords */
09053 yj = im3d->vinfo->yj;
09054 zk = im3d->vinfo->zk;
09055
09056 om = im3d->vinfo->xhairs_orimask; /* get xhair orient mask */
09057 gap = im3d->vinfo->crosshair_gap; /* get gap radius */
09058
09059 /* set the 2 x-direction xhair segments */
09060 if ( om & ORIMASK_LR )
09061 {
09062 /* first pair */
09063 fa = dax->xxorg;
09064 fb = xi - gap * dax->xxdel;
09065
09066 LOAD_FVEC3( pts->xp[0][0], fa, yj, zk );
09067 LOAD_FVEC3( pts->xp[0][1], fb, yj, zk );
09068
09069 if ( fb < fa ) /* stick to single endpoint */
09070 pts->xp[0][1] = pts->xp[0][0];
09071
09072 /* second pair */
09073 fa = xi + gap * dax->xxdel;
09074 fb = dax->xxorg + dax->xxdel * (dax->nxx - 1);
09075
09076 LOAD_FVEC3( pts->xp[1][0], fa, yj, zk );
09077 LOAD_FVEC3( pts->xp[1][1], fb, yj, zk );
09078
09079 if ( fb < fa ) /* stick to single endpoint */
09080 pts->xp[1][0] = pts->xp[1][1];
09081 }
09082
09083 /* set the 2 y-direction xhair segments */
09084 if ( om & ORIMASK_AP )
09085 {
09086 /* first pair */
09087 fa = dax->yyorg;
09088 fb = yj - gap * dax->yydel;
09089
09090 LOAD_FVEC3( pts->yp[0][0], xi, fa, zk );
09091 LOAD_FVEC3( pts->yp[0][1], xi, fb, zk );
09092
09093 if ( fb < fa ) /* stick to single endpoint */
09094 pts->yp[0][1] = pts->yp[0][0];
09095
09096 /* second pair */
09097 fa = yj + gap * dax->yydel;
09098 fb = dax->yyorg + dax->yydel * (dax->nyy - 1);
09099
09100 LOAD_FVEC3( pts->yp[1][0], xi, fa, zk );
09101 LOAD_FVEC3( pts->yp[1][1], xi, fb, zk );
09102
09103 if ( fb < fa ) /* stick to single endpoint */
09104 pts->yp[1][0] = pts->yp[1][1];
09105 }
09106
09107 /* set the 2 z-direction xhair segments */
09108 if ( om & ORIMASK_IS )
09109 {
09110 /* first pair */
09111 fa = dax->zzorg;
09112 fb = zk - gap * dax->zzdel;
09113
09114 LOAD_FVEC3( pts->zp[0][0], xi, yj, fa );
09115 LOAD_FVEC3( pts->zp[0][1], xi, yj, fb );
09116
09117 if ( fb < fa ) /* stick to single endpoint */
09118 pts->zp[0][1] = pts->zp[0][0];
09119
09120 /* second pair */
09121 fa = zk + gap * dax->zzdel;
09122 fb = dax->zzorg + dax->zzdel * (dax->nzz - 1);
09123
09124 LOAD_FVEC3( pts->zp[1][0], xi, yj, fa );
09125 LOAD_FVEC3( pts->zp[1][1], xi, yj, fb );
09126
09127 if ( fb < fa ) /* stick to single endpoint */
09128 pts->zp[1][0] = pts->zp[1][1];
09129 }
09130
09131 /* debug stuff */
09132 LOAD_FVEC3( gcr_debug.xhairs, xi, yj, zk ); /* save for later */
09133
09134 if ( gcr_debug.level > 0 )
09135 r_idisp_vec3f( "-- xhair center : ", gcr_debug.xhairs.xyz );
09136
09137 RETURN(0);
09138 }
|
|
||||||||||||
|
Definition at line 757 of file plug_crender.c. References GRAF_get_setup(), graf_state::nh, graf_state::spl, graf_state::xh, and graf_state::yh.
00758 {
00759 GRAF_get_setup( gp , &(gs->nh) , gs->xh , gs->yh , &(gs->spl) ) ;
00760 return ;
00761 }
|
|
||||||||||||
|
Definition at line 763 of file plug_crender.c. References GRAF_put_setup(), graf_state::nh, graf_state::spl, graf_state::xh, and graf_state::yh.
00764 {
00765 GRAF_put_setup( gp , gs->nh , gs->xh , gs->yh , gs->spl ) ;
00766 return ;
00767 }
|
|
||||||||||||
|
Definition at line 746 of file plug_crender.c. References graf_state::nh, graf_state::spl, graf_state::xh, and graf_state::yh.
|
|
||||||||||||
|
Definition at line 9276 of file plug_crender.c. References p, r_idisp_vec3f(), CR_xhairs::xp, THD_fvec3::xyz, CR_xhairs::yp, and CR_xhairs::zp. Referenced by rotate_xhair_points(), and xhairs_to_image_pts().
09277 {
09278 if ( ! p )
09279 {
09280 fputs( "idisp_xhair_pts: p == NULL!\n", stderr );
09281 return;
09282 }
09283
09284 r_idisp_vec3f( note, p->xp[0][0].xyz );
09285 r_idisp_vec3f( note, p->xp[0][1].xyz );
09286 r_idisp_vec3f( note, p->xp[1][0].xyz );
09287 r_idisp_vec3f( note, p->xp[1][1].xyz );
09288
09289 r_idisp_vec3f( note, p->yp[0][0].xyz );
09290 r_idisp_vec3f( note, p->yp[0][1].xyz );
09291 r_idisp_vec3f( note, p->yp[1][0].xyz );
09292 r_idisp_vec3f( note, p->yp[1][1].xyz );
09293
09294 r_idisp_vec3f( note, p->zp[0][0].xyz );
09295 r_idisp_vec3f( note, p->zp[0][1].xyz );
09296 r_idisp_vec3f( note, p->zp[1][0].xyz );
09297 r_idisp_vec3f( note, p->zp[1][1].xyz );
09298 }
|
|
||||||||||||||||
|
Definition at line 9571 of file plug_crender.c. References MCW_DCOV::b_ov, BOUND_VAL, MCW_DCOV::g_ov, CR_debug::level, MCW_DCOV::ncol_ov, and MCW_DCOV::r_ov. Referenced by draw_xhairs_in_image().
09572 {
09573 BOUND_VAL( 0, ovc, ov->ncol_ov );
09574
09575 if ( ovc == 0 ) /* then use white */
09576 {
09577 rgb[0] = 255;
09578 rgb[1] = 255;
09579 rgb[2] = 255;
09580 }
09581 else
09582 {
09583 /* get the intensities from the color map */
09584 rgb[0] = ov->r_ov[ovc];
09585 rgb[1] = ov->g_ov[ovc];
09586 rgb[2] = ov->b_ov[ovc];
09587 }
09588
09589 if ( gcr_debug.level > 0 )
09590 printf( "-- rgb vals are %d, %d, %d\n", rgb[0], rgb[1], rgb[2] );
09591
09592 return 1;
09593 }
|
|
|
Definition at line 171 of file plug_crender.c. References angle_fstep, cutout_fstep, getenv(), plint, PLUTO_add_hint(), PLUTO_set_sequence(), RCREND_environ_CB(), RCREND_main(), and strtod().
00172 {
00173 char * env ;
00174 float val ;
00175
00176 if( ncall > 0 ) return(NULL); /* only one interface */
00177
00178 plint = PLUTO_new_interface( "Render [new]" , NULL , NULL ,
00179 PLUGIN_CALL_IMMEDIATELY , RCREND_main ) ;
00180
00181 PLUTO_add_hint( plint , "Volume Rendering" ) ;
00182
00183 PLUTO_set_sequence( plint , "A:graphics" ) ;
00184
00185 /***----- retrieve relevant environment variables, if any -----***/
00186
00187 env = getenv("AFNI_RENDER_ANGLE_DELTA") ;
00188 if( env != NULL ){
00189 val = strtod(env,NULL) ;
00190 if( val > 0.0 && val < 100.0 ) angle_fstep = val ;
00191 }
00192 PLUTO_register_environment_numeric( "AFNI_RENDER_ANGLE_DELTA" ,
00193 "Angle stepsize in deg (volume renderer)" ,
00194 1,9,0,(int)angle_fstep, RCREND_environ_CB );
00195
00196 /*--*/
00197
00198 env = getenv("AFNI_RENDER_CUTOUT_DELTA") ;
00199 if( env != NULL ){
00200 val = strtod(env,NULL) ;
00201 if( val > 0.0 && val < 100.0 ) cutout_fstep = val ;
00202 }
00203 PLUTO_register_environment_numeric( "AFNI_RENDER_CUTOUT_DELTA" ,
00204 "Cutout stepsize in mm (volume renderer)" ,
00205 1,9,0,(int)cutout_fstep, RCREND_environ_CB );
00206
00207 #if 0 /* 2002 Mar 06 : showthru factor has moved to the plugin GUI */
00208 env = getenv("AFNI_RENDER_SHOWTHRU_FAC") ;
00209 if( env != NULL ){
00210 val = strtod(env,NULL) ;
00211 if( val < 0.0 || val > 1.0 ) val = 1.0 ;
00212 } else {
00213 val = 1.0 ;
00214 }
00215 PLUTO_register_environment_numeric( "AFNI_RENDER_SHOWTHRU_FAC" ,
00216 "ShowThru mixing factor (volume renderer)",
00217 30,100,2,(int)rint(100.0*val) , NULL ) ;
00218 #endif
00219
00220 /*-- done --*/
00221
00222 return(plint);
00223 }
|
|
||||||||||||
|
Definition at line 9409 of file plug_crender.c. References ENTRY, g_cren_hist, RD_CHOICE_DISP_COLORS, RD_CHOICE_DISP_DSET, RD_CHOICE_DISP_IM, RD_CHOICE_DISP_XHAIRS, RD_CHOICE_HELP, RD_CHOICE_HIST, RD_CHOICE_SET_LEVEL, rd_debug_choice(), rd_disp_color_info(), rd_disp_debug_help(), rd_disp_dset_info(), rd_disp_mri_image(), rd_disp_xhairs(), rd_set_debug_level(), and RETURN. Referenced by RCREND_evaluate().
09410 {
09411 char * sp = str;
09412 int choice;
09413
09414 ENTRY( "r_debug_check" );
09415
09416 /* check to see if we have a valid debug request */
09417 if ( ! d ) RETURN(0);
09418 if ( ! sp ) RETURN(0);
09419 if ( isspace(*sp) ) sp++; /* allow a single leading space */
09420 if ( *sp++ != 'd' ) RETURN(0);
09421
09422 choice = rd_debug_choice( &sp ); /* so get past choice character(s) */
09423
09424 switch ( choice )
09425 {
09426 case RD_CHOICE_HELP: rd_disp_debug_help(sp,d); break;
09427 case RD_CHOICE_HIST: fputs(g_cren_hist, stderr); break;
09428 case RD_CHOICE_DISP_COLORS: rd_disp_color_info(sp,d,&gcr); break;
09429 case RD_CHOICE_DISP_DSET: rd_disp_dset_info (sp,d,&gcr); break;
09430 case RD_CHOICE_DISP_IM: rd_disp_mri_image (sp,d,renderings); break;
09431 case RD_CHOICE_SET_LEVEL: rd_set_debug_level(sp,d); break;
09432 case RD_CHOICE_DISP_XHAIRS: rd_disp_xhairs (sp,d); break;
09433
09434 default:
09435 printf( "error: invalid debug command: %5s\n", str ); break;
09436 }
09437
09438 fflush(stdout);
09439
09440 RETURN(1); /* we did something */
09441 }
|
|
||||||||||||||||||||||||
|
Definition at line 8892 of file plug_crender.c. References ENTRY, grcr_hist_high, grcr_hist_low, and s2.
08893 {
08894 unsigned char * tmpi = im;
08895 unsigned char max = 0;
08896 int c1, s1, s2, cur;
08897
08898 ENTRY( "rcr_disp_hist" );
08899
08900 if ( ( b1 > 256 ) || ( b2 > 256 ) || ( im == NULL ) )
08901 {
08902 fprintf( stderr, "*** incorrect parameters to rcr_disp_hist\n" );
08903 EXRETURN;
08904 }
08905
08906 memset( grcr_hist_high, 0, 256 * sizeof(int) );
08907 memset( grcr_hist_low, 0, 256 * sizeof(int) );
08908
08909 for ( c1 = 0, tmpi = im; c1 < nvox; c1++, tmpi++ )
08910 if ( *tmpi > max )
08911 max = *tmpi;
08912
08913 s1 = (b1 <= 0) ? 1 : (cut+b1-1) / b1;
08914 s2 = (b2 <= 0) ? 1 : (max - cut + b2) / b2; /* m+1-c+b2-1 */
08915
08916 for ( c1 = 0, tmpi = im; c1 < nvox; c1++, tmpi++ )
08917 {
08918 if ( *tmpi >= cut )
08919 grcr_hist_high[(*tmpi - cut) / s2]++;
08920 else
08921 grcr_hist_low[*tmpi / s1]++;
08922 }
08923
08924 printf( "nvox = %d, max = %d\n", nvox, max );
08925
08926 cur = 0;
08927 if ( cut && b1 )
08928 {
08929 printf( "--------- lower buckets ---------\n" );
08930 for (c1 = 0; c1 < b1; c1++)
08931 {
08932 printf( "[%d,%d] : %d\n", cur, cur + s1 - 1, grcr_hist_low[c1] );
08933 cur += s1;
08934 }
08935 }
08936
08937 cur = cut;
08938 printf( "--------- upper buckets ---------\n" );
08939 for (c1 = 0; c1 < b2; c1++)
08940 {
08941 printf( "[%d,%d] : %d\n", cur, cur + s2 - 1, grcr_hist_high[c1] );
08942 cur += s2;
08943 }
08944
08945 EXRETURN;
08946 }
|
|
||||||||||||||||
|
Definition at line 4030 of file plug_crender.c. References accum_flag, client_data, ENTRY, and MCW_val_bbox(). Referenced by RCREND_make_widgets().
04031 {
04032 ENTRY( "RCREND_accum_CB" );
04033
04034 accum_flag = MCW_val_bbox( accum_bbox ) ;
04035 EXRETURN ;
04036 }
|
|
||||||||||||||||
|
Definition at line 3998 of file plug_crender.c. References accum_lab_replace, accum_label, MCW_choose_cbs::cval, drive_MCW_imseq(), fd, IMARR_COUNT, IMARR_SUBIM, isqDR_display, isqDR_getimnr, MCW_strncpy, mcwCR_string, mri_add_name(), and MCW_choose_cbs::reason. Referenced by RCREND_accum_lab_EV().
03999 {
04000 if( cbs != NULL && cbs->reason == mcwCR_string && cbs->cval != NULL ){
04001 MCW_strncpy( accum_label , cbs->cval , 255 ) ;
04002
04003 if( accum_lab_replace && renderings != NULL && imseq != NULL ){
04004 int nn=-1 ; MRI_IMAGE *rim ;
04005 drive_MCW_imseq( imseq , isqDR_getimnr , (XtPointer)&nn ) ;
04006 if( nn >= 0 && nn < IMARR_COUNT(renderings) ){
04007 MRI_IMAGE *rim = IMARR_SUBIM(renderings,nn) ;
04008 mri_add_name( accum_label , rim ) ;
04009 drive_MCW_imseq( imseq , isqDR_display , (XtPointer)nn ) ;
04010 }
04011 }
04012 }
04013 return ;
04014 }
|
|
||||||||||||||||||||
|
Definition at line 3972 of file plug_crender.c. References accum_lab_replace, accum_label, ENTRY, ev, event, MCW_choose_string(), and RCREND_accum_lab_CB(). Referenced by RCREND_make_widgets().
03974 {
03975 ENTRY( "RCREND_accum_lab_EV" );
03976
03977 switch( ev->type ){
03978 case ButtonPress:{
03979 XButtonEvent *event = (XButtonEvent *) ev ;
03980
03981 if( event->button == Button3 || event->button == Button2 ){
03982 char *ttl ;
03983 accum_lab_replace =
03984 ( (event->state & ShiftMask) || (event->state & ControlMask) ) ;
03985
03986 ttl = (accum_lab_replace) ? "Replacment Label"
03987 : "New Overlay Label" ;
03988 MCW_choose_string( w,ttl,accum_label , RCREND_accum_lab_CB,NULL ) ;
03989 }
03990 }
03991 break ;
03992 }
03993 EXRETURN ;
03994 }
|
|
||||||||||||
|
Definition at line 3657 of file plug_crender.c. References angle_pitch, angle_roll, angle_yaw, AV_assign_fval(), dynamic_flag, ENTRY, MCW_arrowval::fval, MCW_val_bbox(), RCREND_do_incrot(), RCREND_draw_CB(), and CR_data::rh. Referenced by RCREND_make_widgets(), and RCREND_state_to_widgets().
03658 {
03659 float na ;
03660
03661 ENTRY( "RCREND_angle_CB" );
03662
03663 /*==========================================================================*/
03664 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
03665 if( cd == NULL && MCW_val_bbox(incrot_bbox) ){ /* increment mode */
03666 RCREND_do_incrot( av ) ; /* ==> do work here */
03667 EXRETURN ;
03668 }
03669 #endif
03670 /*==========================================================================*/
03671
03672 if( av == roll_av ){
03673
03674 na = angle_roll = av->fval ;
03675 if( na < 0.0 ) na += 360 ;
03676 else if( na >= 360.0 ) na -= 360.0 ;
03677 if( na != av->fval ){ AV_assign_fval( av , na ) ; angle_roll = na ; }
03678
03679 } else if( av == pitch_av ){
03680
03681 na = angle_pitch = av->fval ;
03682 if( na < 0.0 ) na += 360 ;
03683 else if( na >= 360.0 ) na -= 360.0 ;
03684 if( na != av->fval ){ AV_assign_fval( av , na ) ; angle_pitch = na ; }
03685
03686 } else if( av == yaw_av ){
03687
03688 na = angle_yaw = av->fval ;
03689 if( na < 0.0 ) na += 360 ;
03690 else if( na >= 360.0 ) na -= 360.0 ;
03691 if( na != av->fval ){ AV_assign_fval( av , na ) ; angle_yaw = na ; }
03692
03693 } else {
03694 EXRETURN ; /* should never happen */
03695 }
03696
03697 if( cd == NULL && dynamic_flag && gcr.rh != NULL )
03698 RCREND_draw_CB(NULL,NULL,NULL) ;
03699
03700 EXRETURN ;
03701 }
|
|
||||||||||||||||
|
Definition at line 5160 of file plug_crender.c. References autokill, client_data, MCW_DC::display, and ENTRY. Referenced by RCREND_make_widgets().
|
|
||||||||||||||||
|
Definition at line 5106 of file plug_crender.c. References accum_flag, AFNI_add_interruptable(), AFNI_process_interrupts(), atoz, autocancel_pb, autocompute_pb, autokill, automate_flag, AV_assign_ival(), client_data, DESTROY_IMARR, DESTROY_RSA, ENTRY, MCW_arrowval::ival, MCW_popdown_meter(), MCW_popup_meter(), MCW_set_bbox(), MCW_set_meter(), METER_TOP_WIDE, N_IND, RCREND_draw_CB(), shell, and T_IND. Referenced by RCREND_make_widgets().
05107 {
05108 int it , ntime = autoframe_av->ival ;
05109 float scl = 100.0/ntime ;
05110 Widget autometer ;
05111
05112 ENTRY( "RCREND_autocompute_CB" );
05113
05114 automate_flag = 1 ;
05115 if( ! accum_flag ){
05116 DESTROY_IMARR(renderings) ;
05117 #ifdef USE_SCRIPTING
05118 DESTROY_RSA(renderings_state) ;
05119 #endif
05120 }
05121
05122 atoz[N_IND] = ntime ;
05123
05124 autometer = MCW_popup_meter( shell , METER_TOP_WIDE ) ;
05125
05126 XtManageChild( autocancel_pb ) ; AFNI_add_interruptable( autocancel_pb ) ;
05127 autokill = 0 ;
05128
05129 for( it=0 ; it < ntime ; it++ ){
05130 atoz[T_IND] = it ;
05131 AV_assign_ival( autoframe_av , it+1 ) ;
05132
05133 RCREND_draw_CB(NULL,NULL,NULL) ;
05134
05135 if( it < ntime-1 ){
05136 AFNI_process_interrupts(autocancel_pb) ;
05137 if( autokill ) break ;
05138 }
05139
05140 MCW_set_meter( autometer , (int)(scl*(it+1)) ) ;
05141 }
05142
05143 MCW_popdown_meter( autometer ) ;
05144
05145 /*-- done: turn off automation --*/
05146
05147 MCW_set_bbox( automate_bbox , 0 ) ;
05148 XtSetSensitive( autocompute_pb , False ) ;
05149
05150 XtUnmanageChild( autocancel_pb ) ; AFNI_add_interruptable(NULL) ;
05151
05152 automate_flag = 0 ;
05153 EXRETURN ;
05154 }
|
|
||||||||||||||||
|
Definition at line 5086 of file plug_crender.c. References autocompute_pb, client_data, ENTRY, MCW_set_bbox(), and MCW_val_bbox(). Referenced by RCREND_make_widgets().
05087 {
05088 int flag = MCW_val_bbox( automate_bbox ) ;
05089 ENTRY( "RCREND_autoflag_CB" );
05090
05091 XtSetSensitive( autocompute_pb , (Boolean) flag ) ;
05092
05093 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
05094 if( flag ) MCW_set_bbox( incrot_bbox , 0 ) ;
05095 #endif
05096
05097 EXRETURN ;
05098 }
|
|
|
Definition at line 6200 of file plug_crender.c. References AV_fval_to_char(), THD_statistics::bstat, DEFAULT_FUNC_RANGE, DSET_VALID_BSTAT, ENTRY, func_autorange, func_color_ival, ISVALID_DSET, ISVALID_STATISTIC, THD_brick_stats::max, THD_brick_stats::min, RELOAD_STATS, RETURN, s2, and THD_3dim_dataset::stats. Referenced by RCREND_choose_av_CB(), RCREND_finalize_func_CB(), RCREND_func_widgets(), and RCREND_xhair_recv().
06201 {
06202 XmString xstr ;
06203 float rrr = DEFAULT_FUNC_RANGE ;
06204 char buf[32] , qbuf[16] ;
06205
06206 ENTRY( "RCREND_autorange_label" );
06207
06208 if( ISVALID_DSET(func_dset) ){
06209
06210 RELOAD_STATS(func_dset) ;
06211 if( ISVALID_STATISTIC(func_dset->stats) ){
06212 float s1 , s2 ; int iv ;
06213
06214 iv = func_color_ival ;
06215
06216 if( DSET_VALID_BSTAT(func_dset,iv) ){
06217 s1 = fabs(func_dset->stats->bstat[iv].min) ,
06218 s2 = fabs(func_dset->stats->bstat[iv].max) ;
06219 rrr = (s1<s2) ? s2 : s1 ;
06220 if( rrr == 0.0 ) rrr = 1.0 ;
06221 }
06222 }
06223 }
06224
06225 func_autorange = rrr ;
06226 AV_fval_to_char( rrr , qbuf ) ;
06227 sprintf( buf , "autoRange:%s" , qbuf ) ;
06228 xstr = XmStringCreateLtoR( buf , XmFONTLIST_DEFAULT_TAG ) ;
06229
06230 RETURN(xstr);
06231 }
|
|
||||||||||||
|
Definition at line 5174 of file plug_crender.c. References AFNI_hintize_pbar(), AV_fval_to_char(), DSET_BRICK_FACTOR, dset_ival, DSET_NVALS, dset_title, ENTRY, FREE_VOLUMES, func_color_ival, func_dset_title, FUNC_RANGE, func_thresh_ival, info_lab, INVALIDATE_OVERLAY, MCW_arrowval::ival, new_dset, new_fset, RCREND_autorange_label(), RCREND_draw_CB(), RCREND_range_label(), RCREND_reload_dataset(), RCREND_set_thr_pval(), CR_data::rh, THD_MAX_NAME, MCW_bbox::wbut, wfunc_info_lab, and wfunc_range_label. Referenced by RCREND_func_widgets(), RCREND_make_widgets(), RCREND_state_to_widgets(), and RCREND_xhair_recv().
05175 {
05176 XmString xstr ;
05177 char str[2*THD_MAX_NAME] ;
05178
05179 ENTRY( "RCREND_choose_av_CB" );
05180
05181 /*--- selection of an underlay sub-brick ---*/
05182
05183 if( av == choose_av && dset != NULL && av->ival < DSET_NVALS(dset) ){
05184
05185 float fac = DSET_BRICK_FACTOR(dset,av->ival) ;
05186
05187 if( fac == 0.0 || fac == 1.0 ){ /* rewrite the informational label */
05188 strcpy(str,dset_title) ;
05189 } else {
05190 char abuf[16] ;
05191 AV_fval_to_char( fac , abuf ) ;
05192 sprintf(str,"%s [* %s]", dset_title , abuf ) ;
05193 }
05194 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
05195 XtVaSetValues( info_lab , XmNlabelString , xstr , NULL ) ;
05196 XmStringFree(xstr) ;
05197
05198 dset_ival = av->ival ; /* read this sub-brick */
05199 new_dset = 1 ; /* flag it as new */
05200 FREE_VOLUMES ; /* free the internal data */
05201 RCREND_reload_dataset() ; /* load the data */
05202
05203 if( gcr.rh != NULL ) RCREND_draw_CB(NULL,NULL,NULL) ; /* draw */
05204
05205 /*--- selection of overlay color sub-brick ---*/
05206
05207 } else if( av == wfunc_color_av && func_dset != NULL && av->ival < DSET_NVALS(func_dset) ){
05208
05209 float fac = DSET_BRICK_FACTOR(func_dset,av->ival) ;
05210
05211 if( fac == 0.0 || fac == 1.0 ){ /* rewrite the informational label */
05212 strcpy(str,func_dset_title) ;
05213 } else {
05214 char abuf[16] ;
05215 AV_fval_to_char( fac , abuf ) ;
05216 sprintf(str,"%s [* %s]", func_dset_title , abuf ) ;
05217 }
05218 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
05219 XtVaSetValues( wfunc_info_lab , XmNlabelString , xstr , NULL ) ;
05220 XmStringFree(xstr) ;
05221
05222 func_color_ival = av->ival ;
05223
05224 /* fix the range labels */
05225
05226 xstr = RCREND_range_label() ;
05227 XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ;
05228 XmStringFree(xstr) ;
05229
05230 xstr = RCREND_autorange_label() ;
05231 XtVaSetValues( wfunc_range_bbox->wbut[0], XmNlabelString,xstr , NULL ) ;
05232 XmStringFree(xstr) ;
05233
05234 new_fset = 1 ; /* flag it as new - may resample new sub-brick */
05235 INVALIDATE_OVERLAY ;
05236
05237 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Jul 2001 */
05238
05239 /*--- selection of overlay threshold sub-brick ---*/
05240
05241 } else if( av == wfunc_thresh_av && func_dset != NULL && av->ival < DSET_NVALS(func_dset) ){
05242
05243 func_thresh_ival = av->ival ;
05244
05245 /* fix the range label */
05246
05247 xstr = RCREND_range_label() ;
05248 XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ;
05249 XmStringFree(xstr) ;
05250
05251 /* fix the p-value label */
05252
05253 RCREND_set_thr_pval() ;
05254
05255 new_fset = 1 ; /* flag it as new - may resample new sub-brick */
05256 INVALIDATE_OVERLAY ;
05257 }
05258
05259 EXRETURN ;
05260 }
|
|
||||||||||||
|
Definition at line 5266 of file plug_crender.c. References DSET_BRICK_LABEL, DSET_NVALS, ENTRY, ISVALID_3DIM_DATASET, MCW_arrowval::ival, and RETURN. Referenced by RCREND_finalize_dset_CB(), and RCREND_finalize_func_CB().
05267 {
05268 static char blab[32] ;
05269 THD_3dim_dataset * dset = (THD_3dim_dataset *) cd ;
05270 static char * lfmt[3] = { "#%1d %-14.14s" , "#%2d %-14.14s" , "#%3d %-14.14s" } ;
05271 static char * rfmt[3] = { "%-14.14s #%1d" , "%-14.14s #%2d" , "%-14.14s #%3d" } ;
05272
05273 ENTRY( "RCREND_choose_av_label_CB" );
05274
05275 if( ISVALID_3DIM_DATASET(dset) ){
05276
05277 #ifdef USE_RIGHT_BUCK_LABELS
05278 if( DSET_NVALS(dset) < 10 )
05279 sprintf(blab, rfmt[0] , DSET_BRICK_LABEL(dset,av->ival) , av->ival ) ;
05280 else if( DSET_NVALS(dset) < 100 )
05281 sprintf(blab, rfmt[1] , DSET_BRICK_LABEL(dset,av->ival) , av->ival ) ;
05282 else
05283 sprintf(blab, rfmt[2] , DSET_BRICK_LABEL(dset,av->ival) , av->ival ) ;
05284 #else
05285 if( DSET_NVALS(dset) < 10 )
05286 sprintf(blab, lfmt[0] , av->ival , DSET_BRICK_LABEL(dset,av->ival) ) ;
05287 else if( DSET_NVALS(dset) < 100 )
05288 sprintf(blab, lfmt[1] , av->ival , DSET_BRICK_LABEL(dset,av->ival) ) ;
05289 else
05290 sprintf(blab, lfmt[2] , av->ival , DSET_BRICK_LABEL(dset,av->ival) ) ;
05291 #endif
05292 }
05293 else
05294 sprintf(blab," #%d ",av->ival) ; /* should not happen! */
05295
05296 RETURN(blab) ;
05297 }
|
|
||||||||||||||||
|
Definition at line 3321 of file plug_crender.c. References client_data, MCW_DC::display, DSET_COMPRESSED, DSET_NUM_TIMES, DSET_NVALS, dsl, ENTRY, EQUIV_IDCODES, THD_3dim_dataset::func_type, ISANAT, ISANATBUCKET, ISFUNCBUCKET, ISVALID_DSET, MAX, MCW_choose_strlist(), MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, ndsl, PLUTO_find_dset(), POPDOWN_strlist_chooser, RCREND_finalize_dset_CB(), RCREND_finalize_func_CB(), RCREND_load_dsl(), THD_MAX_NAME, AFNI_view_info::view_type, Three_D_View::vinfo, wfunc_choose_pb, and XtRealloc. Referenced by RCREND_func_widgets(), and RCREND_make_widgets().
03322 {
03323 int vv = im3d->vinfo->view_type ; /* view type */
03324 THD_3dim_dataset * qset ;
03325 int id , ltop , llen , dofunc ;
03326 char qnam[THD_MAX_NAME] , label[THD_MAX_NAME] ;
03327 static char ** strlist = NULL ;
03328
03329 int isl = -2 ; /* 03 Apr 1999 */
03330 MCW_idcode midc ;
03331
03332 ENTRY( "RCREND_choose_CB" );
03333
03334 /*-- decide if we want overlay (func) or underlay --*/
03335
03336 dofunc = (w == wfunc_choose_pb) ;
03337
03338 if( dofunc && !ISVALID_DSET(dset) ){
03339 (void) MCW_popup_message( w ,
03340 "Can't choose overlay\nbefore underlay!" ,
03341 MCW_USER_KILL | MCW_TIMER_KILL ) ;
03342 XBell(dc->display,100) ; EXRETURN ;
03343 }
03344
03345 if( dofunc )
03346 RCREND_load_dsl( dset , 1 ) ;
03347 else
03348 RCREND_load_dsl( NULL , 0 ) ;
03349
03350 /* found nothing? exit */
03351
03352 if( ndsl < 1 ){
03353 (void) MCW_popup_message( w ,
03354 "Didn't find\nany datasets\nto render!" ,
03355 MCW_USER_KILL | MCW_TIMER_KILL ) ;
03356 XBell(dc->display,100) ; EXRETURN ;
03357 }
03358
03359 /*--- loop over dataset links and patch their titles
03360 to include an indicator of the dataset type ---*/
03361
03362 ltop = 4 ;
03363 for( id=0 ; id < ndsl ; id++ ){
03364 llen = strlen(dsl[id].title) ;
03365 ltop = MAX(ltop,llen) ;
03366 }
03367
03368 for( id=0 ; id < ndsl ; id++ ){
03369 qset = PLUTO_find_dset( &(dsl[id].idcode) ) ;
03370 if( ! ISVALID_DSET(qset) ) continue ;
03371 if( ISANAT(qset) ){
03372 if( ISANATBUCKET(qset) ) /* 30 Nov 1997 */
03373 sprintf(qnam,"%-*s [%s:%d]" ,
03374 ltop,dsl[id].title ,
03375 ANAT_prefixstr[qset->func_type] , DSET_NVALS(qset) ) ;
03376
03377 else if( DSET_NUM_TIMES(qset) == 1 )
03378 sprintf(qnam,"%-*s [%s]" ,
03379 ltop,dsl[id].title ,
03380 ANAT_prefixstr[qset->func_type] ) ;
03381
03382 else
03383 sprintf(qnam,"%-*s [%s:3D+t:%d]" ,
03384 ltop,dsl[id].title ,
03385 ANAT_prefixstr[qset->func_type] , DSET_NUM_TIMES(qset) ) ;
03386
03387 } else {
03388 if( ISFUNCBUCKET(qset) ) /* 30 Nov 1997 */
03389 sprintf(qnam,"%-*s [%s:%d]" ,
03390 ltop,dsl[id].title ,
03391 FUNC_prefixstr[qset->func_type] , DSET_NVALS(qset) ) ;
03392
03393 else if( DSET_NUM_TIMES(qset) == 1 )
03394 sprintf(qnam,"%-*s [%s]" ,
03395 ltop,dsl[id].title ,
03396 FUNC_prefixstr[qset->func_type] ) ;
03397
03398 else
03399 sprintf(qnam,"%-*s [%s:3D+t:%d]" ,
03400 ltop,dsl[id].title ,
03401 FUNC_prefixstr[qset->func_type] , DSET_NVALS(qset) ) ;
03402 }
03403
03404 if( DSET_COMPRESSED(qset) ) strcat(qnam,"z") ;
03405
03406 strcpy( dsl[id].title , qnam ) ;
03407 }
03408
03409 /*--- make a popup chooser for the user to browse ---*/
03410
03411 POPDOWN_strlist_chooser ;
03412
03413 strlist = (char **) XtRealloc( (char *)strlist , sizeof(char *)*ndsl ) ;
03414 for( id=0 ; id < ndsl ; id++ ) strlist[id] = dsl[id].title ;
03415
03416 /*-- 03 Apr 1999: set the initial selection in the chooser --*/
03417
03418 if( dofunc && func_dset != NULL ){ midc = func_dset_idc; isl = -1; }
03419 else if( !dofunc && dset != NULL ){ midc = dset_idc ; isl = -1; }
03420
03421 if( isl == -1 ){
03422 for( id=0 ; id < ndsl ; id++ ){
03423 if( EQUIV_IDCODES(midc,dsl[id].idcode) ){ isl = id ; break ; }
03424 }
03425 }
03426
03427 /*-- popup the chooser -- */
03428
03429 sprintf( label , "AFNI Dataset from\nthe %s" , VIEW_typestr[vv] ) ;
03430
03431 MCW_choose_strlist( w , label , ndsl , isl , strlist ,
03432 (dofunc) ? RCREND_finalize_func_CB
03433 : RCREND_finalize_dset_CB , NULL ) ;
03434 EXRETURN ;
03435 }
|
|
||||||||||||
|
Definition at line 4140 of file plug_crender.c. References AV_assign_ival(), AV_fval_to_char(), brickfac, clipbot_faclab, cliptop_faclab, ENTRY, FREE_VOLUMES, and MCW_arrowval::ival. Referenced by RCREND_make_widgets(), and RCREND_state_to_widgets().
04141 {
04142 ENTRY( "RCREND_clip_CB" );
04143
04144 FREE_VOLUMES ; /* free the volumes, will force reloading */
04145
04146 if( clipbot_av->ival >= cliptop_av->ival ){
04147 if( av == clipbot_av )
04148 AV_assign_ival( clipbot_av , cliptop_av->ival - 1 ) ;
04149 else
04150 AV_assign_ival( cliptop_av , clipbot_av->ival + 1 ) ;
04151 }
04152
04153 /* if brick is scaled, re-show the scaled labels */
04154
04155 if( brickfac != 0.0 && brickfac != 1.0 ){
04156 char minch[16] , maxch[16] , str[64] ;
04157 XmString xstr ;
04158
04159 if( av == clipbot_av ){
04160 AV_fval_to_char( brickfac * clipbot_av->ival , minch ) ;
04161 sprintf(str,"[-> %s]",minch) ;
04162 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
04163 XtVaSetValues( clipbot_faclab , XmNlabelString , xstr , NULL ) ;
04164 XmStringFree(xstr) ;
04165 } else {
04166 AV_fval_to_char( brickfac * cliptop_av->ival , maxch ) ;
04167 sprintf(str,"[-> %s]",maxch) ;
04168 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
04169 XtVaSetValues( cliptop_faclab , XmNlabelString , xstr , NULL ) ;
04170 XmStringFree(xstr) ;
04171 }
04172 }
04173
04174 EXRETURN ;
04175 }
|
|
||||||||||||
|
Definition at line 6622 of file plug_crender.c. References CUT_NONOVERLAY, ENTRY, FREE_VOLUMES, INVALIDATE_OVERLAY, CUTOUT_state::num, and CUTOUT_state::type. Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06623 {
06624 int cc ;
06625
06626 ENTRY( "RCREND_clusters_av_CB" );
06627
06628 INVALIDATE_OVERLAY ;
06629
06630 for( cc=0 ; cc < current_cutout_state.num ; cc++ )
06631 if( current_cutout_state.type[cc] == CUT_NONOVERLAY ){
06632 FREE_VOLUMES ;
06633 break ;
06634 }
06635
06636 EXRETURN ;
06637 }
|
|
||||||||||||||||
|
||||||||||||
|
Definition at line 6491 of file plug_crender.c. References ENTRY, func_color_opacity, INVALIDATE_OVERLAY, MCW_arrowval::ival, and MIN. Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06492 {
06493 ENTRY( "RCREND_color_opacity_CB" );
06494
06495 func_color_opacity = 0.1 * av->ival;
06496 func_color_opacity = MIN(func_color_opacity, 1.0);
06497
06498 INVALIDATE_OVERLAY ;
06499
06500 EXRETURN ;
06501 }
|
|
||||||||||||||||
|
Definition at line 6403 of file plug_crender.c. References AFNI_hintize_pbar(), MCW_pbar::bigcolor, ENTRY, FIX_SCALE_SIZE, FUNC_RANGE, INVALIDATE_OVERLAY, and reset_bigcolors(). Referenced by RCREND_colornum_av_CB(), and RCREND_func_widgets().
06404 {
06405 ENTRY( "RCREND_color_pbar_CB" );
06406
06407 FIX_SCALE_SIZE ;
06408 INVALIDATE_OVERLAY ;
06409
06410 /* to be sure v1.8 [rickr] */
06411 reset_bigcolors( wfunc_color_pbar->bigcolor );
06412
06413 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Mar 2001 */
06414 EXRETURN ;
06415 }
|
|
||||||||||||
|
||||||||||||||||
|
Definition at line 6581 of file plug_crender.c. References ENTRY, func_cut_overlay, INVALIDATE_OVERLAY, MCW_val_bbox(), and num_cutouts. Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06582 {
06583 int newcut = MCW_val_bbox(wfunc_cut_overlay_bbox) ;
06584
06585 ENTRY( "RCREND_cut_overlay_CB" );
06586
06587 if( newcut == func_cut_overlay ) EXRETURN ;
06588
06589 func_cut_overlay = newcut ;
06590 if( num_cutouts > 0 ){ INVALIDATE_OVERLAY ; }
06591 EXRETURN ;
06592 }
|
|
|
Definition at line 4427 of file plug_crender.c. References atoz, calloc, CUT_ANTERIOR_TO, CUT_EXPRESSION, CUT_INFERIOR_TO, CUT_LEFT_OF, CUT_NONE, CUT_NONOVERLAY, CUT_POSTERIOR_TO, CUT_RIGHT_OF, CUT_SLANT_BASE, cut_slant_normals, CUT_SLANT_XMY_GT, CUT_SLANT_XMY_LT, CUT_SLANT_XMZ_GT, CUT_SLANT_XMZ_LT, CUT_SLANT_XPY_GT, CUT_SLANT_XPY_LT, CUT_SLANT_XPZ_GT, CUT_SLANT_XPZ_LT, CUT_SLANT_YMZ_GT, CUT_SLANT_YMZ_LT, CUT_SLANT_YPZ_GT, CUT_SLANT_YPZ_LT, CUT_SUPERIOR_TO, CUT_TT_ELLIPSOID, CUTOUT_AND, CUTOUT_OR, THD_3dim_dataset::daxes, CR_data::dset_or, ENTRY, free, GR, MCW_cluster::i, MCW_cluster::j, MCW_cluster::k, KEEP, KILL_CLUSTER, CUTOUT_state::logic, malloc, MCW_build_mask(), MRI_BYTE_PTR, CUTOUT_state::mustdo, N_IND, CUTOUT_state::num, MCW_cluster::num_pt, MRI_IMAGE::nx, MRI_IMAGE::ny, MRI_IMAGE::nz, nz, OP, CUTOUT_state::param, CUTOUT_state::param_str, PARSER_evaluate_vector(), PARSER_generate_code(), q, RANGE, RCREND_reload_func_dset(), T_IND, TT_XMID, TT_XSEMI, TT_YMID, TT_YSEMI, TT_ZMID, TT_ZSEMI, typ, CUTOUT_state::type, X_IND, xn, THD_dataxes::xxdel, THD_dataxes::xxorg, Y_IND, yn, THD_dataxes::yydel, THD_dataxes::yyorg, Z_IND, zn, THD_dataxes::zzdel, and THD_dataxes::zzorg. Referenced by RCREND_reload_dataset().
04428 {
04429 THD_3dim_dataset * local_dset;
04430 int ii,jj,kk , nx,ny,nz,nxy,nxyz , cc , typ , ncc,logic,nmust,mus ;
04431 int ibot,itop , jbot,jtop , kbot,ktop ;
04432 float par ;
04433 float dx,dy,dz , xorg,yorg,zorg , xx,yy,zz ;
04434 byte * oar , * gar ;
04435 byte ncdone = 0 ;
04436
04437 ENTRY( "RCREND_cutout_blobs" );
04438
04439 /* if we have a reoriented dataset, use it 26 June 2002 - rickr */
04440 if ( gcr.dset_or != NULL )
04441 local_dset = gcr.dset_or;
04442 else
04443 local_dset = dset;
04444
04445 ncc = current_cutout_state.num ;
04446 logic = current_cutout_state.logic ;
04447 if( ncc < 1 || oppim == NULL ) EXRETURN ; /* error */
04448
04449 /* find out if the logic is effectively "OR" */
04450
04451 if( ncc == 1 ){
04452 logic = CUTOUT_OR ;
04453 } else {
04454 for( nmust=cc=0 ; cc < ncc ; cc++ )
04455 if( current_cutout_state.mustdo[cc] ) nmust++ ;
04456 if( nmust >= ncc-1 ) logic = CUTOUT_OR ;
04457 }
04458
04459 /* initialize */
04460
04461 oar = MRI_BYTE_PTR(oppim) ; if( oar == NULL ) EXRETURN ;
04462 nx = oppim->nx ;
04463 ny = oppim->ny ; nxy = nx * ny ;
04464 nz = oppim->nz ; nxyz = nxy * nz ;
04465
04466 if( logic == CUTOUT_AND ){
04467 gar = (byte *) malloc( sizeof(byte) * nxyz ) ; /* counts of hits */
04468 memset( gar , 0 , sizeof(byte) * nxyz ) ;
04469 }
04470
04471 /* now use the local_dset 26 June 2002 - rickr */
04472 dx = local_dset->daxes->xxdel;
04473 dy = local_dset->daxes->yydel;
04474 dz = local_dset->daxes->zzdel;
04475 xorg = local_dset->daxes->xxorg;
04476 yorg = local_dset->daxes->yyorg;
04477 zorg = local_dset->daxes->zzorg;
04478
04479 for( cc=0 ; cc < ncc ; cc++ ){ /* loop over cutouts */
04480 typ = current_cutout_state.type[cc] ;
04481 mus = current_cutout_state.mustdo[cc] ;
04482 par = current_cutout_state.param[cc] ;
04483 if( typ == CUT_NONE ) continue ; /* error */
04484
04485 switch( typ ){
04486
04487 /*............................................................*/
04488
04489 case CUT_RIGHT_OF:
04490 case CUT_LEFT_OF:
04491 case CUT_ANTERIOR_TO:
04492 case CUT_POSTERIOR_TO:
04493 case CUT_INFERIOR_TO:
04494 case CUT_SUPERIOR_TO:{ /* a rectangular region */
04495 int q ;
04496
04497 ibot = 0 ; itop = nx-1 ; /* everything */
04498 jbot = 0 ; jtop = ny-1 ;
04499 kbot = 0 ; ktop = nz-1 ;
04500 switch( typ ){
04501 case CUT_RIGHT_OF:
04502 q = (int)( (par-xorg)/dx - 0.499 ); RANGE(q,0,itop); itop = q;
04503 break ;
04504 case CUT_LEFT_OF:
04505 q = (int)( (par-xorg)/dx + 1.499 ); RANGE(q,0,itop); ibot = q;
04506 break ;
04507 case CUT_ANTERIOR_TO:
04508 q = (int)( (par-yorg)/dy - 0.499 ); RANGE(q,0,jtop); jtop = q;
04509 break ;
04510 case CUT_POSTERIOR_TO:
04511 q = (int)( (par-yorg)/dy + 1.499 ); RANGE(q,0,jtop); jbot = q;
04512 break ;
04513 case CUT_INFERIOR_TO:
04514 q = (int)( (par-zorg)/dz - 0.499 ); RANGE(q,0,ktop); ktop = q;
04515 break ;
04516 case CUT_SUPERIOR_TO:
04517 q = (int)( (par-zorg)/dz + 1.499 ); RANGE(q,0,ktop); kbot = q;
04518 break ;
04519 }
04520
04521 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04522 ncdone++ ;
04523 for( kk=kbot ; kk <= ktop ; kk++ )
04524 for( jj=jbot ; jj <= jtop ; jj++ )
04525 for( ii=ibot ; ii <= itop ; ii++ ) GR(ii,jj,kk)++ ;
04526
04527 } else { /* just blast it */
04528 for( kk=kbot ; kk <= ktop ; kk++ )
04529 for( jj=jbot ; jj <= jtop ; jj++ )
04530 for( ii=ibot ; ii <= itop ; ii++ ) OP(ii,jj,kk) = 0 ;
04531 }
04532 }
04533 break ; /* end of rectangular region cutout */
04534
04535 /*............................................................*/
04536
04537 case CUT_TT_ELLIPSOID:{ /* an ellipsoid */
04538
04539 float dxa=dx/TT_XSEMI , dya=dy/TT_YSEMI , dza=dz/TT_ZSEMI ;
04540 float xga=(xorg-TT_XMID)/TT_XSEMI ,
04541 yga=(yorg-TT_YMID)/TT_YSEMI ,
04542 zga=(zorg-TT_ZMID)/TT_ZSEMI , ebot=0.0001*par*par ;
04543
04544 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04545 ncdone++ ;
04546 for( kk=0 ; kk < nz ; kk++ ){
04547 zz = zga + kk*dza ; zz = zz*zz ;
04548 for( jj=0 ; jj < ny ; jj++ ){
04549 yy = yga + jj*dya ; yy = yy*yy + zz ;
04550 if( yy < ebot ){
04551 for( ii=0 ; ii < nx ; ii++ ){
04552 xx = xga + ii*dxa ; xx = xx*xx + yy ;
04553 if( xx > ebot ) GR(ii,jj,kk)++ ;
04554 }
04555 } else {
04556 for( ii=0 ; ii < nx ; ii++ ) GR(ii,jj,kk)++ ;
04557 }
04558 }}
04559
04560 } else { /* blast it */
04561 for( kk=0 ; kk < nz ; kk++ ){
04562 zz = zga + kk*dza ; zz = zz*zz ;
04563 for( jj=0 ; jj < ny ; jj++ ){
04564 yy = yga + jj*dya ; yy = yy*yy + zz ;
04565 if( yy < ebot ){
04566 for( ii=0 ; ii < nx ; ii++ ){
04567 xx = xga + ii*dxa ; xx = xx*xx + yy ;
04568 if( xx > ebot ) OP(ii,jj,kk) = 0 ;
04569 }
04570 } else {
04571 for( ii=0 ; ii < nx ; ii++ ) OP(ii,jj,kk) = 0 ;
04572 }
04573 }}
04574 }
04575 }
04576 break ; /* end of ellipsoid cutout */
04577
04578 /*............................................................*/
04579
04580 #define VSIZE nx
04581 case CUT_EXPRESSION:{ /* expression > 0 */
04582 PARSER_code * pcode ;
04583 double * abc[26] , * temp ;
04584
04585 /* parse the expression */
04586
04587 pcode = PARSER_generate_code( current_cutout_state.param_str[cc] ) ;
04588 if( pcode == NULL ) break ; /* skip this cutout */
04589
04590 /* create the evaluation workspaces */
04591
04592 temp = (double *) malloc( sizeof(double) * VSIZE ) ;
04593 for( jj=0 ; jj < 26 ; jj++ )
04594 abc[jj] = (double *) malloc( sizeof(double) * VSIZE ) ;
04595
04596 for( jj=0 ; jj < 23 ; jj++ ) /* load zeros for */
04597 for( ii=0 ; ii < VSIZE; ii++ ) /* 'a' ... 'w' */
04598 abc[jj][ii] = 0.0 ;
04599
04600 for( ii=0 ; ii < VSIZE ; ii++ ){ /* load 't' and 'n' */
04601 abc[N_IND][ii] = atoz[N_IND] ;
04602 abc[T_IND][ii] = atoz[T_IND] ;
04603 }
04604
04605 /* loop over rows of voxels and evaluate expressions */
04606
04607 for( kk=0 ; kk < nz ; kk++ ){
04608 zz = zorg + kk*dz ;
04609 for( jj=0 ; jj < ny ; jj++ ){
04610 yy = yorg + jj*dy ;
04611
04612 for( ii=0 ; ii < nx ; ii++ ){ /* load row */
04613 abc[X_IND][ii] = xorg + ii*dx ;
04614 abc[Y_IND][ii] = yy ;
04615 abc[Z_IND][ii] = zz ;
04616 }
04617
04618 /* evaluate the expression */
04619
04620 PARSER_evaluate_vector(pcode, abc, VSIZE, temp);
04621
04622 /* cut cut cut */
04623
04624 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04625 for( ii=0 ; ii < nx ; ii++ )
04626 if( temp[ii] > 0.0 ) GR(ii,jj,kk)++ ;
04627
04628 } else { /* blast'em */
04629 for( ii=0 ; ii < nx ; ii++ )
04630 if( temp[ii] > 0.0 ) OP(ii,jj,kk) = 0 ;
04631 }
04632 }} /* end of loops over jj,kk (y,z) */
04633
04634 if( logic == CUTOUT_AND && ! mus ) ncdone++ ;
04635
04636 /* free workspaces */
04637
04638 for( jj=0 ; jj < 26 ; jj++ ) free(abc[jj]) ;
04639 free(temp) ; free(pcode) ;
04640 }
04641 break ; /* end of expression cutout */
04642
04643 /*............................................................*/
04644
04645 case CUT_SLANT_XPY_GT: /* the slanted cut planes */
04646 case CUT_SLANT_XPY_LT:
04647 case CUT_SLANT_XMY_GT:
04648 case CUT_SLANT_XMY_LT:
04649 case CUT_SLANT_YPZ_GT:
04650 case CUT_SLANT_YPZ_LT:
04651 case CUT_SLANT_YMZ_GT:
04652 case CUT_SLANT_YMZ_LT:
04653 case CUT_SLANT_XPZ_GT:
04654 case CUT_SLANT_XPZ_LT:
04655 case CUT_SLANT_XMZ_GT:
04656 case CUT_SLANT_XMZ_LT:{
04657 int isl = typ - CUT_SLANT_BASE ;
04658 float xn = cut_slant_normals[isl][0] , dxn = dx * xn ,
04659 yn = cut_slant_normals[isl][1] , dyn = dy * yn ,
04660 zn = cut_slant_normals[isl][2] , dzn = dz * zn , pval ;
04661
04662 pval = par - xn*xorg - yn*yorg - zn*zorg ;
04663
04664 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04665 ncdone++ ;
04666 for( kk=0,zz=-pval ; kk < nz ; kk++,zz+=dzn ){
04667 /* zz = kk * dzn - pval ; */
04668 for( jj=0,yy=zz ; jj < ny ; jj++,yy+=dyn ){
04669 /* yy = jj * dyn + zz ; */
04670 for( ii=0,xx=yy ; ii < nx ; ii++,xx+=dxn ){
04671 /* xx = ii * dxn + yy ; */
04672 if( xx > 0.0 ) GR(ii,jj,kk)++ ;
04673 }
04674 }}
04675 } else { /* blast it */
04676 for( kk=0,zz=-pval ; kk < nz ; kk++,zz+=dzn ){
04677 /* zz = kk * dzn - pval ; */
04678 for( jj=0,yy=zz ; jj < ny ; jj++,yy+=dyn ){
04679 /* yy = jj * dyn + zz ; */
04680 for( ii=0,xx=yy ; ii < nx ; ii++,xx+=dxn ){
04681 /* xx = ii * dxn + yy ; */
04682 if( xx > 0.0 ) OP(ii,jj,kk) = 0 ;
04683 }
04684 }}
04685 }
04686 }
04687 break ; /* end of slant cutout */
04688
04689 /*............................................................*/
04690
04691 #define OVAR(i,j,k) ovar[(i)+(j)*nx+(k)*nxy]
04692 #define KEEP(i,j,k) keep[(i)+(j)*nx+(k)*nxy]
04693
04694 case CUT_NONOVERLAY:
04695 if( DO_OVERLAY ){ /* 24 Jul 2001: changed condition from func_dset != NULL */
04696 byte * ovar ;
04697 float adx=fabs(dx) , ady=fabs(dy) , adz=fabs(dz) ;
04698
04699 if( ovim == NULL ) RCREND_reload_func_dset() ; /* get the global */
04700 ovar = MRI_BYTE_PTR(ovim) ; /* overlay image */
04701
04702 if( par < adx && par < ady && par < adz ){ /* no dilation */
04703
04704 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04705 ncdone++ ;
04706 for( ii=0 ; ii < nxyz ; ii++ )
04707 if( ovar[ii] == 0 ) gar[ii]++ ;
04708 } else { /* nuke'em */
04709 for( ii=0 ; ii < nxyz ; ii++ )
04710 if( ovar[ii] == 0 ) oar[ii] = 0 ;
04711 }
04712
04713 } else { /* dilation */
04714
04715 MCW_cluster * mask = MCW_build_mask( nx,ny,nz, adx,ady,adz, par ) ;
04716 int mnum = mask->num_pt , pp,ip,jp,kp ;
04717 short * mi = mask->i , * mj = mask->j , * mk = mask->k ;
04718 byte * keep = calloc(nxyz,sizeof(byte)) ;
04719
04720 for( kk=0 ; kk < nz ; kk++ ) /* make list of points to keep */
04721 for( jj=0 ; jj < ny ; jj++ )
04722 for( ii=0 ; ii < nx ; ii++ )
04723 if( OVAR(ii,jj,kk) != 0 ){ /* keep nbhd of this point */
04724 KEEP(ii,jj,kk) = 1 ;
04725 for( pp=0 ; pp < mnum ; pp++ ){
04726 ip = ii + mi[pp]; jp = jj + mj[pp]; kp = kk + mk[pp];
04727 if( ip >= 0 && ip < nx &&
04728 jp >= 0 && jp < ny &&
04729 kp >= 0 && kp < nz ) KEEP(ip,jp,kp) = 1 ;
04730 }
04731 }
04732 KILL_CLUSTER(mask) ; /* toss the trash */
04733
04734 /* now do the cutting */
04735
04736 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04737 ncdone++ ;
04738 for( ii=0 ; ii < nxyz ; ii++ )
04739 if( keep[ii] == 0 ) gar[ii]++ ;
04740 } else { /* nuke'em */
04741 for( ii=0 ; ii < nxyz ; ii++ )
04742 if( keep[ii] == 0 ) oar[ii] = 0 ;
04743 }
04744
04745 free(keep) ; /* toss the trash */
04746 }
04747 }
04748 break ; /* end of nonoverlay cutout */
04749
04750 } /* end of switch over type of cutout */
04751 } /* end of loop over cutouts */
04752
04753 /* with AND, blast only those that were hit every time */
04754
04755 if( logic == CUTOUT_AND && ncdone > 0 ){
04756 for( ii=0 ; ii < nxyz ; ii++ ) if( gar[ii] == ncdone ) oar[ii] = 0 ;
04757 free(gar) ;
04758 }
04759
04760 EXRETURN ;
04761 }
|
|
||||||||||||||||
|
Definition at line 4357 of file plug_crender.c. References AV_assign_fval(), client_data, CUT_ANTERIOR_TO, CUT_INFERIOR_TO, CUT_LEFT_OF, CUT_POSTERIOR_TO, CUT_RIGHT_OF, CUT_SLANT_BASE, cut_slant_normals, CUT_SLANT_XMY_GT, CUT_SLANT_XMY_LT, CUT_SLANT_XMZ_GT, CUT_SLANT_XMZ_LT, CUT_SLANT_XPY_GT, CUT_SLANT_XPY_LT, CUT_SLANT_XPZ_GT, CUT_SLANT_XPZ_LT, CUT_SLANT_YMZ_GT, CUT_SLANT_YMZ_LT, CUT_SLANT_YPZ_GT, CUT_SLANT_YPZ_LT, CUT_SUPERIOR_TO, CUT_TT_ELLIPSOID, MCW_DC::display, dynamic_flag, ENTRY, MCW_arrowval::ival, num_cutouts, RCREND_draw_CB(), CR_data::rh, RCREND_cutout::set_pb, TT_XMID, TT_XSEMI, TT_YMID, TT_YSEMI, TT_ZMID, TT_ZSEMI, typ, RCREND_cutout::type_av, Three_D_View::vinfo, AFNI_view_info::xi, AFNI_view_info::yj, and AFNI_view_info::zk. Referenced by RCREND_make_cutout().
04358 {
04359 int iv , typ ;
04360 float val ;
04361
04362 ENTRY( "RCREND_cutout_set_CB" );
04363
04364 for( iv=0 ; iv < num_cutouts ; iv++ )
04365 if( w == cutouts[iv]->set_pb ) break ;
04366 if( iv == num_cutouts ) EXRETURN ;
04367
04368 typ = cutouts[iv]->type_av->ival ;
04369 switch( typ ){
04370
04371 default: XBell(dc->display,100) ; EXRETURN ; /* action is not defined */
04372
04373 case CUT_RIGHT_OF:
04374 case CUT_LEFT_OF: val = im3d->vinfo->xi ; break ;
04375
04376 case CUT_ANTERIOR_TO:
04377 case CUT_POSTERIOR_TO: val = im3d->vinfo->yj ; break ;
04378
04379 case CUT_INFERIOR_TO:
04380 case CUT_SUPERIOR_TO: val = im3d->vinfo->zk ; break ;
04381
04382 case CUT_TT_ELLIPSOID:{
04383 float x = im3d->vinfo->xi , y = im3d->vinfo->yj , z = im3d->vinfo->zk ;
04384
04385 val = (x-TT_XMID) * (x-TT_XMID) / (TT_XSEMI * TT_XSEMI)
04386 + (y-TT_YMID) * (y-TT_YMID) / (TT_YSEMI * TT_YSEMI)
04387 + (z-TT_ZMID) * (z-TT_ZMID) / (TT_ZSEMI * TT_ZSEMI) ;
04388
04389 val = 0.1 * rint( 1000.0 * sqrt(val) ) ; /* round to 1 decimal place */
04390 } break ;
04391
04392 case CUT_SLANT_XPY_GT:
04393 case CUT_SLANT_XPY_LT:
04394 case CUT_SLANT_XMY_GT:
04395 case CUT_SLANT_XMY_LT:
04396 case CUT_SLANT_YPZ_GT:
04397 case CUT_SLANT_YPZ_LT:
04398 case CUT_SLANT_YMZ_GT:
04399 case CUT_SLANT_YMZ_LT:
04400 case CUT_SLANT_XPZ_GT:
04401 case CUT_SLANT_XPZ_LT:
04402 case CUT_SLANT_XMZ_GT:
04403 case CUT_SLANT_XMZ_LT:{
04404 float x = im3d->vinfo->xi , y = im3d->vinfo->yj , z = im3d->vinfo->zk ;
04405 int isl = typ - CUT_SLANT_BASE ;
04406
04407 val = cut_slant_normals[isl][0] * x
04408 + cut_slant_normals[isl][1] * y
04409 + cut_slant_normals[isl][2] * z ;
04410
04411 val = 0.1 * rint( 10.0 * val ) ; /* round to 0.1 mm */
04412 }
04413 break ;
04414 }
04415
04416 AV_assign_fval( cutouts[iv]->param_av , val ) ;
04417
04418 if( dynamic_flag && gcr.rh != NULL ) RCREND_draw_CB(NULL,NULL,NULL) ;
04419 EXRETURN ;
04420 }
|
|
|
||||||||||||
|
Definition at line 4182 of file plug_crender.c. References AV_NCOL, CUT_EXPRESSION, CUT_NONE, cutout_param_labels, ENTRY, FIX_SCALE_SIZE, HIDE_SCALE, MCW_arrowval::ival, num_cutouts, and RCREND_cutout::type_av. Referenced by RCREND_make_cutout(), and RCREND_state_to_widgets().
04183 {
04184 int iv , val ;
04185 XmString xstr ;
04186
04187 ENTRY( "RCREND_cutout_type_CB" );
04188
04189 for( iv=0 ; iv < num_cutouts ; iv++ )
04190 if( av == cutouts[iv]->type_av ) break ;
04191 if( iv == num_cutouts ) EXRETURN ;
04192
04193 val = av->ival ; /* new type */
04194
04195 HIDE_SCALE ;
04196
04197 if( val == CUT_NONE ){
04198 XtUnmanageChild( cutouts[iv]->param_lab ) ;
04199 XtUnmanageChild( cutouts[iv]->param_av->wrowcol ) ;
04200 XtUnmanageChild( cutouts[iv]->set_pb ) ;
04201 XtUnmanageChild( cutouts[iv]->mustdo_bbox->wrowcol ) ;
04202 } else {
04203 xstr = XmStringCreateLtoR( cutout_param_labels[val], XmFONTLIST_DEFAULT_TAG ) ;
04204 XtVaSetValues( cutouts[iv]->param_lab , XmNlabelString , xstr , NULL ) ;
04205 XmStringFree(xstr) ;
04206
04207 XtManageChild( cutouts[iv]->param_lab ) ;
04208 XtManageChild( cutouts[iv]->param_av->wrowcol ) ;
04209 XtManageChild( cutouts[iv]->set_pb ) ;
04210 XtManageChild( cutouts[iv]->mustdo_bbox->wrowcol ) ;
04211
04212 #undef DESENS
04213 #ifdef DESENS
04214 {
04215 Boolean sens ;
04216 sens = (val != CUT_EXPRESSION) ; /* deactivate */
04217 XtSetSensitive(cutouts[iv]->param_av->wup ,sens) ; /* if is an */
04218 XtSetSensitive(cutouts[iv]->param_av->wdown,sens) ; /* Expr > 0 */
04219 XtSetSensitive(cutouts[iv]->set_pb ,sens) ; /* cutout */
04220 }
04221 #else
04222 if( val == CUT_EXPRESSION ){ /* if Expr > 0 */
04223 XtUnmanageChild( cutouts[iv]->param_av->wup ); /* expand the */
04224 XtUnmanageChild( cutouts[iv]->param_av->wdown ); /* size of the */
04225 XtUnmanageChild( cutouts[iv]->set_pb ); /* text field */
04226 XtVaSetValues( cutouts[iv]->param_av->wtext ,
04227 XmNcolumns , AV_NCOL + 9 ,
04228 NULL ) ;
04229 } else { /* shrink size */
04230 XtVaSetValues( cutouts[iv]->param_av->wtext , /* of text field */
04231 XmNcolumns , AV_NCOL , /* to normal for */
04232 NULL ) ; /* other cutouts */
04233 XtManageChild( cutouts[iv]->param_av->wup );
04234 XtManageChild( cutouts[iv]->param_av->wdown );
04235 XtManageChild( cutouts[iv]->set_pb );
04236 }
04237 #endif
04238 }
04239
04240 FIX_SCALE_SIZE ;
04241 EXRETURN ;
04242 }
|
|
|
Definition at line 4974 of file plug_crender.c. References drive_MCW_imseq(), ENTRY, and isqDR_destroy. Referenced by RCREND_done_CB().
04975 {
04976 ENTRY( "RCREND_destroy_imseq" );
04977
04978 if( imseq == NULL ) EXRETURN ;
04979 drive_MCW_imseq( imseq , isqDR_destroy , NULL ) ;
04980 EXRETURN ;
04981 }
|
|
|
prototype for what happens when user increments angles * Definition at line 3727 of file plug_crender.c. References angle_pitch, angle_roll, angle_yaw, AV_assign_fval(), dynamic_flag, ENTRY, MCW_arrowval::fval, MCW_arrowval::old_fval, RCREND_draw_CB(), RCREND_inc_angles(), CR_data::rh, and roll(). Referenced by RCREND_angle_CB().
03728 {
03729 int ax ;
03730 float th , roll,pitch,yaw ;
03731
03732 ENTRY( "RCREND_do_incrot" );
03733
03734 /* read angles from arrowval's current status */
03735
03736 roll = roll_av ->fval ;
03737 pitch = pitch_av->fval ;
03738 yaw = yaw_av ->fval ;
03739
03740 /* choose axis of rotation based on what was just clicked,
03741 and set current angle for that axis to last value (before click) */
03742
03743 if( av == roll_av ){ ax = 2; roll = av->old_fval; }
03744 else if( av == pitch_av ){ ax = 0; pitch = av->old_fval; }
03745 else if( av == yaw_av ){ ax = 1; yaw = av->old_fval; }
03746 else
03747 EXRETURN ; /* should never happen */
03748
03749 th = av->fval - av->old_fval ; /* angle increment */
03750
03751 roll *= (PI/180) ; /* convert to radians */
03752 pitch *= (PI/180) ;
03753 yaw *= (PI/180) ;
03754 th *= (PI/180) ;
03755
03756 /* compute new angles */
03757
03758 RCREND_inc_angles( ax, th, &yaw , &pitch, &roll ) ;
03759
03760 roll = 0.001 * rint( (180000.0/PI)*roll ) ; /* convert to degrees */
03761 pitch = 0.001 * rint( (180000.0/PI)*pitch ) ; /* (rounded to 1/1000) */
03762 yaw = 0.001 * rint( (180000.0/PI)*yaw ) ;
03763
03764 /* put back into arrowvals */
03765
03766 AV_assign_fval( roll_av , roll ) ; angle_roll = roll ;
03767 AV_assign_fval( yaw_av , yaw ) ; angle_yaw = yaw ;
03768 AV_assign_fval( pitch_av , pitch ) ; angle_pitch = pitch ;
03769
03770 /* redraw if desirable */
03771
03772 if( dynamic_flag && gcr.rh != NULL )
03773 RCREND_draw_CB(NULL,NULL,NULL) ;
03774
03775 EXRETURN ;
03776 }
|
|
||||||||||||||||
|
Definition at line 6540 of file plug_crender.c. References ENTRY, FREE_VOLUMES, func_showthru, INVALIDATE_OVERLAY, MCW_val_bbox(), and MCW_arrowval::wrowcol. Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06541 {
06542 int newsee = MCW_val_bbox(wfunc_do_ST_bbox);
06543
06544 ENTRY( "RCREND_do_ST_CB" );
06545
06546 if( newsee == func_showthru ) EXRETURN;
06547
06548 func_showthru = newsee;
06549 INVALIDATE_OVERLAY; FREE_VOLUMES;
06550
06551 if ( func_showthru )
06552 XtSetSensitive( wfunc_ST_fac_av->wrowcol, True );
06553 else
06554 XtSetSensitive( wfunc_ST_fac_av->wrowcol, False );
06555
06556 EXRETURN;
06557 }
|
|
||||||||||||||||
|
Definition at line 2036 of file plug_crender.c. References AFNI_receive_control(), client_data, destroy_CREN_renderer(), DESTROY_IMARR, DESTROY_RSA, done_pb, CR_data::dset_or, EVERYTHING_SHUTDOWN, CR_data::fdm, free, FREE_VOLUMES, CR_data::fset_or, func_cmap_set, INVALIDATE_OVERLAY, MCW_set_widget_label(), CR_data::mset, quit_first, RCREND_destroy_imseq(), RCREND_done_timeout_CB(), RCREND_open_func_CB(), renderer_open, CR_data::rh, script_load_last, shell, THD_delete_3dim_dataset(), wfunc_frame, and xhair_recv. Referenced by RCREND_make_widgets().
02037 {
02038 /** like AFNI itself, require two quick presses to exit **/
02039
02040 if( w == done_pb && quit_first && renderings != NULL ){
02041 MCW_set_widget_label( done_pb , "DONE " ) ;
02042 quit_first = 0 ;
02043 (void) XtAppAddTimeOut(
02044 XtWidgetToApplicationContext(done_pb) ,
02045 5000 , RCREND_done_timeout_CB , NULL ) ;
02046 return ;
02047 }
02048
02049 if( xhair_recv >= 0 ) /* 29 Mar 1999 */
02050 AFNI_receive_control( im3d, xhair_recv,EVERYTHING_SHUTDOWN, NULL ) ;
02051
02052 RCREND_destroy_imseq() ; /* destroy the image window */
02053 DESTROY_IMARR(renderings) ; /* destroy the images */
02054 #ifdef USE_SCRIPTING
02055 DESTROY_RSA(renderings_state) ;
02056 script_load_last = -1 ;
02057 #endif
02058
02059 if( wfunc_frame != NULL && XtIsManaged(wfunc_frame) ) /* close overlay */
02060 RCREND_open_func_CB(NULL,NULL,NULL) ;
02061
02062 XtUnmapWidget( shell ) ; renderer_open = 0 ; imseq = NULL ;
02063
02064 if( dset != NULL ) dset = NULL ;
02065 if( func_dset != NULL ) func_dset = NULL ;
02066
02067 if( gcr.dset_or != NULL ) /* delete re-oriented copy */
02068 {
02069 THD_delete_3dim_dataset( gcr.dset_or, FALSE );
02070 gcr.dset_or = NULL;
02071 }
02072
02073 if( gcr.fset_or != NULL )
02074 {
02075 THD_delete_3dim_dataset( gcr.fset_or, FALSE );
02076 gcr.fset_or = NULL;
02077 }
02078
02079 if( gcr.mset != NULL ) gcr.mset = NULL; /* there is no new data here */
02080 if( gcr.fdm != NULL )
02081 {
02082 free(gcr.fdm);
02083 gcr.fdm = NULL;
02084 }
02085
02086 if( gcr.rh != NULL ){
02087 destroy_CREN_renderer(gcr.rh) ;
02088 gcr.rh = NULL ; func_cmap_set = 0 ;
02089 }
02090
02091 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
02092 MPROBE ;
02093 return ;
02094 }
|
|
||||||||||||
|
Definition at line 2029 of file plug_crender.c. References client_data, done_pb, MCW_set_widget_label(), and quit_first. Referenced by RCREND_done_CB().
02030 {
02031 MCW_set_widget_label( done_pb , "done" ) ;
02032 quit_first = 1 ;
02033 return ;
02034 }
|
|
||||||||||||||||
|
Definition at line 2526 of file plug_crender.c. References accum_flag, accum_label, ADDTO_IMARR, ADDTO_RSA, angle_pitch, angle_roll, angle_yaw, automate_flag, CHECK_XHAIR_MOTION, client_data, CREN_needs_data(), CREN_render(), CREN_set_angles(), CREN_set_min_opacity(), CREN_set_opamap(), DC_rgb_to_ovrgb(), DESTROY_IMARR, DESTROY_RSA, MCW_DC::display, DO_OVERLAY, draw_pb, draw_xhairs_in_image(), ENTRY, FIX_SCALE_SIZE, FREE_VOLUMES, func_computed, func_mixshade, func_showthru, func_showthru_fac, func_showthru_pass, get_xhair_points(), GRAF_SIZE, INIT_IMARR, INIT_RSA, INVALIDATE_OVERLAY, MRI_IMAGE::kind, malloc, MCW_invert_widget(), MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, MREN_depth_cue(), mri_add_name(), MRI_BYTE_PTR, mri_free(), MRI_RGB_PTR, CR_data::mset, new_CREN_renderer(), new_data_loaded, NOMIX, NOSHADE, MCW_pbar::num_panes, MRI_IMAGE::nvox, CR_data::omap, CUTOUT_state::opacity_scale, MCW_pbar::ov_index, RCREND_cutout_state_changed(), RCREND_evaluate(), RCREND_load_cutout_state(), RCREND_reload_dataset(), RCREND_reload_renderer(), RCREND_update_imseq(), RCREND_widgets_to_state(), CR_data::rh, rotate_xhair_points(), CR_data::rotm, script_load_last, xhair_flag, xhair_ovc, xhairs_to_image_pts(), and CR_data::xhseg. Referenced by RCREND_angle_CB(), RCREND_autocompute_CB(), RCREND_choose_av_CB(), RCREND_cutout_set_CB(), RCREND_do_incrot(), RCREND_opacity_scale_CB(), RCREND_param_CB(), RCREND_read_exec_CB(), RCREND_reload_CB(), RCREND_xhair_CB(), and RCREND_xhair_recv().
02527 {
02528 MRI_IMAGE * rim ;
02529
02530 ENTRY( "RCREND_draw_CB" );
02531
02532 #ifdef USE_SCRIPTING
02533 if( script_dontdraw ) EXRETURN ; /* 24 Nov 2000 */
02534 #endif
02535
02536 if( dset == NULL ){ XBell(dc->display,100) ; EXRETURN ; }
02537
02538 MCW_invert_widget(draw_pb) ;
02539
02540 /* if needed, create stuff for rendering */
02541
02542 /* rickr - get new renderer and set basic opacity map */
02543 if ( gcr.rh == NULL )
02544 {
02545 int ii;
02546
02547 gcr.rh = new_CREN_renderer();
02548
02549 for ( ii = 0; ii < GRAF_SIZE; ii++ )
02550 gcr.omap[ii] = ii/(GRAF_SIZE - 1.0);
02551
02552 CREN_set_opamap( gcr.rh, gcr.omap, 1.0 );
02553 }
02554
02555 RCREND_load_cutout_state() ; /* load cutout data from widgets */
02556
02557 if( RCREND_cutout_state_changed() ){ /* if cutouts changed, must reload data */
02558 FREE_VOLUMES ;
02559 if( func_cut_overlay ) INVALIDATE_OVERLAY ;
02560 old_cutout_state = current_cutout_state ;
02561 }
02562
02563 if( xhair_flag && CHECK_XHAIR_MOTION ){ /* check for new crosshair position */
02564 if( xhair_ovc > 0 && DO_OVERLAY ) INVALIDATE_OVERLAY ;
02565 else FREE_VOLUMES ;
02566 }
02567
02568 if ( NEED_RELOAD ) RCREND_reload_dataset();
02569
02570 /* setup for viewing */
02571
02572 angle_roll = RCREND_evaluate( roll_av ) ; /* read angles from arrowvals */
02573 angle_pitch = RCREND_evaluate( pitch_av ) ;
02574 angle_yaw = RCREND_evaluate( yaw_av ) ;
02575
02576 /* create and display the rendered image */
02577
02578 if( new_data_loaded || /* new data was loaded here */
02579 CREN_needs_data(gcr.rh) || /* renderer isn't ready yet */
02580 (func_computed && func_showthru) ){ /* am doing ShowThru images */
02581
02582 func_showthru_pass = 0 ; /* always a good value */
02583 RCREND_reload_renderer() ; /* load data from arrays here into renderer */
02584 new_data_loaded = 0 ;
02585 }
02586
02587 CREN_set_angles(gcr.rh, angle_yaw * PI / 180,
02588 angle_pitch * PI / 180,
02589 angle_roll * PI / 180 );
02590 CREN_set_min_opacity(gcr.rh, 0.05 * current_cutout_state.opacity_scale);
02591
02592 rim = CREN_render( gcr.rh, &gcr.rotm );
02593
02594 if( rim == NULL ){
02595 (void) MCW_popup_message( draw_pb ,
02596 "** Rendering fails, **\n"
02597 "** for unknown reasons **\n\n"
02598 "** Sorry -- RWCox **\n" ,
02599 MCW_USER_KILL | MCW_TIMER_KILL ) ;
02600 XBell(dc->display,100) ;
02601 MCW_invert_widget(draw_pb) ; EXRETURN ;
02602 }
02603
02604 /* 07 Jan 2000 - make the showthru image now, if needed */
02605
02606 #if 1
02607 # define STCOM(x) (x)
02608 #else
02609 # define STCOM(x) (((x) + ((x)<<1))>>2) /* 0.75 * x */
02610 #endif
02611
02612 if( func_computed && func_showthru ){
02613 MRI_IMAGE * cim ;
02614
02615 float ccf=func_showthru_fac , ggf ; /* 10 Jan 2000: merger factors */
02616 int ccm=0 ;
02617
02618 if( ccf < 0.0 || ccf > 1.0 ) ccf = 1.0 ;
02619 ggf = 1.0 - ccf ;
02620 ccm = (ccf != 1.0) ;
02621
02622 func_showthru_pass = 1 ;
02623 RCREND_reload_renderer() ; /* load showthru data */
02624
02625 #if 0 /* dcue not yet implemented in CREN 24 Jan 2002 */
02626 if( func_showthru_dcue )
02627 MREN_depth_cue( render_handle , 1 ) ; /* 11 Sep 2001 */
02628 #endif
02629
02630 cim = CREN_render( gcr.rh, &gcr.rotm ); /* render it */
02631
02632 #if 0
02633 if( func_showthru_dcue )
02634 MREN_depth_cue( render_handle , 0 ) ; /* 11 Sep 2001 */
02635 #endif
02636
02637 if( cim == NULL ){
02638 (void) MCW_popup_message( draw_pb ,
02639 "** ShowThru Rendering fails, **\n"
02640 "** for unknown reasons **\n\n"
02641 "** Sorry about that -- RWCox **\n" ,
02642 MCW_USER_KILL | MCW_TIMER_KILL ) ;
02643 XBell(dc->display,100) ;
02644 } else {
02645 byte *rar=MRI_BYTE_PTR(rim), *car=MRI_RGB_PTR(cim); /* composite it */
02646 int ii, i3;
02647
02648 for( ii=0 ; ii < cim->nvox ; ii++ ){
02649 i3 = ii * 3;
02650 if( car[i3] == 0 && car[i3+1] == 0 && car[i3+2] == 0 ){
02651 car[i3] = car[i3+1] = car[i3+2] = STCOM( rar[i3] );
02652 } else if( ccm ){ /* 10 Jan 2000 */
02653 car[i3] = ccf*car[i3] + ggf*rar[i3] ; /* merge color */
02654 car[i3+1] = ccf*car[i3+1] + ggf*rar[i3] ; /* & grayscale */
02655 car[i3+2] = ccf*car[i3+2] + ggf*rar[i3] ;
02656 }
02657 }
02658
02659 mri_free(rim) ; rim = cim ;
02660 }
02661 }
02662
02663 if ( xhair_flag )
02664 {
02665 get_xhair_points( &gcr.xhseg, gcr.mset );
02666 xhairs_to_image_pts( &gcr.xhseg, gcr.mset );
02667
02668 /* now (0,0,z) means the center of the projected image */
02669
02670 rotate_xhair_points( &gcr.xhseg, &gcr.rotm );
02671 draw_xhairs_in_image( &gcr.xhseg, rim );
02672 }
02673
02674 /* 20 Dec 1999 - restrict colors, if ordered and needed */
02675
02676 if( rim->kind == MRI_rgb && wfunc_color_pbar != NULL && func_mixshade >= NOSHADE ){
02677
02678 int ii ; byte * bp = MRI_RGB_PTR(rim) ;
02679
02680 for( ii=0 ; ii < rim->nvox ; ii++ )
02681 if( bp[3*ii] != 0 || bp[3*ii+1] != 0 || bp[3*ii+2] != 0 )
02682 DC_rgb_to_ovrgb( dc ,
02683 wfunc_color_pbar->num_panes , wfunc_color_pbar->ov_index ,
02684 (func_mixshade == NOMIX) ,
02685 bp+(3*ii) , bp+(3*ii+1) , bp+(3*ii+2) ) ;
02686 }
02687
02688 #ifdef USE_SCRIPTING
02689 if( last_rendered_state == NULL )
02690 last_rendered_state = (RENDER_state *) malloc(sizeof(RENDER_state)) ;
02691
02692 RCREND_widgets_to_state( last_rendered_state ) ;
02693 #endif
02694
02695 mri_add_name( accum_label , rim ) ; /* 17 Jun 2005 */
02696
02697 if( accum_flag || automate_flag ){
02698 if( renderings == NULL ){
02699 INIT_IMARR( renderings ) ;
02700
02701 #ifdef USE_SCRIPTING
02702 INIT_RSA( renderings_state ) ; script_load_last = -1 ;
02703 #endif
02704 }
02705 ADDTO_IMARR( renderings , rim ) ;
02706 #ifdef USE_SCRIPTING
02707 { RENDER_state * rs = (RENDER_state *) malloc(sizeof(RENDER_state)) ;
02708
02709 *rs = *last_rendered_state ;
02710 ADDTO_RSA( renderings_state , rs ) ;
02711 }
02712 #endif
02713 } else {
02714
02715 DESTROY_IMARR( renderings ) ;
02716 INIT_IMARR( renderings ) ;
02717 ADDTO_IMARR( renderings , rim ) ;
02718 #ifdef USE_SCRIPTING
02719 { RENDER_state * rs = (RENDER_state *) malloc(sizeof(RENDER_state)) ;
02720 DESTROY_RSA( renderings_state ) ;
02721 INIT_RSA( renderings_state ) ; script_load_last = -1 ;
02722 *rs = *last_rendered_state ;
02723 ADDTO_RSA( renderings_state , rs ) ;
02724 }
02725 #endif
02726 }
02727
02728 RCREND_update_imseq() ;
02729
02730 MCW_invert_widget(draw_pb) ;
02731 FIX_SCALE_SIZE ; /* 09 May 2001 */
02732 EXRETURN ;
02733 }
|
|
||||||||||||||||
|
Definition at line 4020 of file plug_crender.c. References client_data, dynamic_flag, ENTRY, and MCW_val_bbox(). Referenced by RCREND_make_widgets().
04021 {
04022 ENTRY( "RCREND_dynamic_CB" );
04023
04024 dynamic_flag = MCW_val_bbox( dynamic_bbox ) ;
04025
04026 EXRETURN ;
04027 }
|
|
|
Definition at line 8849 of file plug_crender.c. References angle_fstep, cutout_fstep, ENTRY, MCW_arrowval::fstep, getenv(), MAX_CUTOUTS, RCREND_cutout::param_av, shell, and strtod(). Referenced by PLUGIN_init().
08850 {
08851 char * ept ;
08852 float val ;
08853
08854 ENTRY( "RCREND_environ_CB" );
08855
08856 /* sanity checks */
08857
08858 if( ename == NULL ) EXRETURN ;
08859 ept = getenv(ename) ;
08860 if( ept == NULL ) EXRETURN ;
08861
08862 /*---*/
08863
08864 if( strcmp(ename,"AFNI_RENDER_ANGLE_DELTA") == 0 ){
08865 val = strtod(ept,NULL) ;
08866 if( val > 0.0 && val < 100.0 ){
08867 angle_fstep = val ;
08868 if( shell != NULL )
08869 roll_av->fstep = pitch_av->fstep = yaw_av->fstep = val ;
08870 }
08871 }
08872
08873 /*---*/
08874
08875 else if( strcmp(ename,"AFNI_RENDER_CUTOUT_DELTA") == 0 ){
08876 val = strtod(ept,NULL) ;
08877 if( val > 0.0 && val < 100.0 ){
08878 int ii ;
08879 cutout_fstep = val ;
08880 if( shell != NULL ){
08881 for( ii=0 ; ii < MAX_CUTOUTS ; ii++ )
08882 cutouts[ii]->param_av->fstep = val ;
08883 }
08884 }
08885 }
08886
08887 /*---*/
08888
08889 EXRETURN ;
08890 }
|
|
|
Definition at line 4784 of file plug_crender.c. References atoz, AV_assign_fval(), ENTRY, free, MCW_arrowval::fval, PARSER_evaluate_one(), PARSER_generate_code(), r_debug_check(), RETURN, strtod(), MCW_arrowval::wtext, and XtFree. Referenced by RCREND_draw_CB(), RCREND_load_cutout_state(), and RCREND_textact_CB().
04785 {
04786 PARSER_code * pcode ;
04787 char * str , * cpt ;
04788 float val ;
04789
04790 ENTRY( "RCREND_evaluate" );
04791
04792 /* get the string to convert */
04793
04794 if( av == NULL ) RETURN(0.0) ; /* these cases should */
04795 if( av->wtext == NULL ) RETURN(av->fval) ; /* never happen */
04796
04797 str = XmTextFieldGetString( av->wtext ) ;
04798 if( str == NULL || str[0] == '\0' ){ XtFree(str) ; RETURN(0.0) ; }
04799
04800 /* rcr - until I make a button for this... */
04801 if ( r_debug_check( &gcr_debug, str ) ) /* if this is a debug action */
04802 {
04803 XtFree(str); /* free the string, and */
04804 RETURN(av->fval); /* return the previous value */
04805 }
04806
04807 /* try a regular numerical conversion */
04808
04809 val = strtod( str , &cpt ) ;
04810
04811 for( ; *cpt != '\0' && isspace(*cpt) ; cpt++ ) ; /* skip blanks */
04812
04813 if( *cpt == '\0' ){ XtFree(str); AV_assign_fval(av,val); RETURN(val); }
04814
04815 /* try to parse an expression */
04816
04817 pcode = PARSER_generate_code( str ) ;
04818 if( pcode == NULL ){ XtFree(str) ; RETURN(0.0) ; }
04819
04820 val = PARSER_evaluate_one( pcode , atoz ) ; free(pcode) ;
04821
04822 XtFree(str) ; RETURN(val);
04823 }
|
|
||||||||||||||||
|
Definition at line 3437 of file plug_crender.c. References AV_fval_to_char(), AV_SENSITIZE, choose_pb, destroy_CREN_renderer(), MCW_DC::display, DSET_BRICK_FACTOR, dset_ival, DSET_NVALS, DSET_NX, DSET_NY, DSET_NZ, dset_title, dsl, ENTRY, fd, FREE_VOLUMES, func_cmap_set, THD_3dim_dataset::idcode, info_lab, INVALIDATE_OVERLAY, MCW_choose_cbs::ival, MAX, MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, ndsl, new_dset, new_fset, npixels, PLUTO_find_dset(), POPDOWN_strlist_chooser, RCREND_choose_av_label_CB(), RCREND_reload_dataset(), refit_MCW_optmenu(), renderer_open, CR_data::rh, THD_MAX_NAME, and TURNOFF_OVERLAY_WIDGETS. Referenced by RCREND_choose_CB(), and RCREND_state_to_widgets().
03438 {
03439 int id = cbs->ival ;
03440 THD_3dim_dataset * qset ;
03441 XmString xstr ;
03442 char str[2*THD_MAX_NAME] ;
03443 float fac ;
03444
03445 ENTRY( "RCREND_finalize_dset_CB" );
03446
03447 /* check for errors */
03448
03449 if( ! renderer_open ){ POPDOWN_strlist_chooser ; XBell(dc->display,100) ; EXRETURN ; }
03450
03451 if( id < 0 || id >= ndsl ){ XBell(dc->display,100) ; EXRETURN ; }
03452
03453 qset = PLUTO_find_dset( &(dsl[id].idcode) ) ; /* the new dataset? */
03454
03455 if( qset == NULL ){ XBell(dc->display,100) ; EXRETURN ; }
03456
03457 /* if there was an existing renderer, kill it off */
03458
03459 if( gcr.rh != NULL ){
03460 destroy_CREN_renderer(gcr.rh) ;
03461 gcr.rh = NULL ; func_cmap_set = 0 ;
03462 }
03463 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
03464
03465 /* accept this dataset */
03466
03467 dset = qset ;
03468
03469 dset_idc = qset->idcode ; /* 31 Mar 1999 */
03470
03471 npixels = 256 ; /* size of image to render */
03472 npixels = MAX( npixels , DSET_NX(dset) ) ;
03473 npixels = MAX( npixels , DSET_NY(dset) ) ;
03474 npixels = MAX( npixels , DSET_NZ(dset) ) ;
03475
03476 /* refit the sub-brick selector menu */
03477
03478 if( dset_ival >= DSET_NVALS(dset) ) dset_ival = DSET_NVALS(dset)-1 ;
03479
03480 refit_MCW_optmenu( choose_av ,
03481 0 , /* new minval */
03482 DSET_NVALS(dset)-1 , /* new maxval */
03483 dset_ival , /* new inival */
03484 0 , /* new decim? */
03485 RCREND_choose_av_label_CB , /* text routine */
03486 dset /* text data */
03487 ) ;
03488
03489 AV_SENSITIZE( choose_av , (DSET_NVALS(dset) > 1) ) ;
03490
03491 /* write the informational label */
03492
03493 strcpy( dset_title , dsl[id].title ) ;
03494 fac = DSET_BRICK_FACTOR(dset,dset_ival) ;
03495
03496 if( fac == 0.0 || fac == 1.0 ){
03497 strcpy(str,dset_title) ;
03498 } else {
03499 char abuf[16] ;
03500 AV_fval_to_char( fac , abuf ) ;
03501 sprintf(str,"%s [* %s]", dset_title , abuf ) ;
03502 }
03503 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
03504 XtVaSetValues( info_lab , XmNlabelString , xstr , NULL ) ;
03505 XmStringFree(xstr) ;
03506
03507 /* if the existing overlay dataset doesn't match dset, warn the user */
03508
03509 if( func_dset != NULL && ( DSET_NX(dset) != DSET_NX(func_dset) ||
03510 DSET_NY(dset) != DSET_NY(func_dset) ||
03511 DSET_NZ(dset) != DSET_NZ(func_dset) ) ){
03512
03513 #if 0 /* don't need to invalidate, just warn user rickr - 2002.07.18 */
03514 INVALIDATE_OVERLAY ;
03515 func_dset = NULL ;
03516 TURNOFF_OVERLAY_WIDGETS ;
03517 #endif
03518
03519 /* just warn user rickr 2002.07.18 */
03520 (void) MCW_popup_message( choose_pb ,
03521 " \n"
03522 "** Warning: **\n"
03523 "** new underlay dataset does **\n"
03524 "** not match dimensions of **\n"
03525 "** existing overlay dataset. **\n",
03526 MCW_USER_KILL | MCW_TIMER_KILL ) ;
03527 }
03528
03529 if ( func_dset != NULL ) /* we may need to resample functional overlay */
03530 new_fset = 1;
03531
03532 /* read the new data */
03533 new_dset = 1; /* flag it as new */
03534 RCREND_reload_dataset() ; /* load the data */
03535
03536 EXRETURN ;
03537 }
|
|
||||||||||||||||
|
Definition at line 3539 of file plug_crender.c. References AFNI_hintize_pbar(), AV_fval_to_char(), AV_SENSITIZE, MCW_DC::display, DSET_BRICK_FACTOR, DSET_NVALS, dsl, ENTRY, fd, FREE_VOLUMES, func_color_ival, func_dset_title, FUNC_RANGE, func_thresh_ival, THD_3dim_dataset::idcode, INVALIDATE_OVERLAY, MCW_choose_cbs::ival, ndsl, new_fset, PLUTO_find_dset(), POPDOWN_strlist_chooser, RCREND_autorange_label(), RCREND_choose_av_label_CB(), RCREND_range_label(), RCREND_reload_dataset(), RCREND_set_thr_pval(), refit_MCW_optmenu(), renderer_open, THD_MAX_NAME, MCW_bbox::wbut, wfunc_info_lab, and wfunc_range_label. Referenced by RCREND_choose_CB(), and RCREND_state_to_widgets().
03540 {
03541 int id = cbs->ival ;
03542 THD_3dim_dataset * qset , * oset ;
03543 XmString xstr ;
03544 char str[2*THD_MAX_NAME] ;
03545 float fac ;
03546
03547 ENTRY( "RCREND_finalize_func_CB" );
03548
03549 /* check for errors */
03550
03551 if( ! renderer_open ){ POPDOWN_strlist_chooser ; XBell(dc->display,100) ; EXRETURN ; }
03552
03553 if( id < 0 || id >= ndsl ){ XBell(dc->display,100) ; EXRETURN ; }
03554
03555 qset = PLUTO_find_dset( &(dsl[id].idcode) ) ; /* the new dataset? */
03556
03557 if( qset == NULL ){ XBell(dc->display,100) ; EXRETURN ; }
03558
03559 /* accept this dataset */
03560
03561 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
03562
03563 oset = func_dset ;
03564 func_dset = qset ;
03565 func_dset_idc = qset->idcode ; /* 31 Mar 1999 */
03566
03567 /* refit the sub-brick selector menus */
03568
03569 if( oset == NULL ){ func_color_ival = 0 ; func_thresh_ival = 1 ; }
03570
03571 if( func_color_ival >= DSET_NVALS(func_dset) )
03572 func_color_ival = DSET_NVALS(func_dset)-1;
03573
03574 refit_MCW_optmenu( wfunc_color_av ,
03575 0 , /* new minval */
03576 DSET_NVALS(func_dset)-1 , /* new maxval */
03577 func_color_ival , /* new inival */
03578 0 , /* new decim? */
03579 RCREND_choose_av_label_CB , /* text routine */
03580 func_dset /* text data */
03581 ) ;
03582
03583 AV_SENSITIZE( wfunc_color_av , (DSET_NVALS(func_dset) > 1) ) ;
03584
03585 if( func_thresh_ival >= DSET_NVALS(func_dset) )
03586 func_thresh_ival = DSET_NVALS(func_dset)-1;
03587
03588 refit_MCW_optmenu( wfunc_thresh_av ,
03589 0 , /* new minval */
03590 DSET_NVALS(func_dset)-1 , /* new maxval */
03591 func_thresh_ival , /* new inival */
03592 0 , /* new decim? */
03593 RCREND_choose_av_label_CB , /* text routine */
03594 func_dset /* text data */
03595 ) ;
03596
03597 AV_SENSITIZE( wfunc_thresh_av , (DSET_NVALS(func_dset) > 1) ) ;
03598
03599 /* write the informational label */
03600
03601 strcpy( func_dset_title , dsl[id].title ) ;
03602 fac = DSET_BRICK_FACTOR(func_dset,func_color_ival) ;
03603
03604 if( fac == 0.0 || fac == 1.0 ){
03605 strcpy(str,func_dset_title) ;
03606 } else {
03607 char abuf[16] ;
03608 AV_fval_to_char( fac , abuf ) ;
03609 sprintf(str,"%s [* %s]", func_dset_title , abuf ) ;
03610 }
03611 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
03612 XtVaSetValues( wfunc_info_lab , XmNlabelString , xstr , NULL ) ;
03613 XmStringFree(xstr) ;
03614
03615 /* fix the range labels */
03616
03617 xstr = RCREND_range_label() ;
03618 XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ;
03619 XmStringFree(xstr) ;
03620
03621 xstr = RCREND_autorange_label() ;
03622 XtVaSetValues( wfunc_range_bbox->wbut[0], XmNlabelString,xstr , NULL ) ;
03623 XmStringFree(xstr) ;
03624
03625 /* fix the p-value label */
03626
03627 RCREND_set_thr_pval() ;
03628
03629 /* read the new data */
03630
03631 new_fset = 1 ; /* flag it as new */
03632 RCREND_reload_dataset() ; /* load the data */
03633
03634 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Jul 2001 */
03635
03636 EXRETURN ;
03637 }
|
|
||||||||||||||||
|
Definition at line 6778 of file plug_crender.c. References MCW_choose_cbs::cval, ENTRY, free, getenv(), malloc, MCW_pbar_to_mri(), mcwCR_string, mri_free(), mri_write_pnm(), POPDOWN_string_chooser, MCW_choose_cbs::reason, renderer_open, and THD_filename_ok(). Referenced by RCREND_pbarmenu_CB().
06779 {
06780 Three_D_View *im3d = (Three_D_View *) cd ;
06781 char *fname , *ptr ;
06782 int ll , nx=20 , ny=256 ;
06783 MRI_IMAGE * im ;
06784
06785 ENTRY( "RCREND_finalize_saveim_CB" );
06786
06787 if( !renderer_open || cbs->reason != mcwCR_string ||
06788 cbs->cval == NULL || (ll=strlen(cbs->cval)) == 0 ) EXRETURN;
06789
06790 fname = (char *) malloc( sizeof(char) * (ll+8) ) ;
06791 strcpy( fname , cbs->cval ) ;
06792
06793 if( ll > 240 || ! THD_filename_ok(fname) ){free(fname); EXRETURN;}
06794
06795 ptr = strstr(fname,".ppm") ;
06796 if( ptr == NULL ) ptr = strstr(fname,".pnm") ;
06797 if( ptr == NULL ) ptr = strstr(fname,".jpg") ;
06798 if( ptr == NULL ) strcat(fname,".ppm") ;
06799
06800 fprintf(stderr,"Writing palette image to %s\n",fname) ;
06801
06802 ptr = getenv( "AFNI_PBAR_IMXY" );
06803 if( ptr != NULL ){
06804 ll = sscanf( ptr , "%dx%d" , &nx , &ny ) ;
06805 if( ll < 2 || nx < 1 || ny < 32 ){ nx=20; ny=256; }
06806 }
06807
06808 im = MCW_pbar_to_mri( wfunc_color_pbar , nx,ny ) ;
06809 mri_write_pnm( fname , im ) ;
06810
06811 POPDOWN_string_chooser; mri_free(im); free(fname); EXRETURN;
06812 }
|
|
|
Definition at line 5303 of file plug_crender.c. References anat_frame, AV_SENSITIZE, AVOPT_columnize, MCW_pbar::bigmode, COLSIZE, ENTRY, func_clusters_rmm, func_clusters_vmul, func_range, func_threshold, getenv(), GPT, MCW_pbar::hide_changes, INIT_panes_hide, INIT_panes_pos, INIT_panes_sgn, LABEL_ARG, MAX_CUTOUTS, MCW_AV_downup, MCW_AV_editext, MCW_AV_edittext, MCW_AV_notext, MCW_AV_optmenu, MCW_AV_readtext, MCW_BB_check, MCW_BB_noframe, MCW_reghelp_children(), MCW_reghint_children(), MCW_register_hint(), MCW_set_bbox(), MCW_widget_geom(), MCW_pbar::mode, new_MCW_arrowval(), new_MCW_bbox(), new_MCW_pbar(), NO_DATASET_STRING, MCW_pbar::npan_save, NPANE_MAX, NPANE_MIN, PALTAB_NUM, MCW_pbar::parent, PBAR_set_bigmode(), pmax, pmin, RCREND_autorange_label(), RCREND_choose_av_CB(), RCREND_choose_CB(), RCREND_clusters_av_CB(), RCREND_color_bbox_CB(), RCREND_color_opacity_CB(), RCREND_color_pbar_CB(), RCREND_colornum_av_CB(), RCREND_cut_overlay_CB(), RCREND_do_ST_CB(), RCREND_dummy_av_label, RCREND_kill_clusters_CB(), RCREND_mixshade_av_CB(), RCREND_palette_av_CB(), RCREND_pbarmenu_CB(), RCREND_pbarmenu_EV(), RCREND_range_av_CB(), RCREND_range_bbox_CB(), RCREND_range_label(), RCREND_see_overlay_CB(), RCREND_see_ttatlas_CB(), RCREND_setup_color_pbar(), RCREND_ST_factor_CB(), RCREND_thr_scale_CB(), RCREND_thr_scale_drag_CB(), RCREND_thresh_tlabel_CB(), RCREND_thresh_top_CB(), refit_MCW_optmenu(), SAVEUNDERIZE, SEP_HOR, SEP_VER, THR_PVAL_LABEL_NONE, THR_TOP_EXPON, top_rowcol, TT_retrieve_atlas(), VISIBILIZE_WHEN_MAPPED, MCW_bbox::wbut, wfunc_buck_frame, wfunc_buck_rowcol, wfunc_choices_label, wfunc_choices_rowcol, wfunc_choose_pb, wfunc_color_label, wfunc_color_rowcol, wfunc_frame, wfunc_info_lab, wfunc_opacity_frame, wfunc_opacity_rowcol, wfunc_pbar_equalize_pb, wfunc_pbar_menu, wfunc_pbar_saveim_pb, wfunc_pbar_settop_pb, wfunc_range_frame, wfunc_range_label, wfunc_range_rowcol, wfunc_rowcol, wfunc_thr_label, wfunc_thr_pval_label, wfunc_thr_rowcol, wfunc_thr_scale, wfunc_uber_rowcol, wfunc_vsep, MCW_bbox::wrowcol, and MCW_arrowval::wrowcol. Referenced by RCREND_make_widgets(), and RCREND_open_func_CB().
05304 {
05305 XmString xstr ;
05306 Widget wqqq ;
05307 int sel_height ;
05308
05309 ENTRY( "RCREND_func_widgets" );
05310
05311 /* top level managers */
05312
05313 wfunc_vsep = SEP_VER(top_rowcol) ;
05314
05315 wfunc_frame = XtVaCreateWidget(
05316 "AFNI" , xmFrameWidgetClass , top_rowcol ,
05317 XmNshadowType , XmSHADOW_ETCHED_IN ,
05318 XmNshadowThickness , 5 ,
05319 XmNtraversalOn , False ,
05320 XmNinitialResourcesPersistent , False ,
05321 NULL ) ;
05322
05323 wfunc_uber_rowcol = XtVaCreateWidget(
05324 "AFNI" , xmRowColumnWidgetClass , wfunc_frame ,
05325 XmNorientation , XmVERTICAL ,
05326 XmNpacking , XmPACK_TIGHT ,
05327 XmNtraversalOn , False ,
05328 XmNinitialResourcesPersistent , False ,
05329 NULL ) ;
05330
05331 xstr = XmStringCreateLtoR( NO_DATASET_STRING ,
05332 XmFONTLIST_DEFAULT_TAG ) ;
05333 wfunc_info_lab = XtVaCreateManagedWidget(
05334 "AFNI" , xmLabelWidgetClass , wfunc_uber_rowcol ,
05335 XmNlabelString , xstr ,
05336 XmNrecomputeSize , False ,
05337 XmNinitialResourcesPersistent , False ,
05338 NULL ) ;
05339 XmStringFree(xstr) ;
05340
05341 SEP_HOR(wfunc_uber_rowcol) ;
05342
05343 xstr = XmStringCreateLtoR( "Choose Overlay Dataset" , XmFONTLIST_DEFAULT_TAG ) ;
05344 wfunc_choose_pb = XtVaCreateManagedWidget(
05345 "AFNI" , xmPushButtonWidgetClass , wfunc_uber_rowcol ,
05346 XmNalignment , XmALIGNMENT_CENTER ,
05347 XmNlabelString , xstr ,
05348 XmNtraversalOn , False ,
05349 XmNinitialResourcesPersistent , False ,
05350 NULL ) ;
05351 XmStringFree(xstr) ;
05352 XtAddCallback( wfunc_choose_pb, XmNactivateCallback, RCREND_choose_CB, NULL ) ;
05353
05354 SEP_HOR(wfunc_uber_rowcol) ;
05355
05356 wfunc_rowcol = XtVaCreateWidget(
05357 "AFNI" , xmRowColumnWidgetClass , wfunc_uber_rowcol ,
05358 XmNorientation , XmHORIZONTAL ,
05359 XmNpacking , XmPACK_TIGHT ,
05360 XmNtraversalOn , False ,
05361 XmNinitialResourcesPersistent , False ,
05362 NULL ) ;
05363
05364 /*---------------------------- 1st column: threshold stuff ----------------------------*/
05365
05366 wfunc_thr_rowcol = XtVaCreateWidget(
05367 "AFNI" , xmRowColumnWidgetClass , wfunc_rowcol ,
05368 XmNorientation , XmVERTICAL ,
05369 XmNpacking , XmPACK_TIGHT ,
05370 XmNmarginHeight, 0 ,
05371 XmNmarginWidth , 0 ,
05372 XmNtraversalOn , False ,
05373 XmNinitialResourcesPersistent , False ,
05374 NULL ) ;
05375
05376 xstr = XmStringCreateLtoR( "Thresh" , XmFONTLIST_DEFAULT_TAG ) ;
05377 wfunc_thr_label = XtVaCreateManagedWidget(
05378 "AFNI" , xmLabelWidgetClass , wfunc_thr_rowcol ,
05379 XmNlabelString , xstr ,
05380 XmNrecomputeSize , False ,
05381 XmNinitialResourcesPersistent , False ,
05382 NULL ) ;
05383 XmStringFree(xstr) ;
05384
05385 { int smax , stop , decim , sstep ; /* 30 Nov 1997: */
05386 decim = THR_TOP_EXPON ; /* compute parameters */
05387 smax = (int)( pow(10.0,decim) + 0.001 ) ; /* for scale display. */
05388 stop = smax - 1 ;
05389 sstep = smax / 1000 ; if( sstep < 1 ) sstep = 1 ;
05390 { char *eee = getenv("AFNI_THRESH_BIGSTEP") ; /* 09 May 2003 */
05391 if( eee != NULL ){ int iq=strtol(eee,NULL,10); if(iq > 0) sstep=iq; }
05392 }
05393
05394 #ifdef BOXUP_SCALE
05395 wqqq = XtVaCreateManagedWidget(
05396 "AFNI" , xmFrameWidgetClass , wfunc_thr_rowcol ,
05397 XmNshadowType , XmSHADOW_ETCHED_IN ,
05398 XmNtraversalOn , False ,
05399 XmNinitialResourcesPersistent , False ,
05400 NULL ) ;
05401 #else
05402 wqqq = wfunc_thr_rowcol ;
05403 #endif
05404
05405 #if 1
05406 MCW_widget_geom( anat_frame , &sel_height , NULL,NULL,NULL ) ;
05407 sel_height -= (74 + 24*MAX_CUTOUTS) ; /* shorter allows for widgets below */
05408 #else
05409 sel_height = 290 ; /* a hardwired approach */
05410 #endif
05411
05412 wfunc_thr_scale =
05413 XtVaCreateManagedWidget(
05414 "scale" , xmScaleWidgetClass , wqqq ,
05415 XmNminimum , 0 ,
05416 XmNmaximum , stop ,
05417 XmNscaleMultiple , sstep ,
05418 XmNdecimalPoints , decim ,
05419 XmNshowValue , True ,
05420 XmNvalue , (int)(smax*func_threshold) ,
05421 XmNorientation , XmVERTICAL ,
05422 XmNheight , sel_height ,
05423 XmNborderWidth , 0 ,
05424 XmNtraversalOn , False ,
05425 XmNinitialResourcesPersistent , False ,
05426 NULL ) ;
05427 }
05428
05429 #ifdef FIX_SCALE_SIZE_PROBLEM
05430 XtVaSetValues( wfunc_thr_scale , XmNuserData , (XtPointer) sel_height , NULL ) ;
05431 #endif
05432
05433 XtAddCallback( wfunc_thr_scale , XmNvalueChangedCallback ,
05434 RCREND_thr_scale_CB , NULL ) ;
05435
05436 XtAddCallback( wfunc_thr_scale , XmNdragCallback ,
05437 RCREND_thr_scale_drag_CB , NULL ) ;
05438
05439 /** label for computed p-value, under scale **/
05440
05441 xstr = XmStringCreateLtoR( THR_PVAL_LABEL_NONE , XmFONTLIST_DEFAULT_TAG ) ;
05442 wfunc_thr_pval_label =
05443 XtVaCreateManagedWidget(
05444 "AFNI" , xmLabelWidgetClass , wfunc_thr_rowcol ,
05445 XmNlabelString , xstr ,
05446 XmNrecomputeSize , False ,
05447 XmNinitialResourcesPersistent , False ,
05448 NULL ) ;
05449 XmStringFree(xstr) ;
05450
05451 /** optmenu to choose top value for scale **/
05452
05453 wfunc_thr_top_av = new_MCW_arrowval( wfunc_thr_rowcol ,
05454 "**" ,
05455 MCW_AV_optmenu ,
05456 0,THR_TOP_EXPON,0 ,
05457 MCW_AV_notext , 0 ,
05458 RCREND_thresh_top_CB , NULL ,
05459 RCREND_thresh_tlabel_CB , NULL ) ;
05460 XtManageChild(wfunc_thr_rowcol) ;
05461
05462 /*--------------- column 2: color chooser stuff ------------------------------*/
05463
05464 wfunc_color_rowcol =
05465 XtVaCreateWidget(
05466 "AFNI" , xmRowColumnWidgetClass , wfunc_rowcol ,
05467 XmNorientation , XmVERTICAL ,
05468 XmNmarginHeight, 0 ,
05469 XmNmarginWidth , 0 ,
05470 XmNpacking , XmPACK_TIGHT ,
05471 XmNtraversalOn , False ,
05472 XmNinitialResourcesPersistent , False ,
05473 NULL ) ;
05474
05475 xstr = XmStringCreateLtoR( "Color" , XmFONTLIST_DEFAULT_TAG ) ;
05476 wfunc_color_label =
05477 XtVaCreateManagedWidget(
05478 "AFNI" , xmLabelWidgetClass , wfunc_color_rowcol ,
05479 XmNlabelString , xstr ,
05480 XmNinitialResourcesPersistent , False ,
05481 NULL ) ;
05482 XmStringFree(xstr) ;
05483
05484 /**-- Popup menu to control some facets of the pbar --**/
05485
05486 wfunc_pbar_menu = XmCreatePopupMenu( wfunc_color_label , "menu" , NULL , 0 ) ;
05487
05488 SAVEUNDERIZE(XtParent(wfunc_pbar_menu)) ; /* 27 Feb 2001 */
05489
05490 VISIBILIZE_WHEN_MAPPED(wfunc_pbar_menu) ;
05491
05492 XtInsertEventHandler( wfunc_color_label , /* handle events in label */
05493
05494 0
05495 | ButtonPressMask /* button presses */
05496 ,
05497 FALSE , /* nonmaskable events? */
05498 RCREND_pbarmenu_EV , /* handler */
05499 NULL , /* client data */
05500 XtListTail /* last in queue */
05501 ) ;
05502
05503 (void) XtVaCreateManagedWidget(
05504 "dialog" , xmLabelWidgetClass , wfunc_pbar_menu ,
05505 LABEL_ARG("-- Cancel --") ,
05506 XmNrecomputeSize , False ,
05507 XmNinitialResourcesPersistent , False ,
05508 NULL ) ;
05509
05510 (void) XtVaCreateManagedWidget(
05511 "dialog" , xmSeparatorWidgetClass , wfunc_pbar_menu ,
05512 XmNseparatorType , XmSINGLE_LINE , NULL ) ;
05513
05514 wfunc_pbar_equalize_pb =
05515 XtVaCreateManagedWidget(
05516 "dialog" , xmPushButtonWidgetClass , wfunc_pbar_menu ,
05517 LABEL_ARG("Equalize Spacing") ,
05518 XmNmarginHeight , 0 ,
05519 XmNtraversalOn , False ,
05520 XmNinitialResourcesPersistent , False ,
05521 NULL ) ;
05522
05523 XtAddCallback( wfunc_pbar_equalize_pb , XmNactivateCallback ,
05524 RCREND_pbarmenu_CB , im3d ) ;
05525
05526 wfunc_pbar_settop_pb =
05527 XtVaCreateManagedWidget(
05528 "dialog" , xmPushButtonWidgetClass , wfunc_pbar_menu ,
05529 LABEL_ARG("Set Top Value") ,
05530 XmNmarginHeight , 0 ,
05531 XmNtraversalOn , False ,
05532 XmNinitialResourcesPersistent , False ,
05533 NULL ) ;
05534
05535 XtAddCallback( wfunc_pbar_settop_pb , XmNactivateCallback ,
05536 RCREND_pbarmenu_CB , im3d ) ;
05537
05538 /* 15 Jun 2000: image save button */
05539
05540 wfunc_pbar_saveim_pb =
05541 XtVaCreateManagedWidget(
05542 "dialog" , xmPushButtonWidgetClass , wfunc_pbar_menu ,
05543 LABEL_ARG("Save to PPM") ,
05544 XmNmarginHeight , 0 ,
05545 XmNtraversalOn , False ,
05546 XmNinitialResourcesPersistent , False ,
05547 NULL ) ;
05548
05549 MCW_register_hint( wfunc_pbar_saveim_pb ,
05550 "Write out as image file" );
05551
05552 XtAddCallback( wfunc_pbar_saveim_pb , XmNactivateCallback ,
05553 RCREND_pbarmenu_CB , im3d ) ;
05554
05555 (void) XtVaCreateManagedWidget(
05556 "dialog" , xmSeparatorWidgetClass , wfunc_pbar_menu ,
05557 XmNseparatorType , XmSINGLE_LINE , NULL ) ;
05558
05559 { static char * pb_dum_label[2] = { "Dummy" , "Dummy" } ;
05560 wfunc_pbar_palette_av = new_MCW_arrowval(
05561 wfunc_pbar_menu , /* parent Widget */
05562 "Set Pal " , /* label */
05563 MCW_AV_optmenu , /* option menu style */
05564 0 , /* first option */
05565 1 , /* last option */
05566 0 , /* initial selection */
05567 MCW_AV_readtext , /* ignored but needed */
05568 0 , /* ditto */
05569 RCREND_palette_av_CB , /* callback when changed */
05570 NULL , /* data for above */
05571 MCW_av_substring_CB , /* text creation routine */
05572 pb_dum_label /* data for above */
05573 ) ;
05574 }
05575
05576 (void) XtVaCreateManagedWidget(
05577 "dialog" , xmSeparatorWidgetClass , wfunc_pbar_menu ,
05578 XmNseparatorType , XmSINGLE_LINE , NULL ) ;
05579
05580 { static char * pb_dum_label[3] = { "Normal" , "NoShade" , "NoMix" } ; /* 21 Dec 1999 */
05581 wfunc_pbar_mixshade_av = new_MCW_arrowval(
05582 wfunc_pbar_menu , /* parent Widget */
05583 "Mixing " , /* label */
05584 MCW_AV_optmenu , /* option menu style */
05585 0 , /* first option */
05586 2 , /* last option */
05587 0 , /* initial selection */
05588 MCW_AV_readtext , /* ignored but needed */
05589 0 , /* ditto */
05590 RCREND_mixshade_av_CB , /* callback when changed */
05591 NULL , /* data for above */
05592 MCW_av_substring_CB , /* text creation routine */
05593 pb_dum_label /* data for above */
05594 ) ;
05595 }
05596
05597 if( GPT != NULL && PALTAB_NUM(GPT) > 0 ){
05598 refit_MCW_optmenu( wfunc_pbar_palette_av ,
05599 0 , /* new minval */
05600 PALTAB_NUM(GPT)-1 , /* new maxval */
05601 0 , /* new inival */
05602 0 , /* new decim? */
05603 AFNI_palette_label_CB , /* text routine */
05604 NULL /* text data */
05605 ) ;
05606 } else {
05607 XtUnmanageChild( wfunc_pbar_palette_av->wrowcol ) ;
05608 }
05609
05610 /**-- Color pbar to control intensity-to-color mapping --**/
05611
05612 { float pmin=-1.0 , pmax=1.0 ;
05613 int npane = INIT_panes_sgn ; /* from afni.h */
05614
05615 /* 22->15 v1.8 [rickr] */
05616 sel_height -= 15 ; /* a little shorter than the scale */
05617
05618 wfunc_color_pbar = new_MCW_pbar(
05619 wfunc_color_rowcol , /* parent */
05620 dc , /* display */
05621 npane , /* number panes */
05622 sel_height / npane , /* init pane height */
05623 pmin , pmax , /* value range */
05624 RCREND_color_pbar_CB , /* callback */
05625 NULL ) ; /* callback data */
05626
05627 wfunc_color_pbar->parent = NULL ;
05628 wfunc_color_pbar->mode = 0 ;
05629 wfunc_color_pbar->bigmode = 1 ; /* v1.8 [rickr] */
05630 wfunc_color_pbar->npan_save[0] = INIT_panes_sgn ; /* from afni.h */
05631 wfunc_color_pbar->npan_save[1] = INIT_panes_pos ;
05632 wfunc_color_pbar->hide_changes = INIT_panes_hide ;
05633
05634 RCREND_setup_color_pbar() ; /* other setup stuff */
05635
05636 (void) XtVaCreateManagedWidget(
05637 "AFNI" , xmSeparatorWidgetClass , wfunc_color_rowcol ,
05638 XmNseparatorType , XmSINGLE_LINE ,
05639 NULL ) ;
05640
05641 wfunc_colornum_av = new_MCW_arrowval(
05642 wfunc_color_rowcol ,
05643 "#" ,
05644 MCW_AV_optmenu ,
05645 NPANE_MIN , NPANE_MAX+1 ,
05646 wfunc_color_pbar->bigmode ? NPANE_MAX+1 : npane ,
05647 MCW_AV_notext , 0 ,
05648 RCREND_colornum_av_CB , NULL ,
05649 AFNI_inten_av_texter,NULL ) ;
05650
05651 PBAR_set_bigmode( wfunc_color_pbar , 1 , pmin,pmax ) ; /* v1.8 [rickr] */
05652
05653 if( NPANE_MAX >= COLSIZE )
05654 AVOPT_columnize( wfunc_colornum_av , 1+(NPANE_MAX+1)/COLSIZE ) ;
05655 }
05656
05657 /*--- toggle button to control posfunc option for pbar ---*/
05658
05659 { char * color_bbox_label[1] = { "Pos?" } ;
05660 wfunc_color_bbox = new_MCW_bbox( wfunc_color_rowcol ,
05661 1 , color_bbox_label ,
05662 MCW_BB_check ,
05663 MCW_BB_noframe ,
05664 RCREND_color_bbox_CB , NULL ) ;
05665 }
05666
05667 XtManageChild(wfunc_color_rowcol) ;
05668
05669 /*---------- Column 3: Choices controls -------------------------------*/
05670
05671 wfunc_choices_rowcol =
05672 XtVaCreateWidget(
05673 "AFNI" , xmRowColumnWidgetClass , wfunc_rowcol ,
05674 XmNorientation , XmVERTICAL ,
05675 XmNpacking , XmPACK_TIGHT ,
05676 XmNmarginHeight, 0 ,
05677 XmNmarginWidth , 0 ,
05678 XmNtraversalOn , False ,
05679 XmNinitialResourcesPersistent , False ,
05680 NULL ) ;
05681
05682 #if 0 /* 2002 Mar 05: rickr - make space for showthru factor */
05683 xstr = XmStringCreateLtoR( "Choices" , XmFONTLIST_DEFAULT_TAG ) ;
05684 wfunc_choices_label =
05685 XtVaCreateManagedWidget(
05686 "AFNI" , xmLabelWidgetClass , wfunc_choices_rowcol ,
05687 XmNlabelString , xstr ,
05688 XmNinitialResourcesPersistent , False ,
05689 NULL ) ;
05690 XmStringFree(xstr) ;
05691 #endif
05692
05693 /*--- 30 Nov 1997: sub-brick menus ---*/
05694
05695 wfunc_buck_frame =
05696 XtVaCreateWidget(
05697 "AFNI" , xmFrameWidgetClass , wfunc_choices_rowcol ,
05698 XmNshadowType , XmSHADOW_ETCHED_IN ,
05699 XmNtraversalOn , False ,
05700 XmNinitialResourcesPersistent , False ,
05701 NULL ) ;
05702
05703 wfunc_buck_rowcol =
05704 XtVaCreateWidget(
05705 "AFNI" , xmRowColumnWidgetClass , wfunc_buck_frame ,
05706 XmNorientation , XmVERTICAL ,
05707 XmNpacking , XmPACK_TIGHT ,
05708 XmNtraversalOn , False ,
05709 XmNinitialResourcesPersistent , False ,
05710 NULL ) ;
05711
05712 /*--- Sub-brick selectors for Color & Threshold ---*/
05713 /* (Actual labels are set when used) */
05714
05715 wfunc_color_av = new_MCW_arrowval(
05716 wfunc_buck_rowcol , /* parent Widget */
05717 "Color" , /* label */
05718 MCW_AV_optmenu , /* option menu style */
05719 0 , /* first option */
05720 1 , /* last option */
05721 0 , /* initial selection */
05722 MCW_AV_readtext , /* ignored but needed */
05723 0 , /* decimal shift */
05724 RCREND_choose_av_CB , /* callback when changed */
05725 NULL , /* data for above */
05726 MCW_av_substring_CB , /* text creation routine */
05727 RCREND_dummy_av_label /* data for above */
05728 ) ;
05729
05730 wfunc_thresh_av = new_MCW_arrowval(
05731 wfunc_buck_rowcol , /* parent Widget */
05732 "Thr " , /* label */
05733 MCW_AV_optmenu , /* option menu style */
05734 0 , /* first option */
05735 1 , /* last option */
05736 0 , /* initial selection */
05737 MCW_AV_readtext , /* ignored but needed */
05738 0 , /* decimal shift */
05739 RCREND_choose_av_CB , /* callback when changed */
05740 NULL , /* data for above */
05741 MCW_av_substring_CB , /* text creation routine */
05742 RCREND_dummy_av_label /* data for above */
05743 ) ;
05744
05745 XtManageChild( wfunc_buck_rowcol ) ;
05746 XtManageChild( wfunc_buck_frame ) ;
05747
05748 AV_SENSITIZE( wfunc_color_av , False ) ; /* turn these off for now */
05749 AV_SENSITIZE( wfunc_thresh_av , False ) ;
05750
05751 /*--- menus to control opacity of color ---*/
05752
05753 wfunc_opacity_frame =
05754 XtVaCreateWidget(
05755 "AFNI" , xmFrameWidgetClass , wfunc_choices_rowcol ,
05756 XmNshadowType , XmSHADOW_ETCHED_IN ,
05757 XmNtraversalOn , False ,
05758 XmNinitialResourcesPersistent , False ,
05759 NULL ) ;
05760
05761 wfunc_opacity_rowcol =
05762 XtVaCreateWidget(
05763 "AFNI" , xmRowColumnWidgetClass , wfunc_opacity_frame ,
05764 XmNorientation , XmVERTICAL ,
05765 XmNpacking , XmPACK_TIGHT ,
05766 XmNtraversalOn , False ,
05767 XmNinitialResourcesPersistent , False ,
05768 NULL ) ;
05769
05770 { static char * func_opacity_labels[11] = { /* 11 Sep 2001: add ST+Dcue */
05771 "Underlay" , /* 07 Feb 2002: remove both STs */
05772 " 0.1" , " 0.2" , " 0.3" , " 0.4" , " 0.5" ,
05773 " 0.6" , " 0.7" , " 0.8" , " 0.9" , " 1.0" } ;
05774
05775 wfunc_opacity_av = new_MCW_arrowval(
05776 wfunc_opacity_rowcol , /* parent Widget */
05777 "Color Opacity " , /* label */
05778 MCW_AV_optmenu , /* option menu style */
05779 0 , /* first option */
05780 10 , /* last option - was 12 */
05781 5 , /* initial selection */
05782 MCW_AV_readtext , /* ignored but needed */
05783 0 , /* decimal shift */
05784 RCREND_color_opacity_CB , /* callback when changed */
05785 NULL , /* data for above */
05786 MCW_av_substring_CB , /* text creation routine */
05787 func_opacity_labels /* data for above */
05788 ) ;
05789 }
05790
05791 /*--- ShowThru toggle button and ST factor pulldown menu */
05792
05793 { /* 2002 Mar 06 */
05794 static char * ST_factor_labels[21] = {
05795 " 0%", " 5%", " 10%", " 15%", " 20%", " 25%",
05796 " 30%", " 35%", " 40%", " 45%", " 50%", " 55%",
05797 " 60%", " 65%", " 70%", " 75%", " 80%", " 85%",
05798 " 90%", " 95%", "100%" };
05799
05800 char * color_ST_label[1] = { "ShowThru Mode " };
05801 Widget wrc;
05802
05803 wrc = XtVaCreateWidget(
05804 "AFNI", xmRowColumnWidgetClass, wfunc_opacity_rowcol,
05805 XmNorientation, XmHORIZONTAL,
05806 XmNpacking, XmPACK_TIGHT,
05807 XmNmarginHeight, 0,
05808 XmNmarginWidth, 0,
05809 XmNtraversalOn, False,
05810 XmNinitialResourcesPersistent, False,
05811 NULL );
05812
05813 wfunc_do_ST_bbox = new_MCW_bbox( wrc, 1, color_ST_label,
05814 MCW_BB_check, MCW_BB_noframe,
05815 RCREND_do_ST_CB, NULL );
05816
05817 wfunc_ST_fac_av = new_MCW_arrowval(
05818 wrc, /* parent Widget */
05819 "@", /* label */
05820 MCW_AV_optmenu, /* option menu style */
05821 0, /* first option */
05822 20, /* last option */
05823 15, /* initial selection */
05824 MCW_AV_readtext, /* ignored but needed */
05825 0, /* decimal shift */
05826 RCREND_ST_factor_CB, /* callback when changed */
05827 NULL, /* data for above */
05828 MCW_av_substring_CB, /* text creation routine */
05829 ST_factor_labels /* data for above */
05830 );
05831
05832 MCW_reghint_children( wfunc_do_ST_bbox->wrowcol,
05833 "render ShowThru images - see BHelp" );
05834 MCW_reghelp_children( wfunc_do_ST_bbox->wrowcol,
05835 "Use this button to toggle the ShowThru option.\n"
05836 "In ShowThru mode, the overlay image is rendered\n"
05837 "separately from the underlay (and each with its\n"
05838 "respective opacity factor). Then the two are\n"
05839 "mixed according to the ShowThru percentage."
05840 ) ;
05841
05842 MCW_reghint_children( wfunc_ST_fac_av->wrowcol, "set ShowThru factor" );
05843 MCW_reghelp_children( wfunc_ST_fac_av->wrowcol,
05844 "This selects the percentage of the overlay image\n"
05845 "(and resulting percentage of the underlay image)\n"
05846 "used in producing the ShowThru image."
05847 ) ;
05848
05849 XtSetSensitive( wfunc_ST_fac_av->wrowcol, False );
05850
05851 XtManageChild(wrc);
05852 }
05853
05854 /*--- toggle switches to control if we see function ---*/
05855
05856 { char * see_overlay_label[1] = { "See Overlay" } ;
05857 char * cut_overlay_label[1] = { "Cutout Overlay" } ;
05858 char * kill_clusters_label[1] = { "Remove Small Clusters" } ;
05859 char * see_ttatlas_label[1] = { "TT Atlas" } ; /* 24 Jul 2001 */
05860 Widget wrc ;
05861
05862 wrc = XtVaCreateWidget( /* 24 Jul 2001 */
05863 "AFNI" , xmRowColumnWidgetClass , wfunc_opacity_rowcol ,
05864 XmNorientation , XmHORIZONTAL ,
05865 XmNpacking , XmPACK_TIGHT ,
05866 XmNmarginHeight, 0 ,
05867 XmNmarginWidth , 0 ,
05868 XmNtraversalOn , False ,
05869 XmNinitialResourcesPersistent , False ,
05870 NULL ) ;
05871
05872 wfunc_see_overlay_bbox = new_MCW_bbox( wrc ,
05873 1 , see_overlay_label ,
05874 MCW_BB_check ,
05875 MCW_BB_noframe ,
05876 RCREND_see_overlay_CB , NULL ) ;
05877
05878 wfunc_see_ttatlas_bbox = new_MCW_bbox( wrc , /* 24 Jul 2001 */
05879 1 , see_ttatlas_label ,
05880 MCW_BB_check ,
05881 MCW_BB_noframe ,
05882 RCREND_see_ttatlas_CB , NULL ) ;
05883
05884 if( TT_retrieve_atlas() == NULL )
05885 XtSetSensitive( wfunc_see_ttatlas_bbox->wrowcol , False ) ;
05886
05887 XtManageChild(wrc) ; /* 24 Jul 2001 */
05888
05889 wfunc_cut_overlay_bbox = new_MCW_bbox( wfunc_opacity_rowcol ,
05890 1 , cut_overlay_label ,
05891 MCW_BB_check ,
05892 MCW_BB_noframe ,
05893 RCREND_cut_overlay_CB , NULL ) ;
05894
05895 wfunc_kill_clusters_bbox = new_MCW_bbox( wfunc_opacity_rowcol ,
05896 1 , kill_clusters_label ,
05897 MCW_BB_check ,
05898 MCW_BB_noframe ,
05899 RCREND_kill_clusters_CB , NULL ) ;
05900
05901 wfunc_clusters_rmm_av =
05902 new_MCW_arrowval( wfunc_opacity_rowcol , " rmm " , MCW_AV_downup ,
05903 0 , 99 , (int)(10*func_clusters_rmm) ,
05904 MCW_AV_edittext , 1 ,
05905 RCREND_clusters_av_CB,NULL,NULL,NULL
05906 ) ;
05907
05908 wfunc_clusters_vmul_av =
05909 new_MCW_arrowval( wfunc_opacity_rowcol , " vmul " , MCW_AV_downup ,
05910 0 , 9999 , (int)(0.1*func_clusters_vmul),
05911 MCW_AV_edittext , -1 ,
05912 RCREND_clusters_av_CB,NULL,NULL,NULL
05913 ) ;
05914
05915 AV_SENSITIZE( wfunc_clusters_rmm_av , False ) ;
05916 AV_SENSITIZE( wfunc_clusters_vmul_av, False ) ;
05917 }
05918
05919 XtManageChild( wfunc_opacity_rowcol ) ;
05920 XtManageChild( wfunc_opacity_frame ) ;
05921
05922 /*--- range controls ---*/
05923
05924 wfunc_range_frame =
05925 XtVaCreateManagedWidget(
05926 "AFNI" , xmFrameWidgetClass , wfunc_choices_rowcol ,
05927 XmNshadowType , XmSHADOW_ETCHED_IN ,
05928 XmNtraversalOn , False ,
05929 XmNinitialResourcesPersistent , False ,
05930 NULL ) ;
05931
05932 wfunc_range_rowcol =
05933 XtVaCreateWidget(
05934 "AFNI" , xmRowColumnWidgetClass , wfunc_range_frame ,
05935 XmNorientation , XmVERTICAL ,
05936 XmNpacking , XmPACK_TIGHT ,
05937 XmNtraversalOn , False ,
05938 XmNinitialResourcesPersistent , False ,
05939 NULL ) ;
05940
05941 /*--- label to show the data ranges from the overlay dataset ---*/
05942
05943 xstr = RCREND_range_label() ; /* make a dummy label */
05944 wfunc_range_label =
05945 XtVaCreateManagedWidget(
05946 "AFNI" , xmLabelWidgetClass , wfunc_range_rowcol ,
05947 XmNrecomputeSize , False ,
05948 XmNlabelString , xstr ,
05949 XmNtraversalOn , False ,
05950 XmNinitialResourcesPersistent , False ,
05951 NULL ) ;
05952 XmStringFree(xstr) ;
05953
05954 /*--- toggle button to control automatic range scaling for pbar ---*/
05955
05956 { char * range_bbox_label[1] = { "autoRange:xxxxxxxxx" } ;
05957
05958 wfunc_range_bbox =
05959 new_MCW_bbox( wfunc_range_rowcol ,
05960 1 , range_bbox_label ,
05961 MCW_BB_check ,
05962 MCW_BB_noframe ,
05963 RCREND_range_bbox_CB , NULL ) ;
05964
05965 MCW_set_bbox( wfunc_range_bbox , 1 ) ;
05966
05967 xstr = RCREND_autorange_label() ;
05968 XtVaSetValues( wfunc_range_bbox->wbut[0], XmNlabelString,xstr , NULL ) ;
05969 XmStringFree(xstr) ;
05970 }
05971
05972 /*--- 30 Mar 2001: put next 2 things in a horizontal rowcol ---*/
05973
05974 wqqq = XtVaCreateWidget(
05975 "dialog" , xmRowColumnWidgetClass , wfunc_range_rowcol ,
05976 XmNorientation , XmHORIZONTAL ,
05977 XmNpacking , XmPACK_TIGHT ,
05978 XmNtraversalOn , False ,
05979 XmNinitialResourcesPersistent , False ,
05980 NULL ) ;
05981
05982 /*--- arrowval to provide user control for pbar scaling ---*/
05983
05984 wfunc_range_av =
05985 new_MCW_arrowval( wqqq , /* parent */
05986 NULL , /* label */
05987 MCW_AV_downup , /* arrow directions */
05988 0 , /* min value */
05989 9999999 , /* max value */
05990 (int)(func_range) , /* init value */
05991 MCW_AV_editext , /* input/output text display */
05992 0 , /* decimal shift */
05993 RCREND_range_av_CB , /* routine to call when button */
05994 NULL , /* is pressed, and its data */
05995 NULL,NULL /* no special display */
05996 ) ;
05997 AV_SENSITIZE( wfunc_range_av , False ) ;
05998
05999 /*--- 30 Mar 2001: rotate pbar ---*/
06000
06001 wfunc_range_rotate_av = new_MCW_arrowval(
06002 wqqq , "Rota" ,
06003 MCW_AV_downup , 0,0,0 ,
06004 MCW_AV_notext , 0 ,
06005 AFNI_range_rotate_av_CB ,
06006 (XtPointer) wfunc_color_pbar ,
06007 NULL,NULL ) ;
06008
06009 XtManageChild( wqqq ) ;
06010 XtManageChild( wfunc_range_rowcol ) ;
06011 XtManageChild( wfunc_range_frame ) ;
06012
06013 XtManageChild( wfunc_choices_rowcol ) ;
06014
06015 XtManageChild( wfunc_rowcol ) ;
06016 XtManageChild( wfunc_uber_rowcol ) ;
06017
06018 #if 0
06019 XtVaSetValues( wfunc_uber_rowcol , XmNresizeWidth , False , NULL ) ;
06020 #endif
06021
06022 EXRETURN ;
06023 }
|
|
||||||||||||
|
Definition at line 4128 of file plug_crender.c. References ENTRY, and FREE_VOLUMES. Referenced by RCREND_make_widgets().
04129 {
04130 ENTRY( "RCREND_graf_CB" );
04131
04132 FREE_VOLUMES ; /* free the volumes, will force reloading at redraw */
04133 EXRETURN ;
04134 }
|
|
||||||||||||||||
|
Definition at line 2739 of file plug_crender.c. References ALLOW_INCROT, client_data, ENTRY, info_lab, new_MCW_textwin(), ONLY_AXIAL, PLUG_CRENDER_VERSION, SCRIPT_DSETS, SCRIPT_GRAFS, TEXT_READONLY, and USE_SCRIPTING.
02740 {
02741 ENTRY( "RCREND_help_CB" );
02742
02743 (void ) new_MCW_textwin( info_lab ,
02744
02745 "++++++++++++++++++ V O L U M E R E N D E R I N G ++++++++++++++++++\n"
02746 "\n"
02747 "This plugin is used to render one brick from a 3D dataset in grayscale\n"
02748 "(the underlay), possibly overlaid in color with another (functional)\n"
02749 "dataset. Although lengthy, this help is still rather terse. Some\n"
02750 "experimentation will be needed to get decent results, since there are\n"
02751 "many controls that affect the way the final images appear.\n"
02752 "\n"
02753 "General Notes:\n"
02754 "--------------\n"
02755 " * To be rendered, an underlay dataset must be stored as bytes or\n"
02756 " shorts (but may have a floating point scaling factor attached).\n"
02757 " The dataset must be stored as axial slices in the 'RAI' \n"
02758 " orientation (x axis is Right-to-Left, y axis is\n"
02759 " Anterior-to-Posterior, and z axis is Inferior-to-Superior).\n"
02760 " This orientation is how datasets are written out in the +acpc\n"
02761 " and +tlrc coordinates -- with axial slices.\n"
02762 /* #ifdef ONLY_AXIAL 25 June, 2002 */
02763 " N.B.: Combining the 3ddup and 3dresample programs makes it\n"
02764 " possible to create an cubical-voxel axially-oriented\n"
02765 " copy of any dataset.\n"
02766 #ifndef ONLY_AXIAL
02767 " N.B.: The requirement that the dataset be stored in axial slices\n"
02768 " has been removed; however, the cutouts will not work\n"
02769 " properly. For example, a 'Superior to' cutout will remove\n"
02770 " voxels along the 3rd axis of a dataset; for a dataset made\n"
02771 " up of sagittal slices, this will result in a 'Left of' or\n"
02772 " a 'Right of' type of cutting.\n"
02773 #endif
02774 "\n"
02775 " * The program 3dIntracranial can be used to remove extra-cranial\n"
02776 " matter from an anatomical dataset.\n"
02777 "\n"
02778 " * Use the Draw button to render an image after making changes\n"
02779 " to the drawing parameters or after closing the image window.\n"
02780 "\n"
02781 " * The 'Reload' button is used to re-copy the dataset brick into\n"
02782 " the renderer. This can be used if you are altering the\n"
02783 " dataset interactively with the Draw Dataset plugin.\n"
02784 " Otherwise, you probably don't need this often, since the reload\n"
02785 " operation will be carried out as needed by the renderer.\n"
02786 "\n"
02787 " * The Interpolation mode determines the type of interpolation\n"
02788 " between two neighbors along a view line.\n"
02789 "\n"
02790 " Neighbor = use the value of the closer neighbor.\n"
02791 " Twostep = if close to a neighbor, use its value.\n"
02792 " Otherwise, use the average of both neighbors.\n"
02793 " Linear = use a distance-weighted average of neighbors.\n"
02794 "\n"
02795 " * If you depress 'See Xhairs', a 3D set of crosshairs\n"
02796 " corresponding to the AFNI focus position will be drawn.\n"
02797 " If you move the crosshairs in one of the AFNI image\n"
02798 " windows, the rendering window is not automatically updated,\n"
02799 " unless the 'DynaDraw' button is also depressed. Otherwise,\n"
02800 " the next time the rendering is redrawn for some other\n"
02801 " reason, the correct crosshair positions will be shown.\n"
02802 " 02 Jun 1999: The renderer will now draw partial crosshair sets,\n"
02803 " as indicated by the 'Xhairs' chooser in the AFNI control\n"
02804 " window from which the renderer was started.\n"
02805 " 08 Mar 2001: Right-clicking (mouse button 3) on this toggle will\n"
02806 " popup a color chooser. If you set the color to something\n"
02807 " besides 'none', AND if you are displaying a color overlay,\n"
02808 " then the crosshairs will be rendered in the overlay (you\n"
02809 " could still choose 'white' for the color, if you like).\n"
02810 " N.B.: If the color opacity is set to 'ShowThru', then the\n"
02811 " crosshairs will show through whatever underlay data\n"
02812 " may be in the way.\n"
02813 " N.B.: If you want only the crosshairs in color, then set the\n"
02814 " theshold on the overlay dataset so high that no actual\n"
02815 " data will show in color. The crosshair overlay will\n"
02816 " still be visible.\n"
02817 " N.B.: If you change the crosshair gap in the AFNI control panel,\n"
02818 " you will have to press 'Reload' in the renderer to force\n"
02819 " a redraw with the new crosshairs.\n"
02820 "\n"
02821 " * If you depress 'DynaDraw', then the image will be re-\n"
02822 " rendered immediately whenever certain actions are taken:\n"
02823 " + The 'See Xhairs' toggle state is changed.\n"
02824 " + A viewing angle is changed by pressing an arrow.\n"
02825 " + A cutout parameter value is changed by pressing an arrow or\n"
02826 " a 'Get' button.\n"
02827 " Changing one of these values by directly typing in the\n"
02828 " corresponding text entry field will NOT force a redraw\n"
02829 " even in DynaDraw mode -- you will have to press 'Draw'.\n"
02830 " Other changes (e.g., altering the opacity graph) will\n"
02831 " not force a dynamic redraw and also require the use\n"
02832 " of the 'Draw' button.\n"
02833 " N.B.: The data entry fields with which DynaDraw and Automate\n"
02834 " interact are displayed with a raised border, unlike\n"
02835 " other data entry fields (e.g., 'Bot').\n"
02836 " N.B.: The default stepsize for the angle and cutout variables\n"
02837 " when an arrow is pressed is 5.0. These values can be\n"
02838 " altered by setting the Unix environment variables\n"
02839 " AFNI_RENDER_ANGLE_DELTA and AFNI_RENDER_CUTOUT_DELTA\n"
02840 " prior to running AFNI. Once AFNI is started, these\n"
02841 " stepsizes can only be altered from the\n"
02842 " 'Datamode->Misc->Edit Environment' menu item.\n"
02843 " N.B.: Other circumstances that will invoke automatic redrawing\n"
02844 " when DynaDraw is depressed include:\n"
02845 " + The crosshairs are moved in an AFNI image window belonging\n"
02846 " to the same controller, AND the 'See Xhairs' button is\n"
02847 " depressed.\n"
02848 " + You are also editing the dataset using the 'Draw Dataset'\n"
02849 " plugin (invoked from the same controller), and you have\n"
02850 " changed the dataset with a drawing operation.\n"
02851 "\n"
02852 " * If you depress 'Accumulate' IN, then rendered images are\n"
02853 " saved as they are computed and can be re-viewed in the\n"
02854 " image display window. If Accumulate is OUT, then only\n"
02855 " the latest image is kept.\n"
02856 " N.B.: The image display window is like an AFNI slice viewing\n"
02857 " window, but the slider control simply lets you scroll\n"
02858 " back through past renderings, not through the spatial\n"
02859 " extent of the dataset in any way. Each additional\n"
02860 " accumulated image appears as the last image in the\n"
02861 " sequence, no matter where you are when 'Draw' activates.\n"
02862 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
02863 "\n"
02864 " * The 'I' toggle left of the 'Roll' button lets you select\n"
02865 " incremental mode for angle changes made with the arrow\n"
02866 " buttons.\n"
02867 " + In incremental mode, the extra rotation implied by\n"
02868 " pressing the arrow button will be around the spatial\n"
02869 " axis corresponding to that button:\n"
02870 " Roll=I-S axis, Pitch=R-L axis, Yaw=A-P axis.\n"
02871 " + In non-incremental mode, the rotation angles are always\n"
02872 " applied in the order Yaw, Pitch, Roll; the result may\n"
02873 " not be intuitive since the SO(3) group is not Abelian.\n"
02874 " + In incremental mode, when you press an angle arrow button,\n"
02875 " new absolute spatial angles corresponding to the changed\n"
02876 " orientation are calculated and put into the Roll, Pitch,\n"
02877 " and Yaw text fields.\n"
02878 " + Incremental rotation mode does not combine with Automate.\n"
02879 #endif /* ALLOW_INCROT */
02880 "\n"
02881 "Brightness and Opacity:\n"
02882 "-----------------------\n"
02883 " * The Min= and Max= values show the range of numbers stored\n"
02884 " in the dataset brick. The brick is copied into internal\n"
02885 " memory for rendering. You can use the 'Bot' and 'Top'\n"
02886 " controls to limit the range of the copied voxel data.\n"
02887 " Anything below 'Bot' will be set to the Bot value, and\n"
02888 " anything above 'Top' will be set to the Top value.\n"
02889 " (If Bot < Min, then Bot is effectively equal to Min;\n"
02890 " if Top > Max, then Top is effectively equal to Max.)\n"
02891 " In this way, you can eliminate the effect of a few extreme\n"
02892 " data values.\n"
02893 "\n"
02894 " * The 'Sqrt Histogram' graph displays the square root of the\n"
02895 " histogram of the dataset brick. (The square root is graphed\n"
02896 " so that small values will be somewhat enhanced in the display.\n"
02897 " Also, the 0 bin value is not used in selecting the scale factor\n"
02898 " for display, since it often is far larger than other bins.)\n"
02899 " The purpose of this histogram is to let you choose good\n"
02900 " values for Bot and Top. After altering Bot and Top, press\n"
02901 " the 'Reload' button to make the histogram graph be redrawn.\n"
02902 "\n"
02903 " * The 'Brightness' and 'Opacity' graphs are used to control\n"
02904 " the mappings from dataset signal level (the numbers stored\n"
02905 " in the voxels) to the grayscale and opacity levels.\n"
02906 " The abscissa represents the copied voxel values, ranging\n"
02907 " the larger of Min or Bot, to the smaller of Max or Top.\n"
02908 " A larger opacity makes a voxel less transparent; for\n"
02909 " example, a high opacity with a low brightness is like\n"
02910 " black barrier in the line of sight. Zero opacity\n"
02911 " means a voxel is transparent and does not contribute to\n"
02912 " the rendered image.\n"
02913 "\n"
02914 " * The ordinate on the 'Brightness' graph ranges from black\n"
02915 " at the bottom to white at the top. The ordinate on the\n"
02916 " 'Opacity' graph ranges from 0 (transparent) to 1 (opaque).\n"
02917 "\n"
02918 " * The 'Opacity Factor' control lets you scale the entire\n"
02919 " underlay opacity down by some constant factor. (However,\n"
02920 " this doesn't seem to be very useful.)\n"
02921 "\n"
02922 "Cutouts:\n"
02923 "--------\n"
02924 " * The 'Cutouts' menu lets you select the number of regions to\n"
02925 " be cut out of the volume prior to rendering (this is done\n"
02926 " by setting the voxel opacity inside each cutout to zero).\n"
02927 " Up to 9 cutouts can be combined at once. There are 21 types\n"
02928 " of cutouts, each of which is controlled by a single parameter.\n"
02929 " For example, the parameter for a 'Right of' cutout is an\n"
02930 " x-coordinate, and all the voxels to the right of this value\n"
02931 " will be included in the cutout.\n"
02932 " N.B.: Right (of midline) = negative x\n"
02933 " Left (of midline) = positive x\n"
02934 " Anterior (to the AC) = negative y\n"
02935 " Posterior (to the AC) = positive y\n"
02936 " Inferior (to the AC-PC) = negative z\n"
02937 " Superior (to the AC-PC) = positive z\n"
02938 "\n"
02939 " * The 'Expr > 0' cutout is a special (and slow) case. Instead\n"
02940 " of a number, you enter an expression (using the 3dcalc\n"
02941 " syntax) containing the symbols 'x', 'y', and 'z', which\n"
02942 " represent the spatial coordinates of each voxel. Voxels\n"
02943 " where the expression evaluates to a positive number will\n"
02944 " be cut out. For example, '900-x*x-y*y-z*z' will cut out\n"
02945 " the INTERIOR of a sphere of radius 30 mm, centered at the\n"
02946 " origin of coordinates; 'x*x+y*y+z*z-900' will remove the\n"
02947 " EXTERIOR of this sphere.\n"
02948 "\n"
02949 " * The 'TT Ellipsoid' cutout will remove all voxels exterior to\n"
02950 " an ellipsoid that approximates the outer contour of the\n"
02951 " Talairach-Tournoux atlas, when its 'Percentage' parameter\n"
02952 " is set to 100. Smaller percentages will shrink the ellipsoid\n"
02953 " in towards the center of the brain; large percentages will\n"
02954 " expand it outwards.\n"
02955 "\n"
02956 " * The 12 'Behind', 'Above', etc. cutouts are relative to planes at\n"
02957 " 45 degrees to the standard views. For example, 'Behind AL-PR'\n"
02958 " cuts out behind a slice that starts at Anterior-Left (AL) and\n"
02959 " ends up at Posterior-Right (PR) -- halfway between a coronal\n"
02960 " and a sagittal slice. The simplest way to set the value\n"
02961 " parameter for these (at least to start) is to use 'Get'.\n"
02962 "\n"
02963 " * The 'NonOverlay++' cutout will remove all voxels that would not\n"
02964 " get colored if the overlay were turned on. (If the parameter\n"
02965 " 'Radius++' is positive, then the region is dilated by that\n"
02966 " many mm in all directions.) This can be useful for seeing\n"
02967 " exactly the anatomy that is deemed to be 'active'.\n"
02968 " Notes:\n"
02969 " + If there is no overlay dataset loaded, then this type of cutout\n"
02970 " has no effect.\n"
02971 " + 'Get' does nothing for this type of cutout.\n"
02972 " + Viewing the color overlay with Radius++ set to a positive\n"
02973 " value may be confusing, since the colored voxels will be\n"
02974 " buried inside the visible tissue. The combination of bright\n"
02975 " colors with high color opacity and the use of a small\n"
02976 " underlay opacity factor can make it possible to see the\n"
02977 " color overlay through the translucent surrounding shell\n"
02978 " of thickness Radius++.\n"
02979 "\n"
02980 " * Cutouts can be combined with the 'OR' logic, which means that\n"
02981 " the union of all the specified cutout regions will be\n"
02982 " removed. They can also be combined with the 'AND' logic,\n"
02983 " which means that the intersection of the cutout regions\n"
02984 " will be removed.\n"
02985 " N.B.: If the 'AND' logic is selected, a cutout can still be\n"
02986 " forced to be removed in its entirety using the 'Must Do'\n"
02987 " control. (That is, 'AND' only applies to those that\n"
02988 " do NOT have 'Must Do' selected; 'OR' applies to those\n"
02989 " that DO have 'Must Do' selected.) For an example, try\n"
02990 " combining 'Right of', 'Anterior to', and 'Superior to'\n"
02991 " cutouts first with 'OR', then with 'AND', and finally\n"
02992 " with 'AND' but with the 'Superior to' cutout set to\n"
02993 " 'Must Do'.\n"
02994 "\n"
02995 "Automating the Calculation of Many Renderings:\n"
02996 "----------------------------------------------\n"
02997 " * If you depress 'Automate', then the automatic generation\n"
02998 " of renderings as some parameter varies is enabled.\n"
02999 " The 'Frames' field controls how many renderings will\n"
03000 " be made. To vary some parameter, you type an\n"
03001 " arithmetic expression in the variable 't' in the\n"
03002 " parameter control field. The parameters that can\n"
03003 " be so varied are the viewing angles and the cutout\n"
03004 " parameters (i.e., those whose data entry field is\n"
03005 " drawn with a raised border). For the first rendering\n"
03006 " t=0, for the second t=1, etc., up to t=N-1, where N is\n"
03007 " the number of frames ordered. (You can also use the\n"
03008 " variable 'N' in the parameter expressions.) Once the\n"
03009 " expressions are set up, press 'Compute' to begin\n"
03010 " rendering automation. (Then go have a pumpernickel\n"
03011 " bagel and a cup of lapsang souchong tea.)\n"
03012 "\n"
03013 " * Notes about Automate:\n"
03014 " 1) If none of the parameters has an expression involving\n"
03015 " 't', then each frame in the rendering will be identical,\n"
03016 " but the program won't detect that and you will waste a\n"
03017 " lot of CPU time and memory.\n"
03018 " 2) Use the same expression syntax as with program 3dcalc.\n"
03019 " An illegal expression (e.g., '2+*3t') will silently\n"
03020 " evaluate to zero.\n"
03021 " 3) It is legal to have more than one parameter depend on 't'.\n"
03022 " For example, combining cutouts\n"
03023 " Anterior To: -50+2*t\n"
03024 " Posterior To: -40+2*t\n"
03025 " with the OR logic produces a 10 mm thick coronal slice\n"
03026 " that slides backwards at 2 mm per frame.\n"
03027 " 4) If Accumulate is on, then the frames created by automated\n"
03028 " rendering will be added to the list of stored images. If\n"
03029 " Accumulate is off, the previously saved images will be\n"
03030 " discarded, and only the newly generated image sequence will\n"
03031 " be available for viewing.\n"
03032 " 5) There is no way to save an animation to disk as a unit.\n"
03033 " However, you could use the 'Save:bkg' button on the image\n"
03034 " viewer to save each image to disk in PNM format, then convert\n"
03035 " the collection of individual image files to some movie format,\n"
03036 " using software outside of the AFNI package.\n"
03037 " 6) Using an arrow to change a field with an expression\n"
03038 " entered will result in the destruction of the expression\n"
03039 " string and its replacement by a number.\n"
03040 " 7) At the end of an Automate run, you can convert a field\n"
03041 " with an expression to its final numerical value by\n"
03042 " clicking in the data field and then pressing the\n"
03043 " Enter (or Return) key. In combination with Accumulate,\n"
03044 " this makes it easy to chain together the results of\n"
03045 " multiple automated rendering computations, first varying\n"
03046 " one parameter and then another.\n"
03047 " 8) During an Automate run, a 'CANCEL' button to the right\n"
03048 " of 'Compute' becomes visible. If you press this, then\n"
03049 " the automation will be interrupted when it finishes the\n"
03050 " image on which it is working (you have to wait until\n"
03051 " that time -- pressing the button twice won't help!).\n"
03052 #ifdef USE_SCRIPTING
03053 " Z) The 'Scripts' method, described below, is an entirely\n"
03054 " separate method of generating multiple renderings at once.\n"
03055 #endif
03056 "\n"
03057 "Color Overlays\n"
03058 "--------------\n"
03059 "By pressing the 'Overlay' button, you can access the controls for\n"
03060 "displaying a second dataset in color on top of the underlay dataset.\n"
03061 "(Unlike the underlay dataset, the voxel data in the overlay may be\n"
03062 "stored as floats, as well as shorts or bytes.) The controls are\n"
03063 "designed to be similar to the controls in the 'Define Function'\n"
03064 "control panel in a main AFNI window, and so only the principal\n"
03065 "differences will be explained here.\n"
03066 "\n"
03067 " * One brick ('Color') is chosen to determine the colors shown, and\n"
03068 " another brick ('Thr') to determine which voxels from the overlay\n"
03069 " dataset will be shown at all. If you don't want thresholding\n"
03070 " applied, just set the threshold slider down to 0.\n"
03071 "\n"
03072 " * The 'Color Opacity' control determines how opaque each supra-\n"
03073 " threshold voxel will be. If it is set to 'Underlay', then\n"
03074 " the opacity of a colored voxel will be determined from the\n"
03075 " underlay opacity at that location.\n"
03076 "\n"
03077 " * 'ShowThru Mode' is used to toggle whether the color overlay shows\n"
03078 " through the grayscale underlay. This will make the color\n"
03079 " overlay show through the grayscale underlay no matter how far\n"
03080 " it is embedded inside the brain.\n"
03081 " The resulting image is made up of the chosen percentage of the\n"
03082 " overlay image, plus the remaining percentage of the underlay.\n"
03083 " This is done by doing 2 renderings, 1 with the underlay only\n"
03084 " and one with the overlay only. The resulting 2 images are\n"
03085 " then merged. The default merger is to use an overlay pixel\n"
03086 " if it is nonzero, otherwise use the corresponding underlay\n"
03087 " pixel. The ShowThru factor can be used to control the\n"
03088 " merging when the overlay image pixel is nonzero. Suppose\n"
03089 " that its value is denoted by c. Then the merging algorithm,\n"
03090 " at each image pixel, is\n"
03091 " if( overlay == 0 ) pixel = underlay;\n"
03092 " else pixel = c * overlay + (1-c) * underlay;\n"
03093 " I personally like the results with c=0.65.\n"
03094 "\n"
03095 " * 'See Overlay' is used to toggle the color overlay computations\n"
03096 " on and off - it should be pressed IN for the overlay to become\n"
03097 " visible.\n"
03098 " * 'TT Atlas' is used to toggle the overlay of regions from the\n"
03099 " Talairach Atlas on and off. This option only has effect if\n"
03100 " the underlay dataset being viewed in the the +tlrc coordinate\n"
03101 " system and has 1 mm cubical voxels (the default).\n"
03102 "\n"
03103 " * 'Cutout Overlay' determines if the cutout operations affect the\n"
03104 " overlaid voxels. If it is pressed IN, then cutouts will include\n"
03105 " the overlay; if OUT, then colored voxels will hang free in\n"
03106 " empty space where the underlay was cutout beneath them.\n"
03107 " N.B.: If 'Color Opacity' is set to 'Underlay', the cutouts will\n"
03108 " hit the overlay in all cases, since cutouts are implemented\n"
03109 " by setting the opacity of the underlay to zero in the chosen\n"
03110 " regions.\n"
03111 "\n"
03112 " * 'Remove Small Clusters', if pressed IN, will cause clusters\n"
03113 " of voxels below a given threshold volume to be excised before\n"
03114 " rendering. The parameters defining this cluster editing are\n"
03115 " determined by the controls immmediately beneath, which use the\n"
03116 " same conventions as program 3dclust.\n"
03117 "\n"
03118 " * None of the overlay controls are hooked up to 'DynaDraw' or to\n"
03119 " 'Automate'. You must manually press 'Draw' to see the effects\n"
03120 " of changes to these settings.\n"
03121 "\n"
03122 " * A slightly different colormap is used when rendering overlays than\n"
03123 " when only underlays are visible. The result is that the grayscale\n"
03124 " underlay will look a little different between the 'See Overlay'\n"
03125 " IN and OUT conditions. Also, the colormaps are rendered into\n"
03126 " 24 bit RGB images, which might not be faithfully displayed in\n"
03127 " the image window if your system is using an X11 PseudoColor visual\n"
03128 " (the most common display mode). If the 'Save:bkg' button is used\n"
03129 " to save a set of RGB images, they will be saved in their internal\n"
03130 " color resolution (in PPM format); they might appear slightly\n"
03131 " different when viewed outside AFNI (e.g., using program xv).\n"
03132 " N.B.: When viewing an RGB image, most of the image processing\n"
03133 " options available from the 'Disp' control panel do not\n"
03134 " function. 'Sharpen' still works, and is very useful.\n"
03135 "\n"
03136 " * The Button-3 popup menu under the 'Color' label above the pbar\n"
03137 " has an extra menu that lets you control the way in which colors\n"
03138 " are mixed in the final display.\n"
03139 " In the Volpack color computations, colors are composited along rays\n"
03140 " that pass through the volume. This can produce peculiar mixes of\n"
03141 " colors (e.g., a blue voxel behind a red voxel will produce a\n"
03142 " purple shade, which may not be on the color pbar).\n"
03143 " The 'Mixing' menu lets you excise these mixed colors:\n"
03144 " * 'Normal' gives the full range of Volpack generated colors.\n"
03145 " * 'NoShade' means the overlaid colors generated by Volpack\n"
03146 " will be remapped to the set shown on the pbar.\n"
03147 " * 'NoMix' means that the overlay colors rendered will be remapped\n"
03148 " to shades of the set shown on the pbar (that is, the hues will\n"
03149 " be the same, but the intensities will vary).\n"
03150 " N.B.: Volpack controls the color composition along each pixel ray.\n"
03151 " All that these options do is remap the composed colors back to\n"
03152 " a more limited set. If no good match is found, then a gray shade\n"
03153 " with the same intensity is chosen. The results of this remapping\n"
03154 " may or may not look good!\n"
03155 " N.B.: As discussed above, when shown on a PseudoColor display, shaded\n"
03156 " colors may look peculiar, but will be saved to a PPM file\n"
03157 " properly.\n"
03158 " N.B.: You may want to set 'Color Opacity' to 1.0 when using the 'NoMix'\n"
03159 " and 'NoShade' options.\n"
03160 #ifdef USE_SCRIPTING
03161 " N.B.: The setting of the 'Mixing' control is NOT saved or restored by\n"
03162 " any of the 'Scripts' options!\n"
03163 #endif
03164 "\n"
03165 #ifdef USE_SCRIPTING
03166 "Scripts: [July 1999]\n"
03167 "--------\n"
03168 " * This facility, controlled from the 'Scripts' menu button, lets you\n"
03169 " save rendering settings and recall them later. This is useful\n"
03170 " when you want to render multiple datasets in the same fashion.\n"
03171 "\n"
03172 " * 'Save This' will store the current state of the rendering settings\n"
03173 " to a file. Rendering settings are stored in files with suffix\n"
03174 " '.rset', and are ASCII files that can be edited -- with care!\n"
03175 "\n"
03176 " * 'Save Many' will store all the rendering settings used to create\n"
03177 " the currently accumulated images.\n"
03178 "\n"
03179 " * 'Read This' will read one rendering state from a .rset file and\n"
03180 " make the interface widgets reflect that state. Nothing will\n"
03181 " be rendered until you press the 'Draw' button. If the .rset\n"
03182 " file has more than one rendering state (e.g., from ''Save Many')\n"
03183 " you will be asked to choose which state you want to load.\n"
03184 "\n"
03185 " * 'Read & Exec' will read a set of rendering states from a .rset file\n"
03186 " and execute them, producing a new set of images. If more than\n"
03187 " one rendering is being computed, you can use the CANCEL button\n"
03188 " (as in Automate) to stop the rendering.\n"
03189 "\n"
03190 " * The toggle button 'Load Widgets', when activated, will cause the\n"
03191 " interface widgets to be loaded with the rendering state used to\n"
03192 " create the currently visible image. When you move the slider\n"
03193 " to see a different image from the accumulation, the widgets will\n"
03194 " change accordingly. This lets you recall how you created a\n"
03195 " particular image. If this button is deactivated, then the\n"
03196 " widgets will reflect the last image rendered, no matter which\n"
03197 " image is actually visible.\n"
03198 "\n"
03199 " * The toggle button 'Brick Index?' controls whether the sub-brick\n"
03200 " indexes are to be changed when new rendering values are loaded\n"
03201 " via one of the 'Read' buttons, or via the 'Load Widgets' toggle.\n"
03202 #ifdef SCRIPT_GRAFS
03203 "\n"
03204 " * The toggle button 'Alter Grafs?' controls whether the Brightness\n"
03205 " and Opacity interactive graphs are to be restored when new\n"
03206 " rendering values are loaded (via 'Read' or 'Load Widgets').\n"
03207 #endif
03208 #ifdef SCRIPT_DSETS
03209 "\n"
03210 " * The toggle button 'Alter Dsets?' controls whether the datasets\n"
03211 " will be changed (from the dataset ID codes) when new\n"
03212 " rendering values are loaded (via 'Read' or 'Load Widgets').\n"
03213 #endif
03214 "\n"
03215 " N.B.: When you render a new image, it always goes at the END of\n"
03216 " the accumulation, no matter which image you happen to be\n"
03217 " viewing when you press 'Draw', or otherwise cause rendering.\n"
03218 " N.B.: The format of a .rset file is described in the documentation\n"
03219 " file README.render_scripts. By editing such a file, you can\n"
03220 " create a script that can be used to create many renderings\n"
03221 " at once (via the 'Read & Exec' button).\n"
03222 "\n"
03223 #endif /* USE_SCRIPTING */
03224 "Final Notes:\n"
03225 "------------\n"
03226 " * The images produced may look a little blurry. You can use the\n"
03227 " 'Sharpen' option on the image viewer 'Disp' control panel to\n"
03228 " make them look nicer.\n"
03229 "\n"
03230 " * When only one image is rendered (i.e., Accumulate is off), the\n"
03231 " image viewer window does not show the control widgets. The 'Disp'\n"
03232 " controls can be accessed by the combination keypress-mouseclick\n"
03233 " 'Shift-Button3' in the image window, and the 'Save' controls by\n"
03234 " 'Alt-Button3' (some systems don't allow this last combination\n"
03235 " to be detected by the application program; in such a case, you\n"
03236 " must have at least 2 images accumulated to be able to use 'Save').\n"
03237 "\n"
03238 " * This plugin is very CPU and memory intensive, and will not run\n"
03239 " at all decently on a computer with less than 128 MB of RAM.\n"
03240 "------------------------------------------------------------------------\n"
03241 "\n"
03242 "RW Cox, Milwaukee - February 1999 [first version]\n"
03243 " - July 1999 [Scripts]\n"
03244 " - April 2000 [Scripts can change datasets]\n"
03245 "\n"
03246 "RC Reynolds, NIH - " PLUG_CRENDER_VERSION "\n"
03247
03248 , TEXT_READONLY ) ;
03249 EXRETURN ;
03250 }
|
|
||||||||||||||||
|
Definition at line 4988 of file plug_crender.c. References accum_label, automate_flag, MCW_imseq_status::aux, ENTRY, GLOBAL_library, IMARR_COUNT, IMARR_SUBIMAGE, isqCR_getimage, isqCR_getlabel, isqCR_getoverlay, isqCR_getqimage, isqCR_getstatus, MRI_IMAGE::kind, mri_add_name(), mri_to_mri(), mri_to_rgb(), myXtNew, MRI_IMAGE::name, MCW_imseq_status::num_series, MCW_imseq_status::num_total, MCW_imseq_status::parent, RCREND_seq_send_CB(), RCREND_state_to_widgets(), AFNI_library_type::registered_0D, AFNI_library_type::registered_2D, RETURN, RSA_COUNT, RSA_SUBSTATE, script_load, script_load_last, MCW_imseq_status::send_CB, MCW_imseq_status::transforms0D, and MCW_imseq_status::transforms2D. Referenced by RCREND_open_imseq().
04989 {
04990 int ntot = 0 ;
04991
04992 ENTRY( "RCREND_imseq_getim" );
04993
04994 if( renderings != NULL ) ntot = IMARR_COUNT(renderings) ;
04995 if( ntot < 1 ) ntot = 1 ;
04996
04997 /*--- send control info ---*/
04998
04999 if( type == isqCR_getstatus ){
05000 MCW_imseq_status *stat = myXtNew( MCW_imseq_status ); /* will be free-d */
05001 /* when imseq is */
05002 /* destroyed */
05003 stat->num_total = ntot ;
05004 stat->num_series = stat->num_total ;
05005 stat->send_CB = RCREND_seq_send_CB ;
05006 stat->parent = NULL ;
05007 stat->aux = NULL ;
05008
05009 stat->transforms0D = &(GLOBAL_library.registered_0D) ;
05010 stat->transforms2D = &(GLOBAL_library.registered_2D) ;
05011
05012 RETURN((XtPointer)stat);
05013 }
05014
05015 /*--- no overlay, never ---*/
05016
05017 if( type == isqCR_getoverlay ) RETURN(NULL) ;
05018
05019 /*--- label string ---*/
05020
05021 if( type == isqCR_getlabel ){
05022 char *lab=NULL ; MRI_IMAGE *im ;
05023 if( renderings != NULL ){
05024 if( n < 0 ) n = 0 ; else if( n >= ntot ) n = ntot-1 ;
05025 im = IMARR_SUBIMAGE(renderings,n) ;
05026 if( accum_lab_replace ) mri_add_name( accum_label , im ) ;
05027 if( im->name != NULL ) lab = strdup(im->name) ;
05028 }
05029 RETURN(lab) ;
05030 }
05031
05032 /*--- return a copy of a rendered image
05033 (since the imseq will delete it when it is done) ---*/
05034
05035 if( type == isqCR_getimage || type == isqCR_getqimage ){
05036 MRI_IMAGE *im=NULL , *rim ;
05037
05038 if( renderings != NULL ){
05039 if( n < 0 ) n = 0 ; else if( n >= ntot ) n = ntot-1 ;
05040 rim = IMARR_SUBIMAGE(renderings,n) ;
05041 if( any_rgb_images )
05042 im = mri_to_rgb( rim ) ;
05043 else
05044 im = mri_to_mri( rim->kind , rim ) ;
05045
05046 #ifdef USE_SCRIPTING
05047 if( renderings_state != NULL &&
05048 n < RSA_COUNT(renderings_state) &&
05049 ! automate_flag &&
05050 script_load && script_load_last != n ){
05051
05052 RCREND_state_to_widgets( RSA_SUBSTATE(renderings_state,n) ) ;
05053 script_load_last = n ;
05054 }
05055 #endif
05056 }
05057 RETURN((XtPointer)im);
05058 }
05059
05060 RETURN(NULL); /* should not occur, but who knows? */
05061 }
|
|
||||||||||||||||||||||||
|
Compute the changes in the rotation angles if we add an incremental rotation about axis ax (0,1,2) of size th. ---------------------------------------------------------------------------- Definition at line 8957 of file plug_crender.c. References a, c, DMAT_MUL, ENTRY, LOAD_ROT_MAT, RCREND_rotmatrix(), RCREND_rotmatrix_to_angles(), and roll(). Referenced by RCREND_do_incrot().
08959 {
08960 double a,b,c ;
08961 THD_dmat33 qq , rr , pp ;
08962
08963 ENTRY( "RCREND_inc_angles" );
08964
08965 a = *yaw ; b = *pitch ; c = *roll ; /* fetch input angles */
08966 qq = RCREND_rotmatrix( 1,a , 0,b , 2,c ) ; /* compute matrix from angles */
08967
08968 LOAD_ROT_MAT(rr,th,ax) ; /* incremental rotation */
08969
08970 pp = DMAT_MUL(rr,qq) ; /* total rotation matrix */
08971 RCREND_rotmatrix_to_angles( pp , &a,&b,&c ) ; /* get angles from this */
08972 *yaw = a ; *pitch = b ; *roll = c ; /* store angles */
08973 EXRETURN ;
08974 }
|
|
||||||||||||||||
|
callback for above toggle * Definition at line 3706 of file plug_crender.c. References ENTRY, MCW_set_bbox(), MCW_val_bbox(), RCREND_textact_CB(), and MCW_arrowval::wtext. Referenced by RCREND_make_widgets().
03707 {
03708 ENTRY( "RCREND_incrot_CB" );
03709
03710 if( MCW_val_bbox(automate_bbox) ){ /* don't allow incrot */
03711 MCW_set_bbox( incrot_bbox , 0 ) ; /* if Automate is set */
03712 EXRETURN ;
03713 }
03714
03715 /* if incrot is on, then force arrowvals back to numerical
03716 values in case they are now encoded as Automate expressions */
03717
03718 if( MCW_val_bbox(incrot_bbox) ){
03719 RCREND_textact_CB( roll_av ->wtext , (XtPointer)roll_av , NULL ) ;
03720 RCREND_textact_CB( pitch_av->wtext , (XtPointer)pitch_av , NULL ) ;
03721 RCREND_textact_CB( yaw_av ->wtext , (XtPointer)yaw_av , NULL ) ;
03722 }
03723 }
|
|
|
-- Color pbar to control intensity-to-color mapping --* Definition at line 6029 of file plug_crender.c. References CR_bigstuff::b, MCW_pbar::bigcolor, MCW_pbar::bigmode, CR_data::bigstuff, CREN_set_rgbmap(), ENTRY, CR_bigstuff::g, GRAF_SIZE, MCW_DCOV::ncol_ov, NPANE_BIG, MCW_DC::ovc, CR_bigstuff::r, reset_bigcolors(), and CR_data::rh. Referenced by RCREND_open_func_CB().
06030 {
06031 ENTRY( "RCREND_init_cmap" );
06032
06033 reset_bigcolors( wfunc_color_pbar->bigcolor ); /* bigmode v1.8 [rickr] */
06034
06035 if ( wfunc_color_pbar->bigmode )
06036 CREN_set_rgbmap( gcr.rh, NPANE_BIG, gcr.bigstuff.r,
06037 gcr.bigstuff.g, gcr.bigstuff.b );
06038 else
06039 CREN_set_rgbmap( gcr.rh, MIN( dc->ovc->ncol_ov, GRAF_SIZE ),
06040 (dc)->ovc->r_ov, (dc)->ovc->g_ov, (dc)->ovc->b_ov );
06041 EXRETURN ;
06042 }
|
|
||||||||||||
|
Definition at line 3643 of file plug_crender.c. References CREN_set_interp(), ENTRY, interp_ival, MCW_arrowval::ival, and CR_data::rh. Referenced by RCREND_make_widgets().
03644 {
03645 ENTRY( "RCREND_interp_CB" );
03646
03647 interp_ival = av->ival ;
03648 CREN_set_interp( gcr.rh, interp_ival );
03649
03650 EXRETURN ;
03651 }
|
|
||||||||||||||||
|
Definition at line 6598 of file plug_crender.c. References AV_SENSITIZE, CUT_NONOVERLAY, ENTRY, FREE_VOLUMES, func_kill_clusters, INVALIDATE_OVERLAY, MCW_val_bbox(), CUTOUT_state::num, and CUTOUT_state::type. Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06599 {
06600 int cc , newkill = MCW_val_bbox(wfunc_kill_clusters_bbox) ;
06601
06602 ENTRY( "RCREND_kill_clusters_CB" );
06603
06604 if( newkill == func_kill_clusters ) EXRETURN ;
06605
06606 func_kill_clusters = newkill ;
06607
06608 AV_SENSITIZE( wfunc_clusters_rmm_av , newkill ) ;
06609 AV_SENSITIZE( wfunc_clusters_vmul_av, newkill ) ;
06610
06611 INVALIDATE_OVERLAY ;
06612
06613 for( cc=0 ; cc < current_cutout_state.num ; cc++ )
06614 if( current_cutout_state.type[cc] == CUT_NONOVERLAY ){
06615 FREE_VOLUMES ;
06616 break ;
06617 }
06618
06619 EXRETURN ;
06620 }
|
|
|
||||||||||||
|
Definition at line 3281 of file plug_crender.c. References DSET_NX, DSET_NY, DSET_NZ, dsl, THD_session::dsset, ENTRY, ISVALID_DSET, make_PLUGIN_dataset_link(), ndsl, THD_session::num_dsset, nz, Three_D_View::ss_now, USEFUL_DSET, AFNI_view_info::view_type, Three_D_View::vinfo, and XtRealloc. Referenced by RCREND_choose_CB().
03282 {
03283 THD_session * ss = im3d->ss_now ; /* current session */
03284 int vv = im3d->vinfo->view_type ; /* view type */
03285 THD_3dim_dataset * qset ;
03286 int id , nx,ny,nz ;
03287
03288 ENTRY( "RCREND_load_dsl" );
03289
03290 ndsl = 0 ; /* initialize */
03291
03292 if( ISVALID_DSET(mset) ){
03293 nx = DSET_NX(mset) ; ny = DSET_NY(mset) ; nz = DSET_NZ(mset) ;
03294 } else {
03295 nx = ny = nz = 0 ;
03296 }
03297
03298 /* scan datasets */
03299
03300 for( id=0 ; id < ss->num_dsset ; id++ ){
03301 qset = ss->dsset[id][vv] ;
03302
03303 if( ! USEFUL_DSET(qset) ) continue ; /* skip this one */
03304
03305 #if 0 /* overlay grid no longer needs to match underlay rickr 2002.07.18 */
03306 if( nx > 0 && DSET_NX(qset) != nx ) continue ; /* must match */
03307 if( ny > 0 && DSET_NY(qset) != ny ) continue ; /* brick size */
03308 if( nz > 0 && DSET_NZ(qset) != nz ) continue ;
03309 #endif
03310
03311 ndsl++ ;
03312 dsl = (PLUGIN_dataset_link *)
03313 XtRealloc( (char *) dsl , sizeof(PLUGIN_dataset_link)*ndsl ) ;
03314
03315 make_PLUGIN_dataset_link(qset, dsl + (ndsl-1)) ; /* cf. afni_plugin.c */
03316 }
03317
03318 EXRETURN ;
03319 }
|
|
|
Definition at line 874 of file plug_crender.c. References accum_flag, AFNI_controller_label(), AFNI_receive_init(), autocompute_pb, automate_flag, AV_assign_ival(), AV_SENSITIZE, brickfac, CLIP_RANGE, clipbot_faclab, cliptop_faclab, Three_D_View::dc, dset_ival, CR_data::dset_or, dynamic_flag, CR_data::fdm, CR_data::fset_or, IM3D_OPEN, info_lab, MCW_set_bbox(), CR_data::mset, new_data_loaded, NO_DATASET_STRING, plint, PLUTO_cursorize, PLUTO_set_topshell(), range_faclab, range_lab, RCREND_load_cutout_state(), RCREND_make_widgets(), RCREND_numcutout_CB(), RCREND_xhair_recv(), RECEIVE_DRAWNOTICE_MASK, RECEIVE_DSETCHANGE_MASK, RECEIVE_TIMEINDEX_MASK, RECEIVE_VIEWPOINT_MASK, redraw_MCW_pasgraf(), renderer_open, CR_data::rh, RWC_visibilize_widget(), set_MCW_pasgraf(), shell, TURNOFF_OVERLAY_WIDGETS, wfunc_frame, xhair_flag, xhair_ixold, xhair_jyold, xhair_kzold, xhair_ovc, and xhair_recv. Referenced by PLUGIN_init().
00875 {
00876 XmString xstr ;
00877
00878 /*-- sanity checks --*/
00879
00880 if( ! IM3D_OPEN(plint->im3d) ) return "AFNI Controller\nnot opened?!" ;
00881
00882 if( renderer_open ){
00883 XtMapWidget(shell) ;
00884 XRaiseWindow( XtDisplay(shell) , XtWindow(shell) ) ;
00885 return NULL ;
00886 }
00887
00888 im3d = plint->im3d ; /* save for local use */
00889
00890 /*-- create widgets, first time through --*/
00891
00892 if( shell == NULL ){
00893 dc = im3d->dc ; /* save this too */
00894 RCREND_make_widgets() ;
00895 PLUTO_set_topshell( plint , shell ) ; /* 22 Sep 2000 */
00896 RWC_visibilize_widget( shell ) ; /* 27 Sep 2000 */
00897 }
00898
00899 /*-- set titlebar --*/
00900
00901 { char ttl[PLUGIN_STRING_SIZE] ;
00902 sprintf( ttl , "AFNI C Renderer %s" , AFNI_controller_label(im3d) ) ;
00903 XtVaSetValues( shell , XmNtitle , ttl , NULL ) ;
00904 }
00905
00906 /*-- set some widget values --*/
00907
00908 xstr = XmStringCreateLtoR( NO_DATASET_STRING ,
00909 XmFONTLIST_DEFAULT_TAG ) ;
00910 XtVaSetValues( info_lab , XmNlabelString , xstr , NULL ) ;
00911 XmStringFree(xstr) ;
00912
00913 xstr = XmStringCreateLtoR( "Min=?????? Max=??????" ,
00914 XmFONTLIST_DEFAULT_TAG ) ;
00915 XtVaSetValues( range_lab , XmNlabelString , xstr , NULL ) ;
00916 XmStringFree(xstr) ;
00917
00918 AV_assign_ival( clipbot_av , -CLIP_RANGE ) ;
00919 AV_assign_ival( cliptop_av , CLIP_RANGE ) ;
00920
00921 brickfac = 0.0 ;
00922 XtUnmanageChild( range_faclab ) ;
00923 XtUnmanageChild( clipbot_faclab ) ;
00924 XtUnmanageChild( cliptop_faclab ) ;
00925
00926 MCW_set_bbox( xhair_bbox , 0 ) ; xhair_flag = 0 ; xhair_ovc = 0 ;
00927 MCW_set_bbox( dynamic_bbox , 0 ) ; dynamic_flag = 0 ;
00928 MCW_set_bbox( accum_bbox , 0 ) ; accum_flag = 0 ;
00929
00930 MCW_set_bbox( automate_bbox , 0 ) ; automate_flag = 0 ;
00931 XtSetSensitive( autocompute_pb , False ) ;
00932
00933 AV_assign_ival( numcutout_av , 0 ) ; /* turn off cutouts */
00934 RCREND_numcutout_CB( numcutout_av , NULL ) ;
00935
00936 RCREND_load_cutout_state() ; old_cutout_state = current_cutout_state ;
00937
00938 AV_SENSITIZE( choose_av , False ) ;
00939
00940 /*--- some of the function widgets, too ---*/
00941
00942 if( wfunc_frame != NULL ){
00943
00944 TURNOFF_OVERLAY_WIDGETS ;
00945
00946 }
00947
00948 /*-- pop the widget up --*/
00949
00950 XtMapWidget(shell) ;
00951 PLUTO_cursorize(shell) ;
00952
00953 /*-- misc initialization --*/
00954
00955 dset = NULL ; /* not rendering anything */
00956 dset_ival = 0 ; /* if we were, it would be #0 */
00957 renderer_open = 1 ; /* renderer is now open for business */
00958 imseq = NULL ; /* no image window is open yet */
00959 grim = NULL ; /* don't have volumes to render yet */
00960
00961 gcr.rh = NULL; /* no render handle yet */
00962 gcr.dset_or = NULL; /* no reoriented underlay dataset yet */
00963 gcr.fset_or = NULL; /* no reoriented overlay dataset yet */
00964 gcr.mset = NULL; /* no reorientation master dset yet */
00965 gcr.fdm = NULL; /* no master FD_brick yet */
00966
00967 ovim = NULL ; /* no overlay volume yet */
00968 func_dset = NULL ; /* no functional dataset yet */
00969
00970 new_data_loaded = 0 ; /* not yet */
00971
00972 grim_showthru = NULL ; /* 07 Jan 2000 */
00973
00974 set_MCW_pasgraf( his_graf , NULL ) ; /* set histogram graph to 0's */
00975 redraw_MCW_pasgraf( his_graf ) ;
00976
00977 xhair_ixold = -666 ; xhair_jyold = -666 ; xhair_kzold = -666 ;
00978
00979 memset( &gcr_debug, 0, sizeof(gcr_debug) ); /* init debug struct */
00980
00981 /* 29 Mar 1999: register to receive updates from AFNI */
00982
00983 #if 1
00984 xhair_recv = AFNI_receive_init( im3d ,
00985 RECEIVE_VIEWPOINT_MASK
00986 | RECEIVE_DRAWNOTICE_MASK
00987 | RECEIVE_DSETCHANGE_MASK
00988 | RECEIVE_TIMEINDEX_MASK /* 29 Jan 2003 */
00989 , RCREND_xhair_recv , NULL ,
00990 "RCREND_xhair_recv" ) ;
00991 #else
00992 xhair_recv = AFNI_receive_init( im3d ,
00993 RECEIVE_VIEWPOINT_MASK ,
00994 RCREND_xhair_recv , NULL ,
00995 "RCREND_xhair_recv" ) ;
00996 #endif
00997
00998 MPROBE ;
00999 return NULL ;
01000 }
|
|
|
Definition at line 1929 of file plug_crender.c. References anat_rowcol, AVOPT_columnize, COLSIZE, CUT_NONE, cutout_fstep, cutout_param_labels, cutout_type_labels, ENTRY, MCW_arrowval::fstep, RCREND_cutout::hrc, MCW_AV_downup, MCW_AV_noactext, MCW_BB_check, MCW_BB_noframe, MCW_reghelp_children(), MCW_register_help(), MCW_set_bbox(), RCREND_cutout::mustdo_bbox, mustdo_bbox_label, myXtNew, new_MCW_arrowval(), new_MCW_bbox(), new_MCW_optmenu(), NUM_CUTOUT_TYPES, RCREND_cutout::param_av, RCREND_cutout::param_lab, RCREND_cutout_set_CB(), RCREND_cutout_type_CB(), RCREND_param_CB(), RCREND_textact_CB(), RETURN, RCREND_cutout::set_pb, RCREND_cutout::type_av, MCW_bbox::wrowcol, MCW_arrowval::wrowcol, and MCW_arrowval::wtext. Referenced by RCREND_make_widgets().
01930 {
01931 XmString xstr ;
01932 char str[64] ;
01933 RCREND_cutout * rc ;
01934
01935 ENTRY( "RCREND_make_cutout" );
01936
01937 rc = myXtNew(RCREND_cutout) ;
01938
01939 /* horizontal rowcol holds all that follows */
01940
01941 rc->hrc = XtVaCreateWidget(
01942 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01943 XmNorientation , XmHORIZONTAL ,
01944 XmNpacking , XmPACK_TIGHT ,
01945 XmNadjustLast , False ,
01946 XmNadjustMargin, False ,
01947 XmNtraversalOn , False ,
01948 XmNmarginWidth , 0 ,
01949 XmNmarginHeight, 0 ,
01950 XmNinitialResourcesPersistent , False ,
01951 NULL ) ;
01952
01953 /* menu to choose type of cutout */
01954
01955 sprintf(str,"#%d",n+1) ;
01956 rc->type_av = new_MCW_optmenu( rc->hrc , str ,
01957 0 , NUM_CUTOUT_TYPES-1 , CUT_NONE,0 ,
01958 RCREND_cutout_type_CB , NULL ,
01959 MCW_av_substring_CB , cutout_type_labels ) ;
01960 if( NUM_CUTOUT_TYPES >= COLSIZE )
01961 AVOPT_columnize( rc->type_av , 1+(NUM_CUTOUT_TYPES+1)/COLSIZE ) ;
01962
01963 MCW_reghelp_children( rc->type_av->wrowcol ,
01964 "Use this to set the type of cutout\n"
01965 "controlled by this line of inputs." ) ;
01966
01967 /* label to indicate parameter to enter */
01968
01969 xstr = XmStringCreateLtoR( cutout_param_labels[0] , XmFONTLIST_DEFAULT_TAG ) ;
01970 rc->param_lab = XtVaCreateWidget(
01971 "AFNI" , xmLabelWidgetClass , rc->hrc ,
01972 XmNlabelString , xstr ,
01973 XmNinitialResourcesPersistent , False ,
01974 NULL ) ;
01975 XmStringFree(xstr) ;
01976
01977 /* arrowval to enter parameter */
01978
01979 rc->param_av = new_MCW_arrowval( rc->hrc , NULL ,
01980 MCW_AV_downup , -999999,999999,0 ,
01981 MCW_AV_noactext , -1 ,
01982 RCREND_param_CB , NULL , NULL,NULL ) ;
01983 rc->param_av->fstep = cutout_fstep ;
01984 XtAddCallback( rc->param_av->wtext, XmNactivateCallback, RCREND_textact_CB, rc->param_av ) ;
01985 XtUnmanageChild( rc->param_av->wrowcol ) ;
01986
01987 /* button to "Get" parameter from AFNI */
01988
01989 xstr = XmStringCreateLtoR( "Get" , XmFONTLIST_DEFAULT_TAG ) ;
01990 rc->set_pb = XtVaCreateWidget(
01991 "AFNI" , xmPushButtonWidgetClass , rc->hrc ,
01992 XmNlabelString , xstr ,
01993 XmNtraversalOn , False ,
01994 XmNinitialResourcesPersistent , False ,
01995 NULL ) ;
01996 XmStringFree(xstr) ;
01997 XtAddCallback( rc->set_pb, XmNactivateCallback, RCREND_cutout_set_CB, NULL ) ;
01998 MCW_register_help( rc->set_pb , "Use this to get the parameter\n"
01999 "for this cutout from the current\n"
02000 "AFNI crosshair location." ) ;
02001
02002 /* button box to allow "must do" status (overriding "AND") */
02003
02004 rc->mustdo_bbox = new_MCW_bbox( rc->hrc ,
02005 1 , mustdo_bbox_label ,
02006 MCW_BB_check , MCW_BB_noframe ,
02007 NULL , NULL ) ;
02008
02009 MCW_set_bbox( rc->mustdo_bbox , 0 ) ;
02010
02011 MCW_reghelp_children( rc->mustdo_bbox->wrowcol ,
02012 "Use this to force the cutout\n"
02013 "to be performed, even if the\n"
02014 "chosen logic is 'AND'. If the\n"
02015 "logic is 'OR', this does nothing." ) ;
02016
02017 XtUnmanageChild( rc->mustdo_bbox->wrowcol ) ;
02018
02019 XtManageChild( rc->hrc ) ;
02020 RETURN( rc );
02021 }
|
|
|
Definition at line 1038 of file plug_crender.c. References accum_bbox_label, accum_flag, anat_frame, anat_rowcol, angle_fstep, angle_pitch, angle_roll, angle_yaw, autocancel_pb, autocompute_pb, automate_bbox_label, automate_flag, choose_pb, CLIP_RANGE, clipbot_faclab, cliptop_faclab, cutout_logic_labels, MCW_action_item::data, Three_D_View::dc, DC_yokify(), MCW_DC::display, done_pb, draw_pb, dynamic_bbox_label, dynamic_flag, ENTRY, MCW_arrowval::fstep, help_pb, info_lab, interp_ival, interp_mode_strings, logic_cutout, MAX_CUTOUTS, MCW_action_area(), MCW_AV_downup, MCW_AV_editext, MCW_AV_noactext, MCW_AV_optmenu, MCW_AV_readtext, MCW_BB_check, MCW_BB_noframe, MCW_isitmwm, MCW_reghelp_children(), MCW_reghint_children(), MCW_register_help(), MCW_set_bbox(), MCW_pasgraf::mode, NACT, new_MCW_arrowval(), new_MCW_bbox(), new_MCW_graf(), new_MCW_optmenu(), new_MCW_pasgraf(), NO_DATASET_STRING, num_cutouts, PASGRAF_BAR, plint, POPUP_cursorize, range_faclab, range_lab, RCREND_accum_CB(), RCREND_accum_lab_EV(), RCREND_angle_CB(), RCREND_autocancel_CB(), RCREND_autocompute_CB(), RCREND_autoflag_CB(), RCREND_choose_av_CB(), RCREND_choose_CB(), RCREND_clip_CB(), RCREND_done_CB(), RCREND_dummy_av_label, RCREND_dynamic_CB(), RCREND_func_widgets(), RCREND_graf_CB(), RCREND_incrot_CB(), RCREND_interp_CB(), RCREND_make_cutout(), RCREND_NUM_interp_modes, RCREND_numcutout_CB(), RCREND_opacity_scale_CB(), RCREND_open_func_CB(), RCREND_script_menu(), RCREND_textact_CB(), RCREND_xhair_CB(), RCREND_xhair_EV(), reload_pb, SEP_HOR, SEP_VER, shell, top_rowcol, MCW_pasgraf::topform, MCW_graf::topform, WAIT_for_window, MCW_bbox::wbut, wfunc_open_pb, MCW_bbox::wrowcol, MCW_arrowval::wrowcol, MCW_arrowval::wtext, xhair_bbox_label, and xhair_flag. Referenced by RCREND_main().
01039 {
01040 XmString xstr ;
01041 Widget hrc , vrc ;
01042 int ii ;
01043
01044 ENTRY( "RCREND_make_widgets" );
01045
01046 /***=============================================================*/
01047
01048 /*** top level shell for window manager ***/
01049
01050 shell =
01051 XtVaAppCreateShell(
01052 "AFNI" , "AFNI" , topLevelShellWidgetClass , dc->display ,
01053
01054 XmNtitle , "AFNI R" , /* top of window */
01055 XmNiconName , "R" , /* label on icon */
01056 XmNdeleteResponse , XmDO_NOTHING , /* deletion handled below */
01057 XmNallowShellResize , True , /* let code resize shell? */
01058 XmNmappedWhenManaged , False , /* must map it manually */
01059 XmNinitialResourcesPersistent , False ,
01060 NULL ) ;
01061
01062 DC_yokify( shell , dc ) ; /* 14 Sep 1998 */
01063
01064 #ifndef DONT_INSTALL_ICONS
01065 if( afni48_good ) /* set icon pixmap */
01066 XtVaSetValues( shell ,
01067 XmNiconPixmap , afni48_pixmap ,
01068 NULL ) ;
01069 #endif
01070
01071 if( MCW_isitmwm(shell) ) /* remove some MWM functions */
01072 XtVaSetValues( shell ,
01073 XmNmwmFunctions ,
01074 MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE ,
01075 NULL ) ;
01076
01077 XmAddWMProtocolCallback( /* make "Close" window menu work */
01078 shell ,
01079 XmInternAtom( dc->display , "WM_DELETE_WINDOW" , False ) ,
01080 RCREND_done_CB , (XtPointer) plint ) ;
01081
01082 /*** horizontal rowcol to hold ALL interface stuff ***/
01083
01084 top_rowcol = XtVaCreateWidget(
01085 "AFNI" , xmRowColumnWidgetClass , shell ,
01086 XmNorientation , XmHORIZONTAL ,
01087 XmNpacking , XmPACK_TIGHT ,
01088 XmNadjustLast , False ,
01089 XmNadjustMargin , False ,
01090 XmNtraversalOn , False ,
01091 XmNmarginWidth , 0 ,
01092 XmNmarginHeight , 0 ,
01093 XmNinitialResourcesPersistent , False ,
01094 NULL ) ;
01095
01096 /*** vertical rowcolumn widget to hold anat interface stuff ***/
01097
01098 anat_frame = XtVaCreateWidget(
01099 "AFNI" , xmFrameWidgetClass , top_rowcol ,
01100 XmNshadowType , XmSHADOW_ETCHED_IN ,
01101 XmNshadowThickness , 5 ,
01102 XmNtraversalOn , False ,
01103 XmNinitialResourcesPersistent , False ,
01104 NULL ) ;
01105
01106 anat_rowcol = XtVaCreateWidget(
01107 "AFNI" , xmRowColumnWidgetClass , anat_frame ,
01108 XmNpacking , XmPACK_TIGHT ,
01109 XmNorientation , XmVERTICAL ,
01110 XmNadjustLast , False ,
01111 XmNadjustMargin, False ,
01112 XmNtraversalOn , False ,
01113 XmNinitialResourcesPersistent , False ,
01114 NULL ) ;
01115
01116 /***=============================================================*/
01117
01118 /*** label at top to let user know who we are ***/
01119
01120 xstr = XmStringCreateLtoR( NO_DATASET_STRING ,
01121 XmFONTLIST_DEFAULT_TAG ) ;
01122 info_lab = XtVaCreateManagedWidget(
01123 "AFNI" , xmLabelWidgetClass , anat_rowcol ,
01124 XmNlabelString , xstr ,
01125 XmNrecomputeSize , False ,
01126 XmNinitialResourcesPersistent , False ,
01127 NULL ) ;
01128 XmStringFree(xstr) ;
01129 MCW_register_help( info_lab , "Shows dataset being rendered" ) ;
01130
01131 /***** top row of widgets to choose dataset and sub-brick *****/
01132
01133 SEP_HOR(anat_rowcol) ; /* separator widget */
01134
01135 hrc = XtVaCreateWidget(
01136 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01137 XmNorientation , XmHORIZONTAL ,
01138 XmNpacking , XmPACK_TIGHT ,
01139 XmNadjustLast , False ,
01140 XmNadjustMargin , False ,
01141 XmNtraversalOn , False ,
01142 XmNmarginWidth , 0 ,
01143 XmNmarginHeight , 0 ,
01144 XmNinitialResourcesPersistent , False ,
01145 NULL ) ;
01146
01147 /*** button to let user choose dataset to render ***/
01148
01149 xstr = XmStringCreateLtoR( "Choose Underlay Dataset" , XmFONTLIST_DEFAULT_TAG ) ;
01150 choose_pb = XtVaCreateManagedWidget(
01151 "AFNI" , xmPushButtonWidgetClass , hrc ,
01152 XmNalignment , XmALIGNMENT_CENTER ,
01153 XmNlabelString , xstr ,
01154 XmNtraversalOn , False ,
01155 XmNinitialResourcesPersistent , False ,
01156 NULL ) ;
01157 XmStringFree(xstr) ;
01158 XtAddCallback( choose_pb, XmNactivateCallback, RCREND_choose_CB, NULL ) ;
01159 MCW_register_help( choose_pb ,
01160 "Use this to popup a\n"
01161 "'chooser' that lets\n"
01162 "you select which\n"
01163 "dataset to render."
01164 ) ;
01165
01166 /*** menu to let user choose sub-brick to deal with ***/
01167
01168 SEP_VER(hrc) ;
01169
01170 choose_av = new_MCW_arrowval(
01171 hrc , /* parent Widget */
01172 "Brick " , /* label */
01173 MCW_AV_optmenu , /* option menu style */
01174 0 , /* first option */
01175 1 , /* last option */
01176 0 , /* initial selection */
01177 MCW_AV_readtext , /* ignored but needed */
01178 0 , /* decimal shift */
01179 RCREND_choose_av_CB , /* callback when changed */
01180 NULL , /* data for above */
01181 MCW_av_substring_CB , /* text creation routine */
01182 RCREND_dummy_av_label /* data for above */
01183 ) ;
01184
01185 /*** button to open and close overlay panel ***/
01186
01187 SEP_VER(hrc) ;
01188
01189 xstr = XmStringCreateLtoR( "Overlay" , XmFONTLIST_DEFAULT_TAG ) ;
01190 wfunc_open_pb = XtVaCreateManagedWidget(
01191 "AFNI" , xmPushButtonWidgetClass , hrc ,
01192 XmNalignment , XmALIGNMENT_CENTER ,
01193 XmNlabelString , xstr ,
01194 XmNtraversalOn , False ,
01195 XmNinitialResourcesPersistent , False ,
01196 NULL ) ;
01197 XmStringFree(xstr) ;
01198 XtAddCallback( wfunc_open_pb, XmNactivateCallback, RCREND_open_func_CB, NULL ) ;
01199
01200 XtManageChild(hrc) ;
01201
01202 /***=============================================================*/
01203
01204 /*** horizontal rowcol for data value clipping ***/
01205
01206 SEP_HOR(anat_rowcol) ; /* separator */
01207
01208 hrc = XtVaCreateWidget(
01209 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01210 XmNorientation , XmHORIZONTAL ,
01211 XmNpacking , XmPACK_TIGHT ,
01212 XmNadjustLast , False ,
01213 XmNadjustMargin , False ,
01214 XmNtraversalOn , False ,
01215 XmNmarginWidth , 0 ,
01216 XmNmarginHeight , 0 ,
01217 XmNinitialResourcesPersistent , False ,
01218 NULL ) ;
01219
01220 /*** vertical rowcol for dataset range information labels ***/
01221
01222 vrc = XtVaCreateWidget(
01223 "AFNI" , xmRowColumnWidgetClass , hrc ,
01224 XmNpacking , XmPACK_TIGHT ,
01225 XmNorientation , XmVERTICAL ,
01226 XmNadjustLast , False ,
01227 XmNadjustMargin, False ,
01228 XmNtraversalOn , False ,
01229 XmNmarginWidth , 0 ,
01230 XmNmarginHeight, 0 ,
01231 XmNinitialResourcesPersistent , False ,
01232 NULL ) ;
01233
01234 /*** 1st label for dataset range information ***/
01235
01236 xstr = XmStringCreateLtoR( "Min=?????? Max=??????" , XmFONTLIST_DEFAULT_TAG ) ;
01237 range_lab = XtVaCreateManagedWidget(
01238 "AFNI" , xmLabelWidgetClass , vrc ,
01239 XmNlabelString , xstr ,
01240 XmNrecomputeSize , False ,
01241 XmNinitialResourcesPersistent , False ,
01242 NULL ) ;
01243 XmStringFree(xstr) ;
01244
01245 MCW_register_help( range_lab ,
01246 "Shows the range of the data stored\n"
01247 "in the brick voxels.\n"
01248 "\n"
01249 "N.B.: These values are NOT scaled\n"
01250 " by any floating point\n"
01251 " brick scaling factor."
01252 ) ;
01253
01254 /*** 2nd label for scaled dataset range information ***/
01255
01256 xstr = XmStringCreateLtoR( "[123456789 123456789]" , XmFONTLIST_DEFAULT_TAG ) ;
01257 range_faclab = XtVaCreateWidget(
01258 "AFNI" , xmLabelWidgetClass , vrc ,
01259 XmNlabelString , xstr ,
01260 XmNrecomputeSize , False ,
01261 XmNinitialResourcesPersistent , False ,
01262 NULL ) ;
01263 XmStringFree(xstr) ;
01264
01265 MCW_register_help( range_faclab ,
01266 "Shows the range of data stored\n"
01267 "in the brick, this time multiplied\n"
01268 "by the brick's scaling factor."
01269 ) ;
01270
01271 XtManageChild(vrc) ;
01272
01273 SEP_VER(hrc) ;
01274
01275 /*** arrowvals to get dataset clip levels ***/
01276
01277 /*** vertical rowcol for Bot arrowval ***/
01278
01279 vrc = XtVaCreateWidget(
01280 "AFNI" , xmRowColumnWidgetClass , hrc ,
01281 XmNpacking , XmPACK_TIGHT ,
01282 XmNorientation , XmVERTICAL ,
01283 XmNadjustLast , False ,
01284 XmNadjustMargin, False ,
01285 XmNtraversalOn , False ,
01286 XmNmarginWidth , 0 ,
01287 XmNmarginHeight, 0 ,
01288 XmNinitialResourcesPersistent , False ,
01289 NULL ) ;
01290
01291 clipbot_av = new_MCW_arrowval( vrc , "Bot " ,
01292 MCW_AV_downup , -CLIP_RANGE,CLIP_RANGE,-CLIP_RANGE ,
01293 MCW_AV_editext , 0 ,
01294 RCREND_clip_CB , NULL , NULL,NULL ) ;
01295
01296 MCW_reghelp_children( clipbot_av->wrowcol ,
01297 "All (unscaled) voxel values below\n"
01298 "'Bot' will be increased to this\n"
01299 "value. The larger of 'Bot' and\n"
01300 "'Min' is the left edge of the\n"
01301 "brick graphs shown below."
01302 ) ;
01303
01304 xstr = XmStringCreateLtoR( "[-> 123456789]" , XmFONTLIST_DEFAULT_TAG ) ;
01305 clipbot_faclab = XtVaCreateWidget(
01306 "AFNI" , xmLabelWidgetClass , vrc ,
01307 XmNlabelString , xstr ,
01308 XmNrecomputeSize , False ,
01309 XmNinitialResourcesPersistent , False ,
01310 NULL ) ;
01311 XmStringFree(xstr) ;
01312
01313 MCW_register_help( clipbot_faclab ,
01314 "Shows the scaled\nvalue of 'Bot'." ) ;
01315
01316 XtManageChild(vrc) ;
01317
01318 SEP_VER(hrc) ;
01319
01320 /*** vertical rowcol for Top arrowval ***/
01321
01322 vrc = XtVaCreateWidget(
01323 "AFNI" , xmRowColumnWidgetClass , hrc ,
01324 XmNpacking , XmPACK_TIGHT ,
01325 XmNorientation , XmVERTICAL ,
01326 XmNadjustLast , False ,
01327 XmNadjustMargin, False ,
01328 XmNtraversalOn , False ,
01329 XmNmarginWidth , 0 ,
01330 XmNmarginHeight, 0 ,
01331 XmNinitialResourcesPersistent , False ,
01332 NULL ) ;
01333
01334 cliptop_av = new_MCW_arrowval( vrc , "Top " ,
01335 MCW_AV_downup , -CLIP_RANGE,CLIP_RANGE, CLIP_RANGE ,
01336 MCW_AV_editext , 0 ,
01337 RCREND_clip_CB , NULL , NULL,NULL ) ;
01338
01339 MCW_reghelp_children( cliptop_av->wrowcol ,
01340 "All (unscaled) voxel values above\n"
01341 "'Top' will be decreased to this\n"
01342 "value. The smaller of 'Top' and\n"
01343 "'Max' is the right edge of the\n"
01344 "brick graphs shown below."
01345 ) ;
01346
01347 xstr = XmStringCreateLtoR( "[-> 123456789]" , XmFONTLIST_DEFAULT_TAG ) ;
01348 cliptop_faclab = XtVaCreateWidget(
01349 "AFNI" , xmLabelWidgetClass , vrc ,
01350 XmNlabelString , xstr ,
01351 XmNrecomputeSize , False ,
01352 XmNinitialResourcesPersistent , False ,
01353 NULL ) ;
01354 XmStringFree(xstr) ;
01355
01356 MCW_register_help( clipbot_faclab ,
01357 "Shows the scaled\nvalue of 'Top'." ) ;
01358
01359 XtManageChild(vrc) ;
01360 XtManageChild(hrc) ;
01361
01362 /***=============================================================*/
01363
01364 /*** horizontal rowcol for graphs ***/
01365
01366 SEP_HOR(anat_rowcol) ; /* separator */
01367
01368 hrc = XtVaCreateWidget(
01369 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01370 XmNorientation , XmHORIZONTAL ,
01371 XmNpacking , XmPACK_TIGHT ,
01372 XmNadjustLast , False ,
01373 XmNadjustMargin, False ,
01374 XmNtraversalOn , False ,
01375 XmNmarginWidth , 0 ,
01376 XmNmarginHeight, 0 ,
01377 XmNinitialResourcesPersistent , False ,
01378 NULL ) ;
01379
01380 /*** graph to control grayscale ***/
01381
01382 gry_graf = new_MCW_graf( hrc , im3d->dc, "Brightness", RCREND_graf_CB, NULL ) ;
01383
01384 MCW_reghelp_children( gry_graf->topform ,
01385 "This graph controls the brightness (y-axis) of each\n"
01386 "voxel, as a function of input signal (x-axis).\n\n"
01387 "After you change this curve, you must press\n"
01388 "'Draw' to see the effect on the rendered image.\n\n"
01389 "* To change the curve, drag the square handles\n"
01390 " using mouse Button 1 or Button 3.\n"
01391 "* Dragging with Button 3 shows a label indicating\n"
01392 " the (x,y) coordinates of the handle.\n"
01393 "* Use the # button to add and remove handles.\n"
01394 "* Use the Crv button to use spline interpolation.\n"
01395 "* Use the Line button to reset the curve to y=x.\n"
01396 ) ;
01397
01398 SEP_VER(hrc) ;
01399
01400 /*** graph to control opacity ***/
01401
01402 opa_graf = new_MCW_graf( hrc , im3d->dc, "Opacity", RCREND_graf_CB, NULL ) ;
01403
01404 MCW_reghelp_children( opa_graf->topform ,
01405 "This graph controls the opacity (y-axis) of each\n"
01406 "voxel, as a function of input signal (x-axis).\n\n"
01407 "After you change this curve, you must press\n"
01408 "'Draw' to see the effect on the rendered image.\n\n"
01409 "* To change the curve, drag the square handles\n"
01410 " using mouse Button 1 or Button 3.\n"
01411 "* Dragging with Button 3 shows a label indicating\n"
01412 " the (x,y) coordinates of the handle.\n"
01413 "* Use the # button to add and remove handles.\n"
01414 "* Use the Crv button to use spline interpolation.\n"
01415 "* Use the Line button to reset the curve to y=x.\n"
01416 ) ;
01417
01418 SEP_VER(hrc) ;
01419
01420 /*** passive graph to show data distribution ***/
01421
01422 his_graf = new_MCW_pasgraf( hrc , im3d->dc , "Sqrt Histogram" ) ;
01423 his_graf->mode = PASGRAF_BAR ;
01424
01425 MCW_reghelp_children( his_graf->topform ,
01426 "The graph height is proportional to\n"
01427 "the square-root of the histogram of\n"
01428 "the input signal.\n"
01429 "\n"
01430 "* The histogram at 0 is not included\n"
01431 " in the scaling, since it tends to\n"
01432 " be huge. The square-root is graphed\n"
01433 " to enhance the range of the plot.\n"
01434 "* Press Button 3 in this window to see a\n"
01435 " popup label with the (x,y) coordinate.\n"
01436 ) ;
01437
01438 XtManageChild(hrc) ;
01439
01440 /***=============================================================*/
01441
01442 /*** horizontal rowcol to hold cutout controls ***/
01443
01444 SEP_HOR(anat_rowcol) ; /* separator */
01445
01446 hrc = XtVaCreateWidget(
01447 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01448 XmNorientation , XmHORIZONTAL ,
01449 XmNpacking , XmPACK_TIGHT ,
01450 XmNadjustLast , False ,
01451 XmNadjustMargin, False ,
01452 XmNtraversalOn , False ,
01453 XmNmarginWidth , 0 ,
01454 XmNmarginHeight, 0 ,
01455 XmNinitialResourcesPersistent , False ,
01456 NULL ) ;
01457
01458 /*** option menu to choose number of cutouts ***/
01459
01460 numcutout_av = new_MCW_optmenu( hrc , "Cutouts " ,
01461 0 , MAX_CUTOUTS , num_cutouts,0 ,
01462 RCREND_numcutout_CB , NULL , NULL , NULL ) ;
01463
01464 MCW_reghelp_children( numcutout_av->wrowcol ,
01465 "Use this to choose the number of cutouts\n"
01466 "to apply before rendering. Controls for\n"
01467 "the number selected will be activated below."
01468 ) ;
01469
01470 /*** option menu to choose cutout logic ***/
01471
01472 logiccutout_av = new_MCW_optmenu( hrc , "+" ,
01473 0 , 1 , logic_cutout,0 ,
01474 NULL , NULL ,
01475 MCW_av_substring_CB , cutout_logic_labels ) ;
01476
01477 MCW_reghelp_children( logiccutout_av->wrowcol ,
01478 "Use this to control the logic of how\n"
01479 "multiple cutouts are combined:\n\n"
01480 "OR = the union of all regions\n"
01481 "AND = the intersection of all regions"
01482 ) ;
01483
01484 SEP_VER(hrc) ; /* separator */
01485
01486 /*** arrowval to select opacity reduction factor ***/
01487
01488 opacity_scale_av = new_MCW_arrowval( hrc , "Opacity Factor " ,
01489 MCW_AV_downup , 0,10,10 ,
01490 MCW_AV_noactext , 1 ,
01491 RCREND_opacity_scale_CB , NULL , NULL,NULL ) ;
01492 XtAddCallback( opacity_scale_av->wtext, XmNactivateCallback,
01493 RCREND_textact_CB, opacity_scale_av ) ;
01494
01495 /*** 07 July 1999: insert menu to control scripting actions ***/
01496
01497 #ifdef USE_SCRIPTING
01498 SEP_VER(hrc) ;
01499 RCREND_script_menu( hrc ) ;
01500 #endif
01501
01502 XtManageChild(hrc) ;
01503
01504 /*** Create the widgets for each cutout ***/
01505
01506 for( ii=0 ; ii < MAX_CUTOUTS ; ii++ ) cutouts[ii] = RCREND_make_cutout(ii) ;
01507
01508 /***=============================================================*/
01509
01510 /*** horizontal rowcol to hold automation controls ***/
01511
01512 SEP_HOR(anat_rowcol) ; /* separator */
01513
01514 hrc = XtVaCreateWidget(
01515 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01516 XmNorientation , XmHORIZONTAL ,
01517 XmNpacking , XmPACK_TIGHT ,
01518 XmNadjustLast , False ,
01519 XmNadjustMargin, False ,
01520 XmNtraversalOn , False ,
01521 XmNmarginWidth , 0 ,
01522 XmNmarginHeight, 0 ,
01523 XmNinitialResourcesPersistent , False ,
01524 NULL ) ;
01525
01526 /*** button box to enable automation mode ***/
01527
01528 automate_bbox = new_MCW_bbox( hrc ,
01529 1 , automate_bbox_label ,
01530 MCW_BB_check , MCW_BB_noframe ,
01531 RCREND_autoflag_CB , NULL ) ;
01532
01533 MCW_set_bbox( automate_bbox , automate_flag ) ;
01534
01535 MCW_reghelp_children( automate_bbox->wrowcol ,
01536 "IN: Enable automation of renderings\n"
01537 "OUT: Don't allow automated rendering" ) ;
01538
01539 SEP_VER(hrc) ; /* separator */
01540
01541 /*** arrowval to control number of frames to compute */
01542
01543 autoframe_av = new_MCW_arrowval( hrc , "Frames " ,
01544 MCW_AV_downup , 2,999,5 ,
01545 MCW_AV_editext , 0 ,
01546 NULL , NULL , NULL,NULL ) ;
01547
01548 MCW_reghelp_children( autoframe_av->wrowcol ,
01549 "Use this to set the number\n"
01550 "of frames that will be rendered\n"
01551 "when 'Compute' is activated." ) ;
01552
01553 SEP_VER(hrc) ; /* separator */
01554
01555 /*** pushbutton to activate the automation ***/
01556
01557 xstr = XmStringCreateLtoR( "Compute" , XmFONTLIST_DEFAULT_TAG ) ;
01558 autocompute_pb = XtVaCreateManagedWidget(
01559 "AFNI" , xmPushButtonWidgetClass , hrc ,
01560 XmNlabelString , xstr ,
01561 XmNtraversalOn , False ,
01562 XmNinitialResourcesPersistent , False ,
01563 NULL ) ;
01564 XmStringFree(xstr) ;
01565 XtAddCallback( autocompute_pb, XmNactivateCallback, RCREND_autocompute_CB, NULL ) ;
01566 MCW_register_help( autocompute_pb ,
01567 "Use this to start the\n"
01568 "automation of rendering" ) ;
01569
01570 /*** pushbutton to cancel the automation [not managed now] ***/
01571
01572 xstr = XmStringCreateLtoR( " * CANCEL * " , XmFONTLIST_DEFAULT_TAG ) ;
01573 autocancel_pb = XtVaCreateWidget(
01574 "AFNI" , xmPushButtonWidgetClass , hrc ,
01575 XmNlabelString , xstr ,
01576 XmNtraversalOn , False ,
01577 XmNinitialResourcesPersistent , False ,
01578 NULL ) ;
01579 XmStringFree(xstr) ;
01580 XtAddCallback( autocancel_pb, XmNactivateCallback, RCREND_autocancel_CB, NULL ) ;
01581
01582 XtManageChild(hrc) ;
01583
01584 /***=============================================================*/
01585
01586 /*** horizontal rowcol to hold miscellaneous display controls ***/
01587
01588 SEP_HOR(anat_rowcol) ; /* separator */
01589
01590 hrc = XtVaCreateWidget(
01591 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01592 XmNorientation , XmHORIZONTAL ,
01593 XmNpacking , XmPACK_TIGHT ,
01594 XmNadjustLast , False ,
01595 XmNadjustMargin, False ,
01596 XmNtraversalOn , False ,
01597 XmNmarginWidth , 0 ,
01598 XmNmarginHeight, 0 ,
01599 XmNinitialResourcesPersistent , False ,
01600 NULL ) ;
01601
01602 /*** option menu to choose interpolation mode ***/
01603
01604 interp_av = new_MCW_optmenu( hrc , "Interp " ,
01605 0 , RCREND_NUM_interp_modes-1 , interp_ival,0 ,
01606 RCREND_interp_CB , NULL ,
01607 MCW_av_substring_CB , interp_mode_strings ) ;
01608
01609 MCW_reghelp_children( interp_av->wrowcol ,
01610 "Use this to set the interpolation mode. The\n"
01611 "computation time increases from Neighbor to Linear.\n"
01612 "\n"
01613 "Neighbor = choose the value of the closest voxel\n"
01614 "Twostep = like Neighbor, but medium-distance\n"
01615 " points use the average of both neighbors\n"
01616 "Linear = distance-weighted average of neighbors"
01617 ) ;
01618
01619 SEP_VER(hrc) ; /* separator */
01620
01621 /*** button box to show AFNI crosshair location ***/
01622
01623 xhair_bbox = new_MCW_bbox( hrc ,
01624 1 , xhair_bbox_label ,
01625 MCW_BB_check , MCW_BB_noframe ,
01626 RCREND_xhair_CB , NULL ) ;
01627
01628 /* 08 Mar 2001: Button3 popup to control xhair color */
01629
01630 XtInsertEventHandler( xhair_bbox->wbut[0] ,
01631
01632 0
01633 | ButtonPressMask /* button presses */
01634 ,
01635 FALSE , /* nonmaskable events? */
01636 RCREND_xhair_EV , /* handler */
01637 NULL , /* client data */
01638 XtListTail /* last in queue */
01639 ) ;
01640
01641 MCW_set_bbox( xhair_bbox , xhair_flag ) ;
01642
01643 MCW_reghelp_children( xhair_bbox->wrowcol ,
01644 "IN: show AFNI crosshair location\n"
01645 "OUT: don't show AFNI crosshairs\n"
01646 "\n"
01647 "N.B.: Must press Reload to see the\n"
01648 " crosshair position updated\n"
01649 " if it is changed in AFNI."
01650 ) ;
01651
01652 SEP_VER(hrc) ; /* separator */
01653
01654 /*** button box to do dynamic updates ***/
01655
01656 dynamic_bbox = new_MCW_bbox( hrc ,
01657 1 , dynamic_bbox_label ,
01658 MCW_BB_check , MCW_BB_noframe ,
01659 RCREND_dynamic_CB , NULL ) ;
01660
01661 MCW_set_bbox( dynamic_bbox , dynamic_flag ) ;
01662
01663 MCW_reghelp_children( dynamic_bbox->wrowcol ,
01664 "IN: Redraw immediately upon changes\n"
01665 "OUT: Redraw only when commanded\n"
01666 "\n"
01667 "N.B.: Changes to the AFNI crosshair\n"
01668 " position are not detectable\n"
01669 " to force a dynamic redraw." ) ;
01670
01671 SEP_VER(hrc) ; /* separator */
01672
01673 /*** button box to accumulate images ***/
01674
01675 accum_bbox = new_MCW_bbox( hrc ,
01676 1 , accum_bbox_label ,
01677 MCW_BB_check , MCW_BB_noframe ,
01678 RCREND_accum_CB , NULL ) ;
01679
01680 MCW_set_bbox( accum_bbox , accum_flag ) ;
01681
01682 MCW_reghelp_children( accum_bbox->wrowcol ,
01683 "IN: Accumulate images for viewing\n"
01684 "OUT: Save only the latest images" ) ;
01685
01686 /* 17 Jun 2005: Button3 popup to control overlay label */
01687
01688 XtInsertEventHandler( accum_bbox->wbut[0] ,
01689
01690 0
01691 | ButtonPressMask /* button presses */
01692 ,
01693 FALSE , /* nonmaskable events? */
01694 RCREND_accum_lab_EV, /* handler */
01695 NULL , /* client data */
01696 XtListTail /* last in queue */
01697 ) ;
01698
01699 XtManageChild(hrc) ;
01700
01701 /***=============================================================*/
01702
01703 /*** horizontal rowcol to hold angle arrows ***/
01704
01705 SEP_HOR(anat_rowcol) ; /* separator widget */
01706
01707 hrc = XtVaCreateWidget(
01708 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01709 XmNorientation , XmHORIZONTAL ,
01710 XmNpacking , XmPACK_TIGHT ,
01711 XmNadjustLast , False ,
01712 XmNadjustMargin, False ,
01713 XmNtraversalOn , False ,
01714 XmNmarginWidth , 0 ,
01715 XmNmarginHeight, 0 ,
01716 XmNinitialResourcesPersistent , False ,
01717 NULL ) ;
01718
01719 /*==========================================================================*/
01720 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
01721 { static char * incrot_bbox_label[1] = { "I" } ;
01722 incrot_bbox = new_MCW_bbox( hrc , 1 , incrot_bbox_label ,
01723 MCW_BB_check , MCW_BB_noframe ,
01724 RCREND_incrot_CB, NULL ) ;
01725 MCW_set_bbox( incrot_bbox , 1 ) ;
01726 MCW_reghelp_children( incrot_bbox->wrowcol ,
01727 "OUT: angles increment globally\n"
01728 "IN: angles increment locally" ) ;
01729 MCW_reghint_children( incrot_bbox->wrowcol , "Incremental rotation?" ) ;
01730 SEP_VER(hrc) ;
01731 }
01732 #endif /* ALLOW_INCROT */
01733
01734 /** N.B.: removed trailing space from "Roll", "Pitch", "Yaw" labels
01735 for arrowvals below, to make space for the bbox created above **/
01736 /*==========================================================================*/
01737
01738 /*** arrowvals to choose rotation angles ***/
01739
01740 roll_av = new_MCW_arrowval( hrc , "Roll" ,
01741 MCW_AV_downup , -999999,999999,(int)(0.1*angle_roll) ,
01742 MCW_AV_noactext , -1 ,
01743 RCREND_angle_CB , NULL , NULL,NULL ) ;
01744 roll_av->fstep = angle_fstep ;
01745 MCW_reghelp_children( roll_av->wrowcol ,
01746 "Use this to set the roll angle\n"
01747 "(about the I-S axis) for viewing,\n"
01748 "then press 'Draw'"
01749 ) ;
01750 XtAddCallback( roll_av->wtext, XmNactivateCallback, RCREND_textact_CB, roll_av ) ;
01751
01752 SEP_VER(hrc) ; /* separator widget */
01753
01754 pitch_av = new_MCW_arrowval( hrc , "Pitch" ,
01755 MCW_AV_downup , -999999,999999,(int)(0.1*angle_pitch) ,
01756 MCW_AV_noactext , -1 ,
01757 RCREND_angle_CB , NULL , NULL,NULL ) ;
01758 pitch_av->fstep = angle_fstep ;
01759 MCW_reghelp_children( pitch_av->wrowcol ,
01760 "Use this to set the pitch angle\n"
01761 "(about the R-L axis) for viewing,\n"
01762 "then press 'Draw'"
01763 ) ;
01764 XtAddCallback( pitch_av->wtext, XmNactivateCallback, RCREND_textact_CB, pitch_av ) ;
01765
01766 SEP_VER(hrc) ; /* separator widget */
01767
01768 yaw_av = new_MCW_arrowval( hrc , "Yaw" ,
01769 MCW_AV_downup , -999999,999999,(int)(0.1*angle_yaw) ,
01770 MCW_AV_noactext , -1 ,
01771 RCREND_angle_CB , NULL , NULL,NULL ) ;
01772 yaw_av->fstep = angle_fstep ;
01773 MCW_reghelp_children( yaw_av->wrowcol ,
01774 "Use this to set the yaw angle\n"
01775 "(about the A-P axis) for viewing,\n"
01776 "then press 'Draw'"
01777 ) ;
01778 XtAddCallback( yaw_av->wtext, XmNactivateCallback, RCREND_textact_CB, yaw_av ) ;
01779
01780 /** 26 Apr 2002: add hints to these arrows as well **/
01781
01782 MCW_reghint_children( roll_av->wrowcol , "Angle about I-S axis" ) ;
01783 MCW_reghint_children( pitch_av->wrowcol , "Angle about R-L axis" ) ;
01784 MCW_reghint_children( yaw_av->wrowcol , "Angle about A-P axis" ) ;
01785
01786 /*==========================================================================*/
01787 #if 1
01788 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
01789 XtVaSetValues( roll_av->wtext , XmNcolumns , 8 , NULL ) ;
01790 XtVaSetValues( pitch_av->wtext , XmNcolumns , 8 , NULL ) ;
01791 XtVaSetValues( yaw_av->wtext , XmNcolumns , 8 , NULL ) ;
01792 #endif
01793 #endif
01794 /*==========================================================================*/
01795
01796 XtManageChild(hrc) ;
01797
01798 /***=============================================================*/
01799
01800 /*** a set of action buttons below the line ***/
01801
01802 SEP_HOR(anat_rowcol) ;
01803
01804 (void) MCW_action_area( anat_rowcol , RCREND_actor , NACT ) ;
01805
01806 help_pb = (Widget) RCREND_actor[0].data ;
01807 draw_pb = (Widget) RCREND_actor[1].data ;
01808 reload_pb = (Widget) RCREND_actor[2].data ;
01809 done_pb = (Widget) RCREND_actor[3].data ;
01810
01811 /***=============================================================*/
01812
01813 /*** that's all ***/
01814
01815 XtManageChild(anat_rowcol) ;
01816 XtManageChild(anat_frame) ;
01817
01818 XtManageChild(top_rowcol) ;
01819 XtRealizeWidget(shell) ; /* will not be mapped */
01820
01821 WAIT_for_window(shell) ;
01822 POPUP_cursorize(xhair_bbox->wbut[0]) ;
01823 POPUP_cursorize(accum_bbox->wbut[0]) ;
01824
01825 /*** 12 July 1999: make the overlay widgets now, instead of later ***/
01826
01827 RCREND_func_widgets() ;
01828
01829 #if 0
01830 XtVaSetValues( anat_rowcol , XmNresizeWidth , False , NULL ) ;
01831 #endif
01832 EXRETURN ;
01833 }
|
|
||||||||||||
|
Definition at line 6744 of file plug_crender.c. References ENTRY, func_mixshade, and MCW_arrowval::ival. Referenced by RCREND_func_widgets().
06745 {
06746 ENTRY( "RCREND_mixshade_av_CB" );
06747
06748 func_mixshade = av->ival ;
06749 EXRETURN ;
06750 }
|
|
||||||||||||
|
Definition at line 4248 of file plug_crender.c. References ENTRY, FIX_SCALE_SIZE, HIDE_SCALE, MCW_arrowval::ival, MAX_CUTOUTS, and num_cutouts. Referenced by RCREND_main(), RCREND_make_widgets(), and RCREND_state_to_widgets().
04249 {
04250 int ii ;
04251 num_cutouts = av->ival ;
04252
04253 ENTRY( "RCREND_numcutout_CB" );
04254
04255 HIDE_SCALE ;
04256
04257 for( ii=0 ; ii < MAX_CUTOUTS ; ii++ ){
04258 if( ii < num_cutouts )
04259 XtManageChild( cutouts[ii]->hrc ) ;
04260 else
04261 XtUnmanageChild( cutouts[ii]->hrc ) ;
04262 }
04263
04264 FIX_SCALE_SIZE ;
04265 EXRETURN ;
04266 }
|
|
||||||||||||
|
Definition at line 7324 of file plug_crender.c. References AV_assign_fval(), dynamic_flag, ENTRY, MCW_arrowval::fval, MIN_OPACITY_SCALE, RCREND_draw_CB(), and CR_data::rh. Referenced by RCREND_make_widgets(), and RCREND_state_to_widgets().
07325 {
07326 ENTRY( "RCREND_opacity_scale_CB" );
07327
07328 if( av->fval < MIN_OPACITY_SCALE ) AV_assign_fval(av,MIN_OPACITY_SCALE) ;
07329 if( cd == NULL && dynamic_flag && gcr.rh != NULL )
07330 RCREND_draw_CB(NULL,NULL,NULL) ;
07331 EXRETURN ;
07332 }
|
|
||||||||||||||||
|
Definition at line 6065 of file plug_crender.c. References MCW_pbar::bigmode, client_data, ENTRY, FIX_SCALE_SIZE, HIDE_SCALE, MCW_invert_widget(), NORMAL_cursorize, MCW_pbar::panew, POPUP_cursorize, RCREND_func_widgets(), RCREND_init_cmap(), update_MCW_pbar(), wfunc_color_label, wfunc_frame, wfunc_open_pb, and wfunc_vsep. Referenced by RCREND_done_CB(), RCREND_make_widgets(), and RCREND_state_to_widgets().
06066 {
06067 ENTRY( "RCREND_open_func_CB" );
06068
06069 if( wfunc_frame == NULL ) RCREND_func_widgets() ; /* need to make them */
06070
06071 if( XtIsManaged(wfunc_frame) ){ /* if open, close */
06072 XtUnmanageChild(wfunc_vsep ) ;
06073 XtUnmanageChild(wfunc_frame) ;
06074 } else { /* if closed, open */
06075 HIDE_SCALE ;
06076 XtManageChild(wfunc_vsep ) ;
06077 XtManageChild(wfunc_frame) ;
06078 update_MCW_pbar( wfunc_color_pbar ) ; /* may need to be redrawn */
06079 FIX_SCALE_SIZE ;
06080 #if defined(SOLARIS) && defined(FIX_SCALE_SIZE_PROBLEM)
06081 (void) XtAppAddTimeOut( XtWidgetToApplicationContext(wfunc_frame),
06082 50,fixscale,NULL ) ; /* 09 May 2001 */
06083 #endif
06084 RCREND_init_cmap() ; /* setup the colormap */
06085
06086 POPUP_cursorize(wfunc_color_label) ;
06087 if( wfunc_color_pbar->bigmode )
06088 POPUP_cursorize( wfunc_color_pbar->panew ) ; /* 08 Apr 2005 */
06089 else
06090 NORMAL_cursorize( wfunc_color_pbar->panew ) ; /* 08 Apr 2005 */
06091 }
06092
06093 MCW_invert_widget(wfunc_open_pb) ; /* a flag */
06094 EXRETURN ;
06095 }
|
|
|
Definition at line 4863 of file plug_crender.c. References afni48ren_bits, afni48ren_height, afni48ren_pixmap, afni48ren_width, any_rgb_images, drive_MCW_imseq(), ENTRY, IMARR_COUNT, IMARR_SUBIMAGE, info_lab, ISQ_DEFAULT_OPT, isqDR_clearstat, isqDR_icon, isqDR_offwid, isqDR_onoffwid, isqDR_onwid, isqDR_opacitybut, isqDR_options, isqDR_penbbox, isqDR_periodicmont, isqDR_realize, isqDR_reimage, isqDR_title, NORMAL_cursorize, open_MCW_imseq(), RCREND_imseq_getim(), ISQ_options::save_filter, ISQ_options::save_one, ISQ_options::save_pnm, shell, and MCW_imseq::wimage. Referenced by RCREND_update_imseq().
04864 {
04865 int ntot , ii ;
04866
04867 ENTRY( "RCREND_open_imseq" );
04868
04869 if( imseq != NULL ||
04870 renderings == NULL || IMARR_COUNT(renderings) == 0 ) EXRETURN ;
04871
04872 ntot = IMARR_COUNT(renderings) ;
04873
04874 any_rgb_images = 0 ;
04875 for( ii=0 ; ii < ntot ; ii++ ){
04876 if( IMARR_SUBIMAGE(renderings,ii) != NULL &&
04877 IMARR_SUBIMAGE(renderings,ii)->kind == MRI_rgb ){
04878
04879 any_rgb_images = 1 ; break ;
04880 }
04881 }
04882
04883 imseq = open_MCW_imseq( dc , RCREND_imseq_getim , NULL ) ;
04884
04885 drive_MCW_imseq( imseq , isqDR_clearstat , NULL ) ;
04886
04887 { ISQ_options opt ; /* change some options from the defaults */
04888
04889 ISQ_DEFAULT_OPT(opt) ;
04890 opt.save_one = False ; /* change to Save:bkg */
04891 opt.save_pnm = False ;
04892 opt.save_filter = -1 ; /* 27 Jun 2001 */
04893 drive_MCW_imseq( imseq , isqDR_options , (XtPointer) &opt ) ;
04894 drive_MCW_imseq( imseq , isqDR_periodicmont , (XtPointer) 0 ) ;
04895 drive_MCW_imseq( imseq , isqDR_penbbox , (XtPointer) 0 ) ;
04896 }
04897
04898 /* make it popup */
04899
04900 drive_MCW_imseq( imseq , isqDR_realize, NULL ) ;
04901
04902 NORMAL_cursorize( imseq->wimage ) ; /* 07 Dec 2001 */
04903
04904 drive_MCW_imseq( imseq , isqDR_title, "AFNI Renderings" ) ;
04905
04906 if( ntot == 1 )
04907 drive_MCW_imseq( imseq , isqDR_onoffwid , (XtPointer) isqDR_offwid ) ;
04908 else {
04909 drive_MCW_imseq( imseq , isqDR_onoffwid , (XtPointer) isqDR_onwid ) ;
04910 drive_MCW_imseq( imseq , isqDR_opacitybut , (XtPointer) 0 ) ; /* 07 Mar 2001 */
04911 }
04912
04913 drive_MCW_imseq( imseq , isqDR_reimage , (XtPointer) (ntot-1) ) ;
04914
04915 #ifndef DONT_INSTALL_ICONS
04916 if( afni48_good && afni48ren_pixmap == XmUNSPECIFIED_PIXMAP ){
04917 Pixel bg_pix , fg_pix ;
04918
04919 XtVaGetValues( info_lab ,
04920 XmNforeground , &fg_pix ,
04921 XmNbackground , &bg_pix ,
04922 NULL ) ;
04923
04924 afni48ren_pixmap = XCreatePixmapFromBitmapData(
04925 XtDisplay(shell) ,
04926 RootWindowOfScreen(XtScreen(shell)) ,
04927 afni48ren_bits , afni48ren_width , afni48ren_height ,
04928 bg_pix , fg_pix ,
04929 DefaultDepthOfScreen(XtScreen(shell)) ) ;
04930
04931 }
04932 if( afni48_good )
04933 drive_MCW_imseq( imseq,isqDR_icon , (XtPointer) afni48ren_pixmap ) ;
04934 #endif
04935
04936 EXRETURN ;
04937 }
|
|
|
Definition at line 7160 of file plug_crender.c. References DSET_ARRAY, DSET_load, DSET_NVOX, ENTRY, TTRR_params::hemi, HEMX, TTRR_params::meth, MRI_BYTE_PTR, TTRR_params::num, MRI_IMAGE::nvox, MRI_IMAGE::nz, TT_retrieve_atlas(), TT_retrieve_atlas_nz, TTRR_params::ttbrik, TTRR_params::ttovc, TTRR_get_params(), TTRR_HEMI_BOTH, TTRR_HEMI_LEFT, TTRR_HEMI_RIGHT, TTRR_METH_FAG, TTRR_METH_FGA, TTRR_METH_GAF, and TTRR_params::ttval. Referenced by RCREND_reload_func_dset().
07161 {
07162 TTRR_params *ttp ;
07163 THD_3dim_dataset *dseTT ;
07164 byte *b0 , *b1 , *ovar ;
07165 int nvox , ii,jj , xx ;
07166 int fwin , gwin , nreg , hemi,hbot ;
07167 byte *brik , *val , *ovc , g_ov , a_ov , final_ov ;
07168
07169 ENTRY( "RCREND_overlay_ttatlas" );
07170
07171 /* sanity checks and setup */
07172
07173 if( ovim == NULL ) EXRETURN ;
07174
07175 nvox = ovim->nvox ;
07176
07177 #if 0
07178 # define RET(s) do{fprintf(stderr,s);return;}while(0)
07179 #else
07180 # define RET(s) EXRETURN
07181 #endif
07182
07183 /* 01 Aug 2001: retrieve Atlas dataset depending on size of brick */
07184 #if 1
07185 dseTT = TT_retrieve_atlas_nz(ovim->nz) ;
07186 if( dseTT == NULL ) RET("no dataset\n") ;
07187 #else
07188 dseTT = TT_retrieve_atlas() ; if( dseTT == NULL ) RET("no dataset\n") ;
07189 #endif
07190
07191 if( DSET_NVOX(dseTT) != nvox ) RET("dataset mismatch\n");
07192 ttp = TTRR_get_params() ; if( ttp == NULL ) RET("no ttp\n") ;
07193
07194 DSET_load(dseTT) ;
07195 b0 = DSET_ARRAY(dseTT,0) ; b1 = DSET_ARRAY(dseTT,1) ;
07196 if( b0 == NULL || b1 == NULL ) RET("no bricks\n") ;
07197
07198 ovar = MRI_BYTE_PTR(ovim) ;
07199
07200 fwin = (ttp->meth == TTRR_METH_FGA) || (ttp->meth == TTRR_METH_FAG) ;
07201 gwin = (ttp->meth == TTRR_METH_FGA) || (ttp->meth == TTRR_METH_GAF) ;
07202
07203 nreg = ttp->num ;
07204 brik = ttp->ttbrik ;
07205 val = ttp->ttval ;
07206 ovc = ttp->ttovc ;
07207
07208 hemi = ttp->hemi ;
07209 switch( hemi ){
07210 case TTRR_HEMI_LEFT: hbot=HEMX+1 ; break ;
07211 case TTRR_HEMI_RIGHT: hbot= 0 ; break ;
07212 case TTRR_HEMI_BOTH: hbot= 0 ; break ;
07213 }
07214
07215 /* ready to do something */
07216
07217 for( xx=0,ii=hbot ; ii < nvox ; ii++ ){
07218
07219 if( hemi != TTRR_HEMI_BOTH ){
07220 if( xx == HEMX ){
07221 xx = 0 ; ii += HEMX ; continue ; /* skip ahead 1/2 row */
07222 }
07223 xx++ ;
07224 }
07225
07226 if( ovar[ii] && fwin ) continue ; /* function wins */
07227
07228 /* check atlas dataset for hits */
07229
07230 g_ov = a_ov = 0 ;
07231 for( jj=0 ; (g_ov==0 || a_ov==0) && jj<nreg ; jj++ ){
07232 if( b0[ii] == val[jj] ) g_ov = ovc[jj] ;
07233 else if( b1[ii] == val[jj] ) a_ov = ovc[jj] ;
07234 }
07235
07236 if( g_ov==0 && a_ov==0 ) continue ; /* no hit */
07237
07238 if( g_ov && (gwin || a_ov==0) ) final_ov = g_ov ;
07239 else final_ov = a_ov ;
07240
07241 ovar[ii] = final_ov ;
07242 }
07243
07244 EXRETURN ;
07245 }
|
|
||||||||||||
|
Definition at line 6729 of file plug_crender.c. References ENTRY, FIX_SCALE_SIZE, GPT, HIDE_SCALE, INVALIDATE_OVERLAY, MCW_arrowval::ival, load_PBAR_palette_array(), PALTAB_ARR, and PALTAB_NUM. Referenced by RCREND_func_widgets().
06730 {
06731 ENTRY( "RCREND_palette_av_CB" );
06732
06733 if( GPT == NULL || av->ival < 0 || av->ival >= PALTAB_NUM(GPT) ) EXRETURN ;
06734
06735 HIDE_SCALE ;
06736 load_PBAR_palette_array( wfunc_color_pbar , /* cf. afni_setup.c */
06737 PALTAB_ARR(GPT,av->ival) , 0 ) ;
06738 FIX_SCALE_SIZE ;
06739
06740 INVALIDATE_OVERLAY ;
06741 EXRETURN ;
06742 }
|
|
||||||||||||
|
Definition at line 4768 of file plug_crender.c. References dynamic_flag, ENTRY, RCREND_draw_CB(), and CR_data::rh. Referenced by RCREND_make_cutout().
04769 {
04770 ENTRY( "RCREND_param_CB" );
04771
04772 if( cd == NULL && dynamic_flag && gcr.rh != NULL )
04773 RCREND_draw_CB(NULL,NULL,NULL) ;
04774
04775 EXRETURN;
04776 }
|
|
||||||||||||||||
|
Definition at line 6683 of file plug_crender.c. References alter_MCW_pbar(), ENTRY, FIX_SCALE_SIZE, HIDE_SCALE, INVALIDATE_OVERLAY, MCW_choose_integer(), MCW_choose_string(), MCW_pbar::mode, NPANE_MAX, MCW_pbar::num_panes, pmax, pmin, MCW_pbar::pval_save, RCREND_finalize_saveim_CB(), RCREND_set_pbar_top_CB(), wfunc_choices_label, wfunc_pbar_equalize_pb, wfunc_pbar_saveim_pb, and wfunc_pbar_settop_pb. Referenced by RCREND_func_widgets().
06684 {
06685 MCW_pbar * pbar ;
06686 int npane , jm , ii ;
06687 double pmax , pmin ;
06688 float pval[NPANE_MAX+1] ;
06689
06690 ENTRY( "RCREND_pbarmenu_CB" );
06691
06692 pbar = wfunc_color_pbar ;
06693 npane = pbar->num_panes ;
06694 jm = pbar->mode ;
06695 pmax = pbar->pval_save[npane][0][jm] ;
06696 pmin = pbar->pval_save[npane][npane][jm] ;
06697
06698 /*--- Equalize spacings ---*/
06699
06700 if( w == wfunc_pbar_equalize_pb ){
06701 for( ii=0 ; ii <= npane ; ii++ )
06702 pval[ii] = pmax - ii * (pmax-pmin)/npane ;
06703
06704 HIDE_SCALE ;
06705 alter_MCW_pbar( pbar , 0 , pval ) ;
06706 FIX_SCALE_SIZE ;
06707 INVALIDATE_OVERLAY ;
06708 }
06709
06710 /*--- Set top value ---*/
06711
06712 else if( w == wfunc_pbar_settop_pb ){
06713 MCW_choose_integer( wfunc_choices_label ,
06714 "Pbar Top" , 0 , 99999 , 1 ,
06715 RCREND_set_pbar_top_CB , NULL ) ;
06716 }
06717
06718 /*--- Save pbar into image file ---*/
06719
06720 else if( w == wfunc_pbar_saveim_pb ){
06721 MCW_choose_string( wfunc_choices_label,
06722 "PPM file prefix" , NULL ,
06723 RCREND_finalize_saveim_CB , cd ) ;
06724 }
06725
06726 EXRETURN ;
06727 }
|
|
||||||||||||||||||||
|
Definition at line 6643 of file plug_crender.c. References ENTRY, ev, event, GPT, PALTAB_NUM, refit_MCW_optmenu(), wfunc_pbar_menu, and MCW_arrowval::wrowcol. Referenced by RCREND_func_widgets().
06645 {
06646 static int old_paltab_num = 0 ;
06647
06648 ENTRY( "RCREND_pbarmenu_EV" );
06649
06650 switch( ev->type ){
06651 case ButtonPress:{
06652 XButtonEvent * event = (XButtonEvent *) ev ;
06653 if( event->button == Button3 || event->button == Button1 ){
06654
06655 /* in case the user read in any new palette, add them to menu */
06656
06657 if( GPT != NULL && PALTAB_NUM(GPT) > old_paltab_num ){
06658 refit_MCW_optmenu( wfunc_pbar_palette_av ,
06659 0 , /* new minval */
06660 PALTAB_NUM(GPT)-1 , /* new maxval */
06661 0 , /* new inival */
06662 0 , /* new decim? */
06663 AFNI_palette_label_CB , /* text routine */
06664 NULL /* text data */
06665 ) ;
06666 XtManageChild( wfunc_pbar_palette_av->wrowcol ) ;
06667 old_paltab_num = PALTAB_NUM(GPT) ;
06668 }
06669
06670 XmMenuPosition( wfunc_pbar_menu , event ) ; /* where */
06671 XtManageChild ( wfunc_pbar_menu ) ; /* popup */
06672 }
06673 }
06674 break ;
06675 }
06676 EXRETURN ;
06677 }
|
|
||||||||||||
|
Definition at line 6360 of file plug_crender.c. References AFNI_hintize_pbar(), ENTRY, FUNC_RANGE, func_range, MCW_arrowval::fval, and INVALIDATE_OVERLAY. Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06361 {
06362 ENTRY( "RCREND_range_av_CB" );
06363
06364 func_range = av->fval ;
06365
06366 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Mar 2001 */
06367
06368 INVALIDATE_OVERLAY ;
06369 EXRETURN ;
06370 }
|
|
||||||||||||||||
|
Definition at line 6335 of file plug_crender.c. References AFNI_hintize_pbar(), AV_SENSITIZE, ENTRY, FUNC_RANGE, func_range, func_use_autorange, MCW_arrowval::fval, INVALIDATE_OVERLAY, and MCW_val_bbox(). Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06336 {
06337 int newauto = MCW_val_bbox(wfunc_range_bbox) ;
06338
06339 ENTRY( "RCREND_range_bbox_CB" );
06340
06341 if( newauto == func_use_autorange ) EXRETURN ; /* no change? */
06342
06343 func_use_autorange = newauto ;
06344
06345 func_range = (newauto) ? (func_autorange)
06346 : (wfunc_range_av->fval) ;
06347
06348 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Mar 2001 */
06349
06350 AV_SENSITIZE( wfunc_range_av , ! newauto ) ;
06351
06352 INVALIDATE_OVERLAY ;
06353 EXRETURN ;
06354 }
|
|
|
load the values for the current pane count * Definition at line 6157 of file plug_crender.c. References AV_fval_to_char(), THD_statistics::bstat, DSET_VALID_BSTAT, ENTRY, func_color_ival, func_thresh_ival, ISVALID_DSET, ISVALID_STATISTIC, THD_brick_stats::max, THD_brick_stats::min, RETURN, and THD_3dim_dataset::stats. Referenced by RCREND_choose_av_CB(), RCREND_finalize_func_CB(), RCREND_func_widgets(), and RCREND_xhair_recv().
06158 {
06159 char fim_minch[10] = " --------" , fim_maxch[10] = " --------" ,
06160 thr_minch[10] = " --------" , thr_maxch[10] = " --------" ;
06161 char buf[256] , qbuf[16] ;
06162 XmString xstr ;
06163 int iv ;
06164
06165 ENTRY( "RCREND_range_label" );
06166
06167 if( ISVALID_DSET(func_dset) && ISVALID_STATISTIC(func_dset->stats) ){
06168
06169 iv = func_color_ival ;
06170
06171 if( DSET_VALID_BSTAT(func_dset,iv) ){
06172 AV_fval_to_char( func_dset->stats->bstat[iv].min , qbuf ) ;
06173 sprintf( fim_minch , "%9.9s" , qbuf ) ;
06174 AV_fval_to_char( func_dset->stats->bstat[iv].max , qbuf ) ;
06175 sprintf( fim_maxch , "%9.9s" , qbuf ) ;
06176 }
06177
06178 iv = func_thresh_ival ;
06179
06180 if( DSET_VALID_BSTAT(func_dset,iv) ){
06181 AV_fval_to_char( func_dset->stats->bstat[iv].min , qbuf ) ;
06182 sprintf( thr_minch , "%9.9s" , qbuf ) ;
06183 AV_fval_to_char( func_dset->stats->bstat[iv].max , qbuf ) ;
06184 sprintf( thr_maxch , "%9.9s" , qbuf ) ;
06185 }
06186 }
06187
06188 sprintf( buf , "Color %s:%s\nThr %s:%s" ,
06189 fim_minch,fim_maxch, thr_minch,thr_maxch ) ;
06190
06191 xstr = XmStringCreateLtoR( buf , XmFONTLIST_DEFAULT_TAG ) ;
06192
06193 RETURN(xstr) ;
06194 }
|
|
||||||||||||||||
|
Definition at line 7831 of file plug_crender.c. References accum_flag, AFNI_add_interruptable(), AFNI_process_interrupts(), autocancel_pb, autokill, automate_flag, MCW_choose_cbs::cval, DESTROY_IMARR, DESTROY_RSA, ENTRY, free, malloc, MCW_popdown_meter(), MCW_popup_message(), MCW_popup_meter(), MCW_set_meter(), MCW_TIMER_KILL, MCW_USER_KILL, mcwCR_string, METER_TOP_WIDE, PLUTO_beep(), POPDOWN_string_chooser, RCREND_draw_CB(), RCREND_read_states(), RCREND_state_to_widgets(), RCREND_widgets_to_state(), MCW_choose_cbs::reason, renderer_open, RSA_COUNT, RSA_SUBSTATE, script_cbut, script_read_fname, and shell. Referenced by RCREND_script_CB().
07832 {
07833 int ll , it , ntime ;
07834 char * fname , buf[256] ;
07835 RENDER_state rs ;
07836 RENDER_state_array * rsa ;
07837 float scl ;
07838 Widget autometer ;
07839
07840 ENTRY( "RCREND_read_exec_CB" );
07841
07842 if( !renderer_open ){ POPDOWN_string_chooser ; EXRETURN ; }
07843
07844 if( cbs->reason != mcwCR_string ||
07845 cbs->cval == NULL || (ll = strlen(cbs->cval)) == 0 ){
07846
07847 PLUTO_beep() ; EXRETURN ;
07848 }
07849
07850 fname = malloc( sizeof(char) * (ll+8) ) ;
07851 strcpy(fname,cbs->cval) ; strcpy(script_read_fname,fname) ;
07852
07853 if( strstr(fname,".rset") == NULL ){
07854 if( fname[ll-1] != '.' ){ fname[ll++] = '.'; fname[ll] = '\0'; }
07855 strcat(fname,"rset") ;
07856 }
07857
07858 RCREND_widgets_to_state( &rs ) ;
07859 rsa = RCREND_read_states( fname , &rs ) ;
07860
07861 if( rsa == NULL || RSA_COUNT(rsa) < 1 ){
07862 sprintf(buf, "\n"
07863 "** Some error occured when\n"
07864 "** trying to read file %s\n" , fname ) ;
07865 (void) MCW_popup_message( script_cbut , buf ,
07866 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07867 free(fname) ; PLUTO_beep() ; EXRETURN ;
07868 }
07869
07870 free(fname) ; POPDOWN_string_chooser ;
07871
07872 /*-- now execute the renderings (a la 'Automate' )--*/
07873
07874 automate_flag = 1 ;
07875 if( ! accum_flag ){
07876 DESTROY_IMARR(renderings) ;
07877 DESTROY_RSA(renderings_state) ;
07878 }
07879 ntime = RSA_COUNT(rsa) ;
07880
07881 if( ntime > 1 ){
07882 autometer = MCW_popup_meter( shell , METER_TOP_WIDE ) ;
07883 XtManageChild( autocancel_pb ) ; AFNI_add_interruptable( autocancel_pb ) ;
07884 autokill = 0 ; scl = 100.0/ntime ;
07885 }
07886
07887 for( it=0 ; it < ntime ; it++ ){
07888
07889 RCREND_state_to_widgets( RSA_SUBSTATE(rsa,it) ) ;
07890 if( dset == NULL ) break ; /* some error */
07891
07892 RCREND_draw_CB(NULL,NULL,NULL) ;
07893
07894 if( it < ntime-1 ){
07895 AFNI_process_interrupts(autocancel_pb) ;
07896 if( autokill ) break ;
07897 }
07898
07899 if( ntime > 1 ) MCW_set_meter( autometer , (int)(scl*(it+1)) ) ;
07900 }
07901
07902 /*-- done: cleanup time --*/
07903
07904 DESTROY_RSA(rsa) ;
07905
07906 if( ntime > 1 ){
07907 MCW_popdown_meter( autometer ) ;
07908 XtUnmanageChild( autocancel_pb ) ; AFNI_add_interruptable(NULL) ;
07909 }
07910
07911 automate_flag = 0 ;
07912 EXRETURN ;
07913 }
|
|
||||||||||||
|
Definition at line 7952 of file plug_crender.c. References ADDTO_RSA, AFNI_suck_file(), angle_pitch, angle_roll, angle_yaw, RENDER_state::bright_graf_state, calloc, RENDER_state::current_cutout_state, CUT_ANTERIOR_TO, CUT_EXPRESSION, CUT_INFERIOR_TO, CUT_LEFT_OF, CUT_NONE, CUT_NONOVERLAY, CUT_POSTERIOR_TO, CUT_RIGHT_OF, CUT_SLANT_XMY_GT, CUT_SLANT_XMY_LT, CUT_SLANT_XMZ_GT, CUT_SLANT_XMZ_LT, CUT_SLANT_XPY_GT, CUT_SLANT_XPY_LT, CUT_SLANT_XPZ_GT, CUT_SLANT_XPZ_LT, CUT_SLANT_YMZ_GT, CUT_SLANT_YMZ_LT, CUT_SLANT_YPZ_GT, CUT_SLANT_YPZ_LT, CUT_SUPERIOR_TO, CUT_TT_ELLIPSOID, CUTOUT_AND, CUTOUT_OR, RENDER_state::dset_idc, dset_ival, RENDER_state::dset_name, ENTRY, free, FREE_RSA, func_clusters_rmm, func_clusters_vmul, func_color_ival, func_color_opacity, func_cut_overlay, RENDER_state::func_dset_idc, RENDER_state::func_dset_name, func_kill_clusters, func_range, func_see_overlay, func_see_ttatlas, func_showthru, func_showthru_fac, func_thresh_ival, func_thresh_top, func_threshold, func_use_autorange, GETEQN, GETSTR, INIT_RSA, ISTARRED, left, CUTOUT_state::logic, MAX_CUTOUTS, MAX_GHANDS, MCW_IDSIZE, MCW_strncpy, MIN_OPACITY_SCALE, CUTOUT_state::mustdo, graf_state::nh, NPANE_MAX, NSBUF, CUTOUT_state::num, NUM_CUTOUT_TYPES, RENDER_state::opacity_graf_state, CUTOUT_state::opacity_scale, CUTOUT_state::param, RETURN, right, RSA_COUNT, RSA_SUBSTATE, graf_state::spl, MCW_idcode::str, strtod(), THD_MAX_NAME, CUTOUT_state::type, graf_state::xh, xhair_flag, xhair_ovc, graf_state::yh, and ZERO_IDCODE. Referenced by RCREND_read_exec_CB(), and RCREND_read_this_CB().
07953 {
07954 int nbuf , nused ;
07955 char * fbuf , * fptr ;
07956 char str[NSBUF] , left[NSBUF] , middle[NSBUF] , right[NSBUF] ;
07957 int ival ; float fval ;
07958 RENDER_state * rs ;
07959 RENDER_state_array * rsa = NULL ;
07960
07961 ENTRY( "RCREND_read_states" );
07962
07963 /* setup & sanity checks */
07964
07965 fbuf = AFNI_suck_file( fname ) ; if( fbuf == NULL ) RETURN(NULL);
07966
07967 nbuf = strlen(fbuf) ; fptr = fbuf ; nused = 0 ;
07968
07969 /** scan for section strings, which start with "***" **/
07970
07971 str[0] = '\0' ; /* initialize string */
07972
07973 /**----------------------------------------**/
07974 /**-- skip ahead to next section keyword --**/
07975
07976 SkipSection:
07977 while( ! ISTARRED(str) ){ GETSTR; }
07978 if( strcmp(str,"***END") == 0 ) goto Finished ;
07979
07980 /*-- the only thing we like are ***RENDER sections --*/
07981
07982 if( strcmp(str,"***RENDER") != 0 ) goto SkipSection ;
07983
07984 if( rsa == NULL ){ INIT_RSA(rsa) ; } /* create the output array */
07985
07986 rs = (RENDER_state *) calloc( 1,sizeof(RENDER_state) ) ; /* create the new state */
07987
07988 if( RSA_COUNT(rsa) == 0 && rsbase != NULL ){
07989 *rs = *rsbase ; /* copy base state */
07990 } else if( RSA_COUNT(rsa) > 0 ){
07991 *rs = *(RSA_SUBSTATE(rsa,RSA_COUNT(rsa)-1)) ; /* copy previous state */
07992 }
07993
07994 ADDTO_RSA(rsa,rs) ; /* put new state in output array */
07995
07996 /*--- Scan for rendering variable assignments ---*/
07997
07998 #undef ASS_IVAL
07999 #define ASS_IVAL(a,b,c) { if( ival >= b && ival <= c ) a = ival ; }
08000
08001 #undef ASS_FVAL
08002 #define ASS_FVAL(a,b,c) { if( fval >= b && fval <= c ) a = fval ; }
08003
08004 while(1){ /* loop, looking for 'name = value' */
08005
08006 GETEQN ; /* loop exits when this fails */
08007
08008 /*-- dataset stuff --*/
08009
08010 if( strcmp(left,"dset_name") == 0 ){
08011 MCW_strncpy(rs->dset_name,right,THD_MAX_NAME) ;
08012 #if 0
08013 ZERO_IDCODE(rs->dset_idc) ;
08014 #endif
08015 continue ; /* the while(1) loop */
08016 }
08017
08018 if( strcmp(left,"func_dset_name") == 0 ){
08019 MCW_strncpy(rs->func_dset_name,right,THD_MAX_NAME) ;
08020 #if 0
08021 ZERO_IDCODE(rs->func_dset_idc) ;
08022 #endif
08023 continue ;
08024 }
08025
08026 if( strcmp(left,"dset_idc") == 0 ){
08027 MCW_strncpy(rs->dset_idc.str,right,MCW_IDSIZE) ;
08028 #if 0
08029 rs->dset_name[0] = '\0' ;
08030 #endif
08031 continue ;
08032 }
08033
08034 if( strcmp(left,"func_dset_idc") == 0 ){
08035 MCW_strncpy(rs->func_dset_idc.str,right,MCW_IDSIZE) ;
08036 #if 0
08037 rs->func_dset_name[0] = '\0' ;
08038 #endif
08039 continue ;
08040 }
08041
08042 /*-- cutout stuff --*/
08043
08044 if( strcmp(left,"cutout_num") == 0 ){
08045 ival = strtol(right,NULL,10) ;
08046 ASS_IVAL( rs->current_cutout_state.num , 0 , MAX_CUTOUTS ) ;
08047 continue ;
08048 }
08049
08050 if( strcmp(left,"cutout_logic") == 0 ){
08051 if( strcmp(right,"AND")==0 || strcmp(right,"and")==0 || strcmp(right,"And")==0 )
08052 rs->current_cutout_state.logic = CUTOUT_AND ;
08053 else if( strcmp(right,"OR")==0 || strcmp(right,"or")==0 || strcmp(right,"Or")==0 )
08054 rs->current_cutout_state.logic = CUTOUT_OR ;
08055 continue ;
08056 }
08057
08058 if( strcmp(left,"opacity_scale") == 0 ){
08059 fval = strtod(right,NULL) ;
08060 ASS_FVAL( rs->current_cutout_state.opacity_scale , MIN_OPACITY_SCALE , 1.0 ) ;
08061 continue ;
08062 }
08063
08064 #define ASS_CUT_TYPE(nnn) \
08065 if( strcmp(right,#nnn) == 0 ){ rs->current_cutout_state.type[iii] = nnn; continue;}
08066
08067 if( strncmp(left,"cutout_type",strlen("cutout_type")) == 0 ){
08068 char * srb = strstr(left,"[") ;
08069 if( srb != NULL ){
08070 int iii = strtol(srb+1,NULL,10) ;
08071 if( iii >= 0 && iii < MAX_CUTOUTS ){
08072 if( isdigit(right[0]) ){
08073 ival = strtol(right,NULL,10) ;
08074 if( ival >= 0 && ival < NUM_CUTOUT_TYPES && ival != CUT_EXPRESSION )
08075 rs->current_cutout_state.type[iii] = ival ;
08076 } else {
08077 ASS_CUT_TYPE(CUT_NONE) ;
08078 ASS_CUT_TYPE(CUT_RIGHT_OF) ;
08079 ASS_CUT_TYPE(CUT_LEFT_OF) ;
08080 ASS_CUT_TYPE(CUT_ANTERIOR_TO) ;
08081 ASS_CUT_TYPE(CUT_POSTERIOR_TO) ;
08082 ASS_CUT_TYPE(CUT_INFERIOR_TO) ;
08083 ASS_CUT_TYPE(CUT_SUPERIOR_TO) ;
08084 ASS_CUT_TYPE(CUT_TT_ELLIPSOID) ;
08085 ASS_CUT_TYPE(CUT_SLANT_XPY_GT) ;
08086 ASS_CUT_TYPE(CUT_SLANT_XPY_LT) ;
08087 ASS_CUT_TYPE(CUT_SLANT_XMY_GT) ;
08088 ASS_CUT_TYPE(CUT_SLANT_XMY_LT) ;
08089 ASS_CUT_TYPE(CUT_SLANT_YPZ_GT) ;
08090 ASS_CUT_TYPE(CUT_SLANT_YPZ_LT) ;
08091 ASS_CUT_TYPE(CUT_SLANT_YMZ_GT) ;
08092 ASS_CUT_TYPE(CUT_SLANT_YMZ_LT) ;
08093 ASS_CUT_TYPE(CUT_SLANT_XPZ_GT) ;
08094 ASS_CUT_TYPE(CUT_SLANT_XPZ_LT) ;
08095 ASS_CUT_TYPE(CUT_SLANT_XMZ_GT) ;
08096 ASS_CUT_TYPE(CUT_SLANT_XMZ_LT) ;
08097 ASS_CUT_TYPE(CUT_NONOVERLAY) ;
08098 }
08099 }
08100 }
08101 continue ;
08102 }
08103
08104 if( strncmp(left,"cutout_mustdo",strlen("cutout_mustdo")) == 0 ){
08105 char * srb = strstr(left,"[") ;
08106 if( srb != NULL ){
08107 int iii = strtol(srb+1,NULL,10) ;
08108 if( iii >= 0 && iii < MAX_CUTOUTS ){
08109 if( strcmp(right,"TRUE") == 0 || strcmp(right,"true") == 0 ||
08110 strcmp(right,"True") == 0 || strcmp(right,"YES") == 0 ||
08111 strcmp(right,"yes") == 0 || strcmp(right,"Yes") == 0 ||
08112 strcmp(right,"1") == 0 )
08113 rs->current_cutout_state.mustdo[iii] = 1 ;
08114
08115 else if( strcmp(right,"FALSE") == 0 || strcmp(right,"false") == 0 ||
08116 strcmp(right,"False") == 0 || strcmp(right,"NO") == 0 ||
08117 strcmp(right,"no") == 0 || strcmp(right,"No") == 0 ||
08118 strcmp(right,"0") == 0 )
08119 rs->current_cutout_state.mustdo[iii] = 0 ;
08120 }
08121 }
08122 continue ;
08123 }
08124
08125 if( strncmp(left,"cutout_param",strlen("cutout_param")) == 0 ){
08126 char * srb = strstr(left,"[") ;
08127 if( srb != NULL ){
08128 int iii = strtol(srb+1,NULL,10) ;
08129 if( iii >= 0 && iii < MAX_CUTOUTS ){
08130 rs->current_cutout_state.param[iii] = strtod(right,NULL) ;
08131 }
08132 }
08133 continue ;
08134 }
08135
08136 /*-- all other desiderata --*/
08137
08138 #define ASS_INT(nnn) if( strcmp(left,#nnn) == 0 ){ \
08139 rs -> nnn = strtol(right,NULL,10) ; \
08140 continue ; \
08141 }
08142
08143 #define ASS_FLOAT(nnn) if( strcmp(left,#nnn) == 0 ){ \
08144 rs -> nnn = strtod(right,NULL) ; \
08145 continue ; \
08146 }
08147
08148 #define ASS_FLOAT_SUB(nnn,mmm) \
08149 if( strncmp(left,#nnn,strlen(#nnn)) == 0 ){ \
08150 char * srb = strstr(left,"[") ; \
08151 if( srb != NULL ){ \
08152 int iii = strtol(srb+1,NULL,10) ; \
08153 if( iii >= 0 && iii < mmm ) rs->nnn[iii] = strtod(right,NULL) ; \
08154 } \
08155 continue ; \
08156 }
08157
08158 ASS_INT(dset_ival) ; ASS_INT(func_color_ival) ; ASS_INT(func_thresh_ival) ;
08159
08160 ASS_INT(clipbot) ; ASS_INT(cliptop) ;
08161
08162 ASS_FLOAT(angle_roll) ; ASS_FLOAT(angle_pitch) ; ASS_FLOAT(angle_yaw) ;
08163
08164 ASS_INT(xhair_flag) ;
08165 ASS_INT(xhair_ovc) ; /* 08 Mar 2001 */
08166
08167 ASS_INT( func_use_autorange ) ;
08168 ASS_FLOAT( func_threshold ) ;
08169 ASS_FLOAT( func_thresh_top ) ;
08170 ASS_FLOAT( func_color_opacity ) ;
08171 ASS_FLOAT( func_showthru_fac ) ; /* 08 Mar 2002 */
08172 ASS_INT( func_showthru ) ; /* 08 Mar 2002 */
08173 ASS_INT( func_see_overlay ) ;
08174 ASS_INT( func_see_ttatlas ) ; /* 24 Jul 2001 */
08175 ASS_INT( func_cut_overlay ) ;
08176 ASS_INT( func_kill_clusters ) ;
08177 ASS_FLOAT( func_clusters_rmm ) ;
08178 ASS_FLOAT( func_clusters_vmul ) ;
08179 ASS_FLOAT( func_range ) ;
08180
08181 ASS_INT( pbar_mode ) ; ASS_INT( pbar_npane ) ;
08182
08183 ASS_FLOAT_SUB(pbar_pval,NPANE_MAX+1) ;
08184
08185 #ifdef SCRIPT_GRAFS
08186 /*-- read graf stuff --*/
08187
08188 if( strcmp(left,"bright_nhands") == 0 ){
08189 ival = strtol(right,NULL,10) ;
08190 if( ival > 1 && ival <= MAX_GHANDS ) rs->bright_graf_state.nh = ival ;
08191 continue ;
08192 }
08193
08194 if( strcmp(left,"bright_spline") == 0 ){
08195 rs->bright_graf_state.spl = strtol(right,NULL,10) ;
08196 continue ;
08197 }
08198
08199 if( strncmp(left,"bright_handx",strlen("bright_handx")) == 0 ){
08200 char * srb = strstr(left,"[") ;
08201 if( srb != NULL ){
08202 int iii = strtol(srb+1,NULL,10) ;
08203 if( iii >= 0 && iii < MAX_GHANDS ){
08204 rs->bright_graf_state.xh[iii] = strtol(right,NULL,10) ;
08205 }
08206 }
08207 continue ;
08208 }
08209
08210 if( strncmp(left,"bright_handy",strlen("bright_handy")) == 0 ){
08211 char * srb = strstr(left,"[") ;
08212 if( srb != NULL ){
08213 int iii = strtol(srb+1,NULL,10) ;
08214 if( iii >= 0 && iii < MAX_GHANDS ){
08215 rs->bright_graf_state.yh[iii] = strtol(right,NULL,10) ;
08216 }
08217 }
08218 continue ;
08219 }
08220
08221 if( strcmp(left,"opacity_nhands") == 0 ){
08222 ival = strtol(right,NULL,10) ;
08223 if( ival > 1 && ival <= MAX_GHANDS ) rs->opacity_graf_state.nh = ival ;
08224 continue ;
08225 }
08226
08227 if( strcmp(left,"opacity_spline") == 0 ){
08228 rs->opacity_graf_state.spl = strtol(right,NULL,10) ;
08229 continue ;
08230 }
08231
08232 if( strncmp(left,"opacity_handx",strlen("opacity_handx")) == 0 ){
08233 char * srb = strstr(left,"[") ;
08234 if( srb != NULL ){
08235 int iii = strtol(srb+1,NULL,10) ;
08236 if( iii >= 0 && iii < MAX_GHANDS ){
08237 rs->opacity_graf_state.xh[iii] = strtol(right,NULL,10) ;
08238 }
08239 }
08240 continue ;
08241 }
08242
08243 if( strncmp(left,"opacity_handy",strlen("opacity_handy")) == 0 ){
08244 char * srb = strstr(left,"[") ;
08245 if( srb != NULL ){
08246 int iii = strtol(srb+1,NULL,10) ;
08247 if( iii >= 0 && iii < MAX_GHANDS ){
08248 rs->opacity_graf_state.yh[iii] = strtol(right,NULL,10) ;
08249 }
08250 }
08251 continue ;
08252 }
08253 #endif /* SCRIPT_GRAFS */
08254
08255 } /* end of loop over "equations" in the ***RENDER section */
08256
08257 /* loop exits when GETEQN fails miserably (i.e., at EOF) */
08258
08259 Finished:
08260 free(fbuf) ;
08261 if( rsa != NULL && RSA_COUNT(rsa) == 0 ){ FREE_RSA(rsa) ; }
08262 RETURN(rsa);
08263 }
|
|
||||||||||||||||
|
Definition at line 7681 of file plug_crender.c. References MCW_choose_cbs::cval, ENTRY, free, MCW_choose_cbs::ival, malloc, MCW_choose_integer(), MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, mcwCR_integer, mcwCR_string, PLUTO_beep(), POPDOWN_string_chooser, RCREND_read_states(), RCREND_read_this_finalize_CB(), RCREND_widgets_to_state(), MCW_choose_cbs::reason, renderer_open, RSA_COUNT, script_cbut, and script_read_fname. Referenced by RCREND_script_CB().
07682 {
07683 int ll ;
07684 char * fname , buf[256] ;
07685 RENDER_state rs ;
07686 RENDER_state_array * rsa ;
07687
07688 ENTRY( "RCREND_read_this_CB" );
07689
07690 if( !renderer_open ){ POPDOWN_string_chooser ; EXRETURN ; }
07691
07692 if( cbs->reason != mcwCR_string ||
07693 cbs->cval == NULL || (ll = strlen(cbs->cval)) == 0 ){
07694
07695 PLUTO_beep() ; EXRETURN ;
07696 }
07697
07698 fname = malloc( sizeof(char) * (ll+8) ) ;
07699 strcpy(fname,cbs->cval) ; strcpy(script_read_fname,fname) ;
07700
07701 if( strstr(fname,".rset") == NULL ){
07702 if( fname[ll-1] != '.' ){ fname[ll++] = '.'; fname[ll] = '\0'; }
07703 strcat(fname,"rset") ;
07704 }
07705
07706 RCREND_widgets_to_state( &rs ) ;
07707 rsa = RCREND_read_states( fname , &rs ) ;
07708
07709 if( rsa == NULL || RSA_COUNT(rsa) < 1 ){
07710 sprintf(buf, "\n"
07711 "** Some error occured when\n"
07712 "** trying to read file %s\n" , fname ) ;
07713 (void) MCW_popup_message( script_cbut , buf ,
07714 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07715 free(fname) ; PLUTO_beep() ; EXRETURN ;
07716 }
07717
07718 free(fname) ; POPDOWN_string_chooser ;
07719
07720 if( RSA_COUNT(rsa) == 1 ){
07721 MCW_choose_cbs cbs ;
07722 cbs.ival = 0 ; cbs.reason = mcwCR_integer ;
07723 RCREND_read_this_finalize_CB( NULL , (XtPointer) rsa , &cbs ) ;
07724 } else {
07725 MCW_choose_integer( w , "[Read This] State Index" ,
07726 0 , RSA_COUNT(rsa)-1 , 0 ,
07727 RCREND_read_this_finalize_CB , (XtPointer) rsa ) ;
07728 }
07729
07730 EXRETURN ;
07731 }
|
|
||||||||||||||||
|
Definition at line 7733 of file plug_crender.c. References DESTROY_RSA, ENTRY, MCW_choose_cbs::ival, mcwCR_integer, PLUTO_beep(), POPDOWN_integer_chooser, RCREND_state_to_widgets(), MCW_choose_cbs::reason, RSA_COUNT, and RSA_SUBSTATE. Referenced by RCREND_read_this_CB().
07734 {
07735 RENDER_state_array * rsa = (RENDER_state_array *) cd ;
07736
07737 ENTRY( "RCREND_read_this_finalize_CB" );
07738
07739 POPDOWN_integer_chooser ;
07740
07741 if( cbs->reason != mcwCR_integer ||
07742 cbs->ival < 0 || cbs->ival >= RSA_COUNT(rsa) ){
07743
07744 PLUTO_beep() ; EXRETURN ;
07745 }
07746
07747 RCREND_state_to_widgets( RSA_SUBSTATE(rsa,cbs->ival) ) ;
07748
07749 DESTROY_RSA(rsa) ;
07750 EXRETURN ;
07751 }
|
|
||||||||||||||||
|
02 Dec 2002 [RWCox]: set bot,top values for graphs (for Button3 popup labels) * Definition at line 2461 of file plug_crender.c. References client_data, MCW_DC::display, ENTRY, RCREND_draw_CB(), RCREND_reload_dataset(), and CR_data::rh.
02462 {
02463 ENTRY( "RCREND_reload_CB" );
02464
02465 if( dset == NULL ){ XBell(dc->display,100) ; EXRETURN ; }
02466
02467 RCREND_reload_dataset() ; /* load data again */
02468
02469 if( gcr.rh != NULL ) RCREND_draw_CB(NULL,NULL,NULL) ; /* draw */
02470
02471 EXRETURN ;
02472 }
|
|
|
like AFNI itself, require two quick presses to exit * Definition at line 2099 of file plug_crender.c. References AV_assign_ival(), AV_fval_to_char(), brickfac, clipbot_faclab, cliptop_faclab, CREN_set_opamap(), MCW_DC::display, DSET_ARRAY, DSET_BRICK, DSET_BRICK_FACTOR, DSET_BRICK_TYPE, dset_ival, DSET_load, CR_data::dset_or, ENTRY, CR_data::fdm, FIX_SCALE_SIZE, free, FREE_VOLUMES, MCW_graf::func, func_color_opacity, func_computed, func_cut_overlay, func_showthru, GRAF_set_xyrange(), GRAF_SIZE, HIDE_SCALE, IS_AXIAL_RAI, ISVALID_DSET, MCW_arrowval::ival, MAX, MCW_histo_bytes(), MCW_invert_widget(), MIN, MRI_BYTE_PTR, mri_histobyte(), mri_histogram(), mri_new_conforming, CR_data::mset, new_data_loaded, new_dset, num_cutouts, MRI_IMAGE::nvox, CR_data::omap, CUTOUT_state::opacity_scale, PASGRAF_set_xyrange(), r_new_resam_dset(), RANGE, range_faclab, range_lab, RCREND_cutout_blobs(), RCREND_reload_func_dset(), RCREND_xhair_overlay(), RCREND_xhair_underlay(), redraw_MCW_pasgraf(), reload_pb, RESAM_NN_TYPE, CR_data::rh, set_MCW_pasgraf(), THD_delete_3dim_dataset(), THD_oriented_brick(), var, and MCW_graf::yeqx. Referenced by RCREND_choose_av_CB(), RCREND_draw_CB(), RCREND_finalize_dset_CB(), RCREND_finalize_func_CB(), and RCREND_reload_CB().
02100 {
02101 THD_3dim_dataset * local_dset;
02102 int sublist[2] = {1, 0}; /* sub-brick list for resampling */
02103 int ii , nvox , vmin,vmax , cbot,ctop , ival,val , cutdone, btype ;
02104 float fac ;
02105 void * var ;
02106 byte * gar ;
02107 MRI_IMAGE * vim ;
02108 XmString xstr ;
02109 char str[64] ;
02110
02111 #define HISTOGRAMATE /* 25 Jul 2001 */
02112 #define NHIST 255
02113 int vtop ;
02114
02115 ENTRY( "RCREND_reload_dataset" );
02116
02117 MCW_invert_widget(reload_pb) ; /* flash a signal */
02118
02119 /* start by tossing any old data */
02120
02121 FREE_VOLUMES ;
02122
02123 /* make sure the dataset is in memory */
02124 DSET_load(dset) ;
02125 local_dset = dset; /* default - if we don't re-orient */
02126 ival = dset_ival; /* unless we resample, then 0 */
02127
02128 /* make an oriented underlay, if needed 26 June 2002 - rickr */
02129 if ( !IS_AXIAL_RAI( dset ) )
02130 {
02131 if ( new_dset || gcr.dset_or == NULL ) /* we need a new one */
02132 {
02133 if ( gcr.dset_or != NULL ) /* lose the old one */
02134 {
02135 THD_delete_3dim_dataset( gcr.dset_or, FALSE );
02136 gcr.dset_or = NULL;
02137 }
02138
02139 /* resample only sub-brick dset_ival */
02140 sublist[0] = 1; sublist[1] = dset_ival;
02141 fprintf(stderr, "++ reorienting underlay as rai...");
02142 gcr.dset_or = r_new_resam_dset(dset, NULL, 0,0,0, "rai",
02143 RESAM_NN_TYPE, sublist);
02144 fprintf(stderr, " done\n");
02145 }
02146
02147 if (gcr.dset_or == NULL)
02148 XBell(dc->display,100); /* an error - keep local_dset as dset */
02149 else
02150 {
02151 local_dset = gcr.dset_or; /* woohoo! we have our new dataset */
02152 ival = 0;
02153 }
02154 }
02155
02156 gcr.mset = local_dset; /* we have our rendering master */
02157
02158 /* reset fdm - delete and re-create */
02159 if( gcr.fdm != NULL )
02160 free(gcr.fdm);
02161
02162 gcr.fdm = THD_oriented_brick( gcr.mset, "RAI" ); /* get mast FD_brick */
02163
02164 vim = DSET_BRICK(local_dset,ival) ;
02165 nvox = vim->nvox ;
02166 var = DSET_ARRAY(local_dset,ival) ;
02167 brickfac = DSET_BRICK_FACTOR(local_dset,ival) ;
02168
02169 /* find data range, clip it, convert to bytes */
02170
02171 grim = mri_new_conforming( vim , MRI_byte ) ; /* new image data */
02172 gar = MRI_BYTE_PTR(grim) ;
02173
02174 btype = DSET_BRICK_TYPE(local_dset,ival);
02175 switch( btype ){
02176
02177 default:{
02178 fprintf( stderr, "RCREND_reload_dataset: invalid brick type %d\n",
02179 btype );
02180 EXRETURN;
02181 }
02182
02183 case MRI_short:{
02184 short * sar = (short *) var ;
02185
02186 vmin = vmax = sar[0] ;
02187 for( ii=1 ; ii < nvox ; ii++ ){ /* find range of values */
02188 val = sar[ii] ;
02189 if( vmin > val ) vmin = val ;
02190 else if( vmax < val ) vmax = val ;
02191 }
02192
02193 #ifdef HISTOGRAMATE
02194 if( vmax > vmin && vmin >= 0 && new_dset ){ /* 25 Jul 2001: find 'good' upper value */
02195 int hist[NHIST] , nhist,nh;
02196 nhist = (vmax-vmin > NHIST) ? NHIST : (vmax-vmin) ;
02197 mri_histogram( vim , vmin,vmax , 1,nhist , hist ) ;
02198 for( nh=ii=0 ; ii < nvox ; ii++ ) if( sar[ii] ) nh++ ; /* count nonzeros */
02199 nh *= 0.005 ; /* find 99.5% point */
02200 for( ii=nhist-1 ; ii > 1 && nh > 0 ; ii-- ) nh -= hist[ii] ; /* in histogram */
02201 vtop = vmin + (ii+0.5)*(vmax-vmin)/(nhist-0.01) ;
02202 if( vtop > vmax || vtop <= vmin ) vtop = vmax ;
02203 } else {
02204 vtop = vmax ;
02205 }
02206 #else
02207 vtop = vmax ;
02208 #endif
02209
02210 if( new_dset ){
02211 AV_assign_ival( clipbot_av , vmin ) ; cbot = vmin ;
02212 AV_assign_ival( cliptop_av , vtop ) ; ctop = vtop ; /* 25 Jul 2001: vmax -> vtop */
02213 } else {
02214 cbot = MAX( clipbot_av->ival , vmin ) ;
02215 ctop = MIN( cliptop_av->ival , vmax ) ;
02216 }
02217
02218 fac = (ctop > cbot) ? 127.9/(ctop-cbot) : 1.0 ;
02219 for( ii=0 ; ii < nvox ; ii++ ){
02220 val = sar[ii] ;
02221 ival = fac * (val-cbot) ; RANGE(ival,0,127) ; gar[ii] = ival ;
02222 }
02223 }
02224 break ;
02225
02226 case MRI_byte:{
02227 byte * bar = (byte *) var ;
02228
02229 vmin = vmax = bar[0] ;
02230 for( ii=1 ; ii < nvox ; ii++ ){ /* find range of values */
02231 val = bar[ii] ;
02232 if( vmin > val ) vmin = val ;
02233 else if( vmax < val ) vmax = val ;
02234 }
02235
02236 #ifdef HISTOGRAMATE
02237 if( vmax > vmin && new_dset ){ /* 25 Jul 2001: find 'good' upper value */
02238 int hist[256] , nhist=256,nh;
02239 mri_histobyte( vim , hist ) ;
02240 for( nh=0,ii=1 ; ii < nhist ; ii++ ) nh += hist[ii] ; /* count nonzeros */
02241 nh *= 0.005 ; /* find 99.5% point */
02242 for( ii=nhist-1 ; ii > 1 && nh > 0 ; ii-- ) nh -= hist[ii] ; /* in histogram */
02243 vtop = ii ;
02244 if( vtop > vmax || vtop <= vmin ) vtop = vmax ;
02245 } else {
02246 vtop = vmax ;
02247 }
02248 #else
02249 vtop = vmax ;
02250 #endif
02251
02252 if( new_dset ){
02253 AV_assign_ival( clipbot_av , vmin ) ; cbot = vmin ;
02254 AV_assign_ival( cliptop_av , vtop ) ; ctop = vtop ; /* 25 Jul 2001: vmax -> vtop */
02255 } else {
02256 cbot = MAX( clipbot_av->ival , vmin ) ;
02257 ctop = MIN( cliptop_av->ival , vmax ) ;
02258 }
02259
02260 fac = (ctop > cbot) ? 127.9/(ctop-cbot) : 1.0 ;
02261 for( ii=0 ; ii < nvox ; ii++ ){
02262 val = bar[ii] ;
02263 ival = fac * (val-cbot) ; RANGE(ival,0,127) ; gar[ii] = ival ;
02264 }
02265 }
02266 break ;
02267 }
02268
02269 /* set label showing data range */
02270
02271 sprintf(str,"Min=%d Max=%d",vmin,vmax) ;
02272 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
02273 XtVaSetValues( range_lab , XmNlabelString , xstr , NULL ) ;
02274 XmStringFree(xstr) ;
02275
02276 /* if brick is scaled, show the scaled labels */
02277
02278 HIDE_SCALE ;
02279
02280 if( brickfac != 0.0 && brickfac != 1.0 ){
02281 char minch[16] , maxch[16] ;
02282
02283 AV_fval_to_char( vmin*brickfac , minch ) ;
02284 AV_fval_to_char( vmax*brickfac , maxch ) ;
02285 sprintf(str,"[%s %s]",minch,maxch) ;
02286 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
02287 XtVaSetValues( range_faclab , XmNlabelString , xstr , NULL ) ;
02288 XmStringFree(xstr) ;
02289
02290 AV_fval_to_char( brickfac * clipbot_av->ival , minch ) ;
02291 sprintf(str,"[-> %s]",minch) ;
02292 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
02293 XtVaSetValues( clipbot_faclab , XmNlabelString , xstr , NULL ) ;
02294 XmStringFree(xstr) ;
02295
02296 AV_fval_to_char( brickfac * cliptop_av->ival , maxch ) ;
02297 sprintf(str,"[-> %s]",maxch) ;
02298 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
02299 XtVaSetValues( cliptop_faclab , XmNlabelString , xstr , NULL ) ;
02300 XmStringFree(xstr) ;
02301
02302 XtManageChild( range_faclab ) ;
02303 XtManageChild( clipbot_faclab ) ;
02304 XtManageChild( cliptop_faclab ) ;
02305 } else {
02306 XtUnmanageChild( range_faclab ) ;
02307 XtUnmanageChild( clipbot_faclab ) ;
02308 XtUnmanageChild( cliptop_faclab ) ;
02309 }
02310
02311 FIX_SCALE_SIZE ;
02312
02313 /* check graphs and set opacity map */
02314
02315 { int hist[256] , nvox = grim->nvox , htop , ii, max_index ;
02316 float ofac = current_cutout_state.opacity_scale ;
02317
02318 /* do the histogram graph */
02319
02320 MCW_histo_bytes( nvox , MRI_BYTE_PTR(grim) , hist ) ;
02321
02322 /* get value of the maximum non-zero index */
02323 for( max_index=255; (max_index > 0) && !hist[max_index]; max_index-- )
02324 ;
02325
02326 if ( max_index >= GRAF_SIZE ) /* then fold 2 into 1 */
02327 for( ii=0 ; ii < GRAF_SIZE ; ii++ )
02328 hist[ii] = hist[2*ii] + hist[2*ii+1];
02329
02330 htop = 0 ;
02331 for( ii=0 ; ii < GRAF_SIZE ; ii++ )
02332 if( ii > 0 && hist[ii] > htop ) htop = hist[ii] ; /* find max value */
02333
02334 if( htop == 0 ){
02335 set_MCW_pasgraf( his_graf , NULL ) ;
02336 } else {
02337 float scl = (GRAF_SIZE-0.44) / sqrt((double)htop) ;
02338 byte bhis[GRAF_SIZE] ;
02339 for( ii=0 ; ii < GRAF_SIZE ; ii++ )
02340 bhis[ii] = (hist[ii] > htop) ? GRAF_SIZE-1
02341 : (byte)(scl*sqrt((double)hist[ii])+0.49) ;
02342 set_MCW_pasgraf( his_graf , bhis ) ;
02343 }
02344
02345 redraw_MCW_pasgraf( his_graf ) ;
02346
02347 /* modify the grayscale per the brightness graf */
02348
02349 if( ! gry_graf->yeqx ){
02350 byte * bar=MRI_BYTE_PTR(grim) , * fun=gry_graf->func ;
02351
02352 /* remember that the graph has 256 values, but gray data has 128 */
02353 for( ii=0 ; ii < nvox ; ii++ ) bar[ii] = fun[ 2 * bar[ii] ] >> 1 ;
02354 }
02355
02356 /* modify the opacity per the opacity graf */
02357
02358 for ( ii=0; ii < GRAF_SIZE; ii++ ) /* init */
02359 gcr.omap[ii] = ii / (GRAF_SIZE - 1.0);
02360
02361 if( !opa_graf->yeqx || ofac < 1.0 ){
02362 byte * fun=opa_graf->func ;
02363
02364 if( !opa_graf->yeqx )
02365 for ( ii=0; ii < GRAF_SIZE; ii++ )
02366 gcr.omap[ii] = fun[2*ii]/(2.0*GRAF_SIZE - 1);
02367
02368 if( ofac < 1.0 )
02369 for ( ii=0; ii < GRAF_SIZE; ii++ ) gcr.omap[ii] *= ofac;
02370 }
02371
02372 CREN_set_opamap( gcr.rh, gcr.omap, func_color_opacity );
02373
02374 /** 02 Dec 2002 [RWCox]:
02375 set bot,top values for graphs (for Button3 popup labels) **/
02376
02377 GRAF_set_xyrange( gry_graf , (float)cbot, (float)ctop , 0.0,255.0 ) ;
02378 GRAF_set_xyrange( opa_graf , (float)cbot, (float)ctop , 0.0, 1.0 ) ;
02379 PASGRAF_set_xyrange( his_graf , (float)cbot, (float)ctop , 0.0, 0.0 ) ;
02380 }
02381
02382 /*--- Now deal with overlay, if need be ---*/
02383
02384 func_computed = 0 ; /* at this point, data is for grayscale rendering */
02385 cutdone = 0 ; /* cutouts not done yet */
02386
02387 if( DO_OVERLAY ){
02388 byte * gar , * ovar ;
02389 int nvox = grim->nvox , ii ;
02390
02391 RCREND_reload_func_dset() ;
02392
02393 if( num_cutouts > 0 && !func_cut_overlay ){ /* do cutouts NOW if not */
02394 RCREND_cutout_blobs(grim) ; /* done to overlay */
02395 cutdone = 1 ;
02396 }
02397
02398 ovar = MRI_BYTE_PTR(ovim) ;
02399
02400 if( !func_showthru ){ /* the old code: embed color into volume */
02401
02402 gar = MRI_BYTE_PTR(grim) ;
02403
02404 /* convert gar into index into the functional colormap */
02405
02406 for( ii=0 ; ii < nvox ; ii++ )
02407 if( ovar[ii] != 0 ) gar[ii] = 128 + ovar[ii] ; /* color */
02408 /* 127->128 11 Jan 2002 */
02409
02410 } else { /* 07 Jan 2000: make the showthru bricks instead */
02411
02412 byte * garst ;
02413
02414 grim_showthru = mri_new_conforming( vim , MRI_byte ) ;
02415 garst = MRI_BYTE_PTR(grim_showthru) ;
02416
02417 memset( garst , 0 , sizeof(byte)*nvox ) ;
02418
02419 for( ii=0 ; ii < nvox ; ii++ ) /* load values only if overlay */
02420 if( ovar[ii] != 0 ) garst[ii] = 128 + ovar[ii] ; /* color */
02421 }
02422
02423 func_computed = 1 ; /* data is now set for color rendering */
02424 }
02425
02426 /*--- Other piddling details ---*/
02427 if( num_cutouts > 0 && !cutdone ){ /* if cutouts hit overlay */
02428 RCREND_cutout_blobs(grim) ;
02429 if( func_showthru )
02430 RCREND_cutout_blobs(grim_showthru) ;
02431 }
02432
02433 #if 0 /* rcr - do not render crosshairs with data (for the moment) */
02434 /* 2002.08.29 */
02435
02436 /* fill crosshair data into image volumes */
02437 if( xhair_flag )
02438 {
02439 if ( !ISVALID_DSET( gcr.mset ) )
02440 XBell(dc->display,100);
02441 else if ( ! func_computed )
02442 RCREND_xhair_underlay( gcr.mset ); /* underlay only */
02443 else if ( func_showthru )
02444 RCREND_xhair_overlay( gcr.mset, grim_showthru );
02445 else
02446 RCREND_xhair_overlay( gcr.mset, grim ); /* overlay is in grim */
02447 }
02448 #endif
02449
02450 MCW_invert_widget(reload_pb) ; /* turn the signal off */
02451
02452 new_dset = 0 ; new_data_loaded = 1 ;
02453 FIX_SCALE_SIZE ; /* 09 May 2001 */
02454 EXRETURN ;
02455 }
|
|
|
Definition at line 6819 of file plug_crender.c. References CR_bigstuff::b, MCW_pbar::bigmode, CR_data::bigstuff, MCW_cluster_array::clar, CRBM_IS_BLACK_INDEX, CREN_set_rgbmap(), THD_3dim_dataset::daxes, DESTROY_CLARR, MCW_DC::display, DSET_ARRAY, DSET_BRICK, DSET_BRICK_FACTOR, dset_ival, DSET_load, DSET_NVOX, ENTRY, EQUIV_DATAXES, CR_data::fset_or, func_color_ival, FUNC_RANGE, func_see_overlay, func_thresh_ival, func_thresh_top, func_threshold, func_use_thresh, MCW_arrowval::fval, CR_bigstuff::g, GRAF_SIZE, INVALIDATE_OVERLAY, ISVALID_DSET, MRI_IMAGE::kind, MCW_cluster_to_vol(), MCW_find_clusters(), MRI_BYTE_PTR, mri_new_conforming, CR_data::mset, MCW_DCOV::ncol_ov, new_fset, NPANE_BIG, NPANE_MAX, MCW_cluster_array::num_clu, MCW_pbar::num_panes, MCW_cluster::num_pt, MRI_IMAGE::nvox, MRI_IMAGE::nx, MRI_IMAGE::ny, MRI_IMAGE::nz, nz, MCW_pbar::ov_index, MCW_DC::ovc, MCW_pbar::pval, CR_bigstuff::r, r_new_resam_dset(), RANGE, RCREND_overlay_ttatlas(), RESAM_NN_TYPE, CR_data::rh, THD_delete_3dim_dataset(), thr, THD_dataxes::xxdel, THD_dataxes::yydel, and THD_dataxes::zzdel. Referenced by RCREND_cutout_blobs(), and RCREND_reload_dataset().
06820 {
06821 THD_3dim_dataset * local_dset;
06822 MRI_IMAGE * cim , * tim ;
06823 int sublist[3] = {2, 0, 1}; /* sub-brick list for resampling */
06824 int ival_func, ival_thr;
06825 void * car , * tar ;
06826 float cfac , tfac ;
06827 float bbot, btop, bdelta;
06828 int ii , nvox , num_lp , lp , bindex ;
06829 byte * ovar ;
06830 MCW_pbar * pbar = wfunc_color_pbar ;
06831 byte fim_ovc[NPANE_MAX+1] ;
06832 float fim_thr[NPANE_MAX] , scale_factor , thresh ;
06833
06834 ENTRY( "RCREND_reload_func_dset" );
06835
06836 INVALIDATE_OVERLAY ; /* toss old overlay, if any */
06837
06838 if ( ! ISVALID_DSET( gcr.mset ) ) /* just continue with given func_dset */
06839 {
06840 fprintf( stderr, "failure: no master for functional re-orientation" );
06841 XBell( dc->display, 100 );
06842 }
06843
06844 /* 24 Jul 2001: if not seeing function, make empty ovim */
06845 if( !func_see_overlay || func_dset == NULL ){
06846 ovim = mri_new_conforming( DSET_BRICK(gcr.mset,dset_ival) , MRI_byte ) ;
06847 ovar = MRI_BYTE_PTR(ovim) ;
06848 memset( ovar , 0 , DSET_NVOX(gcr.mset) ) ;
06849 goto EndOfFuncOverlay ; /* AHA! */
06850 }
06851
06852 if ( pbar->bigmode ) /* v1.8 [rickr] */
06853 CREN_set_rgbmap( gcr.rh, NPANE_BIG, gcr.bigstuff.r,
06854 gcr.bigstuff.g, gcr.bigstuff.b );
06855 else
06856 CREN_set_rgbmap( gcr.rh, MIN( dc->ovc->ncol_ov, GRAF_SIZE ),
06857 (dc)->ovc->r_ov, (dc)->ovc->g_ov, (dc)->ovc->b_ov );
06858
06859 DSET_load(func_dset) ; /* make sure is in memory */
06860 local_dset = func_dset;
06861 ival_func = func_color_ival; /* assign defaults, may resample to 0, 1 */
06862 ival_thr = func_thresh_ival;
06863
06864 /* if (!IS_AXIAL_RAI(func_dset)) - no longer our test for re-orientation */
06865
06866 if ( ! EQUIV_DATAXES( gcr.mset->daxes, func_dset->daxes ) )
06867 {
06868 if ( new_fset || gcr.fset_or == NULL ) /* we need a new one */
06869 {
06870 fprintf(stderr, "++ resampling overlay to master grid...");
06871
06872 if ( gcr.fset_or != NULL ) /* lose the old one */
06873 THD_delete_3dim_dataset( gcr.fset_or, FALSE );
06874
06875 sublist[1] = func_color_ival;
06876 sublist[2] = func_thresh_ival;
06877
06878 /* maybe we don't need to resample 2 sub-bricks */
06879 if ( func_color_ival == func_thresh_ival )
06880 sublist[0] = 1;
06881 else
06882 sublist[0] = 2; /* normal case, get 2 bricks */
06883
06884 gcr.fset_or = r_new_resam_dset(func_dset, gcr.mset, 0,0,0, NULL,
06885 RESAM_NN_TYPE, sublist);
06886 fprintf(stderr, " done\n");
06887 }
06888
06889 if (gcr.fset_or == NULL)
06890 XBell(dc->display,100); /* an error - keep local_dset as func_dset */
06891 else
06892 {
06893 local_dset = gcr.fset_or; /* woohoo! we have our new dataset */
06894 ival_func = 0;
06895 if ( func_color_ival == func_thresh_ival ) /* only need 1 brick? */
06896 ival_thr = 0;
06897 else
06898 ival_thr = 1;
06899 }
06900 }
06901
06902 /* color brick */
06903 cim = DSET_BRICK(local_dset,ival_func) ; nvox = cim->nvox ;
06904 car = DSET_ARRAY(local_dset,ival_func) ;
06905 cfac = DSET_BRICK_FACTOR(local_dset,ival_func) ;
06906 if( cfac == 0.0 ) cfac = 1.0 ;
06907
06908 tim = DSET_BRICK(local_dset,ival_thr) ; /* thresh brick */
06909 tar = DSET_ARRAY(local_dset,ival_thr) ;
06910 tfac = DSET_BRICK_FACTOR(local_dset,ival_thr) ;
06911 if( tfac == 0.0 ) tfac = 1.0 ;
06912
06913 ovim = mri_new_conforming( cim , MRI_byte ) ; /* new overlay */
06914 ovar = MRI_BYTE_PTR(ovim) ;
06915
06916 scale_factor = FUNC_RANGE ; /* for map from pbar to data value range */
06917
06918 num_lp = pbar->num_panes ; /* top to bottom */
06919 for( lp=0 ; lp < num_lp ; lp++ ) fim_ovc[lp] = pbar->ov_index[lp] ;
06920
06921 /* off the bottom */
06922 fim_ovc[num_lp] = (func_posfunc) ? (0) : (fim_ovc[num_lp-1]) ;
06923
06924 /* threshold in tar[] scale */
06925 thresh = func_threshold * func_thresh_top / tfac ;
06926
06927 /*--- Load the overlay image with the color overlay index ---*/
06928
06929 /* bigmode stuff - for computing color index [v1.8 rickr] */
06930 if ( pbar->bigmode )
06931 {
06932 btop = scale_factor / cfac;
06933 bbot = (func_posfunc) ? (0) : -btop;
06934 bdelta = (btop - bbot) / NPANE_BIG;
06935 }
06936 else
06937 {
06938 for( lp=0 ; lp < num_lp ; lp++ )
06939 fim_thr[lp] = scale_factor * pbar->pval[lp+1] / cfac ;
06940 }
06941
06942 if( thresh < 1.0 || !func_use_thresh ){ /*--- no thresholding needed ---*/
06943 switch( cim->kind ){
06944
06945 default: {
06946 fprintf( stderr, "RCREND_reload_func_dset: image kind %d is not"
06947 "supported here\n", cim->kind );
06948 EXRETURN;
06949 }
06950
06951 case MRI_short:{
06952 short * sar = (short *) car ;
06953
06954 for( ii=0 ; ii < nvox ; ii++ ){
06955 if( sar[ii] == 0 ){
06956 ovar[ii] = 0 ;
06957 } else if ( pbar->bigmode ) {
06958 /* since 0 is considered blank, use 1 through 127 */
06959 bindex = (int)( (btop - sar[ii])/bdelta + 1);
06960 RANGE(bindex,1,(NPANE_BIG-1));
06961 if ( CRBM_IS_BLACK_INDEX(bindex) )
06962 ovar[ii] = 0;
06963 else
06964 ovar[ii] = bindex;
06965 } else {
06966 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ )
06967 ; /*nada*/
06968 ovar[ii] = fim_ovc[lp] ;
06969 }
06970 }
06971 }
06972 break ;
06973
06974 case MRI_float:{
06975 float * sar = (float *) car ;
06976
06977 for( ii=0 ; ii < nvox ; ii++ ){
06978 if( sar[ii] == 0.0 ){
06979 ovar[ii] = 0 ;
06980 } else if ( pbar->bigmode ) {
06981 /* since 0 is considered blank, use 1 through 127 */
06982 bindex = (int)( (btop - sar[ii])/bdelta + 1);
06983 RANGE(bindex,1,(NPANE_BIG-1));
06984 if ( CRBM_IS_BLACK_INDEX(bindex) )
06985 ovar[ii] = 0;
06986 else
06987 ovar[ii] = bindex;
06988 } else {
06989 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ )
06990 ; /*nada*/
06991 ovar[ii] = fim_ovc[lp] ;
06992 }
06993 }
06994 }
06995 break ;
06996
06997 case MRI_byte:{
06998 byte * sar = (byte *) car ;
06999
07000 for( lp=0 ; lp < num_lp ; lp++ )
07001 if( pbar->pval[lp+1] <= 0.0 )
07002 fim_thr[lp] = 0 ;
07003
07004 for( ii=0 ; ii < nvox ; ii++ ){
07005 if( sar[ii] == 0 ){
07006 ovar[ii] = 0 ;
07007 } else if ( pbar->bigmode ) {
07008 /* since 0 is considered blank, use 1 through 127 */
07009 bindex = (int)( (btop - sar[ii])/bdelta + 1);
07010 RANGE(bindex,1,(NPANE_BIG-1));
07011 if ( CRBM_IS_BLACK_INDEX(bindex) )
07012 ovar[ii] = 0;
07013 else
07014 ovar[ii] = bindex;
07015 } else {
07016 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ )
07017 ; /*nada*/
07018 ovar[ii] = fim_ovc[lp] ;
07019 }
07020 }
07021 }
07022 break ;
07023 } /*--- end of no thresholding case ---*/
07024
07025 } else { /*--- start of thresholding ---*/
07026
07027 switch( cim->kind ){
07028
07029 default: {
07030 fprintf( stderr, "RCREND_reload_func_dset (2): image kind %d is not"
07031 "supported here\n", cim->kind );
07032 EXRETURN;
07033 }
07034
07035 case MRI_short:{
07036 short * sar = (short *) car ;
07037 short * qar = (short *) tar ;
07038 int thr = (int) thresh ;
07039
07040 for( ii=0 ; ii < nvox ; ii++ ){
07041 if( (qar[ii] > -thr && qar[ii] < thr) || sar[ii] == 0.0 ){
07042 ovar[ii] = 0 ;
07043 } else if ( pbar->bigmode ) {
07044 /* since 0 is considered blank, use 1 through 127 */
07045 bindex = (int)( (btop - sar[ii])/bdelta + 1);
07046 RANGE(bindex,1,(NPANE_BIG-1));
07047 if ( CRBM_IS_BLACK_INDEX(bindex) )
07048 ovar[ii] = 0;
07049 else
07050 ovar[ii] = bindex;
07051 } else {
07052 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ )
07053 ; /*nada*/
07054 ovar[ii] = fim_ovc[lp] ;
07055 }
07056 }
07057 }
07058 break ;
07059
07060 case MRI_float:{
07061 float * sar = (float *) car ;
07062 float * qar = (float *) tar ;
07063 float thr = thresh ;
07064
07065 for( ii=0 ; ii < nvox ; ii++ ){
07066 if( (qar[ii] > -thr && qar[ii] < thr) || sar[ii] == 0 ){
07067 ovar[ii] = 0 ;
07068 } else if ( pbar->bigmode ) {
07069 /* since 0 is considered blank, use 1 through 127 */
07070 bindex = (int)( (btop - sar[ii])/bdelta + 1);
07071 RANGE(bindex,1,(NPANE_BIG-1));
07072 if ( CRBM_IS_BLACK_INDEX(bindex) )
07073 ovar[ii] = 0;
07074 else
07075 ovar[ii] = bindex;
07076 } else {
07077 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ )
07078 ; /*nada*/
07079 ovar[ii] = fim_ovc[lp] ;
07080 }
07081 }
07082 }
07083 break ;
07084
07085 case MRI_byte:{
07086 byte * sar = (byte *) car ;
07087 byte * qar = (byte *) tar ;
07088 int thr = (int) thresh ;
07089
07090 for( lp=0 ; lp < num_lp ; lp++ )
07091 if( pbar->pval[lp+1] <= 0.0 )
07092 fim_thr[lp] = 0 ;
07093
07094 for( ii=0 ; ii < nvox ; ii++ ){
07095 if( qar[ii] < thr || sar[ii] == 0 ){
07096 ovar[ii] = 0 ;
07097 } else if ( pbar->bigmode ) {
07098 /* since 0 is considered blank, use 1 through 127 */
07099 bindex = (int)( (btop - sar[ii])/bdelta + 1);
07100 RANGE(bindex,1,(NPANE_BIG-1));
07101 if ( CRBM_IS_BLACK_INDEX(bindex) )
07102 ovar[ii] = 0;
07103 else
07104 ovar[ii] = bindex;
07105 } else {
07106 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ )
07107 ; /*nada*/
07108 ovar[ii] = fim_ovc[lp] ;
07109 }
07110 }
07111 }
07112 break ;
07113 }
07114 }
07115
07116 /*----- if ordered, remove clusters -----*/
07117
07118 if( func_kill_clusters ){
07119 int nx=ovim->nx , ny=ovim->ny , nz=ovim->nz , ptmin,iclu ;
07120 float dx = fabs(local_dset->daxes->xxdel) ,
07121 dy = fabs(local_dset->daxes->yydel) ,
07122 dz = fabs(local_dset->daxes->zzdel) ;
07123 float rmm = wfunc_clusters_rmm_av->fval ,
07124 vmul = wfunc_clusters_vmul_av->fval ;
07125 MCW_cluster_array * clar ;
07126 MCW_cluster * cl ;
07127
07128 if( (rmm >= dx || rmm >= dy || rmm >= dz) && vmul > (dx*dy*dz) ){
07129 ptmin = vmul / (dx*dy*dz) + 0.99 ;
07130 clar = MCW_find_clusters( nx,ny,nz , dx,dy,dz , MRI_byte,ovar , rmm ) ;
07131 if( clar != NULL ){
07132 for( iclu=0 ; iclu < clar->num_clu ; iclu++ ){
07133 cl = clar->clar[iclu] ;
07134 if( cl->num_pt >= ptmin ) /* put back into array */
07135 MCW_cluster_to_vol( nx,ny,nz , MRI_byte,ovar , cl ) ;
07136 }
07137 DESTROY_CLARR(clar) ;
07138 }
07139 }
07140 } /* end of cluster removal */
07141
07142 /*----- other overlay stuff -----*/
07143
07144 EndOfFuncOverlay:
07145
07146 if( func_see_ttatlas ) RCREND_overlay_ttatlas() ; /* 12 July 2001 */
07147
07148 new_fset = 0; /* 28 June 2002 */
07149
07150 EXRETURN ;
07151 }
|
|
|
Definition at line 2478 of file plug_crender.c. References CR_bigstuff::b, MCW_pbar::bigmode, CR_data::bigstuff, CREN_dset_axes(), CREN_set_databytes(), CREN_set_interp(), CREN_set_rgbmap(), CR_data::dset_or, ENTRY, CR_data::fset_or, func_cmap_set, func_computed, func_showthru, func_showthru_pass, CR_bigstuff::g, GRAF_SIZE, interp_ival, MCW_DCOV::ncol_ov, NPANE_BIG, MRI_IMAGE::nx, MRI_IMAGE::ny, MRI_IMAGE::nz, MCW_DC::ovc, CR_bigstuff::r, and CR_data::rh. Referenced by RCREND_draw_CB().
02479 {
02480 ENTRY( "RCREND_reload_renderer" );
02481
02482 if( gcr.rh == NULL ) EXRETURN ; /* error */
02483
02484 CREN_set_interp(gcr.rh, interp_ival);
02485
02486 if( func_computed && func_showthru && func_showthru_pass )
02487 {
02488 /* if we have a reoriented dataset, use it 27 June 2002 - rickr */
02489 if ( gcr.fset_or != NULL )
02490 CREN_dset_axes(gcr.rh, gcr.fset_or );
02491 else
02492 CREN_dset_axes(gcr.rh, func_dset );
02493
02494 CREN_set_databytes(gcr.rh, grim_showthru->nx, grim_showthru->ny,
02495 grim_showthru->nz, MRI_BYTE_PTR(grim_showthru));
02496 }
02497 else
02498 {
02499 /* if we have re-oriented the dataset, give that to the library */
02500 if ( gcr.dset_or != NULL )
02501 CREN_dset_axes(gcr.rh, gcr.dset_or );
02502 else
02503 CREN_dset_axes(gcr.rh, dset );
02504
02505 CREN_set_databytes(gcr.rh, grim->nx, grim->ny, grim->nz,
02506 MRI_BYTE_PTR(grim));
02507 }
02508
02509 if( func_computed && !func_cmap_set ){
02510 if ( wfunc_color_pbar->bigmode )
02511 CREN_set_rgbmap( gcr.rh, NPANE_BIG, gcr.bigstuff.r,
02512 gcr.bigstuff.g, gcr.bigstuff.b );
02513 else
02514 CREN_set_rgbmap( gcr.rh, MIN( dc->ovc->ncol_ov, GRAF_SIZE ),
02515 (dc)->ovc->r_ov, (dc)->ovc->g_ov, (dc)->ovc->b_ov );
02516 func_cmap_set = 1 ; /* do we need to reset the colormap? */
02517 }
02518
02519 EXRETURN ;
02520 }
|
|
||||||||||||||||||||||||||||
|
Compute a rotation matrix. Definition at line 8979 of file plug_crender.c. References DMAT_MUL, ENTRY, LOAD_ROT_MAT, p, q, and RETURN. Referenced by RCREND_inc_angles().
08981 {
08982 THD_dmat33 q , p ;
08983
08984 ENTRY( "RCREND_rotmatrix" );
08985
08986 LOAD_ROT_MAT( q , th1 , ax1 ) ;
08987 LOAD_ROT_MAT( p , th2 , ax2 ) ; q = DMAT_MUL( p , q ) ;
08988 LOAD_ROT_MAT( p , th3 , ax3 ) ; q = DMAT_MUL( p , q ) ;
08989
08990 RETURN(q);
08991 }
|
|
||||||||||||||||||||
|
Compute yaw=a, pitch=b, roll=c, given rotation matrix in form below: [cc ca + sc sb sa sc cb -cc sa + sc sb ca] [ ] Rz(c) * Rx(b) * Ry(a) = [-sc ca + cc sb sa cc cb sc sa + cc sb ca ] [ ] [ cb sa -sb cb ca ]
Definition at line 9006 of file plug_crender.c. References a, c, ENTRY, THD_dmat33::mat, q, roll(), and sb. Referenced by RCREND_inc_angles().
09008 {
09009 double a,b,c ;
09010 double sb,cb , sc,cc ;
09011
09012 ENTRY( "RCREND_rotmatrix_to_angles" );
09013
09014 sb = -q.mat[2][1] ; b = PI-asin(sb) ; cb = cos(b) ;
09015
09016 if( fabs(cb) < 0.001 ){ /* singular case */
09017 a = 0 ;
09018 cc = q.mat[0][0] ;
09019 sc = q.mat[0][2] ; if( sb < 0.0 ) sc = -sc ;
09020 c = atan2( sc , cc ) ;
09021 } else {
09022 a = atan2( -q.mat[2][0] , -q.mat[2][2] ) ;
09023 c = atan2( -q.mat[0][1] , -q.mat[1][1] ) ;
09024 }
09025
09026 if( a < 0 ) a += 2.0*PI ;
09027 if( c < 0 ) c += 2.0*PI ;
09028
09029 *yaw = a ; *pitch = b ; *roll = c ; EXRETURN ;
09030
09031 EXRETURN;
09032 }
|
|
||||||||||||||||
|
Definition at line 7757 of file plug_crender.c. References MCW_choose_cbs::cval, ENTRY, free, malloc, MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, mcwCR_string, PLUTO_beep(), POPDOWN_string_chooser, RCREND_save_state(), MCW_choose_cbs::reason, renderer_open, RSA_COUNT, RSA_SUBSTATE, script_cbut, THD_filename_ok(), and THD_is_file(). Referenced by RCREND_script_CB().
07758 {
07759 int ll , ii ;
07760 char * fname , buf[256] , * sbuf ;
07761 RENDER_state * rs ;
07762 FILE * fp ;
07763
07764 ENTRY( "RCREND_save_many_CB" );
07765
07766 if( !renderer_open ||
07767 renderings_state == NULL || RSA_COUNT(renderings_state) < 1 ){
07768
07769 POPDOWN_string_chooser ; EXRETURN ;
07770 }
07771
07772 if( cbs->reason != mcwCR_string ||
07773 cbs->cval == NULL || (ll = strlen(cbs->cval)) == 0 ){
07774
07775 PLUTO_beep() ; EXRETURN ;
07776 }
07777
07778 fname = malloc( sizeof(char) * (ll+8) ) ;
07779 strcpy(fname,cbs->cval) ;
07780
07781 if( strstr(fname,".rset") == NULL ){
07782 if( fname[ll-1] != '.' ){ fname[ll++] = '.'; fname[ll] = '\0'; }
07783 strcat(fname,"rset") ;
07784 }
07785
07786 if( !THD_filename_ok(fname) ){
07787 sprintf(buf," \n"
07788 "** Filename %s is illegal!\n"
07789 "** Try something different.\n" , fname ) ;
07790 (void) MCW_popup_message( script_cbut , buf ,
07791 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07792 free(fname) ; PLUTO_beep() ; EXRETURN ;
07793 }
07794
07795 if( THD_is_file(fname) ){
07796 sprintf(buf," \n"
07797 "** File %s already exists!\n"
07798 "** AFNI won't overwrite it.\n" , fname ) ;
07799 (void) MCW_popup_message( script_cbut , buf ,
07800 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07801 free(fname) ; PLUTO_beep() ; EXRETURN ;
07802 }
07803
07804 fp = fopen( fname , "w" ) ;
07805 if( fp == NULL ){
07806 sprintf(buf, " \n"
07807 "** Some error occured when\n"
07808 "** trying to open file %s\n" , fname ) ;
07809 (void) MCW_popup_message( script_cbut , buf ,
07810 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07811 free(fname) ; PLUTO_beep() ; EXRETURN ;
07812 }
07813 free(fname) ; POPDOWN_string_chooser ;
07814
07815 rs = NULL ;
07816 for( ii=0 ; ii < RSA_COUNT(renderings_state) ; ii++ ){
07817 sbuf = RCREND_save_state( RSA_SUBSTATE(renderings_state,ii) , rs ) ;
07818 fwrite( sbuf , 1 , strlen(sbuf) , fp ) ; free(sbuf) ;
07819 rs = RSA_SUBSTATE(renderings_state,ii) ;
07820 }
07821
07822 fclose( fp ) ;
07823
07824 EXRETURN;
07825 }
|
|
||||||||||||
|
Definition at line 8289 of file plug_crender.c. References angle_pitch, angle_roll, angle_yaw, RENDER_state::bright_graf_state, RENDER_state::current_cutout_state, cutout_logic_labels, cutout_mustdo_names, cutout_type_names, RENDER_state::dset_idc, dset_ival, ENTRY, EQUIV_IDCODES, func_clusters_rmm, func_clusters_vmul, func_color_ival, func_color_opacity, func_cut_overlay, RENDER_state::func_dset_idc, func_kill_clusters, func_range, func_see_overlay, func_see_ttatlas, func_showthru, func_showthru_fac, func_thresh_ival, func_thresh_top, func_threshold, func_use_autorange, graf_states_equal(), ISZERO_IDCODE, CUTOUT_state::logic, malloc, CUTOUT_state::mustdo, graf_state::nh, CUTOUT_state::num, RENDER_state::opacity_graf_state, CUTOUT_state::opacity_scale, CUTOUT_state::param, RENDER_state::pbar_mode, RENDER_state::pbar_npane, RENDER_state::pbar_pval, RETURN, RSDIFF_NUM, RSP_F2C, RSP_FLOAT, RSP_INT, RSP_STR, graf_state::spl, MCW_idcode::str, THD_zzprintf(), CUTOUT_state::type, graf_state::xh, xhair_flag, xhair_ovc, and graf_state::yh. Referenced by RCREND_save_many_CB(), and RCREND_save_this_CB().
08290 {
08291 char * sss ;
08292 int ii ;
08293
08294 ENTRY( "RCREND_save_state" );
08295
08296 if( rs == NULL ) RETURN(NULL);
08297
08298 sss = (char *) malloc( sizeof(char) * 32 ) ;
08299 strcpy(sss,"\n***RENDER\n") ;
08300
08301 /* write dataset names */
08302
08303 RSP_STR(dset_name) ;
08304 RSP_STR(func_dset_name) ;
08305
08306 /* write dataset ID codes [12 Apr 2000] */
08307
08308 if( rsbase == NULL || !EQUIV_IDCODES(rsbase->dset_idc,rs->dset_idc) )
08309 if( !ISZERO_IDCODE(rs->dset_idc) )
08310 sss = THD_zzprintf( sss , " dset_idc = %s\n" , rs->dset_idc.str ) ;
08311
08312 if( rsbase == NULL || !EQUIV_IDCODES(rsbase->func_dset_idc,rs->func_dset_idc) )
08313 if( !ISZERO_IDCODE(rs->func_dset_idc) )
08314 sss = THD_zzprintf( sss , " func_dset_idc = %s\n" , rs->func_dset_idc.str ) ;
08315
08316 /* scalar values */
08317
08318 RSP_INT(dset_ival) ;
08319 RSP_INT(func_color_ival) ; RSP_INT(func_thresh_ival) ;
08320
08321 RSP_INT(clipbot) ; RSP_INT(cliptop) ;
08322
08323 RSP_FLOAT(angle_roll) ; RSP_FLOAT(angle_pitch) ; RSP_FLOAT(angle_yaw) ;
08324
08325 RSP_INT(xhair_flag) ;
08326 RSP_INT(xhair_ovc) ; /* 08 Mar 2001 */
08327
08328 RSP_INT( func_use_autorange ) ; RSP_FLOAT( func_threshold ) ;
08329 RSP_FLOAT( func_thresh_top ) ;
08330 RSP_FLOAT( func_color_opacity ) ; RSP_INT( func_see_overlay ) ;
08331 RSP_FLOAT( func_showthru_fac ) ; RSP_INT( func_showthru ) ; /* 08 Mar 2002 */
08332 RSP_INT( func_cut_overlay ) ; RSP_INT( func_kill_clusters ) ;
08333 RSP_FLOAT( func_clusters_rmm ) ; RSP_FLOAT( func_clusters_vmul ) ;
08334 RSP_FLOAT( func_range ) ;
08335 RSP_INT( func_see_ttatlas ) ; /* 24 Jul 2001 */
08336
08337 /* pbar values [all of them if number or mode changed] */
08338
08339 if( rsbase == NULL ||
08340 rsbase->pbar_mode != rs->pbar_mode || rsbase->pbar_npane != rs->pbar_npane ){
08341
08342 sss = THD_zzprintf( sss , " // new pbar values\n" ) ;
08343 sss = THD_zzprintf( sss , " pbar_mode = %d\n",rs->pbar_mode ) ;
08344 sss = THD_zzprintf( sss , " pbar_npane = %d\n",rs->pbar_npane ) ;
08345 for( ii=0 ; ii <= rs->pbar_npane ; ii++ )
08346 sss = THD_zzprintf( sss , " pbar_pval[%d] = %s\n" ,
08347 ii , RSP_F2C(rs->pbar_pval[ii]) ) ;
08348 } else {
08349 for( ii=0 ; ii <= rs->pbar_npane ; ii++ )
08350 if( rsbase->pbar_pval[ii] != rs->pbar_pval[ii] )
08351 sss = THD_zzprintf( sss , " pbar_pval[%d] = %s\n" ,
08352 ii , RSP_F2C(rs->pbar_pval[ii]) ) ;
08353 }
08354
08355 /* cutout stuff */
08356
08357 if( RSDIFF_NUM(current_cutout_state.opacity_scale) )
08358 sss = THD_zzprintf(sss," opacity_scale = %s\n",
08359 RSP_F2C(rs->current_cutout_state.opacity_scale) ) ;
08360
08361 /* all cutout parameters if number or global logic changed */
08362
08363 if( RSDIFF_NUM(current_cutout_state.num) || RSDIFF_NUM(current_cutout_state.logic) ){
08364
08365 sss = THD_zzprintf( sss , " // new cutout values\n" ) ;
08366 sss = THD_zzprintf( sss , " cutout_num = %d\n" , rs->current_cutout_state.num ) ;
08367 sss = THD_zzprintf( sss , " cutout_logic = %s\n" ,
08368 cutout_logic_labels[rs->current_cutout_state.logic]) ;
08369
08370 for( ii=0 ; ii < rs->current_cutout_state.num ; ii++ ){
08371 sss = THD_zzprintf( sss , " cutout_type[%d] = %s\n" ,
08372 ii ,
08373 cutout_type_names[rs->current_cutout_state.type[ii]] ) ;
08374
08375 sss = THD_zzprintf( sss , " cutout_mustdo[%d] = %s\n" ,
08376 ii ,
08377 cutout_mustdo_names[rs->current_cutout_state.mustdo[ii]] ) ;
08378
08379 sss = THD_zzprintf( sss , " cutout_param[%d] = %s\n" ,
08380 ii , RSP_F2C(rs->current_cutout_state.param[ii]) ) ;
08381 }
08382
08383 } else {
08384 for( ii=0 ; ii < rs->current_cutout_state.num ; ii++ ){
08385 if( RSDIFF_NUM(current_cutout_state.type[ii]) )
08386 sss = THD_zzprintf( sss , " cutout_type[%d] = %s\n" ,
08387 ii ,
08388 cutout_type_names[rs->current_cutout_state.type[ii]] ) ;
08389
08390 if( RSDIFF_NUM(current_cutout_state.mustdo[ii]) )
08391 sss = THD_zzprintf( sss , " cutout_mustdo[%d] = %s\n" ,
08392 ii ,
08393 cutout_mustdo_names[rs->current_cutout_state.mustdo[ii]] ) ;
08394
08395 if( RSDIFF_NUM(current_cutout_state.param[ii]) )
08396 sss = THD_zzprintf( sss , " cutout_param[%d] = %s\n" ,
08397 ii , RSP_F2C(rs->current_cutout_state.param[ii]) ) ;
08398 }
08399 }
08400
08401 #ifdef SCRIPT_GRAFS
08402 /*-- write graf stuff --*/
08403
08404 if( rsbase == NULL || !graf_states_equal(&(rsbase->bright_graf_state),&(rs->bright_graf_state)) ){
08405 sss = THD_zzprintf( sss , " // new bright graf values\n" ) ;
08406 sss = THD_zzprintf( sss , " bright_nhands = %d\n" , rs->bright_graf_state.nh ) ;
08407 sss = THD_zzprintf( sss , " bright_spline = %d\n" , rs->bright_graf_state.spl) ;
08408 for( ii=0 ; ii < rs->bright_graf_state.nh ; ii++ ){
08409 sss = THD_zzprintf( sss , " bright_handx[%d] = %d\n" ,
08410 ii , rs->bright_graf_state.xh[ii] ) ;
08411 sss = THD_zzprintf( sss , " bright_handy[%d] = %d\n" ,
08412 ii , rs->bright_graf_state.yh[ii] ) ;
08413 }
08414 }
08415
08416 if( rsbase == NULL || !graf_states_equal(&(rsbase->opacity_graf_state),&(rs->opacity_graf_state)) ){
08417 sss = THD_zzprintf( sss , " // new opacity graf values\n" ) ;
08418 sss = THD_zzprintf( sss , " opacity_nhands = %d\n" , rs->opacity_graf_state.nh ) ;
08419 sss = THD_zzprintf( sss , " opacity_spline = %d\n" , rs->opacity_graf_state.spl) ;
08420 for( ii=0 ; ii < rs->opacity_graf_state.nh ; ii++ ){
08421 sss = THD_zzprintf( sss , " opacity_handx[%d] = %d\n" ,
08422 ii , rs->opacity_graf_state.xh[ii] ) ;
08423 sss = THD_zzprintf( sss , " opacity_handy[%d] = %d\n" ,
08424 ii , rs->opacity_graf_state.yh[ii] ) ;
08425 }
08426 }
08427 #endif /* SCRIPT_GRAFS */
08428
08429 sss = THD_zzprintf( sss , "\n" ) ;
08430 RETURN(sss);
08431 }
|
|
||||||||||||||||
|
Definition at line 7606 of file plug_crender.c. References MCW_choose_cbs::cval, ENTRY, free, malloc, MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, mcwCR_string, PLUTO_beep(), POPDOWN_string_chooser, RCREND_save_state(), RCREND_widgets_to_state(), MCW_choose_cbs::reason, renderer_open, script_cbut, THD_filename_ok(), and THD_is_file(). Referenced by RCREND_script_CB().
07607 {
07608 int ll ;
07609 char * fname , buf[256] , * sbuf ;
07610 RENDER_state rs ;
07611 FILE * fp ;
07612
07613 ENTRY( "RCREND_save_this_CB" );
07614
07615 if( !renderer_open ){ POPDOWN_string_chooser ; EXRETURN ; }
07616
07617 if( cbs->reason != mcwCR_string ||
07618 cbs->cval == NULL || (ll = strlen(cbs->cval)) == 0 ){
07619
07620 PLUTO_beep() ; EXRETURN ;
07621 }
07622
07623 fname = malloc( sizeof(char) * (ll+8) ) ;
07624 strcpy(fname,cbs->cval) ;
07625
07626 if( strstr(fname,".rset") == NULL ){
07627 if( fname[ll-1] != '.' ){ fname[ll++] = '.'; fname[ll] = '\0'; }
07628 strcat(fname,"rset") ;
07629 }
07630
07631 if( !THD_filename_ok(fname) ){
07632 sprintf(buf," \n"
07633 "** Filename %s is illegal!\n"
07634 "** Try something different.\n" , fname ) ;
07635 (void) MCW_popup_message( script_cbut , buf ,
07636 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07637 free(fname) ; PLUTO_beep() ; EXRETURN ;
07638 }
07639
07640 if( THD_is_file(fname) ){
07641 sprintf(buf," \n"
07642 "** File %s already exists!\n"
07643 "** AFNI won't overwrite it.\n" , fname ) ;
07644 (void) MCW_popup_message( script_cbut , buf ,
07645 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07646 free(fname) ; PLUTO_beep() ; EXRETURN ;
07647 }
07648
07649 RCREND_widgets_to_state( &rs ) ;
07650 sbuf = RCREND_save_state( &rs , NULL ) ;
07651
07652 if( sbuf == NULL ){
07653 (void) MCW_popup_message( script_cbut ,
07654 "\n"
07655 "** Some error occured when\n"
07656 "** trying to save the state!\n" ,
07657 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07658 free(fname) ; PLUTO_beep() ; EXRETURN ;
07659 }
07660
07661 fp = fopen( fname , "w" ) ;
07662 if( fp == NULL ){
07663 (void) MCW_popup_message( script_cbut ,
07664 "\n"
07665 "** Some error occured when\n"
07666 "** trying to open the file!\n" ,
07667 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07668 free(sbuf) ; free(fname) ; PLUTO_beep() ; EXRETURN ;
07669 }
07670
07671 POPDOWN_string_chooser ;
07672 fwrite( sbuf , 1 , strlen(sbuf) , fp ) ;
07673 fclose( fp ) ;
07674 free( sbuf ) ; free(fname) ; EXRETURN ;
07675 }
|
|
||||||||||||||||
|
Definition at line 7503 of file plug_crender.c. References ENTRY, MCW_val_bbox(), and script_brindex. Referenced by RCREND_script_menu().
07504 {
07505 ENTRY( "RCREND_script_brindex_CB" );
07506
07507 script_brindex = MCW_val_bbox( script_brindex_bbox ) ;
07508 EXRETURN ;
07509 }
|
|
||||||||||||||||
|
Definition at line 7546 of file plug_crender.c. References ENTRY, MCW_choose_string(), MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, PLUTO_beep(), RCREND_read_exec_CB(), RCREND_read_this_CB(), RCREND_save_many_CB(), RCREND_save_this_CB(), RSA_COUNT, script_cbut, script_dsetchange, script_read_exec_pb, script_read_fname, script_read_this_pb, script_save_many_pb, and script_save_this_pb.
07547 {
07548 ENTRY( "RCREND_script_CB" );
07549
07550 if( w == script_save_this_pb ){
07551 MCW_choose_string( w , "[Save This] Filename prefix:" , NULL ,
07552 RCREND_save_this_CB , NULL ) ;
07553 EXRETURN ;
07554 }
07555
07556 if( w == script_read_this_pb ){
07557 MCW_choose_string( w , "[Read This] Filename prefix:" ,
07558 script_read_fname ,
07559 RCREND_read_this_CB , NULL ) ;
07560 EXRETURN ;
07561 }
07562
07563 if( w == script_save_many_pb ){
07564 if( renderings_state == NULL || RSA_COUNT(renderings_state) < 1 ){
07565 (void) MCW_popup_message( script_cbut ,
07566 " \n"
07567 "** No rendering states\n"
07568 "** available to save!\n" ,
07569 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07570 PLUTO_beep() ; EXRETURN ;
07571 }
07572 MCW_choose_string( w , "[Save Many] Filename prefix:" , NULL ,
07573 RCREND_save_many_CB , NULL ) ;
07574 EXRETURN ;
07575 }
07576
07577 if( w == script_read_exec_pb ){
07578 #ifdef SCRIPT_DSETS
07579 if( dset == NULL && script_dsetchange == 0 )
07580 #else
07581 if( dset == NULL )
07582 #endif
07583 {
07584 (void) MCW_popup_message( script_cbut ,
07585 " \n"
07586 "** No dataset loaded\n"
07587 "** for rendering!\n" ,
07588 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07589 PLUTO_beep() ; EXRETURN ;
07590 }
07591 MCW_choose_string( w , "[Read & Exec] Filename prefix:" ,
07592 script_read_fname ,
07593 RCREND_read_exec_CB , NULL ) ;
07594 EXRETURN ;
07595 }
07596
07597 /*-- should never be reached --*/
07598
07599 PLUTO_beep() ; EXRETURN ;
07600 }
|
|
||||||||||||||||
|
Definition at line 7476 of file plug_crender.c. References ENTRY, MCW_val_bbox(), and script_dsetchange. Referenced by RCREND_script_menu().
07477 {
07478 ENTRY( "RCREND_script_dset_CB" );
07479
07480 script_dsetchange = MCW_val_bbox( script_dset_bbox ) ;
07481 EXRETURN ;
07482 }
|
|
||||||||||||||||
|
Definition at line 7490 of file plug_crender.c. References ENTRY, MCW_val_bbox(), and script_graf. Referenced by RCREND_script_menu().
07491 {
07492 ENTRY( "RCREND_script_graf_CB" );
07493
07494 script_graf = MCW_val_bbox( script_graf_bbox ) ;
07495 EXRETURN ;
07496 }
|
|
||||||||||||||||
|
Definition at line 7515 of file plug_crender.c. References drive_MCW_imseq(), ENTRY, isqDR_getimnr, MCW_val_bbox(), RCREND_state_to_widgets(), RSA_COUNT, RSA_SUBSTATE, script_load, and script_load_last. Referenced by RCREND_script_menu().
07516 {
07517 int sl = MCW_val_bbox( script_load_bbox ) ;
07518
07519 ENTRY( "RCREND_script_load_CB" );
07520
07521 if( sl == script_load ) EXRETURN ; /* no change? */
07522
07523 script_load = sl ;
07524 script_load_last = -1 ;
07525
07526 if( script_load && imseq != NULL && renderings_state != NULL ){
07527 int nn ;
07528 drive_MCW_imseq( imseq , isqDR_getimnr , (XtPointer) &nn ) ;
07529 if( nn >= 0 && nn < RSA_COUNT(renderings_state) ){
07530 RCREND_state_to_widgets( RSA_SUBSTATE(renderings_state,nn) ) ;
07531 script_load_last = nn ;
07532 }
07533 } else if( !script_load && last_rendered_state != NULL ){
07534 RCREND_state_to_widgets( last_rendered_state ) ;
07535 }
07536
07537 EXRETURN ;
07538 }
|
|
|
Definition at line 7344 of file plug_crender.c. References Three_D_View::dc, ENTRY, LABEL_ARG, MCW_BB_check, MCW_BB_noframe, MCW_reghint_children(), new_MCW_bbox(), MCW_DC::ovc, MCW_DCOV::pixov_brightest, RCREND_script_brindex_CB(), RCREND_script_dset_CB(), RCREND_script_graf_CB(), RCREND_script_load_CB(), script_cbut, script_menu, script_read_exec_pb, script_read_this_pb, script_save_many_pb, script_save_this_pb, VISIBILIZE_WHEN_MAPPED, and MCW_bbox::wrowcol. Referenced by RCREND_make_widgets().
07345 {
07346 Widget rc , mbar ;
07347 static char * load_bbox_label[1] = { "Load Widgets" } ;
07348 static char * brindex_bbox_label[1] = { "Brick Index?" } ;
07349 #ifdef SCRIPT_GRAFS
07350 static char * graf_bbox_label[1] = { "Alter Grafs?" } ;
07351 #endif
07352 static char * dset_bbox_label[1] = { "Alter Dsets?" } ;
07353
07354 ENTRY( "RCREND_script_menu" );
07355
07356 rc = XtVaCreateWidget(
07357 "dialog" , xmRowColumnWidgetClass , parent ,
07358 XmNorientation , XmHORIZONTAL ,
07359 XmNpacking , XmPACK_TIGHT ,
07360 XmNtraversalOn , False ,
07361 XmNinitialResourcesPersistent , False ,
07362 NULL ) ;
07363
07364 mbar = XmCreateMenuBar( rc , "dialog" , NULL,0 ) ;
07365 XtVaSetValues( mbar ,
07366 XmNmarginWidth , 0 ,
07367 XmNmarginHeight , 0 ,
07368 XmNspacing , 3 ,
07369 XmNborderWidth , 0 ,
07370 XmNborderColor , 0 ,
07371 XmNtraversalOn , False ,
07372 XmNbackground , im3d->dc->ovc->pixov_brightest ,
07373 NULL ) ;
07374 XtManageChild( mbar ) ;
07375
07376 script_menu =
07377 XmCreatePulldownMenu( mbar , "menu" , NULL,0 ) ;
07378
07379 VISIBILIZE_WHEN_MAPPED(script_menu) ;
07380
07381 script_cbut =
07382 XtVaCreateManagedWidget(
07383 "dialog" , xmCascadeButtonWidgetClass , mbar ,
07384 LABEL_ARG("Scripts") ,
07385 XmNsubMenuId , script_menu ,
07386 XmNmarginWidth , 0 ,
07387 XmNmarginHeight , 0 ,
07388 XmNmarginBottom , 0 ,
07389 XmNmarginTop , 0 ,
07390 XmNmarginRight , 0 ,
07391 XmNmarginLeft , 0 ,
07392 XmNtraversalOn , False ,
07393 XmNinitialResourcesPersistent , False ,
07394 NULL ) ;
07395
07396 #undef MENU_SLINE
07397 #define MENU_SLINE \
07398 (void) XtVaCreateManagedWidget( \
07399 "dialog" , xmSeparatorWidgetClass , script_menu , \
07400 XmNseparatorType , XmSINGLE_LINE , NULL )
07401
07402 /* macro to create a new script menu button */
07403
07404 #define SCRIPT_MENU_BUT(wname,label) \
07405 wname = \
07406 XtVaCreateManagedWidget( \
07407 "dialog" , xmPushButtonWidgetClass , script_menu , \
07408 LABEL_ARG( label ) , \
07409 XmNmarginHeight , 0 , \
07410 XmNtraversalOn , False , \
07411 XmNinitialResourcesPersistent , False , \
07412 NULL ) ; \
07413 XtAddCallback( wname , XmNactivateCallback , \
07414 RCREND_script_CB , NULL ) ;
07415
07416 /*** top of menu = a label to click on that does nothing at all ***/
07417
07418 (void) XtVaCreateManagedWidget(
07419 "dialog" , xmLabelWidgetClass , script_menu ,
07420 LABEL_ARG("-- Cancel --") ,
07421 XmNrecomputeSize , False ,
07422 XmNinitialResourcesPersistent , False ,
07423 NULL ) ;
07424
07425 MENU_SLINE ;
07426
07427 SCRIPT_MENU_BUT( script_save_this_pb , "Save This" ) ;
07428 SCRIPT_MENU_BUT( script_save_many_pb , "Save Many" ) ;
07429
07430 MENU_SLINE ;
07431
07432 SCRIPT_MENU_BUT( script_read_this_pb , "Read This" ) ;
07433 SCRIPT_MENU_BUT( script_read_exec_pb , "Read & Exec" ) ;
07434
07435 MENU_SLINE ;
07436
07437 script_load_bbox = new_MCW_bbox( script_menu , 1 , load_bbox_label ,
07438 MCW_BB_check , MCW_BB_noframe ,
07439 RCREND_script_load_CB , NULL ) ;
07440 MCW_reghint_children( script_load_bbox->wrowcol ,
07441 "Recall settings from images" ) ;
07442
07443 script_brindex_bbox = new_MCW_bbox( script_menu , 1 , brindex_bbox_label ,
07444 MCW_BB_check , MCW_BB_noframe ,
07445 RCREND_script_brindex_CB , NULL ) ;
07446 MCW_reghint_children( script_brindex_bbox->wrowcol ,
07447 "Set brick index when loading widgets?" ) ;
07448
07449 #ifdef SCRIPT_GRAFS
07450 script_graf_bbox = new_MCW_bbox( script_menu , 1 , graf_bbox_label ,
07451 MCW_BB_check , MCW_BB_noframe ,
07452 RCREND_script_graf_CB , NULL ) ;
07453 MCW_reghint_children( script_graf_bbox->wrowcol ,
07454 "Set grafs when loading widgets?" ) ;
07455 #endif
07456
07457 #ifdef SCRIPT_DSETS
07458 /* 12 Apr 2000 - toggle button for dataset changing via scripts */
07459
07460 script_dset_bbox = new_MCW_bbox( script_menu , 1 , dset_bbox_label ,
07461 MCW_BB_check , MCW_BB_noframe ,
07462 RCREND_script_dset_CB , NULL ) ;
07463 MCW_reghint_children( script_dset_bbox->wrowcol ,
07464 "Change datasets when loading widgets?" ) ;
07465 #endif
07466
07467 XtManageChild( rc ) ;
07468 EXRETURN ;
07469 }
|
|
||||||||||||||||
|
Definition at line 6507 of file plug_crender.c. References ENTRY, FREE_VOLUMES, func_see_overlay, INVALIDATE_OVERLAY, and MCW_val_bbox(). Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06508 {
06509 int newsee = MCW_val_bbox(wfunc_see_overlay_bbox) ;
06510
06511 ENTRY( "RCREND_see_overlay_CB" );
06512
06513 if( newsee == func_see_overlay ) EXRETURN ;
06514
06515 func_see_overlay = newsee ;
06516 INVALIDATE_OVERLAY ; FREE_VOLUMES ;
06517 EXRETURN ;
06518 }
|
|
||||||||||||||||
|
Definition at line 6524 of file plug_crender.c. References ENTRY, FREE_VOLUMES, func_see_ttatlas, INVALIDATE_OVERLAY, and MCW_val_bbox(). Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06525 {
06526 int newsee = MCW_val_bbox(wfunc_see_ttatlas_bbox) ;
06527
06528 ENTRY( "RCREND_see_ttatlas_CB" );
06529
06530 if( newsee == func_see_ttatlas ) EXRETURN ;
06531
06532 func_see_ttatlas = newsee ;
06533 INVALIDATE_OVERLAY ; FREE_VOLUMES ;
06534 EXRETURN ;
06535 }
|
|
||||||||||||||||
|
Definition at line 5069 of file plug_crender.c. References ENTRY, isqCR_destroy, myXtFree, ISQ_cbs::reason, and MCW_imseq::status. Referenced by RCREND_imseq_getim().
|
|
||||||||||||||||
|
Definition at line 6752 of file plug_crender.c. References alter_MCW_pbar(), MCW_DC::display, ENTRY, FIX_SCALE_SIZE, MCW_choose_cbs::fval, HIDE_SCALE, INVALIDATE_OVERLAY, NPANE_MAX, MCW_pbar::num_panes, pmax, POPDOWN_integer_chooser, MCW_pbar::pval, and renderer_open. Referenced by RCREND_pbarmenu_CB().
06753 {
06754 MCW_pbar * pbar ;
06755 float pval[NPANE_MAX+1] ;
06756 double pmax , fac ;
06757 int ii ;
06758
06759 ENTRY( "RCREND_set_pbar_top_CB" );
06760
06761 if( ! renderer_open ){ POPDOWN_integer_chooser; XBell(dc->display,100); EXRETURN; }
06762
06763 pmax = cbs->fval ; if( pmax <= 0.0 ) EXRETURN ; /* illegal */
06764 pbar = wfunc_color_pbar ;
06765 fac = pmax / pbar->pval[0] ; if( fac == 1.0 ) EXRETURN ; /* no change */
06766
06767 for( ii=0 ; ii <= pbar->num_panes ; ii++ )
06768 pval[ii] = fac * pbar->pval[ii] ;
06769
06770 HIDE_SCALE ;
06771 alter_MCW_pbar( pbar , 0 , pval ) ;
06772 FIX_SCALE_SIZE ;
06773
06774 INVALIDATE_OVERLAY ;
06775 EXRETURN ;
06776 }
|
|
|
Definition at line 6237 of file plug_crender.c. References DSET_BRICK_STATAUX, DSET_BRICK_STATCODE, DSET_THRESH_VALUE, ENTRY, func_thresh_ival, func_thresh_top, func_threshold, THD_3dim_dataset::func_type, ISFUNCBUCKET, ISVALID_DSET, MCW_set_widget_label(), THD_3dim_dataset::stat_aux, THD_stat_to_pval(), THR_PVAL_LABEL_NONE, and wfunc_thr_pval_label. Referenced by RCREND_choose_av_CB(), RCREND_finalize_func_CB(), RCREND_thr_scale_CB(), RCREND_thr_scale_drag_CB(), and RCREND_thresh_top_CB().
06238 {
06239 float thresh , pval ;
06240 char buf[16] ;
06241
06242 ENTRY( "RCREND_set_thr_pval" );
06243
06244 if( !ISVALID_DSET(func_dset) ) EXRETURN ;
06245
06246 /* get the "true" threshold (scaled up from being in [0,1]) */
06247
06248 thresh = func_threshold * func_thresh_top ;
06249
06250 /* get the p-value that goes with this threshold, for this functional dataset */
06251
06252 #if 0
06253 if( ISFUNCBUCKET(func_dset) )
06254 pval = THD_stat_to_pval( thresh ,
06255 DSET_BRICK_STATCODE(func_dset,func_thresh_ival) ,
06256 DSET_BRICK_STATAUX (func_dset,func_thresh_ival) ) ;
06257
06258 else if( func_thresh_ival == DSET_THRESH_VALUE(func_dset) )
06259 pval = THD_stat_to_pval( thresh , func_dset->func_type ,
06260 func_dset->stat_aux ) ;
06261
06262 else
06263 pval = -1.0 ;
06264 #else
06265 pval = THD_stat_to_pval( thresh ,
06266 DSET_BRICK_STATCODE(func_dset,func_thresh_ival) ,
06267 DSET_BRICK_STATAUX (func_dset,func_thresh_ival) ) ;
06268 #endif
06269
06270 if( pval < 0.0 ){
06271 strcpy( buf , THR_PVAL_LABEL_NONE ) ;
06272 } else {
06273 if( pval == 0.0 ){
06274 strcpy( buf , "p = 0" ) ;
06275 } else if( pval >= 0.9999 ){
06276 strcpy( buf , "p = 1" ) ;
06277 } else if( pval >= 0.0010 ){
06278 char qbuf[16] ;
06279 sprintf( qbuf , "%5.4f" , pval ) ;
06280 strcpy( buf , qbuf+1 ) ;
06281 } else {
06282 int dec = (int)(0.999 - log10(pval)) ;
06283 pval = pval * pow( 10.0 , (double) dec ) ; /* between 1 and 10 */
06284 if( dec < 10 ) sprintf( buf , "%3.1f-%1d" , pval, dec ) ;
06285 else sprintf( buf , "%1d.-%2d" , (int)pval, dec ) ;
06286 }
06287 }
06288 MCW_set_widget_label( wfunc_thr_pval_label , buf ) ;
06289 EXRETURN ;
06290 }
|
|
|
Definition at line 6114 of file plug_crender.c. References MCW_pbar::bigcolor, ENTRY, i, INIT_ovin_pos, INIT_ovin_sgn, INIT_pval_pos, INIT_pval_sgn, MIN, MCW_pbar::mode, MCW_DCOV::ncol_ov, NPANE_MAX, NPANE_MIN, MCW_pbar::num_panes, MCW_pbar::ov_index, MCW_DC::ovc, MCW_pbar::ovin_save, MCW_pbar::pval, MCW_pbar::pval_save, reset_bigcolors(), and MCW_pbar::update_me. Referenced by RCREND_func_widgets().
06115 {
06116 MCW_pbar * pbar = wfunc_color_pbar ;
06117 int np , i , jm , lcol ;
06118
06119 ENTRY( "RCREND_setup_color_pbar" );
06120
06121 reset_bigcolors( pbar->bigcolor );
06122
06123 jm = pbar->mode ;
06124 lcol = dc->ovc->ncol_ov - 1 ;
06125
06126 /** load the 'save' values for all possible pane counts **/
06127
06128 for( np=NPANE_MIN ; np <= NPANE_MAX ; np++ ){
06129
06130 for( i=0 ; i <= np ; i++ ){
06131 pbar->pval_save[np][i][0] = INIT_pval_sgn[np][i] ; /* from afni.h */
06132 pbar->pval_save[np][i][1] = INIT_pval_pos[np][i] ;
06133 }
06134
06135 for( i=0 ; i < np ; i++ ){
06136 pbar->ovin_save[np][i][0] = MIN( lcol , INIT_ovin_sgn[np][i] ) ;
06137 pbar->ovin_save[np][i][1] = MIN( lcol , INIT_ovin_pos[np][i] ) ;
06138 }
06139 }
06140
06141 /** load the values for the current pane count **/
06142
06143 np = pbar->num_panes ;
06144 jm = pbar->mode ;
06145
06146 for( i=0 ; i <= np ; i++ ) pbar->pval[i] = pbar->pval_save[np][i][jm] ;
06147 for( i=0 ; i < np ; i++ ) pbar->ov_index[i] = pbar->ovin_save[np][i][jm] ;
06148
06149 pbar->update_me = 1 ;
06150 EXRETURN ;
06151 }
|
|
||||||||||||
|
Definition at line 6563 of file plug_crender.c. References ENTRY, func_showthru_fac, INVALIDATE_OVERLAY, and MCW_arrowval::ival. Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06564 {
06565 float osf = func_showthru_fac;
06566
06567 ENTRY( "RCREND_ST_factor_CB" );
06568
06569 func_showthru_fac = av->ival * 0.05;
06570
06571 if ( osf != func_showthru_fac )
06572 INVALIDATE_OVERLAY ;
06573
06574 EXRETURN ;
06575 }
|
|
|
Definition at line 8529 of file plug_crender.c. References alter_MCW_pbar(), RENDER_state::angle_pitch, angle_pitch, RENDER_state::angle_roll, angle_roll, RENDER_state::angle_yaw, angle_yaw, AV_assign_fval(), AV_assign_ival(), RENDER_state::bright_graf_state, RENDER_state::clipbot, RENDER_state::cliptop, RENDER_state::current_cutout_state, RENDER_state::dset_idc, RENDER_state::dset_ival, dset_ival, DSET_NVALS, DSET_NX, DSET_NY, DSET_NZ, dsl, ENTRY, EQUIV_IDCODES, FREE_VOLUMES, RENDER_state::func_clusters_rmm, func_clusters_rmm, RENDER_state::func_clusters_vmul, func_clusters_vmul, RENDER_state::func_color_ival, func_color_ival, RENDER_state::func_color_opacity, func_color_opacity, RENDER_state::func_cut_overlay, func_cut_overlay, RENDER_state::func_dset_idc, RENDER_state::func_kill_clusters, func_kill_clusters, RENDER_state::func_range, func_range, RENDER_state::func_see_overlay, func_see_overlay, RENDER_state::func_see_ttatlas, func_see_ttatlas, RENDER_state::func_showthru, func_showthru, RENDER_state::func_showthru_fac, func_showthru_fac, RENDER_state::func_thresh_ival, func_thresh_ival, RENDER_state::func_thresh_top, func_thresh_top, RENDER_state::func_threshold, func_threshold, RENDER_state::func_use_autorange, func_use_autorange, graf_state_get(), graf_state_put(), graf_states_equal(), THD_3dim_dataset::idcode, INVALIDATE_OVERLAY, ISVALID_DSET, ISZERO_IDCODE, MCW_arrowval::ival, MCW_choose_cbs::ival, CUTOUT_state::logic, make_PLUGIN_dataset_link(), MAX_CUTOUTS, MCW_popup_message(), MCW_set_bbox(), MCW_TIMER_KILL, MCW_USER_KILL, MCW_pbar::mode, CUTOUT_state::mustdo, MCW_DCOV::ncol_ov, ndsl, CUTOUT_state::num, NUM_CUTOUT_TYPES, num_cutouts, MCW_pbar::num_panes, RENDER_state::opacity_graf_state, CUTOUT_state::opacity_scale, MCW_DC::ovc, CUTOUT_state::param, RENDER_state::pbar_mode, RENDER_state::pbar_npane, RENDER_state::pbar_pval, PLUTO_beep(), PLUTO_find_dset(), MCW_pbar::pval, RCREND_angle_CB(), RCREND_choose_av_CB(), RCREND_clip_CB(), RCREND_clusters_av_CB(), RCREND_color_bbox_CB(), RCREND_color_opacity_CB(), RCREND_colornum_av_CB(), RCREND_cut_overlay_CB(), RCREND_cutout_type_CB(), RCREND_do_ST_CB(), RCREND_finalize_dset_CB(), RCREND_finalize_func_CB(), RCREND_kill_clusters_CB(), RCREND_load_cutout_state(), RCREND_numcutout_CB(), RCREND_opacity_scale_CB(), RCREND_open_func_CB(), RCREND_range_av_CB(), RCREND_range_bbox_CB(), RCREND_see_overlay_CB(), RCREND_see_ttatlas_CB(), RCREND_ST_factor_CB(), RCREND_thr_scale_CB(), RCREND_thresh_top_CB(), RSOK, script_cbut, script_dontdraw, MCW_idcode::str, THR_FACTOR, THR_TOP_EXPON, CUTOUT_state::type, wfunc_frame, wfunc_thr_scale, RENDER_state::xhair_flag, xhair_flag, RENDER_state::xhair_ovc, xhair_ovc, and XtRealloc. Referenced by RCREND_imseq_getim(), RCREND_read_exec_CB(), RCREND_read_this_finalize_CB(), and RCREND_script_load_CB().
08530 {
08531 int ii , flag ;
08532 static XtPointer xpt = (XtPointer) "Mr Tambourine Man" ;
08533
08534 ENTRY( "RCREND_state_to_widgets" );
08535
08536 if( rs == NULL ) EXRETURN ;
08537
08538 script_dontdraw = 1 ; /* 24 Nov 2000 */
08539
08540 #ifdef SCRIPT_DSETS
08541 /* 12 Apr 2000: allow change of dataset! */
08542
08543 if( script_dsetchange ){
08544 THD_3dim_dataset * qset ;
08545 MCW_choose_cbs cbs ;
08546 char serr[256] ;
08547
08548 /*- underlay -*/
08549
08550 if( !ISZERO_IDCODE(rs->dset_idc) ){
08551
08552 if( dset == NULL || !EQUIV_IDCODES(rs->dset_idc,dset->idcode) ){
08553 fprintf(stderr,"++ Changing underlay dataset to %s\n",rs->dset_idc.str) ;
08554 qset = PLUTO_find_dset( &(rs->dset_idc) ) ;
08555 if( !ISVALID_DSET(qset) ){
08556 sprintf(serr, " \n"
08557 "** Can't find desired\n"
08558 "** underlay dataset:\n"
08559 "** %s\n" , rs->dset_idc.str ) ;
08560 (void) MCW_popup_message( script_cbut , serr ,
08561 MCW_USER_KILL | MCW_TIMER_KILL ) ;
08562 PLUTO_beep() ;
08563 fprintf(stderr,"** Couldn't find new underlay dataset!\n") ;
08564 } else {
08565 ndsl = 1 ;
08566 dsl = (PLUGIN_dataset_link *)
08567 XtRealloc( (char *)dsl, sizeof(PLUGIN_dataset_link)*ndsl );
08568 make_PLUGIN_dataset_link( qset , dsl ) ;
08569 cbs.ival = 0 ;
08570 RCREND_finalize_dset_CB( NULL , NULL , &cbs ) ;
08571 }
08572 }
08573 }
08574
08575 /*- overlay -*/
08576
08577 if( !ISZERO_IDCODE(rs->func_dset_idc) && dset != NULL ){
08578
08579 if( func_dset == NULL ||
08580 !EQUIV_IDCODES(rs->func_dset_idc,func_dset->idcode) ){
08581 fprintf(stderr,"++ Changing overlay dataset to %s\n",rs->func_dset_idc.str) ;
08582 qset = PLUTO_find_dset( &(rs->func_dset_idc) ) ;
08583 if( !ISVALID_DSET(qset) ){
08584 sprintf(serr, " \n"
08585 "** Can't find desired\n"
08586 "** overlay dataset:\n"
08587 "** %s\n" , rs->func_dset_idc.str ) ;
08588 (void) MCW_popup_message( script_cbut , serr ,
08589 MCW_USER_KILL | MCW_TIMER_KILL ) ;
08590 PLUTO_beep() ;
08591 fprintf(stderr,"** Couldn't find new overlay dataset!\n") ;
08592 } else if( DSET_NX(dset) != DSET_NX(qset) ||
08593 DSET_NY(dset) != DSET_NY(qset) ||
08594 DSET_NZ(dset) != DSET_NZ(qset) ){
08595 sprintf(serr," \n"
08596 "** Desired overlay dataset:\n"
08597 "** %s\n"
08598 "** doesn't match underlay\n"
08599 "** dataset's dimensions!\n", rs->func_dset_idc.str );
08600 (void) MCW_popup_message( script_cbut , serr ,
08601 MCW_USER_KILL | MCW_TIMER_KILL ) ;
08602 PLUTO_beep() ;
08603 fprintf(stderr,"** New overlay dataset doesn't match underlay dimensions!\n") ;
08604 } else {
08605 ndsl = 1 ;
08606 dsl = (PLUGIN_dataset_link *)
08607 XtRealloc( (char *)dsl,sizeof(PLUGIN_dataset_link)*ndsl );
08608 make_PLUGIN_dataset_link( qset , dsl ) ;
08609 cbs.ival = 0 ;
08610
08611 if( wfunc_frame == NULL || !XtIsManaged(wfunc_frame) )
08612 RCREND_open_func_CB(NULL,NULL,NULL) ;
08613
08614 RCREND_finalize_func_CB( NULL , NULL , &cbs ) ;
08615 }
08616 }
08617 }
08618 }
08619 #endif /* SCRIPT_DSETS */
08620
08621 /* change the sub-values in the dataset (maybe?) */
08622
08623 if( script_brindex ){
08624 if( dset != NULL && RSOK(dset_ival,0,DSET_NVALS(dset)-1) ){
08625 AV_assign_ival( choose_av , rs->dset_ival ) ;
08626 RCREND_choose_av_CB( choose_av , xpt ) ;
08627 }
08628
08629 if( func_dset != NULL && RSOK(func_color_ival,0,DSET_NVALS(func_dset)-1) ){
08630 AV_assign_ival( wfunc_color_av , rs->func_color_ival ) ;
08631 RCREND_choose_av_CB( wfunc_color_av , xpt ) ;
08632 }
08633
08634 if( func_dset != NULL && RSOK(func_thresh_ival,0,DSET_NVALS(func_dset)-1) ){
08635 AV_assign_ival( wfunc_thresh_av , rs->func_thresh_ival ) ;
08636 RCREND_choose_av_CB( wfunc_thresh_av , xpt ) ;
08637 }
08638 }
08639
08640 #ifdef SCRIPT_GRAFS
08641 /* change grafs (maybe?) */
08642
08643 if( script_graf ){
08644 graf_state gs ;
08645
08646 graf_state_get( gry_graf , &gs ) ;
08647 if( ! graf_states_equal( &(rs->bright_graf_state) , &gs ) ){
08648 FREE_VOLUMES ;
08649 graf_state_put( gry_graf , &(rs->bright_graf_state) ) ;
08650 }
08651
08652 graf_state_get( opa_graf , &gs ) ;
08653 if( ! graf_states_equal( &(rs->opacity_graf_state) , &gs ) ){
08654 FREE_VOLUMES ;
08655 graf_state_put( opa_graf , &(rs->opacity_graf_state) ) ;
08656 }
08657 }
08658 #endif /* SCRIPT_GRAFS */
08659
08660 /* change clipping values */
08661
08662 if( rs->clipbot != clipbot_av->ival ){
08663 AV_assign_ival( clipbot_av , rs->clipbot ) ;
08664 RCREND_clip_CB( clipbot_av , NULL ) ;
08665 }
08666
08667 if( rs->cliptop != cliptop_av->ival ){
08668 AV_assign_ival( cliptop_av , rs->cliptop ) ;
08669 RCREND_clip_CB( cliptop_av , NULL ) ;
08670 }
08671
08672 /* change angles */
08673
08674 if( RSOK(angle_roll,-359.9,719.9) ){
08675 AV_assign_fval( roll_av , rs->angle_roll ) ;
08676 RCREND_angle_CB ( roll_av , xpt ) ; /* will set angle_roll */
08677 }
08678 if( RSOK(angle_pitch,-359.9,719.9) ){
08679 AV_assign_fval( pitch_av , rs->angle_pitch ) ;
08680 RCREND_angle_CB ( pitch_av , xpt ) ; /* will set angle_pitch */
08681 }
08682 if( RSOK(angle_yaw,-359.9,719.9) ){
08683 AV_assign_fval( yaw_av , rs->angle_yaw ) ;
08684 RCREND_angle_CB ( yaw_av , xpt ) ; /* will set angle_yaw */
08685 }
08686
08687 /* change xhair mode */
08688
08689 if( RSOK(xhair_flag,0,1) ){
08690 xhair_flag = rs->xhair_flag ;
08691 MCW_set_bbox( xhair_bbox , xhair_flag ) ;
08692 }
08693
08694 if( RSOK(xhair_ovc,0,dc->ovc->ncol_ov) ){ /* 08 Mar 2001 */
08695 xhair_ovc = rs->xhair_ovc ;
08696 }
08697
08698 /* change function stuff, if the functional widgets exist */
08699
08700 if( wfunc_frame != NULL ){
08701
08702 { static float dval[9] = { 1.0 , 10.0 , 100.0 , 1000.0 , 10000.0 ,
08703 100000.0 , 1000000.0 , 10000000.0 , 100000000.0 } ;
08704
08705 if( RSOK(func_thresh_top,1.0,dval[THR_TOP_EXPON]) ){
08706 for( ii=THR_TOP_EXPON ; ii > 0 ; ii-- )
08707 if( rs->func_thresh_top >= dval[ii] ) break ;
08708
08709 AV_assign_ival( wfunc_thr_top_av , ii ) ;
08710 RCREND_thresh_top_CB( wfunc_thr_top_av , NULL ) ;
08711 }
08712 }
08713
08714 if( RSOK(func_threshold,0.0,0.9999) ){
08715 XmScaleCallbackStruct cbs ;
08716 cbs.value = (int)( rs->func_threshold / THR_FACTOR + 0.01 ) ;
08717 RCREND_thr_scale_CB( NULL,NULL , &cbs ) ;
08718 XmScaleSetValue( wfunc_thr_scale , cbs.value ) ; /* oops, forgot this! 12 Apr 2000 */
08719 }
08720
08721 /* 06 Mar 2002: no showthru */
08722 if( RSOK(func_color_opacity,0.0,1.001) ){ /* 11 Sep 2001: add ST+Dcue=12 */
08723 ii = (int)(rs->func_color_opacity * 10.0 + 0.01) ;
08724 AV_assign_ival( wfunc_opacity_av , ii ) ;
08725 RCREND_color_opacity_CB( wfunc_opacity_av , NULL ) ;
08726 }
08727
08728 if( RSOK(func_showthru,0,1) ){ /* 08 Mar 2002 */
08729 MCW_set_bbox( wfunc_do_ST_bbox, rs->func_showthru );
08730 RCREND_do_ST_CB( NULL,NULL,NULL );
08731 }
08732
08733 if( RSOK(func_showthru_fac,0.0,1.001) ){ /* 08 Mar 2002 */
08734 ii = (int)(rs->func_showthru_fac * 20.0 + 0.01);
08735 AV_assign_ival( wfunc_ST_fac_av , ii ) ;
08736 RCREND_ST_factor_CB( wfunc_ST_fac_av , NULL ) ;
08737 }
08738
08739 if( RSOK(func_see_overlay,0,1) ){
08740 MCW_set_bbox( wfunc_see_overlay_bbox , rs->func_see_overlay ) ;
08741 RCREND_see_overlay_CB(NULL,NULL,NULL) ;
08742 }
08743
08744 if( RSOK(func_see_ttatlas,0,1) ){ /* 24 Jul 2001 */
08745 MCW_set_bbox( wfunc_see_ttatlas_bbox , rs->func_see_ttatlas ) ;
08746 RCREND_see_ttatlas_CB(NULL,NULL,NULL) ;
08747 }
08748
08749 if( RSOK(func_cut_overlay,0,1) ){
08750 MCW_set_bbox( wfunc_cut_overlay_bbox , rs->func_cut_overlay ) ;
08751 RCREND_cut_overlay_CB(NULL,NULL,NULL) ;
08752 }
08753
08754 if( RSOK(func_kill_clusters,0,1) ){
08755 MCW_set_bbox( wfunc_kill_clusters_bbox , rs->func_kill_clusters ) ;
08756 RCREND_kill_clusters_CB(NULL,NULL,NULL) ;
08757 }
08758
08759 if( RSOK(func_clusters_rmm,0,99) ){
08760 AV_assign_fval( wfunc_clusters_rmm_av , rs->func_clusters_rmm ) ;
08761 RCREND_clusters_av_CB(wfunc_clusters_rmm_av,xpt) ;
08762 }
08763
08764 if( RSOK(func_clusters_vmul,0,9999) ){
08765 AV_assign_fval( wfunc_clusters_vmul_av , rs->func_clusters_vmul ) ;
08766 RCREND_clusters_av_CB(wfunc_clusters_vmul_av,xpt) ;
08767 }
08768
08769 if( RSOK(func_use_autorange,0,1) ){
08770 MCW_set_bbox( wfunc_range_bbox , rs->func_use_autorange ) ;
08771 RCREND_range_bbox_CB(NULL,NULL,NULL) ;
08772 }
08773
08774 if( RSOK(func_range,0,9999999) ){
08775 AV_assign_fval( wfunc_range_av , rs->func_range ) ;
08776 RCREND_range_av_CB(wfunc_range_av,xpt) ;
08777 }
08778
08779 /* pbar stuff */
08780
08781 if( rs->pbar_mode != wfunc_color_pbar->mode ){
08782 MCW_set_bbox( wfunc_color_bbox , rs->pbar_mode ) ;
08783 RCREND_color_bbox_CB(NULL,NULL,NULL) ;
08784 }
08785
08786 if( rs->pbar_npane != wfunc_color_pbar->num_panes ){
08787 AV_assign_ival( wfunc_colornum_av , rs->pbar_npane ) ;
08788 RCREND_colornum_av_CB( wfunc_colornum_av , NULL ) ;
08789 }
08790
08791 for( flag=ii=0 ; ii <= rs->pbar_npane ; ii++ ){
08792 if( rs->pbar_pval[ii] != wfunc_color_pbar->pval[ii] ) flag++ ;
08793 }
08794 if( flag ){
08795 alter_MCW_pbar( wfunc_color_pbar , 0 , rs->pbar_pval ) ;
08796 INVALIDATE_OVERLAY ;
08797 }
08798 }
08799
08800 /* load cutout stuff into widgets */
08801
08802 RCREND_load_cutout_state() ; /* save current widget state into cutout state */
08803
08804 if( RSOK(current_cutout_state.opacity_scale,0.0,1.0) ){
08805 AV_assign_fval( opacity_scale_av , rs->current_cutout_state.opacity_scale ) ;
08806 RCREND_opacity_scale_CB( opacity_scale_av , xpt ) ;
08807 }
08808
08809 if( RSOK(current_cutout_state.num,0,MAX_CUTOUTS) ){
08810 AV_assign_ival( numcutout_av , rs->current_cutout_state.num ) ;
08811 RCREND_numcutout_CB( numcutout_av , xpt ) ;
08812 }
08813
08814 if( RSOK(current_cutout_state.logic,0,1) ){
08815 AV_assign_ival( logiccutout_av , rs->current_cutout_state.logic ) ;
08816 FREE_VOLUMES ;
08817 }
08818
08819 for( ii=0 ; ii < num_cutouts ; ii++ ){
08820
08821 if( RSOK(current_cutout_state.type[ii],0,NUM_CUTOUT_TYPES-1) ){
08822 AV_assign_ival( cutouts[ii]->type_av , rs->current_cutout_state.type[ii] ) ;
08823 RCREND_cutout_type_CB( cutouts[ii]->type_av , xpt ) ;
08824 }
08825
08826 if( RSOK(current_cutout_state.mustdo[ii],0,1) ){
08827 MCW_set_bbox( cutouts[ii]->mustdo_bbox , rs->current_cutout_state.mustdo[ii] ) ;
08828 }
08829
08830 if( RSOK(current_cutout_state.param[ii],-999999,999999) ){
08831 AV_assign_fval( cutouts[ii]->param_av , rs->current_cutout_state.param[ii] ) ;
08832 }
08833 }
08834
08835 RCREND_load_cutout_state() ; /* save current widget state into cutout state */
08836
08837 script_dontdraw = 0 ; /* 24 Nov 2000 */
08838
08839 EXRETURN ;
08840 }
|
|
||||||||||||||||
|
Definition at line 4831 of file plug_crender.c. References AV_assign_fval(), client_data, CUT_EXPRESSION, ENTRY, MCW_arrowval::ival, MCW_invert_widget(), num_cutouts, RCREND_cutout::param_av, RCREND_evaluate(), and RCREND_cutout::type_av. Referenced by RCREND_incrot_CB(), RCREND_make_cutout(), and RCREND_make_widgets().
04832 {
04833 MCW_arrowval * av = (MCW_arrowval *) client_data ;
04834 XmAnyCallbackStruct * cbs = (XmAnyCallbackStruct *) call_data ;
04835 float sval ;
04836 int iv ;
04837
04838 ENTRY( "RCREND_textact_CB" );
04839
04840 for( iv=0 ; iv < num_cutouts ; iv++ ) /* skip if is an Expr > 0 cutout */
04841 if( av == cutouts[iv]->param_av &&
04842 cutouts[iv]->type_av->ival == CUT_EXPRESSION ) EXRETURN ;
04843
04844 MCW_invert_widget(wtex) ;
04845
04846 sval = RCREND_evaluate( av ) ;
04847 AV_assign_fval( av , sval ) ;
04848
04849 MCW_invert_widget(wtex) ;
04850 EXRETURN ;
04851 }
|
|
||||||||||||||||
|
Definition at line 6296 of file plug_crender.c. References client_data, ENTRY, FIX_SCALE_SIZE, func_threshold, INVALIDATE_OVERLAY, RCREND_set_thr_pval(), and THR_FACTOR. Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06297 {
06298 XmScaleCallbackStruct * cbs = (XmScaleCallbackStruct *) call_data ;
06299 float fff ;
06300
06301 ENTRY( "RCREND_thr_scale_CB" );
06302
06303 fff = THR_FACTOR * cbs->value ; /* between 0 and 1 now */
06304 if( fff >= 0.0 && fff <= 1.0 ) func_threshold = fff ; else EXRETURN ;
06305 RCREND_set_thr_pval() ;
06306
06307 INVALIDATE_OVERLAY ;
06308 FIX_SCALE_SIZE ; /* 09 May 2001 */
06309 EXRETURN ;
06310 }
|
|
||||||||||||||||
|
Definition at line 6316 of file plug_crender.c. References client_data, ENTRY, func_threshold, RCREND_set_thr_pval(), and THR_FACTOR. Referenced by RCREND_func_widgets().
06317 {
06318 XmScaleCallbackStruct * cbs = (XmScaleCallbackStruct *) call_data ;
06319 float fff ;
06320
06321 ENTRY( "RCREND_thr_scale_drag_CB" );
06322
06323 fff = THR_FACTOR * cbs->value ; /* between 0 and 1 now */
06324 if( fff >= 0.0 && fff <= 1.0 ) func_threshold = fff ; else EXRETURN ;
06325 RCREND_set_thr_pval() ;
06326
06327 EXRETURN ;
06328 }
|
|
||||||||||||
|
Definition at line 6101 of file plug_crender.c. References ENTRY, MCW_arrowval::ival, and RETURN. Referenced by RCREND_func_widgets().
|
|
||||||||||||
|
Definition at line 6376 of file plug_crender.c. References ENTRY, func_thresh_top, INVALIDATE_OVERLAY, MCW_arrowval::ival, RCREND_set_thr_pval(), THR_TOP_EXPON, and wfunc_thr_scale. Referenced by RCREND_func_widgets(), and RCREND_state_to_widgets().
06377 {
06378 static float dval[9] = { 1.0 , 10.0 , 100.0 , 1000.0 , 10000.0 ,
06379 100000.0 , 1000000.0 , 10000000.0 , 100000000.0 } ;
06380 int decim ;
06381 float tval ;
06382
06383 ENTRY( "RCREND_thresh_top_CB" );
06384
06385 tval = dval[av->ival] ; if( tval <= 0.0 ) tval = 1.0 ;
06386
06387 decim = (2*THR_TOP_EXPON) - (int)(THR_TOP_EXPON + 0.01 + log10(tval)) ;
06388 if( decim < 0 ) decim = 0 ;
06389
06390 XtVaSetValues( wfunc_thr_scale, XmNdecimalPoints, decim, NULL ) ;
06391
06392 func_thresh_top = tval ;
06393 RCREND_set_thr_pval() ;
06394
06395 INVALIDATE_OVERLAY ;
06396 EXRETURN ;
06397 }
|
|
|
Definition at line 4939 of file plug_crender.c. References any_rgb_images, drive_MCW_imseq(), ENTRY, IMARR_COUNT, IMARR_SUBIMAGE, isqDR_newseq, isqDR_offwid, isqDR_onoffwid, isqDR_onwid, isqDR_opacitybut, isqDR_reimage, and RCREND_open_imseq(). Referenced by RCREND_draw_CB().
04940 {
04941 int ntot , ii ;
04942
04943 ENTRY( "RCREND_update_imseq" );
04944
04945 if( imseq == NULL ){ RCREND_open_imseq() ; EXRETURN ; }
04946 if( renderings == NULL || IMARR_COUNT(renderings) == 0 ) EXRETURN ;
04947
04948 ntot = IMARR_COUNT(renderings) ;
04949
04950 any_rgb_images = 0 ;
04951 for( ii=0 ; ii < ntot ; ii++ ){
04952
04953 if( IMARR_SUBIMAGE(renderings,ii) != NULL &&
04954 IMARR_SUBIMAGE(renderings,ii)->kind == MRI_rgb ){
04955
04956 any_rgb_images = 1 ; break ;
04957 }
04958 }
04959
04960 drive_MCW_imseq( imseq , isqDR_newseq , NULL ) ;
04961
04962 if( ntot == 1 )
04963 drive_MCW_imseq( imseq , isqDR_onoffwid , (XtPointer) isqDR_offwid ) ;
04964 else {
04965 drive_MCW_imseq( imseq , isqDR_onoffwid , (XtPointer) isqDR_onwid ) ;
04966 drive_MCW_imseq( imseq , isqDR_opacitybut , (XtPointer) 0 ) ; /* 07 Mar 2001 */
04967 }
04968
04969 drive_MCW_imseq( imseq , isqDR_reimage , (XtPointer)(ntot-1) ) ;
04970
04971 EXRETURN ;
04972 }
|
|
|
||||||||||||||||
|
Definition at line 3798 of file plug_crender.c. References CHECK_XHAIR_ERROR, dynamic_flag, ENTRY, FREE_VOLUMES, INVALIDATE_OVERLAY, MCW_val_bbox(), RCREND_draw_CB(), CR_data::rh, xhair_flag, xhair_ixold, xhair_jyold, and xhair_kzold. Referenced by RCREND_make_widgets().
03799 {
03800 int old_xh = xhair_flag ;
03801
03802 ENTRY( "RCREND_xhair_CB" );
03803
03804 xhair_flag = MCW_val_bbox( xhair_bbox ) ;
03805 if( old_xh == xhair_flag ) EXRETURN ;
03806
03807 CHECK_XHAIR_ERROR ;
03808 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
03809
03810 xhair_ixold = -666 ; xhair_jyold = -666 ; xhair_kzold = -666 ; /* forget */
03811
03812 if( cd == NULL && dynamic_flag && gcr.rh != NULL )
03813 RCREND_draw_CB(NULL,NULL,NULL) ;
03814
03815 EXRETURN ;
03816 }
|
|
||||||||||||||||||||
|
Definition at line 3822 of file plug_crender.c. References ENTRY, ev, event, MCW_choose_ovcolor(), RCREND_xhair_ovc_CB(), and xhair_ovc. Referenced by RCREND_make_widgets().
03824 {
03825 ENTRY( "RCREND_xhair_EV" );
03826
03827 switch( ev->type ){
03828 case ButtonPress:{
03829 XButtonEvent * event = (XButtonEvent *) ev ;
03830 if( event->button == Button3 || event->button == Button2 ){
03831 MCW_choose_ovcolor( w,dc , xhair_ovc , RCREND_xhair_ovc_CB,NULL ) ;
03832 }
03833 }
03834 break ;
03835 }
03836 EXRETURN ;
03837 }
|
|
||||||||||||||||
|
Definition at line 3841 of file plug_crender.c. References ENTRY, FREE_VOLUMES, INVALIDATE_OVERLAY, MCW_choose_cbs::ival, and xhair_ovc. Referenced by RCREND_xhair_EV().
03842 {
03843 ENTRY( "RCREND_xhair_ovc_CB" );
03844
03845 xhair_ovc = cbs->ival ;
03846 INVALIDATE_OVERLAY ; FREE_VOLUMES ;
03847
03848 EXRETURN;
03849 }
|
|
||||||||||||
|
Definition at line 7256 of file plug_crender.c. References abs, CHECK_XHAIR_ERROR, AFNI_view_info::crosshair_gap, ENTRY, LOAD_FVEC3, MRI_BYTE_PTR, MRI_IMAGE::nx, MRI_IMAGE::ny, MRI_IMAGE::nz, nz, ORIMASK_AP, ORIMASK_IS, ORIMASK_LR, OV, THD_3dmm_to_3dind(), THD_dicomm_to_3dmm(), UNLOAD_IVEC3, Three_D_View::vinfo, xhair_ixold, xhair_jyold, xhair_kzold, xhair_omold, xhair_ovc, AFNI_view_info::xhairs_orimask, AFNI_view_info::xi, AFNI_view_info::yj, and AFNI_view_info::zk. Referenced by RCREND_reload_dataset().
07257 {
07258 THD_ivec3 ixyz;
07259 THD_fvec3 fxyz;
07260 int ix,jy,kz , nx,ny,nz,nxy , ii , gap , om ;
07261 float xi,yj,zk;
07262 byte * ovar ;
07263 byte gxh = 128 + xhair_ovc ;
07264
07265 ENTRY( "RCREND_xhair_overlay" );
07266
07267 if( xovim == NULL || xhair_ovc == 0 ) EXRETURN ; /* error */
07268
07269 CHECK_XHAIR_ERROR ;
07270
07271 /* get Dicom mm coords */
07272 xi = im3d->vinfo->xi;
07273 yj = im3d->vinfo->yj;
07274 zk = im3d->vinfo->zk;
07275
07276 nx = xovim->nx;
07277 ny = xovim->ny; nxy = nx * ny;
07278 nz = xovim->nz;
07279
07280 /* convert to ijk in mset rickr 2002.08.05 */
07281 LOAD_FVEC3( fxyz, xi, yj, zk ); /* Dicom coords for dset */
07282 fxyz = THD_dicomm_to_3dmm(mset, fxyz); /* mm coords for mset */
07283 ixyz = THD_3dmm_to_3dind (mset, fxyz); /* ijk coords for mset */
07284 UNLOAD_IVEC3( ixyz, ix, jy, kz );
07285
07286 om = im3d->vinfo->xhairs_orimask ; /* 02 Jun 1999 */
07287
07288 if( ix < 0 || ix >= nx ) EXRETURN ; /* error */
07289 if( jy < 0 || jy >= ny ) EXRETURN ; /* error */
07290 if( kz < 0 || kz >= nz ) EXRETURN ; /* error */
07291
07292 gap = im3d->vinfo->crosshair_gap ;
07293 ovar = MRI_BYTE_PTR(xovim) ;
07294
07295 /* 02 Jun 1999: allow for partial crosshair drawing */
07296
07297 if( (om & ORIMASK_LR) != 0 ){
07298 for( ii=0 ; ii < nx ; ii++ ){
07299 if( abs(ii-ix) > gap ){ OV(ii,jy,kz) = gxh ; }
07300 }
07301 }
07302
07303 if( (om & ORIMASK_AP) != 0 ){
07304 for( ii=0 ; ii < ny ; ii++ ){
07305 if( abs(ii-jy) > gap ){ OV(ix,ii,kz) = gxh ; }
07306 }
07307 }
07308
07309 if( (om & ORIMASK_IS) != 0 ){
07310 for( ii=0 ; ii < nz ; ii++ ){
07311 if( abs(ii-kz) > gap ){ OV(ix,jy,ii) = gxh ; }
07312 }
07313 }
07314
07315 xhair_ixold = ix ; xhair_jyold = jy ; xhair_kzold = kz ; /* memory */
07316 xhair_omold = om ; /* 02 Jun 1999 */
07317 EXRETURN ;
07318 }
|
|
||||||||||||||||||||
|
Definition at line 3856 of file plug_crender.c. References Three_D_View::anat_now, AV_assign_ival(), CHECK_XHAIR_ERROR, dset_ival, DSET_NVALS, dynamic_flag, ENTRY, EQUIV_DSETS, Three_D_View::fim_now, FREE_VOLUMES, func_color_ival, IM3D_OPEN, ind, INVALIDATE_OVERLAY, MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, new_dset, new_fset, PLUTO_find_dset(), RCREND_autorange_label(), RCREND_choose_av_CB(), RCREND_draw_CB(), RCREND_range_label(), RECEIVE_DRAWNOTICE, RECEIVE_DSETCHANGE, RECEIVE_TIMEINDEX, RECEIVE_VIEWPOINT, reload_pb, CR_data::rh, AFNI_view_info::time_index, Three_D_View::vinfo, MCW_bbox::wbut, wfunc_range_label, and xhair_flag. Referenced by RCREND_main().
03857 {
03858 ENTRY( "RCREND_xhair_recv" );
03859
03860 switch( why ){
03861
03862 /*-- change of time index - 29 Jan 2003 --*/
03863
03864 case RECEIVE_TIMEINDEX:{
03865 int ind , red=0 ;
03866 if( !dynamic_flag || !IM3D_OPEN(im3d) ) EXRETURN ;
03867
03868 ind = im3d->vinfo->time_index ;
03869
03870 if( dset != NULL && DSET_NVALS(dset) > 1 &&
03871 ind != dset_ival && DSET_NVALS(dset) > ind ){
03872 AV_assign_ival( choose_av , ind ) ;
03873 RCREND_choose_av_CB( choose_av , NULL ) ;
03874 red = 1 ;
03875 }
03876 if( func_dset != NULL && DSET_NVALS(func_dset) > 1 &&
03877 ind != func_color_ival && DSET_NVALS(func_dset) > ind ){
03878 AV_assign_ival( wfunc_color_av , ind ) ;
03879 RCREND_choose_av_CB( wfunc_color_av , NULL ) ;
03880 red = 1 ;
03881 }
03882 if( red ){ FREE_VOLUMES; RCREND_draw_CB(NULL,NULL,NULL); }
03883 }
03884 EXRETURN ;
03885
03886 /*-- change of crosshair location --*/
03887
03888 case RECEIVE_VIEWPOINT:{
03889 if( !xhair_flag || !dynamic_flag || gcr.rh == NULL ) EXRETURN ;
03890
03891 CHECK_XHAIR_ERROR ;
03892
03893 if( CHECK_XHAIR_MOTION ){
03894 FREE_VOLUMES ;
03895 RCREND_draw_CB(NULL,NULL,NULL) ;
03896 }
03897 }
03898 EXRETURN ;
03899
03900 /*-- user drew something --*/
03901
03902 case RECEIVE_DRAWNOTICE:{ /* 30 Mar 1999 */
03903 int doit=0 ;
03904
03905 new_dset = 1; /* we may need a reoriented underlay 28 June 2002 */
03906 new_fset = 1; /* we may need a reoriented overlay 28 June 2002 */
03907
03908 if( EQUIV_DSETS(im3d->anat_now,dset) || /* can't tell if user */
03909 EQUIV_DSETS(im3d->fim_now,dset) ){ /* is drawing on anat */
03910
03911 doit = 1 ; FREE_VOLUMES ;
03912
03913 }
03914
03915 if( EQUIV_DSETS(im3d->anat_now,func_dset) || /* or is drawing */
03916 EQUIV_DSETS(im3d->fim_now,func_dset) ){ /* on the fim */
03917
03918 doit = 1 ; INVALIDATE_OVERLAY ;
03919
03920 /* 15 Jun 1999: fix the range labels */
03921
03922 { XmString xstr ;
03923 xstr = RCREND_range_label() ;
03924 XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ;
03925 XmStringFree(xstr) ;
03926
03927 xstr = RCREND_autorange_label() ;
03928 XtVaSetValues( wfunc_range_bbox->wbut[0], XmNlabelString,xstr , NULL ) ;
03929 XmStringFree(xstr) ;
03930 }
03931 }
03932
03933 if( doit && dynamic_flag && gcr.rh != NULL )
03934 RCREND_draw_CB(NULL,NULL,NULL) ;
03935 }
03936 EXRETURN ;
03937
03938 /*-- dataset pointers have changed --*/
03939
03940 case RECEIVE_DSETCHANGE:{ /* 31 Mar 1999 */
03941
03942 new_dset = 1; /* we may need a reoriented underlay 28 June 2002 */
03943 new_fset = 1; /* we may need a reoriented overlay 28 June 2002 */
03944
03945 if( dset != NULL )
03946 dset = PLUTO_find_dset( &dset_idc ) ;
03947
03948 if( func_dset != NULL )
03949 func_dset = PLUTO_find_dset( &func_dset_idc ) ;
03950
03951 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
03952
03953 (void) MCW_popup_message( reload_pb ,
03954 "********** NOTICE ***********\n"
03955 "* Session rescan has forced *\n"
03956 "* purge of dataset brick(s) *\n"
03957 "* from memory. *\n"
03958 "*****************************" ,
03959 MCW_USER_KILL | MCW_TIMER_KILL ) ;
03960 }
03961 EXRETURN ;
03962
03963 } /* end of switch on "why" */
03964
03965 EXRETURN ;
03966 }
|
|
|
Definition at line 4051 of file plug_crender.c. References abs, CHECK_XHAIR_ERROR, AFNI_view_info::crosshair_gap, MCW_DC::display, ENTRY, GR, GXH_GRAY, ISVALID_DSET, LOAD_FVEC3, MRI_BYTE_PTR, MRI_IMAGE::nx, MRI_IMAGE::ny, MRI_IMAGE::nz, nz, ORIMASK_AP, ORIMASK_IS, ORIMASK_LR, THD_3dmm_to_3dind(), THD_dicomm_to_3dmm(), UNLOAD_IVEC3, Three_D_View::vinfo, xhair_ixold, xhair_jyold, xhair_kzold, xhair_omold, xhair_ovc, AFNI_view_info::xhairs_orimask, AFNI_view_info::xi, AFNI_view_info::yj, and AFNI_view_info::zk. Referenced by RCREND_reload_dataset().
04052 {
04053 THD_ivec3 ixyz;
04054 THD_fvec3 fxyz;
04055 int ix,jy,kz , nx,ny,nz,nxy , ii , gap , om ;
04056 float xi,yj,zk;
04057 byte * gar;
04058 byte gxh;
04059
04060 ENTRY( "RCREND_xhair_underlay" );
04061
04062 if( grim == NULL ) EXRETURN ; /* error */
04063
04064 gxh = (xhair_ovc > 0) ? (128+xhair_ovc) : GXH_GRAY;
04065
04066 CHECK_XHAIR_ERROR ;
04067
04068 /* get Dicom mm coords */
04069 xi = im3d->vinfo->xi;
04070 yj = im3d->vinfo->yj;
04071 zk = im3d->vinfo->zk;
04072
04073 nx = grim->nx;
04074 ny = grim->ny; nxy = nx * ny;
04075 nz = grim->nz;
04076
04077 if ( !ISVALID_DSET(mset) ) /* But, that cannot be! Aaaaaaghh! */
04078 {
04079 XBell(dc->display,100);
04080 EXRETURN;
04081 }
04082
04083 /* convert to ijk in mset rickr 2002.08.05 */
04084 LOAD_FVEC3( fxyz, xi, yj, zk ); /* Dicom coords for dset */
04085 fxyz = THD_dicomm_to_3dmm(mset, fxyz); /* mm coords for mset */
04086 ixyz = THD_3dmm_to_3dind (mset, fxyz); /* ijk coords for mset */
04087 UNLOAD_IVEC3( ixyz, ix, jy, kz );
04088
04089 om = im3d->vinfo->xhairs_orimask ; /* 02 Jun 1999 */
04090
04091 if( ix < 0 || ix >= nx ) EXRETURN ; /* error */
04092 if( jy < 0 || jy >= ny ) EXRETURN ; /* error */
04093 if( kz < 0 || kz >= nz ) EXRETURN ; /* error */
04094
04095 gap = im3d->vinfo->crosshair_gap ;
04096 gar = MRI_BYTE_PTR(grim) ;
04097
04098 /* 02 Jun 1999: allow for partial crosshair drawing */
04099
04100 if( (om & ORIMASK_LR) != 0 ){
04101 for( ii=0 ; ii < nx ; ii++ ){
04102 if( abs(ii-ix) > gap ){ GR(ii,jy,kz) = gxh ; }
04103 }
04104 }
04105
04106 if( (om & ORIMASK_AP) != 0 ){
04107 for( ii=0 ; ii < ny ; ii++ ){
04108 if( abs(ii-jy) > gap ){ GR(ix,ii,kz) = gxh ; }
04109 }
04110 }
04111
04112 if( (om & ORIMASK_IS) != 0 ){
04113 for( ii=0 ; ii < nz ; ii++ ){
04114 if( abs(ii-kz) > gap ){ GR(ix,jy,ii) = gxh ; }
04115 }
04116 }
04117
04118 xhair_ixold = ix ; xhair_jyold = jy ; xhair_kzold = kz ; /* memory */
04119 xhair_omold = om ; /* 02 Jun 1999 */
04120 EXRETURN ;
04121 }
|
|
|
Definition at line 9496 of file plug_crender.c. References RD_CHOICE_DISP_COLORS, RD_CHOICE_DISP_DSET, RD_CHOICE_DISP_IM, RD_CHOICE_DISP_XHAIRS, RD_CHOICE_HELP, RD_CHOICE_HIST, RD_CHOICE_NONE, and RD_CHOICE_SET_LEVEL. Referenced by r_debug_check().
09497 {
09498 int rv = RD_CHOICE_NONE;
09499
09500 if ( **str == '?' ) rv = RD_CHOICE_HELP;
09501 else if ( **str == 'h' ) rv = RD_CHOICE_HIST;
09502 else if ( **str == 'c' ) rv = RD_CHOICE_DISP_COLORS;
09503 else if ( **str == 'd' ) rv = RD_CHOICE_DISP_DSET;
09504 else if ( **str == 'i' ) rv = RD_CHOICE_DISP_IM;
09505 else if ( **str == 'l' ) rv = RD_CHOICE_SET_LEVEL;
09506 else if ( **str == 'x' ) rv = RD_CHOICE_DISP_XHAIRS;
09507
09508 (*str)++; /* all cases currently move past one 'choice' character */
09509
09510 return rv;
09511 }
|
|
||||||||||||||||
|
Definition at line 9443 of file plug_crender.c. References abs, CR_bigstuff::b, MCW_pbar::bigmode, CR_data::bigstuff, c, CR_bigstuff::g, MCW_pbar::mode, NPANE_BIG, MCW_pbar::num_panes, and CR_bigstuff::r. Referenced by r_debug_check().
09444 {
09445 MCW_pbar * fcb = wfunc_color_pbar;
09446 int c, incr;
09447
09448 if ( str && isdigit(*str) )
09449 incr = abs(atoi(str));
09450 else
09451 incr = 8; /* default increment for color value display */
09452
09453 fprintf(stderr,"-- debug color increment: %d\n", incr );
09454 fprintf(stderr,"-- bigstuff: r g b +64 r g b\n"
09455 " --- --- --- --- --- ---\n");
09456 for ( c = 0; c < NPANE_BIG/2; c += incr )
09457 fprintf(stderr, " %3d/%3d: %3d %3d %3d %3d %3d %3d\n",
09458 c, c+64,
09459 crd->bigstuff.r[c ], crd->bigstuff.g[c ], crd->bigstuff.b[c ],
09460 crd->bigstuff.r[c+64], crd->bigstuff.g[c+64], crd->bigstuff.b[c+64]);
09461
09462 fprintf(stderr,"-- fcb: mode, bigmode, num_panes = %d,%d,%d\n",
09463 fcb->mode, fcb->bigmode, fcb->num_panes );
09464
09465 return 0;
09466 }
|
|
||||||||||||
|
Definition at line 9514 of file plug_crender.c. Referenced by r_debug_check().
09515 {
09516 printf (
09517 "------------------------------------------------------------------\n"
09518 "debugging commands:\n"
09519 "\n"
09520 " d? - debug help : display this menu\n"
09521 " dh - history : display plugin history\n"
09522 " dcN - display color info : bigmode color info (with step N)\n"
09523 " di - display image : display last mri image strcture\n"
09524 " dlN - debug level : set debug level to N, {0,1,2}\n"
09525 " ddX - display dataset info : display dataset info for \n"
09526 " dset, fset, or mset\n"
09527 " X is one of {dd,do,fd,fo,mo}\n"
09528 " dx - display crosshairs : display rotated crosshair center\n"
09529 "------------------------------------------------------------------\n"
09530 );
09531
09532 return 1;
09533 }
|
|
||||||||||||||||
|
Definition at line 9468 of file plug_crender.c. References THD_3dim_dataset::daxes, THD_3dim_dataset::dblk, CR_data::dset_or, CR_data::fset_or, ISVALID_DSET, CR_data::mset, r_idisp_thd_3dim_dataset(), r_idisp_thd_datablock(), r_idisp_thd_dataxes(), and CR_debug::text. Referenced by r_debug_check().
09469 {
09470 THD_3dim_dataset * ds;
09471
09472 if ( str[0] == 'd' && str[1] == 'd' ) ds = dset;
09473 else if ( str[0] == 'd' && str[1] == 'o' ) ds = crd->dset_or;
09474 else if ( str[0] == 'f' && str[1] == 'd' ) ds = func_dset;
09475 else if ( str[0] == 'f' && str[1] == 'o' ) ds = crd->fset_or;
09476 else if ( str[0] == 'm' && str[1] == 'o' ) ds = crd->mset;
09477 else
09478 {
09479 printf( "error: see 'd?' for list of valid control characters\n" );
09480 return 0;
09481 }
09482
09483 sprintf( d->text, "-- debug '%2s' : ", str );
09484
09485 r_idisp_thd_3dim_dataset( d->text, ds );
09486
09487 if ( ISVALID_DSET(ds) )
09488 {
09489 r_idisp_thd_dataxes ( d->text, ds->daxes );
09490 r_idisp_thd_datablock( d->text, ds->dblk );
09491 }
09492
09493 return 1;
09494 }
|
|
||||||||||||||||
|
Definition at line 9536 of file plug_crender.c. References MRI_IMARR::imarr, MRI_IMARR::num, r, r_idisp_mri_image(), and CR_debug::text. Referenced by r_debug_check().
|
|
||||||||||||
|
Definition at line 9564 of file plug_crender.c. References r_idisp_vec3f(), CR_debug::xhairs, and THD_fvec3::xyz. Referenced by r_debug_check().
09565 {
09566 r_idisp_vec3f( "-- debug: rotated xhairs : ", d->xhairs.xyz );
09567
09568 return 1;
09569 }
|
|
||||||||||||
|
Definition at line 9548 of file plug_crender.c. References CR_MAX_DEBUG, and CR_debug::level. Referenced by r_debug_check().
09549 {
09550 int level = *str - '0';
09551
09552 if ( level < 0 || level > CR_MAX_DEBUG )
09553 {
09554 printf( "error: valid debug levels are in [0,%d]\n", CR_MAX_DEBUG );
09555 return 0;
09556 }
09557
09558 d->level = level;
09559 printf( "-- debug: new level = %d\n", d->level );
09560
09561 return 1;
09562 }
|
|
|
Definition at line 9596 of file plug_crender.c. References CR_bigstuff::b, CR_data::bigstuff, CR_bigstuff::g, i, CR_debug::level, NPANE_BIG, and CR_bigstuff::r. Referenced by RCREND_color_pbar_CB(), RCREND_init_cmap(), and RCREND_setup_color_pbar().
09597 {
09598 int i;
09599
09600 if ( gcr_debug.level > 0 )
09601 fprintf(stderr,"-- reset_bigcolors()\n");
09602
09603 for ( i = 0; i < NPANE_BIG; i++ )
09604 {
09605 gcr.bigstuff.r[i] = bcs[i].r;
09606 gcr.bigstuff.g[i] = bcs[i].g;
09607 gcr.bigstuff.b[i] = bcs[i].b;
09608 }
09609
09610 return 0;
09611 }
|
|
||||||||||||
|
Definition at line 9230 of file plug_crender.c. References ENTRY, FVEC_TIMES_MAT, idisp_xhair_pts(), CR_debug::level, THD_mat33::mat, r_idisp_mat33f(), r_idisp_vec3f(), RETURN, CR_debug::xhairs, CR_xhairs::xp, THD_fvec3::xyz, CR_xhairs::yp, and CR_xhairs::zp. Referenced by RCREND_draw_CB().
09231 {
09232
09233 ENTRY( "rotate_xhair_points" );
09234
09235 if ( gcr_debug.level > 1 )
09236 idisp_xhair_pts( "-- xh, pre rot : ", xh );
09237
09238 /* 4 x-direction points */
09239 xh->xp[0][0] = FVEC_TIMES_MAT(xh->xp[0][0],*rotm);
09240 xh->xp[0][1] = FVEC_TIMES_MAT(xh->xp[0][1],*rotm);
09241
09242 xh->xp[1][0] = FVEC_TIMES_MAT(xh->xp[1][0],*rotm);
09243 xh->xp[1][1] = FVEC_TIMES_MAT(xh->xp[1][1],*rotm);
09244
09245
09246 /* 4 y-direction points */
09247 xh->yp[0][0] = FVEC_TIMES_MAT(xh->yp[0][0],*rotm);
09248 xh->yp[0][1] = FVEC_TIMES_MAT(xh->yp[0][1],*rotm);
09249
09250 xh->yp[1][0] = FVEC_TIMES_MAT(xh->yp[1][0],*rotm);
09251 xh->yp[1][1] = FVEC_TIMES_MAT(xh->yp[1][1],*rotm);
09252
09253
09254 /* 4 z-direction points */
09255 xh->zp[0][0] = FVEC_TIMES_MAT(xh->zp[0][0],*rotm);
09256 xh->zp[0][1] = FVEC_TIMES_MAT(xh->zp[0][1],*rotm);
09257
09258 xh->zp[1][0] = FVEC_TIMES_MAT(xh->zp[1][0],*rotm);
09259 xh->zp[1][1] = FVEC_TIMES_MAT(xh->zp[1][1],*rotm);
09260
09261 /* rotate debug xhairs */
09262 gcr_debug.xhairs = FVEC_TIMES_MAT(gcr_debug.xhairs,*rotm);
09263
09264 if ( gcr_debug.level > 1 )
09265 {
09266 r_idisp_mat33f( "-- rotm : ", rotm->mat );
09267 idisp_xhair_pts( "-- xh, post rot : ", xh );
09268 }
09269
09270 if ( gcr_debug.level > 0 )
09271 r_idisp_vec3f( "-- rotated xhairs : ", gcr_debug.xhairs.xyz );
09272
09273 RETURN(0);
09274 }
|
|
||||||||||||
|
Definition at line 9145 of file plug_crender.c. References THD_3dim_dataset::daxes, DIV_FVEC3_BY_CONST, ENTRY, idisp_xhair_pts(), CR_debug::level, THD_dataxes::nxx, THD_dataxes::nyy, THD_dataxes::nzz, r_idisp_vec3f(), RETURN, SUB_FVEC3, CR_debug::xhairs, CR_xhairs::xp, THD_dataxes::xxdel, THD_dataxes::xxorg, THD_fvec3::xyz, CR_xhairs::yp, THD_dataxes::yydel, THD_dataxes::yyorg, CR_xhairs::zp, THD_dataxes::zzdel, and THD_dataxes::zzorg. Referenced by RCREND_draw_CB().
09146 {
09147 THD_dataxes * dax = dset->daxes;
09148 THD_fvec3 org;
09149 float dx, dy, dz, min;
09150
09151 ENTRY( "xhairs_to_image_pts" );
09152
09153 dx = dax->xxdel; /* set deltas */
09154 dy = dax->yydel;
09155 dz = dax->zzdel;
09156
09157 if ( dx <= 0.0 || dx <= 0.0 || dz <= 0.0 )
09158 {
09159 fprintf( stderr, "failure: xhairs_to_image_pts - bad deltas!\n" );
09160 RETURN(-1); /* leave image as is */
09161 }
09162
09163 if ( gcr_debug.level > 1 )
09164 idisp_xhair_pts( "-- xh, pre im : ", xh );
09165
09166 /* set the origins to be the center of the 3-D volume */
09167 org.xyz[0] = dax->xxorg + (dax->nxx - 1) * dx / 2.0;
09168 org.xyz[1] = dax->yyorg + (dax->nyy - 1) * dy / 2.0;
09169 org.xyz[2] = dax->zzorg + (dax->nzz - 1) * dz / 2.0;
09170
09171 if ( gcr_debug.level > 0 )
09172 {
09173 r_idisp_vec3f( "-- xhair point shift : ", org.xyz );
09174 printf( "-- unitizing points by (%f,%f,%f)\n", dx, dy, dz );
09175 }
09176
09177 /* we have dicom grid, scale to max voxel mm grid */
09178 min = dy < dx ? dy : dx;
09179 min = dz < min ? dz : min;
09180
09181 /* 4 x-points */
09182 xh->xp[0][0] = SUB_FVEC3(xh->xp[0][0],org);
09183 DIV_FVEC3_BY_CONST(xh->xp[0][0], min);
09184
09185 xh->xp[0][1] = SUB_FVEC3(xh->xp[0][1],org);
09186 DIV_FVEC3_BY_CONST(xh->xp[0][1], min);
09187
09188 xh->xp[1][0] = SUB_FVEC3(xh->xp[1][0],org);
09189 DIV_FVEC3_BY_CONST(xh->xp[1][0], min);
09190
09191 xh->xp[1][1] = SUB_FVEC3(xh->xp[1][1],org);
09192 DIV_FVEC3_BY_CONST(xh->xp[1][1], min);
09193
09194 /* 4 y-points */
09195 xh->yp[0][0] = SUB_FVEC3(xh->yp[0][0],org);
09196 DIV_FVEC3_BY_CONST(xh->yp[0][0], min);
09197
09198 xh->yp[0][1] = SUB_FVEC3(xh->yp[0][1],org);
09199 DIV_FVEC3_BY_CONST(xh->yp[0][1], min);
09200
09201 xh->yp[1][0] = SUB_FVEC3(xh->yp[1][0],org);
09202 DIV_FVEC3_BY_CONST(xh->yp[1][0], min);
09203
09204 xh->yp[1][1] = SUB_FVEC3(xh->yp[1][1],org);
09205 DIV_FVEC3_BY_CONST(xh->yp[1][1], min);
09206
09207 /* 4 z-points */
09208 xh->zp[0][0] = SUB_FVEC3(xh->zp[0][0],org);
09209 DIV_FVEC3_BY_CONST(xh->zp[0][0], min);
09210
09211 xh->zp[0][1] = SUB_FVEC3(xh->zp[0][1],org);
09212 DIV_FVEC3_BY_CONST(xh->zp[0][1], min);
09213
09214 xh->zp[1][0] = SUB_FVEC3(xh->zp[1][0],org);
09215 DIV_FVEC3_BY_CONST(xh->zp[1][0], min);
09216
09217 xh->zp[1][1] = SUB_FVEC3(xh->zp[1][1],org);
09218 DIV_FVEC3_BY_CONST(xh->zp[1][1], min);
09219
09220 /* apply shift to debug xhairs */
09221 gcr_debug.xhairs = SUB_FVEC3(gcr_debug.xhairs,org);
09222 DIV_FVEC3_BY_CONST(gcr_debug.xhairs, min);
09223
09224 if ( gcr_debug.level > 0 )
09225 r_idisp_vec3f( "-- shifted xhair center : ", gcr_debug.xhairs.xyz );
09226
09227 RETURN(0);
09228 }
|
Variable Documentation
|
|
Definition at line 236 of file plug_crender.c. |
|
|
Definition at line 271 of file plug_crender.c. Referenced by RCREND_make_widgets(). |
|
|
Definition at line 403 of file plug_crender.c. Referenced by RCREND_accum_CB(), RCREND_autocompute_CB(), RCREND_draw_CB(), RCREND_main(), RCREND_make_widgets(), and RCREND_read_exec_CB(). |
|
|
Definition at line 250 of file plug_crender.c. Referenced by RCREND_accum_lab_CB(), and RCREND_accum_lab_EV(). |
|
|
Definition at line 249 of file plug_crender.c. Referenced by RCREND_accum_lab_CB(), RCREND_accum_lab_EV(), RCREND_draw_CB(), and RCREND_imseq_getim(). |
|
|
Initial value: {
0xff, 0xff, 0xc1, 0xc1, 0xff, 0xff, 0xff, 0x7f, 0x60, 0x00, 0xfe, 0xff,
0xff, 0x0f, 0x30, 0x10, 0xf0, 0xff, 0xff, 0x01, 0x37, 0xf0, 0x80, 0xff,
0x7f, 0xe0, 0x77, 0xe0, 0x07, 0xff, 0x7f, 0xfe, 0xe0, 0x00, 0x3f, 0xff,
0x7f, 0x1e, 0xc0, 0x03, 0x38, 0xff, 0x3f, 0x00, 0x87, 0xe7, 0x01, 0xff,
0x3f, 0xf0, 0x07, 0xe7, 0x0f, 0xfe, 0x3f, 0x7f, 0xc0, 0x04, 0x7e, 0xfe,
0x3f, 0x0f, 0xe6, 0x67, 0x70, 0xfe, 0x3f, 0xe0, 0xa7, 0xe7, 0x03, 0xfe,
0x1f, 0xfc, 0x21, 0x83, 0x3f, 0xfc, 0x9f, 0x1f, 0xe0, 0x00, 0xfc, 0xfc,
0x9f, 0x83, 0xc7, 0xe1, 0xc1, 0xfc, 0x1f, 0xf0, 0x87, 0xe7, 0x0f, 0xfc,
0x0f, 0x7f, 0x00, 0x07, 0x7e, 0xf8, 0xcf, 0x0f, 0xc0, 0x04, 0xf0, 0xf9,
0xcf, 0x80, 0xe7, 0xe7, 0x81, 0xf9, 0x0f, 0xf0, 0xa7, 0xe3, 0x1f, 0xf8,
0x0f, 0x7f, 0xe0, 0x00, 0xfe, 0xf9, 0xcf, 0x0f, 0xc0, 0x01, 0xe0, 0xf1,
0xc7, 0x00, 0x87, 0xe3, 0x00, 0xf0, 0x07, 0xf8, 0x07, 0xe7, 0x1f, 0xf0,
0x87, 0xff, 0xc0, 0x86, 0xff, 0xf1, 0xe7, 0x07, 0xe0, 0x03, 0xe0, 0xf3,
0x77, 0x00, 0xe0, 0x00, 0x00, 0xe6, 0x03, 0x00, 0xc0, 0x01, 0x00, 0xe0,
0x03, 0x00, 0x80, 0x03, 0x00, 0xe0, 0x03, 0xf8, 0x0f, 0xf8, 0x1f, 0xe0,
0x81, 0xff, 0x3f, 0xfc, 0xff, 0xc1, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0x1f, 0xc0,
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0x74, 0x31, 0xc4, 0xe8, 0xc6,
0xad, 0x67, 0xad, 0xb7, 0xcd, 0xda, 0xad, 0x57, 0xad, 0xb7, 0xad, 0xfa,
0x31, 0x56, 0x2d, 0xc6, 0xad, 0xfa, 0xb5, 0x57, 0xad, 0xd7, 0xad, 0x8a,
0xad, 0x37, 0xad, 0xb7, 0x6d, 0xda, 0xad, 0x77, 0xad, 0xb7, 0xed, 0xda,
0x2d, 0x74, 0x31, 0xb4, 0xe8, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}Definition at line 516 of file plug_crender.c. Referenced by RCREND_open_imseq(). |
|
|
Definition at line 513 of file plug_crender.c. Referenced by RCREND_open_imseq(). |
|
|
Definition at line 254 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_make_widgets(). |
|
|
Definition at line 233 of file plug_crender.c. Referenced by RCREND_make_cutout(), and RCREND_make_widgets(). |
|
|
Definition at line 127 of file plug_crender.c. Referenced by PLUGIN_init(), RCREND_environ_CB(), and RCREND_make_widgets(). |
|
|
Definition at line 406 of file plug_crender.c. Referenced by RCREND_angle_CB(), RCREND_do_incrot(), RCREND_draw_CB(), RCREND_make_widgets(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 405 of file plug_crender.c. Referenced by RCREND_angle_CB(), RCREND_do_incrot(), RCREND_draw_CB(), RCREND_make_widgets(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 407 of file plug_crender.c. Referenced by RCREND_angle_CB(), RCREND_do_incrot(), RCREND_draw_CB(), RCREND_make_widgets(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 4861 of file plug_crender.c. Referenced by RCREND_open_imseq(), and RCREND_update_imseq(). |
|
|
Definition at line 501 of file plug_crender.c. Referenced by RCREND_autocompute_CB(), RCREND_cutout_blobs(), and RCREND_evaluate(). |
|
|
Definition at line 447 of file plug_crender.c. Referenced by RCREND_autocompute_CB(), RCREND_make_widgets(), and RCREND_read_exec_CB(). |
|
|
Definition at line 447 of file plug_crender.c. Referenced by RCREND_autocompute_CB(), RCREND_autoflag_CB(), RCREND_main(), and RCREND_make_widgets(). |
|
|
Definition at line 446 of file plug_crender.c. |
|
|
Definition at line 5104 of file plug_crender.c. Referenced by RCREND_autocancel_CB(), RCREND_autocompute_CB(), and RCREND_read_exec_CB(). |
|
|
Definition at line 441 of file plug_crender.c. |
|
|
Definition at line 444 of file plug_crender.c. Referenced by RCREND_make_widgets(). |
|
|
Definition at line 443 of file plug_crender.c. Referenced by RCREND_autocompute_CB(), RCREND_cutout_state_changed(), RCREND_draw_CB(), RCREND_imseq_getim(), RCREND_main(), RCREND_make_widgets(), and RCREND_read_exec_CB(). |
|
|
Definition at line 261 of file plug_crender.c. Referenced by RCREND_clip_CB(), RCREND_main(), and RCREND_reload_dataset(). |
|
|
Definition at line 237 of file plug_crender.c. |
|
|
Definition at line 233 of file plug_crender.c. Referenced by RCREND_finalize_dset_CB(), and RCREND_make_widgets(). |
|
|
Definition at line 259 of file plug_crender.c. |
|
|
Definition at line 262 of file plug_crender.c. Referenced by RCREND_clip_CB(), RCREND_main(), RCREND_make_widgets(), and RCREND_reload_dataset(). |
|
|
Definition at line 259 of file plug_crender.c. |
|
|
Definition at line 262 of file plug_crender.c. Referenced by RCREND_clip_CB(), RCREND_main(), RCREND_make_widgets(), and RCREND_reload_dataset(). |
|
|
Definition at line 491 of file plug_crender.c. |
|
|
Initial value: {
{ SQ2 , SQ2 , 0.0 } , {-SQ2 ,-SQ2 , 0.0 } ,
{ SQ2 ,-SQ2 , 0.0 } , {-SQ2 , SQ2 , 0.0 } ,
{ 0.0 , SQ2 , SQ2 } , { 0.0 ,-SQ2 ,-SQ2 } ,
{ 0.0 , SQ2 ,-SQ2 } , { 0.0 ,-SQ2 ,+SQ2 } ,
{ SQ2 , 0.0 , SQ2 } , {-SQ2 , 0.0 ,-SQ2 } ,
{ SQ2 , 0.0 ,-SQ2 } , {-SQ2 , 0.0 , SQ2 }
}Definition at line 1915 of file plug_crender.c. Referenced by RCREND_cutout_blobs(), and RCREND_cutout_set_CB(). |
|
|
Definition at line 128 of file plug_crender.c. Referenced by PLUGIN_init(), RCREND_environ_CB(), and RCREND_make_cutout(). |
|
|
Definition at line 472 of file plug_crender.c. Referenced by RCREND_make_widgets(), and RCREND_save_state(). |
|
|
Definition at line 474 of file plug_crender.c. Referenced by RCREND_save_state(). |
|
|
Initial value: {
"Parameter: " ,
"x(-R+L) [mm]:" , "x(-R+L) [mm]:" ,
"y(-A+P) [mm]:" , "y(-A+P) [mm]:" ,
"z(-I+S) [mm]:" , "z(-I+S) [mm]:" ,
"Expression: " , "Percentage: " ,
"Value [mm]: " , "Value [mm]: " ,
"Value [mm]: " , "Value [mm]: " ,
"Value [mm]: " , "Value [mm]: " ,
"Value [mm]: " , "Value [mm]: " ,
"Value [mm]: " , "Value [mm]: " ,
"Value [mm]: " , "Value [mm]: " ,
"Radius++[mm]:"
}Definition at line 1858 of file plug_crender.c. Referenced by RCREND_cutout_type_CB(), and RCREND_make_cutout(). |
|
|
Initial value: {
"No Cut" ,
"Right of" , "Left of" ,
"Anterior to" , "Posterior to" ,
"Inferior to" , "Superior to" ,
"Expr > 0" , "TT Ellipsoid " ,
"Behind AL-PR" , "Front AL-PR" ,
"Front AR-PL" , "Behind AR-PL" ,
"Above AS-PI" , "Below AS-PI" ,
"Below AI-PS" , "Above AI-PS" ,
"Above RS-LI" , "Below RS-LI" ,
"Below RI-LS" , "Above RI-LS" ,
"NonOverlay++"
}Definition at line 1841 of file plug_crender.c. Referenced by RCREND_make_cutout(). |
|
|
Initial value: {
"CUT_NONE" , "CUT_RIGHT_OF" , "CUT_LEFT_OF" ,
"CUT_ANTERIOR_TO" , "CUT_POSTERIOR_TO" , "CUT_INFERIOR_TO" ,
"CUT_SUPERIOR_TO" , "CUT_EXPRESSION" , "CUT_TT_ELLIPSOID" ,
"CUT_SLANT_XPY_GT" , "CUT_SLANT_XPY_LT" , "CUT_SLANT_XMY_GT" ,
"CUT_SLANT_XMY_LT" , "CUT_SLANT_YPZ_GT" , "CUT_SLANT_YPZ_LT" ,
"CUT_SLANT_YMZ_GT" , "CUT_SLANT_YMZ_LT" , "CUT_SLANT_XPZ_GT" ,
"CUT_SLANT_XPZ_LT" , "CUT_SLANT_XMZ_GT" , "CUT_SLANT_XMZ_LT" ,
"CUT_NONOVERLAY"
}Definition at line 1875 of file plug_crender.c. Referenced by RCREND_save_state(). |
|
|
Definition at line 468 of file plug_crender.c. |
|
|
Definition at line 354 of file plug_crender.c. |
|
|
Definition at line 234 of file plug_crender.c. Referenced by RCREND_done_CB(), RCREND_done_timeout_CB(), and RCREND_make_widgets(). |
|
|
Definition at line 234 of file plug_crender.c. Referenced by RCREND_draw_CB(), and RCREND_make_widgets(). |
|
|
Definition at line 356 of file plug_crender.c. |
|
|
Definition at line 357 of file plug_crender.c. |
|
|
Definition at line 360 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), RCREND_finalize_dset_CB(), RCREND_main(), RCREND_read_states(), RCREND_reload_dataset(), RCREND_reload_func_dset(), RCREND_save_state(), RCREND_state_to_widgets(), RCREND_widgets_to_state(), and RCREND_xhair_recv(). |
|
|
Definition at line 361 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), and RCREND_finalize_dset_CB(). |
|
|
Definition at line 3279 of file plug_crender.c. Referenced by RCREND_choose_CB(), RCREND_finalize_dset_CB(), RCREND_finalize_func_CB(), RCREND_load_dsl(), and RCREND_state_to_widgets(). |
|
|
Definition at line 236 of file plug_crender.c. |
|
|
Definition at line 270 of file plug_crender.c. Referenced by RCREND_make_widgets(). |
|
|
Definition at line 402 of file plug_crender.c. Referenced by RCREND_angle_CB(), RCREND_cutout_set_CB(), RCREND_do_incrot(), RCREND_dynamic_CB(), RCREND_main(), RCREND_make_widgets(), RCREND_opacity_scale_CB(), RCREND_param_CB(), RCREND_xhair_CB(), and RCREND_xhair_recv(). |
|
|
Definition at line 635 of file plug_crender.c. Referenced by RCREND_autorange_label(). |
|
|
Definition at line 631 of file plug_crender.c. Referenced by RCREND_func_widgets(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 632 of file plug_crender.c. Referenced by RCREND_func_widgets(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 659 of file plug_crender.c. Referenced by RCREND_done_CB(), RCREND_finalize_dset_CB(), and RCREND_reload_renderer(). |
|
|
Definition at line 656 of file plug_crender.c. Referenced by RCREND_autorange_label(), RCREND_choose_av_CB(), RCREND_finalize_func_CB(), RCREND_range_label(), RCREND_read_states(), RCREND_reload_func_dset(), RCREND_save_state(), RCREND_state_to_widgets(), RCREND_widgets_to_state(), and RCREND_xhair_recv(). |
|
|
Definition at line 626 of file plug_crender.c. Referenced by RCREND_color_opacity_CB(), RCREND_read_states(), RCREND_reload_dataset(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 636 of file plug_crender.c. Referenced by RCREND_draw_CB(), RCREND_reload_dataset(), and RCREND_reload_renderer(). |
|
|
Definition at line 629 of file plug_crender.c. Referenced by RCREND_cut_overlay_CB(), RCREND_read_states(), RCREND_reload_dataset(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 653 of file plug_crender.c. |
|
|
Definition at line 654 of file plug_crender.c. |
|
|
Definition at line 663 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), and RCREND_finalize_func_CB(). |
|
|
Definition at line 630 of file plug_crender.c. Referenced by RCREND_kill_clusters_CB(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 651 of file plug_crender.c. Referenced by RCREND_draw_CB(), and RCREND_mixshade_av_CB(). |
|
|
Definition at line 633 of file plug_crender.c. Referenced by RCREND_color_bbox_CB(). |
|
|
Definition at line 634 of file plug_crender.c. Referenced by RCREND_func_widgets(), RCREND_range_av_CB(), RCREND_range_bbox_CB(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 627 of file plug_crender.c. Referenced by RCREND_read_states(), RCREND_reload_func_dset(), RCREND_save_state(), RCREND_see_overlay_CB(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 628 of file plug_crender.c. Referenced by RCREND_read_states(), RCREND_save_state(), RCREND_see_ttatlas_CB(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 641 of file plug_crender.c. Referenced by RCREND_do_ST_CB(), RCREND_draw_CB(), RCREND_read_states(), RCREND_reload_dataset(), RCREND_reload_renderer(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 643 of file plug_crender.c. Referenced by RCREND_draw_CB(), RCREND_read_states(), RCREND_save_state(), RCREND_ST_factor_CB(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 642 of file plug_crender.c. Referenced by RCREND_draw_CB(), and RCREND_reload_renderer(). |
|
|
Definition at line 657 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), RCREND_finalize_func_CB(), RCREND_range_label(), RCREND_read_states(), RCREND_reload_func_dset(), RCREND_save_state(), RCREND_set_thr_pval(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 624 of file plug_crender.c. Referenced by RCREND_read_states(), RCREND_reload_func_dset(), RCREND_save_state(), RCREND_set_thr_pval(), RCREND_state_to_widgets(), RCREND_thresh_top_CB(), and RCREND_widgets_to_state(). |
|
|
Definition at line 623 of file plug_crender.c. Referenced by RCREND_func_widgets(), RCREND_read_states(), RCREND_reload_func_dset(), RCREND_save_state(), RCREND_set_thr_pval(), RCREND_state_to_widgets(), RCREND_thr_scale_CB(), RCREND_thr_scale_drag_CB(), and RCREND_widgets_to_state(). |
|
|
Definition at line 622 of file plug_crender.c. Referenced by RCREND_range_bbox_CB(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 625 of file plug_crender.c. Referenced by RCREND_reload_func_dset(). |
|
|
Definition at line 21 of file plug_crender.c. Referenced by r_debug_check(). |
|
|
Definition at line 305 of file plug_crender.c. |
|
|
Definition at line 324 of file plug_crender.c. |
|
|
Definition at line 330 of file plug_crender.c. Referenced by rcr_disp_hist(). |
|
|
Definition at line 329 of file plug_crender.c. Referenced by rcr_disp_hist(). |
|
|
Definition at line 363 of file plug_crender.c. |
|
|
Definition at line 365 of file plug_crender.c. |
|
|
Definition at line 266 of file plug_crender.c. |
|
|
Definition at line 234 of file plug_crender.c. Referenced by RCREND_make_widgets(). |
|
|
Definition at line 267 of file plug_crender.c. |
|
|
Definition at line 355 of file plug_crender.c. |
|
|
Definition at line 430 of file plug_crender.c. |
|
|
toggle button for incremental rotations * Definition at line 148 of file plug_crender.c. |
|
|
Definition at line 233 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), RCREND_finalize_dset_CB(), RCREND_help_CB(), RCREND_main(), RCREND_make_widgets(), and RCREND_open_imseq(). |
|
|
Definition at line 235 of file plug_crender.c. |
|
|
Definition at line 134 of file plug_crender.c. Referenced by RCREND_interp_CB(), RCREND_make_widgets(), and RCREND_reload_renderer(). |
|
|
Definition at line 132 of file plug_crender.c. |
|
|
Definition at line 131 of file plug_crender.c. Referenced by RCREND_make_widgets(). |
|
|
Definition at line 865 of file plug_crender.c. |
|
|
Definition at line 477 of file plug_crender.c. Referenced by RCREND_load_cutout_state(), and RCREND_make_widgets(). |
|
|
Definition at line 480 of file plug_crender.c. |
|
|
Definition at line 497 of file plug_crender.c. Referenced by RCREND_make_cutout(). |
|
|
Definition at line 3278 of file plug_crender.c. Referenced by RCREND_choose_CB(), RCREND_finalize_dset_CB(), RCREND_finalize_func_CB(), RCREND_load_dsl(), and RCREND_state_to_widgets(). |
|
|
Definition at line 422 of file plug_crender.c. Referenced by RCREND_draw_CB(), RCREND_main(), and RCREND_reload_dataset(). |
|
|
Definition at line 358 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), RCREND_finalize_dset_CB(), RCREND_reload_dataset(), and RCREND_xhair_recv(). |
|
|
Definition at line 359 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), RCREND_finalize_dset_CB(), RCREND_finalize_func_CB(), RCREND_reload_func_dset(), and RCREND_xhair_recv(). |
|
|
Definition at line 426 of file plug_crender.c. Referenced by RCREND_finalize_dset_CB(). |
|
|
Definition at line 476 of file plug_crender.c. Referenced by RCREND_cut_overlay_CB(), RCREND_cutout_set_CB(), RCREND_cutout_type_CB(), RCREND_load_cutout_state(), RCREND_make_widgets(), RCREND_numcutout_CB(), RCREND_reload_dataset(), RCREND_state_to_widgets(), and RCREND_textact_CB(). |
|
|
Definition at line 479 of file plug_crender.c. |
|
|
Definition at line 491 of file plug_crender.c. |
|
|
Definition at line 265 of file plug_crender.c. |
|
|
Definition at line 237 of file plug_crender.c. |
|
|
Definition at line 661 of file plug_crender.c. |
|
|
Definition at line 235 of file plug_crender.c. |
|
|
Definition at line 123 of file plug_crender.c. Referenced by PLUGIN_init(), RCREND_main(), and RCREND_make_widgets(). |
|
|
Definition at line 2027 of file plug_crender.c. Referenced by RCREND_done_CB(), and RCREND_done_timeout_CB(). |
|
|
Definition at line 262 of file plug_crender.c. Referenced by RCREND_main(), RCREND_make_widgets(), and RCREND_reload_dataset(). |
|
|
Definition at line 258 of file plug_crender.c. Referenced by RCREND_main(), RCREND_make_widgets(), and RCREND_reload_dataset(). |
|
|
Initial value: {
{"Help",RCREND_help_CB,NULL,
"Displays more help" , "Displays more help",0} ,
{"Draw",RCREND_draw_CB,NULL,
"(Re)Draw the image" , "(Re)Draw the image",0} ,
{"Reload",RCREND_reload_CB,NULL,
"Reload dataset values" , "Reload dataset values",0} ,
{"done",RCREND_done_CB,NULL,
"Close renderer\nand image." , "Close windows",1}
}Definition at line 1010 of file plug_crender.c. |
|
|
Definition at line 252 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_make_widgets(). |
|
|
Definition at line 234 of file plug_crender.c. Referenced by RCREND_make_widgets(), RCREND_reload_dataset(), and RCREND_xhair_recv(). |
|
|
Definition at line 424 of file plug_crender.c. Referenced by RCREND_done_CB(), RCREND_finalize_dset_CB(), RCREND_finalize_func_CB(), RCREND_finalize_saveim_CB(), RCREND_main(), RCREND_read_exec_CB(), RCREND_read_this_CB(), RCREND_save_many_CB(), RCREND_save_this_CB(), and RCREND_set_pbar_top_CB(). |
|
|
Definition at line 431 of file plug_crender.c. |
|
|
Definition at line 864 of file plug_crender.c. |
|
|
Definition at line 235 of file plug_crender.c. |
|
|
Definition at line 736 of file plug_crender.c. Referenced by RCREND_script_brindex_CB(). |
|
|
Definition at line 722 of file plug_crender.c. |
|
|
Definition at line 719 of file plug_crender.c. Referenced by RCREND_read_exec_CB(), RCREND_read_this_CB(), RCREND_save_many_CB(), RCREND_save_this_CB(), RCREND_script_CB(), RCREND_script_menu(), and RCREND_state_to_widgets(). |
|
|
Definition at line 738 of file plug_crender.c. Referenced by RCREND_state_to_widgets(). |
|
|
Definition at line 778 of file plug_crender.c. |
|
|
Definition at line 780 of file plug_crender.c. Referenced by RCREND_script_CB(), and RCREND_script_dset_CB(). |
|
|
Definition at line 771 of file plug_crender.c. Referenced by RCREND_script_graf_CB(). |
|
|
Definition at line 769 of file plug_crender.c. |
|
|
Definition at line 734 of file plug_crender.c. Referenced by RCREND_imseq_getim(), and RCREND_script_load_CB(). |
|
|
Definition at line 722 of file plug_crender.c. |
|
|
Definition at line 735 of file plug_crender.c. Referenced by RCREND_done_CB(), RCREND_draw_CB(), RCREND_imseq_getim(), and RCREND_script_load_CB(). |
|
|
Definition at line 719 of file plug_crender.c. Referenced by RCREND_script_menu(). |
|
|
Definition at line 719 of file plug_crender.c. Referenced by RCREND_script_CB(), and RCREND_script_menu(). |
|
|
Definition at line 7544 of file plug_crender.c. Referenced by RCREND_read_exec_CB(), RCREND_read_this_CB(), and RCREND_script_CB(). |
|
|
Definition at line 719 of file plug_crender.c. Referenced by RCREND_script_CB(), and RCREND_script_menu(). |
|
|
Definition at line 719 of file plug_crender.c. Referenced by RCREND_script_CB(), and RCREND_script_menu(). |
|
|
Definition at line 719 of file plug_crender.c. Referenced by RCREND_script_CB(), and RCREND_script_menu(). |
|
|
Definition at line 233 of file plug_crender.c. Referenced by RCREND_autocompute_CB(), RCREND_done_CB(), RCREND_environ_CB(), RCREND_main(), RCREND_make_widgets(), RCREND_open_imseq(), and RCREND_read_exec_CB(). |
|
|
Definition at line 254 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_make_widgets(). |
|
|
Definition at line 593 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 593 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 593 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_pbarmenu_CB(). |
|
|
Definition at line 593 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 581 of file plug_crender.c. Referenced by RCREND_choose_CB(), and RCREND_func_widgets(). |
|
|
Definition at line 604 of file plug_crender.c. |
|
|
Definition at line 604 of file plug_crender.c. |
|
|
Definition at line 590 of file plug_crender.c. |
|
|
Definition at line 591 of file plug_crender.c. |
|
|
Definition at line 588 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_open_func_CB(). |
|
|
Definition at line 589 of file plug_crender.c. |
|
|
Definition at line 588 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 590 of file plug_crender.c. |
|
|
Definition at line 601 of file plug_crender.c. |
|
|
Definition at line 601 of file plug_crender.c. |
|
|
Definition at line 581 of file plug_crender.c. Referenced by RCREND_done_CB(), RCREND_func_widgets(), RCREND_main(), RCREND_open_func_CB(), RCREND_state_to_widgets(), and RCREND_widgets_to_state(). |
|
|
Definition at line 581 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), RCREND_finalize_func_CB(), and RCREND_func_widgets(). |
|
|
Definition at line 601 of file plug_crender.c. |
|
|
Definition at line 599 of file plug_crender.c. |
|
|
Definition at line 593 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 593 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 578 of file plug_crender.c. Referenced by RCREND_make_widgets(), and RCREND_open_func_CB(). |
|
|
Definition at line 608 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_pbarmenu_CB(). |
|
|
Definition at line 608 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_pbarmenu_EV(). |
|
|
Definition at line 611 of file plug_crender.c. |
|
|
Definition at line 610 of file plug_crender.c. |
|
|
Definition at line 609 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_pbarmenu_CB(). |
|
|
Definition at line 608 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_pbarmenu_CB(). |
|
|
Definition at line 599 of file plug_crender.c. |
|
|
Definition at line 601 of file plug_crender.c. |
|
|
Definition at line 593 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 598 of file plug_crender.c. Referenced by RCREND_choose_av_CB(), RCREND_finalize_func_CB(), RCREND_func_widgets(), and RCREND_xhair_recv(). |
|
|
Definition at line 600 of file plug_crender.c. |
|
|
Definition at line 593 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 581 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 601 of file plug_crender.c. |
|
|
Definition at line 606 of file plug_crender.c. |
|
|
Definition at line 599 of file plug_crender.c. |
|
|
Definition at line 584 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 584 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_set_thr_pval(). |
|
|
Definition at line 584 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 584 of file plug_crender.c. Referenced by RCREND_func_widgets(), RCREND_state_to_widgets(), and RCREND_thresh_top_CB(). |
|
|
Definition at line 586 of file plug_crender.c. |
|
|
Definition at line 590 of file plug_crender.c. |
|
|
Definition at line 581 of file plug_crender.c. Referenced by RCREND_func_widgets(). |
|
|
Definition at line 581 of file plug_crender.c. Referenced by RCREND_func_widgets(), and RCREND_open_func_CB(). |
|
|
Definition at line 236 of file plug_crender.c. |
|
|
Definition at line 269 of file plug_crender.c. Referenced by RCREND_make_widgets(). |
|
|
Definition at line 409 of file plug_crender.c. Referenced by RCREND_draw_CB(), RCREND_main(), RCREND_make_widgets(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), RCREND_widgets_to_state(), RCREND_xhair_CB(), and RCREND_xhair_recv(). |
|
|
Definition at line 410 of file plug_crender.c. Referenced by RCREND_main(), RCREND_xhair_CB(), RCREND_xhair_overlay(), and RCREND_xhair_underlay(). |
|
|
Definition at line 411 of file plug_crender.c. Referenced by RCREND_main(), RCREND_xhair_CB(), RCREND_xhair_overlay(), and RCREND_xhair_underlay(). |
|
|
Definition at line 412 of file plug_crender.c. Referenced by RCREND_main(), RCREND_xhair_CB(), RCREND_xhair_overlay(), and RCREND_xhair_underlay(). |
|
|
Definition at line 413 of file plug_crender.c. Referenced by RCREND_xhair_overlay(), and RCREND_xhair_underlay(). |
|
|
Definition at line 243 of file plug_crender.c. Referenced by draw_xhairs_in_image(), RCREND_draw_CB(), RCREND_main(), RCREND_read_states(), RCREND_save_state(), RCREND_state_to_widgets(), RCREND_widgets_to_state(), RCREND_xhair_EV(), RCREND_xhair_ovc_CB(), RCREND_xhair_overlay(), and RCREND_xhair_underlay(). |
|
|
Definition at line 415 of file plug_crender.c. Referenced by RCREND_done_CB(), and RCREND_main(). |
|
|
Definition at line 235 of file plug_crender.c. |