Doxygen Source Code Documentation
plug_render.c File Reference
#include "afni.h"#include "mri_render.h"#include "mcw_graf.h"#include "parser.h"#include <ctype.h>Go to the source code of this file.
Data Structures | |
| struct | CUTOUT_state |
| struct | graf_state |
| struct | REND_cutout |
| struct | RENDER_state |
| struct | RENDER_state_array |
Defines | |
| #define | ONLY_AXIAL |
| #define | NUM_precalc 3 |
| #define | MODE_LOW 0 |
| #define | MODE_MEDIUM 1 |
| #define | MODE_HIGH 2 |
| #define | ALLOW_INCROT |
| #define | NO_DATASET_STRING "[No Dataset is Loaded]" |
| #define | CLIP_RANGE 32767 |
| #define | FREEIM(x) if( (x) != NULL ){ mri_free(x); (x)=NULL; } |
| #define | FREE_VOLUMES |
| #define | NEED_VOLUMES (grim == NULL || opim == NULL) |
| #define | CHECK_XHAIR_MOTION |
| #define | MAX_CUTOUTS 9 |
| #define | CUTOUT_OR 0 |
| #define | CUTOUT_AND 1 |
| #define | MIN_OPACITY_SCALE 0.000 |
| #define | N_IND 13 |
| #define | T_IND 19 |
| #define | X_IND 23 |
| #define | Y_IND 24 |
| #define | Z_IND 25 |
| #define | afni48ren_width 48 |
| #define | afni48ren_height 48 |
| #define | INVALIDATE_OVERLAY do{ FREEIM(ovim) ; } while(0) |
| #define | DO_OVERLAY |
| #define | NEED_OVERLAY (DO_OVERLAY && ovim == NULL) |
| #define | NEED_RELOAD (NEED_VOLUMES || NEED_OVERLAY) |
| #define | TURNOFF_OVERLAY_WIDGETS |
| #define | DEFAULT_FUNC_RANGE 10000.0 |
| #define | FUNC_RANGE ((func_range==0.0 || func_use_autorange ) ? func_autorange : func_range) |
| #define | NOSHADE 1 |
| #define | NOMIX 2 |
| #define | COLSIZE AV_colsize() |
| #define | FIX_SCALE_SIZE |
| #define | HIDE_SCALE do{ if(wfunc_thr_scale != NULL) XtUnmanageChild(wfunc_thr_scale); } while(0) |
| #define | USE_SCRIPTING |
| #define | SCRIPT_GRAFS |
| #define | SCRIPT_DSETS |
| #define | RSA_SUBSTATE(name, nn) ((name)->rsarr[(nn)]) |
| #define | RSA_COUNT(name) ((name)->num) |
| #define | INC_RSA 32 |
| #define | INIT_RSA(name) |
| #define | ADDTO_RSA(name, imm) |
| #define | FREE_RSA(name) |
| #define | DESTROY_RSA(name) |
| #define | NACT 4 |
| #define | SEP_HOR(ww) |
| #define | SEP_VER(ww) |
| #define | NUM_CUTOUT_TYPES 22 |
| #define | CUT_NONE 0 |
| #define | CUT_RIGHT_OF 1 |
| #define | CUT_LEFT_OF 2 |
| #define | CUT_ANTERIOR_TO 3 |
| #define | CUT_POSTERIOR_TO 4 |
| #define | CUT_INFERIOR_TO 5 |
| #define | CUT_SUPERIOR_TO 6 |
| #define | CUT_EXPRESSION 7 |
| #define | CUT_TT_ELLIPSOID 8 |
| #define | CUT_SLANT_XPY_GT 9 |
| #define | CUT_SLANT_XPY_LT 10 |
| #define | CUT_SLANT_XMY_GT 11 |
| #define | CUT_SLANT_XMY_LT 12 |
| #define | CUT_SLANT_YPZ_GT 13 |
| #define | CUT_SLANT_YPZ_LT 14 |
| #define | CUT_SLANT_YMZ_GT 15 |
| #define | CUT_SLANT_YMZ_LT 16 |
| #define | CUT_SLANT_XPZ_GT 17 |
| #define | CUT_SLANT_XPZ_LT 18 |
| #define | CUT_SLANT_XMZ_GT 19 |
| #define | CUT_SLANT_XMZ_LT 20 |
| #define | CUT_NONOVERLAY 21 |
| #define | CUT_SLANT_BASE 9 |
| #define | CUT_SLANT_NUM 12 |
| #define | SQ2 0.7071 |
| #define | HISTOGRAMATE |
| #define | NHIST 255 |
| #define | STCOM(x) (x) |
| #define | IS_AXIAL_RAI(ds) |
| #define | IS_AXIAL_LPI(ds) |
| #define | IS_AXIAL(ds) ( IS_AXIAL_RAI(ds) || IS_AXIAL_LPI(ds) ) |
| #define | USEFUL_DSET(ds) |
| #define | CHECK_XHAIR_ERROR |
| #define | GR(i, j, k) gar[(i)+(j)*nx+(k)*nxy] |
| #define | OP(i, j, k) oar[(i)+(j)*nx+(k)*nxy] |
| #define | GXH_GRAY 255 |
| #define | GXH_COLOR 127 |
| #define | OXH 255 |
| #define | TT_XMID 0.0 |
| #define | TT_YMID 16.0 |
| #define | TT_ZMID 5.0 |
| #define | TT_XSEMI 68.0 |
| #define | TT_YSEMI 86.0 |
| #define | TT_ZSEMI 69.0 |
| #define | VSIZE nx |
| #define | OVAR(i, j, k) ovar[(i)+(j)*nx+(k)*nxy] |
| #define | KEEP(i, j, k) keep[(i)+(j)*nx+(k)*nxy] |
| #define | HEMX 80 |
| #define | ALLX (2*HEMX+1) |
| #define | RET(s) return |
| #define | OV(i, j, k) ovar[(i)+(j)*nx+(k)*nxy] |
| #define | MENU_SLINE |
| #define | SCRIPT_MENU_BUT(wname, label) |
| #define | ISTARRED(s) ( (s)[0]=='*' && (s)[1]=='*' && (s)[2]=='*' ) |
| #define | EOLSKIP |
| #define | GETSSS |
| #define | GETSTR |
| #define | GETEQN |
| #define | NSBUF 256 |
| #define | ASS_IVAL(a, b, c) { if( ival >= b && ival <= c ) a = ival ; } |
| #define | ASS_FVAL(a, b, c) { if( fval >= b && fval <= c ) a = fval ; } |
| #define | ASS_CUT_TYPE(nnn) if( strcmp(right,#nnn) == 0 ){ rs->current_cutout_state.type[iii] = nnn; continue;} |
| #define | ASS_INT(nnn) |
| #define | ASS_FLOAT(nnn) |
| #define | ASS_FLOAT_SUB(nnn, mmm) |
| #define | RSDIFF_STR(nnn) (rsbase == NULL || strcmp(rsbase->nnn,rs->nnn) != 0 ) |
| #define | RSDIFF_NUM(nnn) (rsbase == NULL || rsbase->nnn != rs->nnn) |
| #define | RSDIFF_CUTNUM(nnn) (rsbase == NULL || rsbase->current_cutout_state.nnn != rs->current_cutout_state.nnn) |
| #define | RSP_STR(nnn) |
| #define | RSP_INT(nnn) if( RSDIFF_NUM(nnn) ) sss = THD_zzprintf( sss , " " #nnn " = %d\n" , rs->nnn ) |
| #define | RSP_F2C AV_format_fval |
| #define | RSP_FLOAT(nnn) if( RSDIFF_NUM(nnn) ) sss = THD_zzprintf( sss , " " #nnn " = %s\n" , RSP_F2C(rs->nnn) ) |
| #define | TO_RS(nnn) (rs->nnn = nnn) |
| #define | RSOK(nnn, bb, tt) (rs->nnn != nnn && rs->nnn >= bb && rs->nnn <= tt) |
| #define | DBI(nnn) fprintf(stderr,#nnn ": rs=%d wid=%d\n",rs->nnn,nnn) |
Functions | |
| char * | REND_main (PLUGIN_interface *) |
| void | REND_make_widgets (void) |
| void | REND_done_CB (Widget, XtPointer, XtPointer) |
| void | REND_draw_CB (Widget, XtPointer, XtPointer) |
| void | REND_help_CB (Widget, XtPointer, XtPointer) |
| void | REND_reload_CB (Widget, XtPointer, XtPointer) |
| void | REND_choose_CB (Widget, XtPointer, XtPointer) |
| void | REND_xhair_CB (Widget, XtPointer, XtPointer) |
| void | REND_dynamic_CB (Widget, XtPointer, XtPointer) |
| void | REND_accum_CB (Widget, XtPointer, XtPointer) |
| void | REND_angle_CB (MCW_arrowval *, XtPointer) |
| void | REND_param_CB (MCW_arrowval *, XtPointer) |
| void | REND_precalc_CB (MCW_arrowval *, XtPointer) |
| void | REND_clip_CB (MCW_arrowval *, XtPointer) |
| void | REND_xhair_recv (int, int, int *, void *) |
| void | REND_environ_CB (char *) |
| void | REND_choose_av_CB (MCW_arrowval *, XtPointer) |
| char * | REND_choose_av_label_CB (MCW_arrowval *, XtPointer) |
| void | REND_opacity_scale_CB (MCW_arrowval *, XtPointer) |
| void | REND_finalize_dset_CB (Widget, XtPointer, MCW_choose_cbs *) |
| void | REND_reload_dataset (void) |
| void | REND_xhair_underlay (void) |
| void | REND_xhair_overlay (void) |
| void | REND_textact_CB (Widget, XtPointer, XtPointer) |
| void | REND_inc_angles (int, float, float *, float *, float *) |
| THD_dmat33 | REND_rotmatrix (int, double, int, double, int, double) |
| void | REND_rotmatrix_to_angles (THD_dmat33, double *, double *, double *) |
| void | REND_incrot_CB (Widget, XtPointer, XtPointer) |
| void | REND_do_incrot (MCW_arrowval *) |
| DEFINE_PLUGIN_PROTOTYPE PLUGIN_interface * | PLUGIN_init (int ncall) |
| void | REND_xhair_EV (Widget, XtPointer, XEvent *, Boolean *) |
| void | REND_xhair_ovc_CB (Widget, XtPointer, MCW_choose_cbs *) |
| void | REND_graf_CB (MCW_graf *, void *) |
| void | REND_open_imseq (void) |
| void | REND_update_imseq (void) |
| void | REND_destroy_imseq (void) |
| XtPointer | REND_imseq_getim (int, int, XtPointer) |
| void | REND_seq_send_CB (MCW_imseq *, XtPointer, ISQ_cbs *) |
| void | REND_autoflag_CB (Widget, XtPointer, XtPointer) |
| void | REND_autocompute_CB (Widget, XtPointer, XtPointer) |
| void | REND_autocancel_CB (Widget, XtPointer, XtPointer) |
| void | REND_cutout_type_CB (MCW_arrowval *, XtPointer) |
| void | REND_numcutout_CB (MCW_arrowval *, XtPointer) |
| void | REND_cutout_set_CB (Widget, XtPointer, XtPointer) |
| REND_cutout * | REND_make_cutout (int n) |
| void | REND_load_cutout_state (void) |
| int | REND_cutout_state_changed (void) |
| void | REND_cutout_blobs (MRI_IMAGE *) |
| float | REND_evaluate (MCW_arrowval *) |
| void | REND_func_widgets (void) |
| void | REND_init_cmap (void) |
| void | REND_reload_func_dset (void) |
| void | REND_reload_renderer (void) |
| void | REND_overlay_ttatlas (void) |
| void | REND_open_func_CB (Widget, XtPointer, XtPointer) |
| void | REND_pbarmenu_CB (Widget, XtPointer, XtPointer) |
| void | REND_pbarmenu_EV (Widget, XtPointer, XEvent *, Boolean *) |
| void | REND_palette_av_CB (MCW_arrowval *, XtPointer) |
| void | REND_mixshade_av_CB (MCW_arrowval *, XtPointer) |
| void | REND_set_pbar_top_CB (Widget, XtPointer, MCW_choose_cbs *) |
| void | REND_finalize_saveim_CB (Widget, XtPointer, MCW_choose_cbs *) |
| char * | REND_thresh_tlabel_CB (MCW_arrowval *, XtPointer) |
| void | REND_setup_color_pbar (void) |
| XmString | REND_range_label (void) |
| XmString | REND_autorange_label (void) |
| void | REND_range_bbox_CB (Widget, XtPointer, XtPointer) |
| void | REND_color_bbox_CB (Widget, XtPointer, XtPointer) |
| void | REND_thr_scale_CB (Widget, XtPointer, XtPointer) |
| void | REND_thr_scale_drag_CB (Widget, XtPointer, XtPointer) |
| void | REND_see_overlay_CB (Widget, XtPointer, XtPointer) |
| void | REND_cut_overlay_CB (Widget, XtPointer, XtPointer) |
| void | REND_kill_clusters_CB (Widget, XtPointer, XtPointer) |
| void | REND_finalize_func_CB (Widget, XtPointer, MCW_choose_cbs *) |
| void | REND_see_ttatlas_CB (Widget, XtPointer, XtPointer) |
| void | REND_range_av_CB (MCW_arrowval *, XtPointer) |
| void | REND_thresh_top_CB (MCW_arrowval *, XtPointer) |
| void | REND_colornum_av_CB (MCW_arrowval *, XtPointer) |
| void | REND_color_opacity_CB (MCW_arrowval *, XtPointer) |
| void | REND_clusters_av_CB (MCW_arrowval *, XtPointer) |
| void | REND_color_pbar_CB (MCW_pbar *, XtPointer, int) |
| void | REND_set_thr_pval (void) |
| void | REND_script_CB (Widget, XtPointer, XtPointer) |
| void | REND_script_menu (Widget) |
| void | REND_script_load_CB (Widget, XtPointer, XtPointer) |
| void | REND_script_brindex_CB (Widget, XtPointer, XtPointer) |
| void | REND_save_this_CB (Widget, XtPointer, MCW_choose_cbs *) |
| void | REND_save_many_CB (Widget, XtPointer, MCW_choose_cbs *) |
| void | REND_read_this_CB (Widget, XtPointer, MCW_choose_cbs *) |
| void | REND_read_this_finalize_CB (Widget, XtPointer, MCW_choose_cbs *) |
| void | REND_read_exec_CB (Widget, XtPointer, MCW_choose_cbs *) |
| int | graf_states_equal (graf_state *g1, graf_state *g2) |
| void | graf_state_get (MCW_graf *gp, graf_state *gs) |
| void | graf_state_put (MCW_graf *gp, graf_state *gs) |
| void | REND_script_graf_CB (Widget, XtPointer, XtPointer) |
| void | REND_script_dset_CB (Widget, XtPointer, XtPointer) |
| void | REND_state_to_widgets (RENDER_state *) |
| void | REND_widgets_to_state (RENDER_state *) |
| char * | REND_save_state (RENDER_state *, RENDER_state *) |
| RENDER_state_array * | REND_read_states (char *, RENDER_state *) |
| void | REND_done_timeout_CB (XtPointer client_data, XtIntervalId *id) |
| void | REND_load_dsl (THD_3dim_dataset *mset, int float_ok) |
Variables | |
| PLUGIN_interface * | plint = NULL |
| float | angle_fstep = 5.0 |
| float | cutout_fstep = 5.0 |
| char * | precalc_strings [] = { "Low" , "Medium" , "High" } |
| int | precalc_mode [] = { PMODE_LOW,PMODE_MEDIUM,PMODE_HIGH } |
| int | precalc_ival = MODE_MEDIUM |
| MCW_bbox * | incrot_bbox |
| Widget | shell = NULL |
| Widget | anat_rowcol |
| Widget | info_lab |
| Widget | choose_pb |
| Widget | done_pb |
| Widget | help_pb |
| Widget | draw_pb |
| Widget | reload_pb |
| MCW_arrowval * | roll_av |
| MCW_arrowval * | pitch_av |
| MCW_arrowval * | yaw_av |
| MCW_arrowval * | precalc_av |
| MCW_bbox * | xhair_bbox |
| MCW_bbox * | dynamic_bbox |
| MCW_bbox * | accum_bbox |
| MCW_arrowval * | choose_av |
| MCW_arrowval * | opacity_scale_av |
| int | xhair_ovc = 0 |
| char * | REND_dummy_av_label [2] = { "[Nothing At All]" , "[Nothing At All]" } |
| Widget | top_rowcol |
| Widget | anat_frame |
| Widget | range_lab |
| MCW_arrowval * | clipbot_av |
| MCW_arrowval * | cliptop_av |
| float | brickfac = 0.0 |
| Widget | range_faclab |
| Widget | clipbot_faclab |
| Widget | cliptop_faclab |
| MCW_graf * | opa_graf |
| MCW_graf * | gry_graf |
| MCW_pasgraf * | his_graf |
| char * | xhair_bbox_label [1] = { "See Xhairs" } |
| char * | dynamic_bbox_label [1] = { "DynaDraw" } |
| char * | accum_bbox_label [1] = { "Accumulate" } |
| MCW_DC * | dc |
| Three_D_View * | im3d |
| THD_3dim_dataset * | dset |
| MCW_idcode | dset_idc |
| int | new_dset = 0 |
| int | dset_ival = 0 |
| char | dset_title [THD_MAX_NAME] |
| MRI_IMAGE * | grim = NULL |
| MRI_IMAGE * | opim = NULL |
| void * | render_handle |
| MRI_IMAGE * | grim_showthru = NULL |
| MRI_IMAGE * | opim_showthru = NULL |
| int | dynamic_flag = 0 |
| int | accum_flag = 0 |
| float | angle_roll = 70.0 |
| float | angle_pitch = 120.0 |
| float | angle_yaw = 0.0 |
| int | xhair_flag = 0 |
| int | xhair_ixold = -666 |
| int | xhair_jyold = -666 |
| int | xhair_kzold = -666 |
| int | xhair_omold = -666 |
| int | xhair_recv = -1 |
| int | new_data_loaded = 0 |
| int | renderer_open = 0 |
| int | npixels = 0 |
| MCW_imseq * | imseq = NULL |
| MRI_IMARR * | renderings = NULL |
| MCW_bbox * | automate_bbox |
| int | automate_flag = 0 |
| char * | automate_bbox_label [1] = { "Automate" } |
| MCW_arrowval * | autoframe_av |
| Widget | autocompute_pb |
| Widget | autocancel_pb |
| REND_cutout * | cutouts [MAX_CUTOUTS] |
| char * | cutout_logic_labels [] = { "OR" , "AND" } |
| char * | cutout_mustdo_names [] = { "NO" , "YES" } |
| int | num_cutouts = 0 |
| int | logic_cutout = CUTOUT_OR |
| MCW_arrowval * | numcutout_av |
| MCW_arrowval * | logiccutout_av |
| CUTOUT_state | current_cutout_state |
| CUTOUT_state | old_cutout_state |
| char * | mustdo_bbox_label [1] = { "Must Do" } |
| double | atoz [26] |
| Pixmap | afni48ren_pixmap = XmUNSPECIFIED_PIXMAP |
| unsigned char | afni48ren_bits [] |
| Widget | wfunc_open_pb |
| Widget | wfunc_frame = NULL |
| Widget | wfunc_rowcol |
| Widget | wfunc_choose_pb |
| Widget | wfunc_uber_rowcol |
| Widget | wfunc_info_lab |
| Widget | wfunc_vsep |
| Widget | wfunc_thr_rowcol |
| Widget | wfunc_thr_label |
| Widget | wfunc_thr_scale = NULL |
| Widget | wfunc_thr_pval_label |
| MCW_arrowval * | wfunc_thr_top_av |
| Widget | wfunc_color_rowcol |
| Widget | wfunc_color_label |
| MCW_pbar * | wfunc_color_pbar = NULL |
| MCW_arrowval * | wfunc_color_av |
| MCW_arrowval * | wfunc_thresh_av |
| MCW_arrowval * | wfunc_colornum_av |
| MCW_bbox * | wfunc_color_bbox |
| Widget | wfunc_choices_rowcol |
| Widget | wfunc_choices_label |
| Widget | wfunc_buck_frame |
| Widget | wfunc_buck_rowcol |
| Widget | wfunc_opacity_frame |
| Widget | wfunc_opacity_rowcol |
| Widget | wfunc_range_rowcol |
| Widget | wfunc_range_frame |
| Widget | wfunc_range_label |
| MCW_arrowval * | wfunc_opacity_av |
| MCW_arrowval * | wfunc_range_av |
| MCW_arrowval * | wfunc_range_rotate_av |
| MCW_bbox * | wfunc_see_overlay_bbox |
| MCW_bbox * | wfunc_cut_overlay_bbox |
| MCW_bbox * | wfunc_kill_clusters_bbox |
| MCW_bbox * | wfunc_range_bbox |
| MCW_arrowval * | wfunc_clusters_rmm_av |
| MCW_arrowval * | wfunc_clusters_vmul_av |
| MCW_bbox * | wfunc_see_ttatlas_bbox |
| Widget | wfunc_pbar_menu |
| Widget | wfunc_pbar_equalize_pb |
| Widget | wfunc_pbar_settop_pb |
| Widget | wfunc_pbar_saveim_pb |
| MCW_arrowval * | wfunc_pbar_palette_av |
| MCW_arrowval * | wfunc_pbar_mixshade_av |
| int | func_use_autorange = 1 |
| float | func_threshold = 0.5 |
| float | func_thresh_top = 1.0 |
| int | func_use_thresh = 1 |
| float | func_color_opacity = 0.5 |
| int | func_see_overlay = 0 |
| int | func_see_ttatlas = 0 |
| int | func_cut_overlay = 0 |
| int | func_kill_clusters = 0 |
| float | func_clusters_rmm = 1.0 |
| float | func_clusters_vmul = 200.0 |
| int | func_posfunc = 0 |
| float | func_range = DEFAULT_FUNC_RANGE |
| float | func_autorange = DEFAULT_FUNC_RANGE |
| int | func_computed = 0 |
| int | func_showthru = 0 |
| int | func_showthru_pass = 0 |
| int | func_showthru_dcue = 0 |
| int | func_mixshade = 0 |
| THD_3dim_dataset * | func_dset = NULL |
| MCW_idcode | func_dset_idc |
| int | func_color_ival = 0 |
| int | func_thresh_ival = 0 |
| byte | func_rmap [256] |
| byte | func_gmap [256] |
| byte | func_bmap [256] |
| int | func_ncmap |
| int | func_cmap_set = 0 |
| MRI_IMAGE * | ovim |
| char | func_dset_title [THD_MAX_NAME] |
| Widget | script_menu |
| Widget | script_cbut |
| Widget | script_save_this_pb |
| Widget | script_save_many_pb |
| Widget | script_read_exec_pb |
| Widget | script_read_this_pb |
| MCW_bbox * | script_load_bbox |
| MCW_bbox * | script_brindex_bbox |
| int | script_load = 0 |
| int | script_load_last = -1 |
| int | script_brindex = 0 |
| int | script_dontdraw = 0 |
| MCW_bbox * | script_graf_bbox |
| int | script_graf = 0 |
| MCW_bbox * | script_dset_bbox |
| int | script_dsetchange = 0 |
| RENDER_state_array * | renderings_state = NULL |
| RENDER_state * | last_rendered_state = NULL |
| MCW_action_item | REND_actor [NACT] |
| char * | cutout_type_labels [NUM_CUTOUT_TYPES] |
| char * | cutout_param_labels [NUM_CUTOUT_TYPES] |
| char * | cutout_type_names [NUM_CUTOUT_TYPES] |
| float | cut_slant_normals [CUT_SLANT_NUM][3] |
| int | quit_first = 1 |
| int | ndsl = 0 |
| PLUGIN_dataset_link * | dsl = NULL |
| int | any_rgb_images |
| int | autokill |
| char | script_read_fname [THD_MAX_NAME] = "\0" |
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 672 of file plug_render.c. |
|
|
Definition at line 358 of file plug_render.c. Referenced by REND_open_imseq(). |
|
|
Definition at line 357 of file plug_render.c. Referenced by REND_open_imseq(). |
|
|
Definition at line 80 of file plug_render.c. Referenced by REND_help_CB(). |
|
|
Definition at line 6374 of file plug_render.c. |
|
|
|
|
|
Value: |
|
|
Value: |
|
|
|
|
|
Value: |
|
|
|
|
|
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) ; return ; \ } } while(0) Definition at line 3474 of file plug_render.c. Referenced by REND_xhair_CB(), REND_xhair_overlay(), REND_xhair_recv(), and REND_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 260 of file plug_render.c. Referenced by REND_draw_CB(). |
|
|
Definition at line 202 of file plug_render.c. Referenced by REND_main(), and REND_make_widgets(). |
|
|
Definition at line 529 of file plug_render.c. Referenced by REND_func_widgets(), and REND_make_cutout(). |
|
|
Definition at line 1685 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1689 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_state_changed(), REND_cutout_type_CB(), REND_load_cutout_state(), REND_read_states(), and REND_textact_CB(). |
|
|
Definition at line 1687 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1684 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1682 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_state_changed(), REND_cutout_type_CB(), REND_make_cutout(), and REND_read_states(). |
|
|
Definition at line 1705 of file plug_render.c. Referenced by REND_clusters_av_CB(), REND_cutout_blobs(), REND_kill_clusters_CB(), and REND_read_states(). |
|
|
Definition at line 1686 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1683 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1707 of file plug_render.c. Referenced by REND_cutout_blobs(), and REND_cutout_set_CB(). |
|
|
Definition at line 1708 of file plug_render.c. |
|
|
Definition at line 1694 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1695 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1702 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1703 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1692 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1693 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1700 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1701 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1698 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1699 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1696 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1697 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1688 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 1690 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_set_CB(), and REND_read_states(). |
|
|
Definition at line 314 of file plug_render.c. Referenced by REND_cutout_blobs(), and REND_read_states(). |
|
|
Definition at line 313 of file plug_render.c. Referenced by REND_cutout_blobs(), REND_cutout_state_changed(), and REND_read_states(). |
|
|
Definition at line 7691 of file plug_render.c. |
|
|
Definition at line 462 of file plug_render.c. Referenced by REND_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 685 of file plug_render.c. |
|
|
Value: ((func_dset != NULL && func_see_overlay) || \
func_see_ttatlas || (xhair_flag && xhair_ovc > 0) )Definition at line 389 of file plug_render.c. Referenced by REND_draw_CB(), and REND_xhair_underlay(). |
|
|
Value: do{ for( ; fptr[0] != '\n' && fptr[0] != '\0' ; fptr++ ) ; \ if( fptr[0] == '\0' ) goto Finished ; \ fptr++ ; } while(0) Definition at line 7096 of file plug_render.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 534 of file plug_render.c. Referenced by REND_color_bbox_CB(), REND_color_pbar_CB(), REND_colornum_av_CB(), REND_cutout_type_CB(), REND_draw_CB(), REND_numcutout_CB(), REND_open_func_CB(), REND_palette_av_CB(), REND_pbarmenu_CB(), REND_reload_dataset(), REND_set_pbar_top_CB(), and REND_thr_scale_CB(). |
|
|
Value: Definition at line 681 of file plug_render.c. |
|
|
Value: Definition at line 240 of file plug_render.c. Referenced by REND_choose_av_CB(), REND_clip_CB(), REND_clusters_av_CB(), REND_color_opacity_CB(), REND_done_CB(), REND_draw_CB(), REND_finalize_dset_CB(), REND_finalize_func_CB(), REND_graf_CB(), REND_kill_clusters_CB(), REND_reload_dataset(), REND_see_overlay_CB(), REND_see_ttatlas_CB(), REND_state_to_widgets(), REND_xhair_CB(), REND_xhair_ovc_CB(), and REND_xhair_recv(). |
|
|
Definition at line 238 of file plug_render.c. |
|
|
Definition at line 480 of file plug_render.c. Referenced by REND_choose_av_CB(), REND_color_pbar_CB(), REND_finalize_func_CB(), REND_range_av_CB(), REND_range_bbox_CB(), and REND_reload_func_dset(). |
|
|
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 7114 of file plug_render.c. Referenced by REND_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 7101 of file plug_render.c. |
|
|
Value: do{ GETSSS ; \ while(str[0]=='!' || (str[0]=='/' && str[1]=='/') || \ (str[0]=='#' && str[1]=='\0') ){EOLSKIP; GETSSS;} \ } while(0) Definition at line 7108 of file plug_render.c. Referenced by REND_read_states(). |
|
|
Definition at line 3644 of file plug_render.c. |
|
|
Definition at line 3648 of file plug_render.c. Referenced by REND_xhair_underlay(). |
|
|
Definition at line 3647 of file plug_render.c. Referenced by REND_xhair_underlay(). |
|
|
Definition at line 6373 of file plug_render.c. Referenced by REND_overlay_ttatlas(). |
|
|
Definition at line 544 of file plug_render.c. Referenced by REND_color_bbox_CB(), REND_colornum_av_CB(), REND_cutout_type_CB(), REND_numcutout_CB(), REND_open_func_CB(), REND_palette_av_CB(), REND_pbarmenu_CB(), REND_reload_dataset(), and REND_set_pbar_top_CB(). |
|
|
|
|
|
Definition at line 663 of file plug_render.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 665 of file plug_render.c. |
|
|
|
Definition at line 2974 of file plug_render.c. |
|
|
Value: ( ( (ds)->daxes->xxorient == ORI_L2R_TYPE ) && \ ( (ds)->daxes->yyorient == ORI_P2A_TYPE ) && \ ( (ds)->daxes->zzorient == ORI_I2S_TYPE ) ) Definition at line 2971 of file plug_render.c. |
|
|
Value: ( ( (ds)->daxes->xxorient == ORI_R2L_TYPE ) && \ ( (ds)->daxes->yyorient == ORI_A2P_TYPE ) && \ ( (ds)->daxes->zzorient == ORI_I2S_TYPE ) ) Definition at line 2968 of file plug_render.c. |
|
|
Definition at line 7094 of file plug_render.c. |
|
|
|
|
|
Definition at line 310 of file plug_render.c. Referenced by REND_environ_CB(), REND_func_widgets(), REND_load_cutout_state(), REND_make_widgets(), REND_numcutout_CB(), REND_read_states(), and REND_state_to_widgets(). |
|
|
Value: (void) XtVaCreateManagedWidget( \
"dialog" , xmSeparatorWidgetClass , script_menu , \
XmNseparatorType , XmSINGLE_LINE , NULL ) |
|
|
Definition at line 332 of file plug_render.c. Referenced by REND_load_cutout_state(), REND_opacity_scale_CB(), and REND_read_states(). |
|
|
Definition at line 71 of file plug_render.c. |
|
|
Definition at line 69 of file plug_render.c. |
|
|
Definition at line 70 of file plug_render.c. |
|
|
Definition at line 346 of file plug_render.c. Referenced by REND_autocompute_CB(), and REND_cutout_blobs(). |
|
|
Definition at line 834 of file plug_render.c. Referenced by REND_make_widgets(). |
|
|
Definition at line 392 of file plug_render.c. |
|
|
Definition at line 393 of file plug_render.c. |
|
|
Definition at line 244 of file plug_render.c. |
|
|
|
|
|
Definition at line 182 of file plug_render.c. Referenced by REND_func_widgets(), REND_main(), and REND_make_widgets(). |
|
|
Definition at line 488 of file plug_render.c. Referenced by REND_draw_CB(). |
|
|
Definition at line 487 of file plug_render.c. Referenced by REND_draw_CB(). |
|
|
Definition at line 7122 of file plug_render.c. Referenced by REND_read_states(). |
|
|
26 Apr 2002: add hints to these arrows as well * Definition at line 1635 of file plug_render.c. Referenced by REND_make_cutout(), REND_read_states(), and REND_state_to_widgets(). |
|
|
Definition at line 65 of file plug_render.c. Referenced by PLUGIN_init(), and REND_make_widgets(). |
|
|
Definition at line 18 of file plug_render.c. Referenced by RCREND_help_CB(), and REND_help_CB(). |
|
|
Definition at line 3645 of file plug_render.c. |
|
|
Definition at line 6468 of file plug_render.c. |
|
|
|
|
|
Definition at line 3649 of file plug_render.c. Referenced by REND_xhair_underlay(). |
|
|
|
|
|
Definition at line 662 of file plug_render.c. |
|
|
Definition at line 661 of file plug_render.c. |
|
|
Definition at line 7444 of file plug_render.c. |
|
|
Definition at line 7442 of file plug_render.c. |
|
|
-- skip ahead to next section keyword --* Definition at line 7440 of file plug_render.c. |
|
|
Definition at line 7689 of file plug_render.c. |
|
|
Definition at line 7454 of file plug_render.c. |
|
|
Definition at line 7456 of file plug_render.c. |
|
|
Definition at line 7451 of file plug_render.c. |
|
|
Value: if( rs->nnn[0] != '\0' && RSDIFF_STR(nnn) ) \ sss = THD_zzprintf( sss , " " #nnn " = %s\n" , rs->nnn ) Definition at line 7447 of file plug_render.c. |
|
|
Definition at line 610 of file plug_render.c. Referenced by REND_help_CB(). |
|
|
Definition at line 576 of file plug_render.c. Referenced by REND_help_CB(). |
|
|
Value: wname = \
XtVaCreateManagedWidget( \
"dialog" , xmPushButtonWidgetClass , script_menu , \
LABEL_ARG( label ) , \
XmNmarginHeight , 0 , \
XmNtraversalOn , False , \
XmNinitialResourcesPersistent , False , \
NULL ) ; \
XtAddCallback( wname , XmNactivateCallback , \
REND_script_CB , NULL ) ; |
|
|
Value: XtVaCreateManagedWidget( \
"AFNI" , xmSeparatorWidgetClass , (ww) , \
XmNseparatorType , XmSINGLE_LINE , \
XmNinitialResourcesPersistent , False , \
NULL )Definition at line 851 of file plug_render.c. |
|
|
Value: XtVaCreateManagedWidget( \
"AFNI" , xmSeparatorWidgetClass , (ww) , \
XmNseparatorType , XmDOUBLE_LINE , \
XmNorientation , XmVERTICAL , \
XmNinitialResourcesPersistent , False , \
NULL )Definition at line 857 of file plug_render.c. |
|
|
Definition at line 1710 of file plug_render.c. |
|
|
|
|
|
Definition at line 347 of file plug_render.c. Referenced by REND_autocompute_CB(), and REND_cutout_blobs(). |
|
|
Definition at line 7604 of file plug_render.c. |
|
|
Definition at line 3916 of file plug_render.c. Referenced by REND_cutout_blobs(), and REND_cutout_set_CB(). |
|
|
Definition at line 3920 of file plug_render.c. Referenced by REND_cutout_blobs(), and REND_cutout_set_CB(). |
|
|
Definition at line 3917 of file plug_render.c. Referenced by REND_cutout_blobs(), and REND_cutout_set_CB(). |
|
|
Definition at line 3921 of file plug_render.c. Referenced by REND_cutout_blobs(), and REND_cutout_set_CB(). |
|
|
Definition at line 3918 of file plug_render.c. Referenced by REND_cutout_blobs(), and REND_cutout_set_CB(). |
|
|
Definition at line 3922 of file plug_render.c. Referenced by REND_cutout_blobs(), and REND_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 = REND_range_label() ; \ XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ; \ XmStringFree(xstr) ; \ \ xstr = REND_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 395 of file plug_render.c. Referenced by REND_finalize_dset_CB(), and REND_main(). |
|
|
Definition at line 552 of file plug_render.c. Referenced by REND_help_CB(). |
|
|
Value: (( ISVALID_DSET(ds) ) && \ ( DSET_INMEMORY(ds) ) && \ ( DSET_CUBICAL(ds) ) && \ ( DSET_BRICK_TYPE(ds,0) == MRI_short || \ DSET_BRICK_TYPE(ds,0) == MRI_byte || \ (DSET_BRICK_TYPE(ds,0) == MRI_float && float_ok)) && \ IS_AXIAL(ds) ) Definition at line 2979 of file plug_render.c. |
|
|
|
|
|
Definition at line 348 of file plug_render.c. Referenced by REND_cutout_blobs(). |
|
|
Definition at line 349 of file plug_render.c. Referenced by REND_cutout_blobs(). |
|
|
Definition at line 350 of file plug_render.c. Referenced by REND_cutout_blobs(). |
Function Documentation
|
||||||||||||
|
Definition at line 593 of file plug_render.c. References GRAF_get_setup(), graf_state::nh, graf_state::spl, graf_state::xh, and graf_state::yh. Referenced by RCREND_state_to_widgets(), RCREND_widgets_to_state(), REND_state_to_widgets(), and REND_widgets_to_state().
00594 {
00595 GRAF_get_setup( gp , &(gs->nh) , gs->xh , gs->yh , &(gs->spl) ) ;
00596 return ;
00597 }
|
|
||||||||||||
|
Definition at line 599 of file plug_render.c. References GRAF_put_setup(), graf_state::nh, graf_state::spl, graf_state::xh, and graf_state::yh. Referenced by RCREND_state_to_widgets(), and REND_state_to_widgets().
00600 {
00601 GRAF_put_setup( gp , gs->nh , gs->xh , gs->yh , gs->spl ) ;
00602 return ;
00603 }
|
|
||||||||||||
|
Definition at line 582 of file plug_render.c. References graf_state::nh, graf_state::spl, graf_state::xh, and graf_state::yh. Referenced by RCREND_save_state(), RCREND_state_to_widgets(), REND_save_state(), and REND_state_to_widgets().
|
|
|
Definition at line 114 of file plug_render.c. References angle_fstep, cutout_fstep, getenv(), NUM_precalc, plint, PLUTO_add_hint(), PLUTO_set_sequence(), precalc_ival, precalc_mode, precalc_strings, REND_environ_CB(), REND_main(), and strtod().
00115 {
00116 char * env ;
00117 float val ;
00118 int ii ;
00119
00120 if( ncall > 0 ) return NULL ; /* only one interface */
00121
00122 plint = PLUTO_new_interface( "Render Dataset" , NULL , NULL ,
00123 PLUGIN_CALL_IMMEDIATELY , REND_main ) ;
00124
00125 PLUTO_add_hint( plint , "Volume Rendering" ) ;
00126
00127 PLUTO_set_sequence( plint , "A:graphics" ) ;
00128
00129 /***----- retrieve relevant environment variables, if any -----***/
00130
00131 env = getenv("AFNI_RENDER_ANGLE_DELTA") ;
00132 if( env != NULL ){
00133 val = strtod(env,NULL) ;
00134 if( val > 0.0 && val < 100.0 ) angle_fstep = val ;
00135 }
00136 PLUTO_register_environment_numeric( "AFNI_RENDER_ANGLE_DELTA" ,
00137 "Angle stepsize in deg (volume renderer)" ,
00138 1,9,0,(int)angle_fstep, REND_environ_CB );
00139
00140 /*--*/
00141
00142 env = getenv("AFNI_RENDER_CUTOUT_DELTA") ;
00143 if( env != NULL ){
00144 val = strtod(env,NULL) ;
00145 if( val > 0.0 && val < 100.0 ) cutout_fstep = val ;
00146 }
00147 PLUTO_register_environment_numeric( "AFNI_RENDER_CUTOUT_DELTA" ,
00148 "Cutout stepsize in mm (volume renderer)" ,
00149 1,9,0,(int)cutout_fstep, REND_environ_CB );
00150
00151 /*--*/
00152
00153 env = getenv("AFNI_RENDER_PRECALC_MODE") ;
00154 if( env != NULL ){
00155 for( ii=0 ; ii < NUM_precalc ; ii++ )
00156 if( strcmp(env,precalc_strings[ii]) == 0 ) break ;
00157 if( ii < NUM_precalc ) precalc_ival = precalc_mode[ii] ;
00158 }
00159
00160 /*--*/
00161
00162 env = getenv("AFNI_RENDER_SHOWTHRU_FAC") ;
00163 if( env != NULL ){
00164 val = strtod(env,NULL) ;
00165 if( val < 0.0 || val > 1.0 ) val = 1.0 ;
00166 } else {
00167 val = 1.0 ;
00168 }
00169 PLUTO_register_environment_numeric( "AFNI_RENDER_SHOWTHRU_FAC" ,
00170 "ShowThru mixing factor (volume renderer)",
00171 30,100,2,(int)rint(100.0*val) , NULL ) ;
00172
00173 /*-- done --*/
00174
00175 return plint ;
00176 }
|
|
||||||||||||||||
|
Definition at line 3632 of file plug_render.c. References accum_flag, client_data, and MCW_val_bbox(). Referenced by REND_make_widgets().
03633 {
03634 accum_flag = MCW_val_bbox( accum_bbox ) ;
03635 return ;
03636 }
|
|
||||||||||||
|
Definition at line 3353 of file plug_render.c. References angle_pitch, angle_roll, angle_yaw, AV_assign_fval(), dynamic_flag, MCW_arrowval::fval, MCW_val_bbox(), REND_do_incrot(), REND_draw_CB(), and render_handle. Referenced by REND_make_widgets(), and REND_state_to_widgets().
03354 {
03355 float na ;
03356
03357 /*==========================================================================*/
03358 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
03359 if( cd == NULL && MCW_val_bbox(incrot_bbox) ){ /* increment mode */
03360 REND_do_incrot( av ) ; /* ==> do work here */
03361 return ;
03362 }
03363 #endif
03364 /*==========================================================================*/
03365
03366 if( av == roll_av ){
03367
03368 na = angle_roll = av->fval ;
03369 if( na < 0.0 ) na += 360 ;
03370 else if( na >= 360.0 ) na -= 360.0 ;
03371 if( na != av->fval ){ AV_assign_fval( av , na ) ; angle_roll = na ; }
03372
03373 } else if( av == pitch_av ){
03374
03375 na = angle_pitch = av->fval ;
03376 if( na < 0.0 ) na += 360 ;
03377 else if( na >= 360.0 ) na -= 360.0 ;
03378 if( na != av->fval ){ AV_assign_fval( av , na ) ; angle_pitch = na ; }
03379
03380 } else if( av == yaw_av ){
03381
03382 na = angle_yaw = av->fval ;
03383 if( na < 0.0 ) na += 360 ;
03384 else if( na >= 360.0 ) na -= 360.0 ;
03385 if( na != av->fval ){ AV_assign_fval( av , na ) ; angle_yaw = na ; }
03386
03387 } else {
03388 return ; /* should never happen */
03389 }
03390
03391 if( cd == NULL && dynamic_flag && render_handle != NULL )
03392 REND_draw_CB(NULL,NULL,NULL) ;
03393
03394 return ;
03395 }
|
|
||||||||||||||||
|
Definition at line 4678 of file plug_render.c. References autokill, client_data, and MCW_DC::display. Referenced by REND_make_widgets().
|
|
||||||||||||||||
|
Definition at line 4626 of file plug_render.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, MCW_arrowval::ival, MCW_popdown_meter(), MCW_popup_meter(), MCW_set_bbox(), MCW_set_meter(), METER_TOP_WIDE, N_IND, REND_draw_CB(), shell, and T_IND. Referenced by REND_make_widgets().
04627 {
04628 int it , ntime = autoframe_av->ival ;
04629 float scl = 100.0/ntime ;
04630 Widget autometer ;
04631
04632 automate_flag = 1 ;
04633 if( ! accum_flag ){
04634 DESTROY_IMARR(renderings) ;
04635 #ifdef USE_SCRIPTING
04636 DESTROY_RSA(renderings_state) ;
04637 #endif
04638 }
04639
04640 atoz[N_IND] = ntime ;
04641
04642 autometer = MCW_popup_meter( shell , METER_TOP_WIDE ) ;
04643
04644 XtManageChild( autocancel_pb ) ; AFNI_add_interruptable( autocancel_pb ) ;
04645 autokill = 0 ;
04646
04647 for( it=0 ; it < ntime ; it++ ){
04648 atoz[T_IND] = it ;
04649 AV_assign_ival( autoframe_av , it+1 ) ;
04650
04651 REND_draw_CB(NULL,NULL,NULL) ;
04652
04653 if( it < ntime-1 ){
04654 AFNI_process_interrupts(autocancel_pb) ;
04655 if( autokill ) break ;
04656 }
04657
04658 MCW_set_meter( autometer , (int)(scl*(it+1)) ) ;
04659 }
04660
04661 MCW_popdown_meter( autometer ) ;
04662
04663 /*-- done: turn off automation --*/
04664
04665 MCW_set_bbox( automate_bbox , 0 ) ;
04666 XtSetSensitive( autocompute_pb , False ) ;
04667
04668 XtUnmanageChild( autocancel_pb ) ; AFNI_add_interruptable(NULL) ;
04669
04670 automate_flag = 0 ;
04671 return ;
04672 }
|
|
||||||||||||||||
|
Definition at line 4608 of file plug_render.c. References autocompute_pb, client_data, MCW_set_bbox(), and MCW_val_bbox(). Referenced by REND_make_widgets().
04609 {
04610 int flag = MCW_val_bbox( automate_bbox ) ;
04611 XtSetSensitive( autocompute_pb , (Boolean) flag ) ;
04612
04613 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
04614 if( flag ) MCW_set_bbox( incrot_bbox , 0 ) ;
04615 #endif
04616
04617 return ;
04618 }
|
|
|
Definition at line 5653 of file plug_render.c. References AV_fval_to_char(), THD_statistics::bstat, DEFAULT_FUNC_RANGE, DSET_VALID_BSTAT, func_autorange, func_color_ival, ISVALID_DSET, ISVALID_STATISTIC, THD_brick_stats::max, THD_brick_stats::min, RELOAD_STATS, s2, and THD_3dim_dataset::stats. Referenced by REND_choose_av_CB(), REND_finalize_func_CB(), REND_func_widgets(), and REND_xhair_recv().
05654 {
05655 XmString xstr ;
05656 float rrr = DEFAULT_FUNC_RANGE ;
05657 char buf[32] , qbuf[16] ;
05658
05659 if( ISVALID_DSET(func_dset) ){
05660
05661 RELOAD_STATS(func_dset) ;
05662 if( ISVALID_STATISTIC(func_dset->stats) ){
05663 float s1 , s2 ; int iv ;
05664
05665 iv = func_color_ival ;
05666
05667 if( DSET_VALID_BSTAT(func_dset,iv) ){
05668 s1 = fabs(func_dset->stats->bstat[iv].min) ,
05669 s2 = fabs(func_dset->stats->bstat[iv].max) ;
05670 rrr = (s1<s2) ? s2 : s1 ;
05671 if( rrr == 0.0 ) rrr = 1.0 ;
05672 }
05673 }
05674 }
05675
05676 func_autorange = rrr ;
05677 AV_fval_to_char( rrr , qbuf ) ;
05678 sprintf( buf , "autoRange:%s" , qbuf ) ;
05679 xstr = XmStringCreateLtoR( buf , XmFONTLIST_DEFAULT_TAG ) ;
05680
05681 return xstr ;
05682 }
|
|
||||||||||||
|
Definition at line 4688 of file plug_render.c. References AFNI_hintize_pbar(), AV_fval_to_char(), DSET_BRICK_FACTOR, dset_ival, DSET_NVALS, dset_title, FREE_VOLUMES, func_color_ival, func_dset_title, FUNC_RANGE, func_thresh_ival, info_lab, INVALIDATE_OVERLAY, MCW_arrowval::ival, new_dset, REND_autorange_label(), REND_draw_CB(), REND_range_label(), REND_reload_dataset(), REND_set_thr_pval(), render_handle, THD_MAX_NAME, MCW_bbox::wbut, wfunc_info_lab, and wfunc_range_label. Referenced by REND_func_widgets(), REND_make_widgets(), and REND_state_to_widgets().
04689 {
04690 XmString xstr ;
04691 char str[2*THD_MAX_NAME] ;
04692
04693 /*--- selection of a underlay sub-brick ---*/
04694
04695 if( av == choose_av && dset != NULL && av->ival < DSET_NVALS(dset) ){
04696
04697 float fac = DSET_BRICK_FACTOR(dset,av->ival) ;
04698
04699 if( fac == 0.0 || fac == 1.0 ){ /* rewrite the informational label */
04700 strcpy(str,dset_title) ;
04701 } else {
04702 char abuf[16] ;
04703 AV_fval_to_char( fac , abuf ) ;
04704 sprintf(str,"%s [* %s]", dset_title , abuf ) ;
04705 }
04706 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
04707 XtVaSetValues( info_lab , XmNlabelString , xstr , NULL ) ;
04708 XmStringFree(xstr) ;
04709
04710 dset_ival = av->ival ; /* read this sub-brick */
04711 new_dset = 1 ; /* flag it as new */
04712 FREE_VOLUMES ; /* free the internal data */
04713 REND_reload_dataset() ; /* load the data */
04714
04715 if( render_handle != NULL ) REND_draw_CB(NULL,NULL,NULL) ; /* draw */
04716
04717 /*--- selection of overlay color sub-brick ---*/
04718
04719 } else if( av == wfunc_color_av && func_dset != NULL && av->ival < DSET_NVALS(func_dset) ){
04720
04721 float fac = DSET_BRICK_FACTOR(func_dset,av->ival) ;
04722
04723 if( fac == 0.0 || fac == 1.0 ){ /* rewrite the informational label */
04724 strcpy(str,func_dset_title) ;
04725 } else {
04726 char abuf[16] ;
04727 AV_fval_to_char( fac , abuf ) ;
04728 sprintf(str,"%s [* %s]", func_dset_title , abuf ) ;
04729 }
04730 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
04731 XtVaSetValues( wfunc_info_lab , XmNlabelString , xstr , NULL ) ;
04732 XmStringFree(xstr) ;
04733
04734 func_color_ival = av->ival ;
04735
04736 /* fix the range labels */
04737
04738 xstr = REND_range_label() ;
04739 XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ;
04740 XmStringFree(xstr) ;
04741
04742 xstr = REND_autorange_label() ;
04743 XtVaSetValues( wfunc_range_bbox->wbut[0], XmNlabelString,xstr , NULL ) ;
04744 XmStringFree(xstr) ;
04745
04746 INVALIDATE_OVERLAY ;
04747
04748 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Jul 2001 */
04749
04750 /*--- selection of overlay threshold sub-brick ---*/
04751
04752 } else if( av == wfunc_thresh_av && func_dset != NULL && av->ival < DSET_NVALS(func_dset) ){
04753
04754 func_thresh_ival = av->ival ;
04755
04756 /* fix the range label */
04757
04758 xstr = REND_range_label() ;
04759 XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ;
04760 XmStringFree(xstr) ;
04761
04762 /* fix the p-value label */
04763
04764 REND_set_thr_pval() ;
04765
04766 INVALIDATE_OVERLAY ;
04767 }
04768
04769 return ;
04770 }
|
|
||||||||||||
|
Definition at line 4776 of file plug_render.c. References DSET_BRICK_LABEL, DSET_NVALS, ISVALID_3DIM_DATASET, and MCW_arrowval::ival. Referenced by REND_finalize_dset_CB(), and REND_finalize_func_CB().
04777 {
04778 static char blab[32] ;
04779 THD_3dim_dataset * dset = (THD_3dim_dataset *) cd ;
04780 static char * lfmt[3] = { "#%1d %-14.14s" , "#%2d %-14.14s" , "#%3d %-14.14s" } ;
04781 static char * rfmt[3] = { "%-14.14s #%1d" , "%-14.14s #%2d" , "%-14.14s #%3d" } ;
04782
04783 if( ISVALID_3DIM_DATASET(dset) ){
04784
04785 #ifdef USE_RIGHT_BUCK_LABELS
04786 if( DSET_NVALS(dset) < 10 )
04787 sprintf(blab, rfmt[0] , DSET_BRICK_LABEL(dset,av->ival) , av->ival ) ;
04788 else if( DSET_NVALS(dset) < 100 )
04789 sprintf(blab, rfmt[1] , DSET_BRICK_LABEL(dset,av->ival) , av->ival ) ;
04790 else
04791 sprintf(blab, rfmt[2] , DSET_BRICK_LABEL(dset,av->ival) , av->ival ) ;
04792 #else
04793 if( DSET_NVALS(dset) < 10 )
04794 sprintf(blab, lfmt[0] , av->ival , DSET_BRICK_LABEL(dset,av->ival) ) ;
04795 else if( DSET_NVALS(dset) < 100 )
04796 sprintf(blab, lfmt[1] , av->ival , DSET_BRICK_LABEL(dset,av->ival) ) ;
04797 else
04798 sprintf(blab, lfmt[2] , av->ival , DSET_BRICK_LABEL(dset,av->ival) ) ;
04799 #endif
04800 }
04801 else
04802 sprintf(blab," #%d ",av->ival) ; /* should not happen! */
04803
04804 return blab ;
04805 }
|
|
||||||||||||||||
|
Definition at line 3027 of file plug_render.c. References client_data, MCW_DC::display, DSET_COMPRESSED, DSET_NUM_TIMES, DSET_NVALS, dsl, 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, REND_finalize_dset_CB(), REND_finalize_func_CB(), REND_load_dsl(), THD_MAX_NAME, AFNI_view_info::view_type, Three_D_View::vinfo, wfunc_choose_pb, and XtRealloc. Referenced by REND_func_widgets(), and REND_make_widgets().
03028 {
03029 int vv = im3d->vinfo->view_type ; /* view type */
03030 THD_3dim_dataset * qset ;
03031 int id , ltop , llen , dofunc ;
03032 char qnam[THD_MAX_NAME] , label[THD_MAX_NAME] ;
03033 static char ** strlist = NULL ;
03034
03035 int isl = -2 ; /* 03 Apr 1999 */
03036 MCW_idcode midc ;
03037
03038 /*-- decide if we want overlay (func) or underlay --*/
03039
03040 dofunc = (w == wfunc_choose_pb) ;
03041
03042 if( dofunc && !ISVALID_DSET(dset) ){
03043 (void) MCW_popup_message( w ,
03044 "Can't choose overlay\nbefore underlay!" ,
03045 MCW_USER_KILL | MCW_TIMER_KILL ) ;
03046 XBell(dc->display,100) ; return ;
03047 }
03048
03049 if( dofunc )
03050 REND_load_dsl( dset , 1 ) ;
03051 else
03052 REND_load_dsl( NULL , 0 ) ;
03053
03054 /* found nothing? exit */
03055
03056 if( ndsl < 1 ){
03057 (void) MCW_popup_message( w ,
03058 "Didn't find\nany datasets\nto render!" ,
03059 MCW_USER_KILL | MCW_TIMER_KILL ) ;
03060 XBell(dc->display,100) ; return ;
03061 }
03062
03063 /*--- loop over dataset links and patch their titles
03064 to include an indicator of the dataset type ---*/
03065
03066 ltop = 4 ;
03067 for( id=0 ; id < ndsl ; id++ ){
03068 llen = strlen(dsl[id].title) ;
03069 ltop = MAX(ltop,llen) ;
03070 }
03071
03072 for( id=0 ; id < ndsl ; id++ ){
03073 qset = PLUTO_find_dset( &(dsl[id].idcode) ) ;
03074 if( ! ISVALID_DSET(qset) ) continue ;
03075 if( ISANAT(qset) ){
03076 if( ISANATBUCKET(qset) ) /* 30 Nov 1997 */
03077 sprintf(qnam,"%-*s [%s:%d]" ,
03078 ltop,dsl[id].title ,
03079 ANAT_prefixstr[qset->func_type] , DSET_NVALS(qset) ) ;
03080
03081 else if( DSET_NUM_TIMES(qset) == 1 )
03082 sprintf(qnam,"%-*s [%s]" ,
03083 ltop,dsl[id].title ,
03084 ANAT_prefixstr[qset->func_type] ) ;
03085
03086 else
03087 sprintf(qnam,"%-*s [%s:3D+t:%d]" ,
03088 ltop,dsl[id].title ,
03089 ANAT_prefixstr[qset->func_type] , DSET_NUM_TIMES(qset) ) ;
03090
03091 } else {
03092 if( ISFUNCBUCKET(qset) ) /* 30 Nov 1997 */
03093 sprintf(qnam,"%-*s [%s:%d]" ,
03094 ltop,dsl[id].title ,
03095 FUNC_prefixstr[qset->func_type] , DSET_NVALS(qset) ) ;
03096
03097 else if( DSET_NUM_TIMES(qset) == 1 )
03098 sprintf(qnam,"%-*s [%s]" ,
03099 ltop,dsl[id].title ,
03100 FUNC_prefixstr[qset->func_type] ) ;
03101
03102 else
03103 sprintf(qnam,"%-*s [%s:3D+t:%d]" ,
03104 ltop,dsl[id].title ,
03105 FUNC_prefixstr[qset->func_type] , DSET_NVALS(qset) ) ;
03106 }
03107
03108 if( DSET_COMPRESSED(qset) ) strcat(qnam,"z") ;
03109
03110 strcpy( dsl[id].title , qnam ) ;
03111 }
03112
03113 /*--- make a popup chooser for the user to browse ---*/
03114
03115 POPDOWN_strlist_chooser ;
03116
03117 strlist = (char **) XtRealloc( (char *)strlist , sizeof(char *)*ndsl ) ;
03118 for( id=0 ; id < ndsl ; id++ ) strlist[id] = dsl[id].title ;
03119
03120 /*-- 03 Apr 1999: set the initial selection in the chooser --*/
03121
03122 if( dofunc && func_dset != NULL ){ midc = func_dset_idc; isl = -1; }
03123 else if( !dofunc && dset != NULL ){ midc = dset_idc ; isl = -1; }
03124
03125 if( isl == -1 ){
03126 for( id=0 ; id < ndsl ; id++ ){
03127 if( EQUIV_IDCODES(midc,dsl[id].idcode) ){ isl = id ; break ; }
03128 }
03129 }
03130
03131 /*-- popup the chooser -- */
03132
03133 sprintf( label , "AFNI Dataset from\nthe %s" , VIEW_typestr[vv] ) ;
03134
03135 MCW_choose_strlist( w , label , ndsl , isl , strlist ,
03136 (dofunc) ? REND_finalize_func_CB
03137 : REND_finalize_dset_CB , NULL ) ;
03138
03139 return ;
03140 }
|
|
||||||||||||
|
Definition at line 3719 of file plug_render.c. References AV_assign_ival(), AV_fval_to_char(), brickfac, clipbot_faclab, cliptop_faclab, FREE_VOLUMES, and MCW_arrowval::ival. Referenced by REND_make_widgets(), and REND_state_to_widgets().
03720 {
03721 FREE_VOLUMES ; /* free the volumes, will force reloading */
03722
03723 if( clipbot_av->ival >= cliptop_av->ival ){
03724 if( av == clipbot_av )
03725 AV_assign_ival( clipbot_av , cliptop_av->ival - 1 ) ;
03726 else
03727 AV_assign_ival( cliptop_av , clipbot_av->ival + 1 ) ;
03728 }
03729
03730 /* if brick is scaled, re-show the scaled labels */
03731
03732 if( brickfac != 0.0 && brickfac != 1.0 ){
03733 char minch[16] , maxch[16] , str[64] ;
03734 XmString xstr ;
03735
03736 if( av == clipbot_av ){
03737 AV_fval_to_char( brickfac * clipbot_av->ival , minch ) ;
03738 sprintf(str,"[-> %s]",minch) ;
03739 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
03740 XtVaSetValues( clipbot_faclab , XmNlabelString , xstr , NULL ) ;
03741 XmStringFree(xstr) ;
03742 } else {
03743 AV_fval_to_char( brickfac * cliptop_av->ival , maxch ) ;
03744 sprintf(str,"[-> %s]",maxch) ;
03745 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
03746 XtVaSetValues( cliptop_faclab , XmNlabelString , xstr , NULL ) ;
03747 XmStringFree(xstr) ;
03748 }
03749 }
03750
03751 return ;
03752 }
|
|
||||||||||||
|
Definition at line 5977 of file plug_render.c. References CUT_NONOVERLAY, FREE_VOLUMES, INVALIDATE_OVERLAY, CUTOUT_state::num, and CUTOUT_state::type. Referenced by REND_func_widgets(), and REND_state_to_widgets().
05978 {
05979 int cc ;
05980
05981 INVALIDATE_OVERLAY ;
05982
05983 for( cc=0 ; cc < current_cutout_state.num ; cc++ )
05984 if( current_cutout_state.type[cc] == CUT_NONOVERLAY ){
05985 FREE_VOLUMES ;
05986 break ;
05987 }
05988
05989 return ;
05990 }
|
|
||||||||||||||||
|
Definition at line 5869 of file plug_render.c. References alter_MCW_pbar(), AV_assign_ival(), FIX_SCALE_SIZE, func_posfunc, HIDE_SCALE, INVALIDATE_OVERLAY, MCW_val_bbox(), MCW_pbar::mode, and MCW_pbar::npan_save. Referenced by REND_func_widgets(), and REND_state_to_widgets().
05870 {
05871 int jm , newpos=MCW_val_bbox(wfunc_color_bbox) ;
05872
05873 if( newpos == func_posfunc ) return ; /* no change? */
05874
05875 func_posfunc = newpos ;
05876 jm = wfunc_color_pbar->mode = (newpos) ? 1 : 0 ; /* pbar mode */
05877
05878 HIDE_SCALE ;
05879 alter_MCW_pbar( wfunc_color_pbar , wfunc_color_pbar->npan_save[jm] , NULL ) ;
05880 FIX_SCALE_SIZE ;
05881
05882 /* set the count on the pbar control arrowval to match */
05883
05884 AV_assign_ival( wfunc_colornum_av , wfunc_color_pbar->npan_save[jm] ) ;
05885
05886 INVALIDATE_OVERLAY ;
05887 return ;
05888 }
|
|
||||||||||||
|
Definition at line 5894 of file plug_render.c. References FREE_VOLUMES, func_color_opacity, func_showthru, func_showthru_dcue, INVALIDATE_OVERLAY, and MCW_arrowval::ival. Referenced by REND_func_widgets(), and REND_state_to_widgets().
05895 {
05896 int ofs = func_showthru ;
05897 func_color_opacity = 0.1 * av->ival ;
05898 func_showthru = (av->ival == 11 || av->ival == 12) ; /* 07 Jan 2000 */
05899 func_showthru_dcue = ( av->ival == 12 ) ; /* 11 Sep 2001 */
05900 INVALIDATE_OVERLAY ;
05901
05902 if( func_showthru != ofs ) FREE_VOLUMES ;
05903 return ;
05904 }
|
|
||||||||||||||||
|
Definition at line 5843 of file plug_render.c. References AFNI_hintize_pbar(), FIX_SCALE_SIZE, FUNC_RANGE, and INVALIDATE_OVERLAY. Referenced by REND_func_widgets().
05844 {
05845 FIX_SCALE_SIZE ;
05846 INVALIDATE_OVERLAY ;
05847
05848 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Mar 2001 */
05849 return ;
05850 }
|
|
||||||||||||
|
Definition at line 5856 of file plug_render.c. References alter_MCW_pbar(), FIX_SCALE_SIZE, HIDE_SCALE, INVALIDATE_OVERLAY, and MCW_arrowval::ival. Referenced by REND_func_widgets(), and REND_state_to_widgets().
05857 {
05858 HIDE_SCALE ;
05859 alter_MCW_pbar( wfunc_color_pbar , av->ival , NULL ) ;
05860 FIX_SCALE_SIZE ;
05861 INVALIDATE_OVERLAY ;
05862 return ;
05863 }
|
|
||||||||||||||||
|
Definition at line 5940 of file plug_render.c. References func_cut_overlay, INVALIDATE_OVERLAY, MCW_val_bbox(), and num_cutouts. Referenced by REND_func_widgets(), and REND_state_to_widgets().
05941 {
05942 int newcut = MCW_val_bbox(wfunc_cut_overlay_bbox) ;
05943
05944 if( newcut == func_cut_overlay ) return ;
05945
05946 func_cut_overlay = newcut ;
05947 if( num_cutouts > 0 ){ INVALIDATE_OVERLAY ; }
05948 return ;
05949 }
|
|
|
Definition at line 3994 of file plug_render.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, 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, REND_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 REND_reload_dataset().
03995 {
03996 int ii,jj,kk , nx,ny,nz,nxy,nxyz , cc , typ , ncc,logic,nmust,nand,mus ;
03997 int ibot,itop , jbot,jtop , kbot,ktop ;
03998 float par ;
03999 float dx,dy,dz , xorg,yorg,zorg , xx,yy,zz ;
04000 byte * oar , * gar ;
04001 byte ncdone = 0 ;
04002
04003 ncc = current_cutout_state.num ;
04004 logic = current_cutout_state.logic ;
04005 if( ncc < 1 || oppim == NULL ) return ; /* error */
04006
04007 /* find out if the logic is effectively "OR" */
04008
04009 if( ncc == 1 ){
04010 logic = CUTOUT_OR ;
04011 } else {
04012 for( nmust=cc=0 ; cc < ncc ; cc++ )
04013 if( current_cutout_state.mustdo[cc] ) nmust++ ;
04014 if( nmust >= ncc-1 ) logic = CUTOUT_OR ;
04015 }
04016
04017 /* initialize */
04018
04019 oar = MRI_BYTE_PTR(oppim) ; if( oar == NULL ) return ;
04020 nx = oppim->nx ;
04021 ny = oppim->ny ; nxy = nx * ny ;
04022 nz = oppim->nz ; nxyz = nxy * nz ;
04023
04024 if( logic == CUTOUT_AND ){
04025 gar = (byte *) malloc( sizeof(byte) * nxyz ) ; /* counts of hits */
04026 memset( gar , 0 , sizeof(byte) * nxyz ) ;
04027 }
04028
04029 dx = dset->daxes->xxdel; dy = dset->daxes->yydel; dz = dset->daxes->zzdel;
04030 xorg = dset->daxes->xxorg; yorg = dset->daxes->yyorg; zorg = dset->daxes->zzorg;
04031
04032 for( cc=0 ; cc < ncc ; cc++ ){ /* loop over cutouts */
04033 typ = current_cutout_state.type[cc] ;
04034 mus = current_cutout_state.mustdo[cc] ;
04035 par = current_cutout_state.param[cc] ;
04036 if( typ == CUT_NONE ) continue ; /* error */
04037
04038 switch( typ ){
04039
04040 /*............................................................*/
04041
04042 case CUT_RIGHT_OF:
04043 case CUT_LEFT_OF:
04044 case CUT_ANTERIOR_TO:
04045 case CUT_POSTERIOR_TO:
04046 case CUT_INFERIOR_TO:
04047 case CUT_SUPERIOR_TO:{ /* a rectangular region */
04048 int q ;
04049
04050 ibot = 0 ; itop = nx-1 ; /* everything */
04051 jbot = 0 ; jtop = ny-1 ;
04052 kbot = 0 ; ktop = nz-1 ;
04053 switch( typ ){
04054 case CUT_RIGHT_OF:
04055 q = (int)( (par-xorg)/dx - 0.499 ); RANGE(q,0,itop); itop = q;
04056 break ;
04057 case CUT_LEFT_OF:
04058 q = (int)( (par-xorg)/dx + 1.499 ); RANGE(q,0,itop); ibot = q;
04059 break ;
04060 case CUT_ANTERIOR_TO:
04061 q = (int)( (par-yorg)/dy - 0.499 ); RANGE(q,0,jtop); jtop = q;
04062 break ;
04063 case CUT_POSTERIOR_TO:
04064 q = (int)( (par-yorg)/dy + 1.499 ); RANGE(q,0,jtop); jbot = q;
04065 break ;
04066 case CUT_INFERIOR_TO:
04067 q = (int)( (par-zorg)/dz - 0.499 ); RANGE(q,0,ktop); ktop = q;
04068 break ;
04069 case CUT_SUPERIOR_TO:
04070 q = (int)( (par-zorg)/dz + 1.499 ); RANGE(q,0,ktop); kbot = q;
04071 break ;
04072 }
04073
04074 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04075 ncdone++ ;
04076 for( kk=kbot ; kk <= ktop ; kk++ )
04077 for( jj=jbot ; jj <= jtop ; jj++ )
04078 for( ii=ibot ; ii <= itop ; ii++ ) GR(ii,jj,kk)++ ;
04079
04080 } else { /* just blast it */
04081 for( kk=kbot ; kk <= ktop ; kk++ )
04082 for( jj=jbot ; jj <= jtop ; jj++ )
04083 for( ii=ibot ; ii <= itop ; ii++ ) OP(ii,jj,kk) = 0 ;
04084 }
04085 }
04086 break ; /* end of rectangular region cutout */
04087
04088 /*............................................................*/
04089
04090 case CUT_TT_ELLIPSOID:{ /* an ellipsoid */
04091
04092 float dxa=dx/TT_XSEMI , dya=dy/TT_YSEMI , dza=dz/TT_ZSEMI ;
04093 float xga=(xorg-TT_XMID)/TT_XSEMI ,
04094 yga=(yorg-TT_YMID)/TT_YSEMI ,
04095 zga=(zorg-TT_ZMID)/TT_ZSEMI , ebot=0.0001*par*par ;
04096
04097 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04098 ncdone++ ;
04099 for( kk=0 ; kk < nz ; kk++ ){
04100 zz = zga + kk*dza ; zz = zz*zz ;
04101 for( jj=0 ; jj < ny ; jj++ ){
04102 yy = yga + jj*dya ; yy = yy*yy + zz ;
04103 if( yy < ebot ){
04104 for( ii=0 ; ii < nx ; ii++ ){
04105 xx = xga + ii*dxa ; xx = xx*xx + yy ;
04106 if( xx > ebot ) GR(ii,jj,kk)++ ;
04107 }
04108 } else {
04109 for( ii=0 ; ii < nx ; ii++ ) GR(ii,jj,kk)++ ;
04110 }
04111 }}
04112
04113 } else { /* blast it */
04114 for( kk=0 ; kk < nz ; kk++ ){
04115 zz = zga + kk*dza ; zz = zz*zz ;
04116 for( jj=0 ; jj < ny ; jj++ ){
04117 yy = yga + jj*dya ; yy = yy*yy + zz ;
04118 if( yy < ebot ){
04119 for( ii=0 ; ii < nx ; ii++ ){
04120 xx = xga + ii*dxa ; xx = xx*xx + yy ;
04121 if( xx > ebot ) OP(ii,jj,kk) = 0 ;
04122 }
04123 } else {
04124 for( ii=0 ; ii < nx ; ii++ ) OP(ii,jj,kk) = 0 ;
04125 }
04126 }}
04127 }
04128 }
04129 break ; /* end of ellipsoid cutout */
04130
04131 /*............................................................*/
04132
04133 #define VSIZE nx
04134 case CUT_EXPRESSION:{ /* expression > 0 */
04135 PARSER_code * pcode ;
04136 double * abc[26] , * temp ;
04137
04138 /* parse the expression */
04139
04140 pcode = PARSER_generate_code( current_cutout_state.param_str[cc] ) ;
04141 if( pcode == NULL ) break ; /* skip this cutout */
04142
04143 /* create the evaluation workspaces */
04144
04145 temp = (double *) malloc( sizeof(double) * VSIZE ) ;
04146 for( jj=0 ; jj < 26 ; jj++ )
04147 abc[jj] = (double *) malloc( sizeof(double) * VSIZE ) ;
04148
04149 for( jj=0 ; jj < 23 ; jj++ ) /* load zeros for */
04150 for( ii=0 ; ii < VSIZE; ii++ ) /* 'a' ... 'w' */
04151 abc[jj][ii] = 0.0 ;
04152
04153 for( ii=0 ; ii < VSIZE ; ii++ ){ /* load 't' and 'n' */
04154 abc[N_IND][ii] = atoz[N_IND] ;
04155 abc[T_IND][ii] = atoz[T_IND] ;
04156 }
04157
04158 /* loop over rows of voxels and evaluate expressions */
04159
04160 for( kk=0 ; kk < nz ; kk++ ){
04161 zz = zorg + kk*dz ;
04162 for( jj=0 ; jj < ny ; jj++ ){
04163 yy = yorg + jj*dy ;
04164
04165 for( ii=0 ; ii < nx ; ii++ ){ /* load row */
04166 abc[X_IND][ii] = xorg + ii*dx ;
04167 abc[Y_IND][ii] = yy ;
04168 abc[Z_IND][ii] = zz ;
04169 }
04170
04171 /* evaluate the expression */
04172
04173 PARSER_evaluate_vector(pcode, abc, VSIZE, temp);
04174
04175 /* cut cut cut */
04176
04177 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04178 for( ii=0 ; ii < nx ; ii++ )
04179 if( temp[ii] > 0.0 ) GR(ii,jj,kk)++ ;
04180
04181 } else { /* blast'em */
04182 for( ii=0 ; ii < nx ; ii++ )
04183 if( temp[ii] > 0.0 ) OP(ii,jj,kk) = 0 ;
04184 }
04185 }} /* end of loops over jj,kk (y,z) */
04186
04187 if( logic == CUTOUT_AND && ! mus ) ncdone++ ;
04188
04189 /* free workspaces */
04190
04191 for( jj=0 ; jj < 26 ; jj++ ) free(abc[jj]) ;
04192 free(temp) ; free(pcode) ;
04193 }
04194 break ; /* end of expression cutout */
04195
04196 /*............................................................*/
04197
04198 case CUT_SLANT_XPY_GT: /* the slanted cut planes */
04199 case CUT_SLANT_XPY_LT:
04200 case CUT_SLANT_XMY_GT:
04201 case CUT_SLANT_XMY_LT:
04202 case CUT_SLANT_YPZ_GT:
04203 case CUT_SLANT_YPZ_LT:
04204 case CUT_SLANT_YMZ_GT:
04205 case CUT_SLANT_YMZ_LT:
04206 case CUT_SLANT_XPZ_GT:
04207 case CUT_SLANT_XPZ_LT:
04208 case CUT_SLANT_XMZ_GT:
04209 case CUT_SLANT_XMZ_LT:{
04210 int isl = typ - CUT_SLANT_BASE ;
04211 float xn = cut_slant_normals[isl][0] , dxn = dx * xn ,
04212 yn = cut_slant_normals[isl][1] , dyn = dy * yn ,
04213 zn = cut_slant_normals[isl][2] , dzn = dz * zn , pval ;
04214
04215 pval = par - xn*xorg - yn*yorg - zn*zorg ;
04216
04217 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04218 ncdone++ ;
04219 for( kk=0,zz=-pval ; kk < nz ; kk++,zz+=dzn ){
04220 /* zz = kk * dzn - pval ; */
04221 for( jj=0,yy=zz ; jj < ny ; jj++,yy+=dyn ){
04222 /* yy = jj * dyn + zz ; */
04223 for( ii=0,xx=yy ; ii < nx ; ii++,xx+=dxn ){
04224 /* xx = ii * dxn + yy ; */
04225 if( xx > 0.0 ) GR(ii,jj,kk)++ ;
04226 }
04227 }}
04228 } else { /* blast it */
04229 for( kk=0,zz=-pval ; kk < nz ; kk++,zz+=dzn ){
04230 /* zz = kk * dzn - pval ; */
04231 for( jj=0,yy=zz ; jj < ny ; jj++,yy+=dyn ){
04232 /* yy = jj * dyn + zz ; */
04233 for( ii=0,xx=yy ; ii < nx ; ii++,xx+=dxn ){
04234 /* xx = ii * dxn + yy ; */
04235 if( xx > 0.0 ) OP(ii,jj,kk) = 0 ;
04236 }
04237 }}
04238 }
04239 }
04240 break ; /* end of slant cutout */
04241
04242 /*............................................................*/
04243
04244 #define OVAR(i,j,k) ovar[(i)+(j)*nx+(k)*nxy]
04245 #define KEEP(i,j,k) keep[(i)+(j)*nx+(k)*nxy]
04246
04247 case CUT_NONOVERLAY:
04248 if( DO_OVERLAY ){ /* 24 Jul 2001: changed condition from func_dset != NULL */
04249 byte * ovar ;
04250 float adx=fabs(dx) , ady=fabs(dy) , adz=fabs(dz) ;
04251
04252 if( ovim == NULL ) REND_reload_func_dset() ; /* get the global */
04253 ovar = MRI_BYTE_PTR(ovim) ; /* overlay image */
04254
04255 if( par < adx && par < ady && par < adz ){ /* no dilation */
04256
04257 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04258 ncdone++ ;
04259 for( ii=0 ; ii < nxyz ; ii++ )
04260 if( ovar[ii] == 0 ) gar[ii]++ ;
04261 } else { /* nuke'em */
04262 for( ii=0 ; ii < nxyz ; ii++ )
04263 if( ovar[ii] == 0 ) oar[ii] = 0 ;
04264 }
04265
04266 } else { /* dilation */
04267
04268 MCW_cluster * mask = MCW_build_mask( nx,ny,nz, adx,ady,adz, par ) ;
04269 int mnum = mask->num_pt , pp,ip,jp,kp ;
04270 short * mi = mask->i , * mj = mask->j , * mk = mask->k ;
04271 byte * keep = calloc(nxyz,sizeof(byte)) ;
04272
04273 for( kk=0 ; kk < nz ; kk++ ) /* make list of points to keep */
04274 for( jj=0 ; jj < ny ; jj++ )
04275 for( ii=0 ; ii < nx ; ii++ )
04276 if( OVAR(ii,jj,kk) != 0 ){ /* keep nbhd of this point */
04277 KEEP(ii,jj,kk) = 1 ;
04278 for( pp=0 ; pp < mnum ; pp++ ){
04279 ip = ii + mi[pp]; jp = jj + mj[pp]; kp = kk + mk[pp];
04280 if( ip >= 0 && ip < nx &&
04281 jp >= 0 && jp < ny &&
04282 kp >= 0 && kp < nz ) KEEP(ip,jp,kp) = 1 ;
04283 }
04284 }
04285 KILL_CLUSTER(mask) ; /* toss the trash */
04286
04287 /* now do the cutting */
04288
04289 if( logic == CUTOUT_AND && ! mus ){ /* count hits */
04290 ncdone++ ;
04291 for( ii=0 ; ii < nxyz ; ii++ )
04292 if( keep[ii] == 0 ) gar[ii]++ ;
04293 } else { /* nuke'em */
04294 for( ii=0 ; ii < nxyz ; ii++ )
04295 if( keep[ii] == 0 ) oar[ii] = 0 ;
04296 }
04297
04298 free(keep) ; /* toss the trash */
04299 }
04300 }
04301 break ; /* end of nonoverlay cutout */
04302
04303 } /* end of switch over type of cutout */
04304 } /* end of loop over cutouts */
04305
04306 /* with AND, blast only those that were hit every time */
04307
04308 if( logic == CUTOUT_AND && ncdone > 0 ){
04309 for( ii=0 ; ii < nxyz ; ii++ ) if( gar[ii] == ncdone ) oar[ii] = 0 ;
04310 free(gar) ;
04311 }
04312
04313 return ;
04314 }
|
|
||||||||||||||||
|
Definition at line 3924 of file plug_render.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, MCW_arrowval::ival, num_cutouts, REND_draw_CB(), render_handle, REND_cutout::set_pb, TT_XMID, TT_XSEMI, TT_YMID, TT_YSEMI, TT_ZMID, TT_ZSEMI, typ, REND_cutout::type_av, Three_D_View::vinfo, AFNI_view_info::xi, AFNI_view_info::yj, and AFNI_view_info::zk. Referenced by REND_make_cutout().
03925 {
03926 int iv , typ ;
03927 float val ;
03928 char str[16] ;
03929
03930 for( iv=0 ; iv < num_cutouts ; iv++ )
03931 if( w == cutouts[iv]->set_pb ) break ;
03932 if( iv == num_cutouts ) return ;
03933
03934 typ = cutouts[iv]->type_av->ival ;
03935 switch( typ ){
03936
03937 default: XBell(dc->display,100) ; return ; /* action is not defined */
03938
03939 case CUT_RIGHT_OF:
03940 case CUT_LEFT_OF: val = im3d->vinfo->xi ; break ;
03941
03942 case CUT_ANTERIOR_TO:
03943 case CUT_POSTERIOR_TO: val = im3d->vinfo->yj ; break ;
03944
03945 case CUT_INFERIOR_TO:
03946 case CUT_SUPERIOR_TO: val = im3d->vinfo->zk ; break ;
03947
03948 case CUT_TT_ELLIPSOID:{
03949 float x = im3d->vinfo->xi , y = im3d->vinfo->yj , z = im3d->vinfo->zk ;
03950
03951 val = (x-TT_XMID) * (x-TT_XMID) / (TT_XSEMI * TT_XSEMI)
03952 + (y-TT_YMID) * (y-TT_YMID) / (TT_YSEMI * TT_YSEMI)
03953 + (z-TT_ZMID) * (z-TT_ZMID) / (TT_ZSEMI * TT_ZSEMI) ;
03954
03955 val = 0.1 * rint( 1000.0 * sqrt(val) ) ; /* round to 1 decimal place */
03956 } break ;
03957
03958 case CUT_SLANT_XPY_GT:
03959 case CUT_SLANT_XPY_LT:
03960 case CUT_SLANT_XMY_GT:
03961 case CUT_SLANT_XMY_LT:
03962 case CUT_SLANT_YPZ_GT:
03963 case CUT_SLANT_YPZ_LT:
03964 case CUT_SLANT_YMZ_GT:
03965 case CUT_SLANT_YMZ_LT:
03966 case CUT_SLANT_XPZ_GT:
03967 case CUT_SLANT_XPZ_LT:
03968 case CUT_SLANT_XMZ_GT:
03969 case CUT_SLANT_XMZ_LT:{
03970 float x = im3d->vinfo->xi , y = im3d->vinfo->yj , z = im3d->vinfo->zk ;
03971 int isl = typ - CUT_SLANT_BASE ;
03972
03973 val = cut_slant_normals[isl][0] * x
03974 + cut_slant_normals[isl][1] * y
03975 + cut_slant_normals[isl][2] * z ;
03976
03977 val = 0.1 * rint( 10.0 * val ) ; /* round to 0.1 mm */
03978 }
03979 break ;
03980 }
03981
03982 AV_assign_fval( cutouts[iv]->param_av , val ) ;
03983
03984 if( dynamic_flag && render_handle != NULL ) REND_draw_CB(NULL,NULL,NULL) ;
03985 return ;
03986 }
|
|
|
||||||||||||
|
Definition at line 3759 of file plug_render.c. References AV_NCOL, CUT_EXPRESSION, CUT_NONE, cutout_param_labels, FIX_SCALE_SIZE, HIDE_SCALE, MCW_arrowval::ival, num_cutouts, and REND_cutout::type_av. Referenced by REND_make_cutout(), and REND_state_to_widgets().
03760 {
03761 int iv , val ;
03762 XmString xstr ;
03763 Boolean sens ;
03764
03765 for( iv=0 ; iv < num_cutouts ; iv++ )
03766 if( av == cutouts[iv]->type_av ) break ;
03767 if( iv == num_cutouts ) return ;
03768
03769 val = av->ival ; /* new type */
03770
03771 HIDE_SCALE ;
03772
03773 if( val == CUT_NONE ){
03774 XtUnmanageChild( cutouts[iv]->param_lab ) ;
03775 XtUnmanageChild( cutouts[iv]->param_av->wrowcol ) ;
03776 XtUnmanageChild( cutouts[iv]->set_pb ) ;
03777 XtUnmanageChild( cutouts[iv]->mustdo_bbox->wrowcol ) ;
03778 } else {
03779 xstr = XmStringCreateLtoR( cutout_param_labels[val], XmFONTLIST_DEFAULT_TAG ) ;
03780 XtVaSetValues( cutouts[iv]->param_lab , XmNlabelString , xstr , NULL ) ;
03781 XmStringFree(xstr) ;
03782
03783 XtManageChild( cutouts[iv]->param_lab ) ;
03784 XtManageChild( cutouts[iv]->param_av->wrowcol ) ;
03785 XtManageChild( cutouts[iv]->set_pb ) ;
03786 XtManageChild( cutouts[iv]->mustdo_bbox->wrowcol ) ;
03787
03788 #undef DESENS
03789 #ifdef DESENS
03790 sens = (val != CUT_EXPRESSION) ; /* deactivate */
03791 XtSetSensitive(cutouts[iv]->param_av->wup ,sens) ; /* if is an */
03792 XtSetSensitive(cutouts[iv]->param_av->wdown,sens) ; /* Expr > 0 */
03793 XtSetSensitive(cutouts[iv]->set_pb ,sens) ; /* cutout */
03794 #else
03795 if( val == CUT_EXPRESSION ){ /* if Expr > 0 */
03796 XtUnmanageChild( cutouts[iv]->param_av->wup ); /* expand the */
03797 XtUnmanageChild( cutouts[iv]->param_av->wdown ); /* size of the */
03798 XtUnmanageChild( cutouts[iv]->set_pb ); /* text field */
03799 XtVaSetValues( cutouts[iv]->param_av->wtext ,
03800 XmNcolumns , AV_NCOL + 9 ,
03801 NULL ) ;
03802 } else { /* shrink size */
03803 XtVaSetValues( cutouts[iv]->param_av->wtext , /* of text field */
03804 XmNcolumns , AV_NCOL , /* to normal for */
03805 NULL ) ; /* other cutouts */
03806 XtManageChild( cutouts[iv]->param_av->wup );
03807 XtManageChild( cutouts[iv]->param_av->wdown );
03808 XtManageChild( cutouts[iv]->set_pb );
03809 }
03810 #endif
03811 }
03812
03813 FIX_SCALE_SIZE ;
03814 return ;
03815 }
|
|
|
Definition at line 4514 of file plug_render.c. References drive_MCW_imseq(), and isqDR_destroy. Referenced by REND_done_CB().
04515 {
04516 if( imseq == NULL ) return ;
04517 drive_MCW_imseq( imseq , isqDR_destroy , NULL ) ;
04518 return ;
04519 }
|
|
|
prototype for what happens when user increments angles * Definition at line 3419 of file plug_render.c. References angle_pitch, angle_roll, angle_yaw, AV_assign_fval(), dynamic_flag, MCW_arrowval::fval, MCW_arrowval::old_fval, REND_draw_CB(), REND_inc_angles(), render_handle, and roll(). Referenced by REND_angle_CB().
03420 {
03421 int ax ;
03422 float th , roll,pitch,yaw ;
03423
03424 /* read angles from arrowval's current status */
03425
03426 roll = roll_av ->fval ;
03427 pitch = pitch_av->fval ;
03428 yaw = yaw_av ->fval ;
03429
03430 /* choose axis of rotation based on what was just clicked,
03431 * and set current angle for that axis to last value (before click) */
03432
03433 if( av == roll_av ){ ax = 2; roll = av->old_fval; }
03434 else if( av == pitch_av ){ ax = 0; pitch = av->old_fval; }
03435 else if( av == yaw_av ){ ax = 1; yaw = av->old_fval; }
03436 else
03437 return ; /* should never happen */
03438
03439 th = av->fval - av->old_fval ; /* angle increment */
03440
03441 roll *= (PI/180) ; /* convert to radians */
03442 pitch *= (PI/180) ;
03443 yaw *= (PI/180) ;
03444 th *= (PI/180) ;
03445
03446 /* compute new angles */
03447
03448 REND_inc_angles( ax, th, &yaw , &pitch, &roll ) ;
03449
03450 roll = 0.001 * rint( (180000.0/PI)*roll ) ; /* convert to degrees */
03451 pitch = 0.001 * rint( (180000.0/PI)*pitch ) ; /* (rounded to 1/1000) */
03452 yaw = 0.001 * rint( (180000.0/PI)*yaw ) ;
03453
03454 /* put back into arrowvals */
03455
03456 AV_assign_fval( roll_av , roll ) ; angle_roll = roll ;
03457 AV_assign_fval( yaw_av , yaw ) ; angle_yaw = yaw ;
03458 AV_assign_fval( pitch_av , pitch ) ; angle_pitch = pitch ;
03459
03460 /* redraw if desirable */
03461
03462 if( dynamic_flag && render_handle != NULL )
03463 REND_draw_CB(NULL,NULL,NULL) ;
03464
03465 return ;
03466 }
|
|
||||||||||||||||
|
Definition at line 1830 of file plug_render.c. References AFNI_receive_control(), client_data, DESTROY_IMARR, destroy_MREN_renderer(), DESTROY_RSA, done_pb, EVERYTHING_SHUTDOWN, FREE_VOLUMES, func_cmap_set, INVALIDATE_OVERLAY, MCW_set_widget_label(), quit_first, REND_destroy_imseq(), REND_done_timeout_CB(), REND_open_func_CB(), render_handle, renderer_open, script_load_last, shell, wfunc_frame, and xhair_recv. Referenced by REND_make_widgets().
01831 {
01832 /** like AFNI itself, require two quick presses to exit **/
01833
01834 if( w == done_pb && quit_first && renderings != NULL ){
01835 MCW_set_widget_label( done_pb , "DONE " ) ;
01836 quit_first = 0 ;
01837 (void) XtAppAddTimeOut(
01838 XtWidgetToApplicationContext(done_pb) ,
01839 5000 , REND_done_timeout_CB , NULL ) ;
01840 return ;
01841 }
01842
01843 if( xhair_recv >= 0 ) /* 29 Mar 1999 */
01844 AFNI_receive_control( im3d, xhair_recv,EVERYTHING_SHUTDOWN, NULL ) ;
01845
01846 REND_destroy_imseq() ; /* destroy the image window */
01847 DESTROY_IMARR(renderings) ; /* destroy the images */
01848 #ifdef USE_SCRIPTING
01849 DESTROY_RSA(renderings_state) ;
01850 script_load_last = -1 ;
01851 #endif
01852
01853 if( wfunc_frame != NULL && XtIsManaged(wfunc_frame) ) /* close overlay */
01854 REND_open_func_CB(NULL,NULL,NULL) ;
01855
01856 XtUnmapWidget( shell ) ; renderer_open = 0 ; imseq = NULL ;
01857
01858 if( dset != NULL ) dset = NULL ;
01859 if( func_dset != NULL ) func_dset = NULL ;
01860
01861 if( render_handle != NULL ){
01862 destroy_MREN_renderer(render_handle) ;
01863 render_handle = NULL ; func_cmap_set = 0 ;
01864 }
01865
01866 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
01867 MPROBE ;
01868 return ;
01869 }
|
|
||||||||||||
|
Definition at line 1823 of file plug_render.c. References client_data, done_pb, MCW_set_widget_label(), and quit_first. Referenced by REND_done_CB().
01824 {
01825 MCW_set_widget_label( done_pb , "done" ) ;
01826 quit_first = 1 ;
01827 return ;
01828 }
|
|
||||||||||||||||
|
Definition at line 2235 of file plug_render.c. References accum_flag, ADDTO_IMARR, ADDTO_RSA, angle_pitch, angle_roll, angle_yaw, automate_flag, CHECK_XHAIR_MOTION, client_data, DC_rgb_to_ovrgb(), DESTROY_IMARR, DESTROY_RSA, MCW_DC::display, DO_OVERLAY, draw_pb, FIX_SCALE_SIZE, FREE_VOLUMES, func_computed, func_mixshade, func_showthru, func_showthru_pass, getenv(), INIT_IMARR, INIT_RSA, INVALIDATE_OVERLAY, MRI_IMAGE::kind, malloc, MCW_invert_widget(), MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, MREN_be_verbose(), MREN_depth_cue(), MREN_needs_data(), MREN_render(), MREN_set_min_opacity(), MREN_set_precalculation(), MREN_set_viewpoint(), MRI_BYTE_PTR, mri_free(), MRI_RGB_PTR, new_data_loaded, new_MREN_renderer(), NOMIX, NOSHADE, npixels, MCW_pbar::num_panes, MRI_IMAGE::nvox, CUTOUT_state::opacity_scale, MCW_pbar::ov_index, precalc_ival, precalc_mode, REND_cutout_state_changed(), REND_evaluate(), REND_load_cutout_state(), REND_reload_dataset(), REND_reload_renderer(), REND_update_imseq(), REND_widgets_to_state(), render_handle, script_load_last, strtod(), xhair_flag, and xhair_ovc. Referenced by REND_angle_CB(), REND_autocompute_CB(), REND_choose_av_CB(), REND_cutout_set_CB(), REND_do_incrot(), REND_opacity_scale_CB(), REND_param_CB(), REND_read_exec_CB(), REND_reload_CB(), REND_xhair_CB(), and REND_xhair_recv().
02236 {
02237 MRI_IMAGE * rim ;
02238
02239 #ifdef USE_SCRIPTING
02240 if( script_dontdraw ) return ; /* 24 Nov 2000 */
02241 #endif
02242
02243 if( dset == NULL ){ XBell(dc->display,100) ; return ; }
02244
02245 MCW_invert_widget(draw_pb) ;
02246
02247 /* if needed, create stuff for rendering */
02248
02249 if( render_handle == NULL ){
02250 render_handle = new_MREN_renderer() ;
02251 #ifdef REND_DEBUG
02252 MREN_be_verbose(render_handle) ; /* for debugging */
02253 #endif
02254 }
02255
02256 REND_load_cutout_state() ; /* load cutout data from widgets */
02257
02258 if( REND_cutout_state_changed() ){ /* if cutouts changed, must reload data */
02259 FREE_VOLUMES ;
02260 if( func_cut_overlay ) INVALIDATE_OVERLAY ;
02261 old_cutout_state = current_cutout_state ;
02262 }
02263
02264 if( xhair_flag && CHECK_XHAIR_MOTION ){ /* check for new crosshair position */
02265 if( xhair_ovc > 0 && DO_OVERLAY ) INVALIDATE_OVERLAY ;
02266 else FREE_VOLUMES ;
02267 }
02268
02269 if( NEED_RELOAD ) REND_reload_dataset() ;
02270
02271 if( new_data_loaded || /* new data was loaded here */
02272 MREN_needs_data(render_handle) || /* renderer isn't ready yet */
02273 (func_computed && func_showthru) ){ /* am doing ShowThru images */
02274
02275 func_showthru_pass = 0 ; /* always a good value */
02276 REND_reload_renderer() ; /* load data from arrays here into renderer */
02277 new_data_loaded = 0 ;
02278 }
02279
02280 /* setup for viewing */
02281
02282 angle_roll = REND_evaluate( roll_av ) ; /* read angles from arrowvals */
02283 angle_pitch = REND_evaluate( pitch_av ) ;
02284 angle_yaw = REND_evaluate( yaw_av ) ;
02285
02286 MREN_set_viewpoint( render_handle , -angle_yaw,-angle_pitch,-angle_roll ) ;
02287 MREN_set_precalculation( render_handle , precalc_mode[precalc_ival] ) ;
02288 MREN_set_min_opacity( render_handle ,
02289 0.05 * current_cutout_state.opacity_scale ) ;
02290
02291 /* create and display the rendered image */
02292
02293 rim = MREN_render( render_handle , npixels ) ;
02294
02295 if( rim == NULL ){
02296 (void) MCW_popup_message( draw_pb ,
02297 "** Rendering fails, **\n"
02298 "** for unknown reasons **\n\n"
02299 "** Sorry -- RWCox **\n" ,
02300 MCW_USER_KILL | MCW_TIMER_KILL ) ;
02301 XBell(dc->display,100) ;
02302 MCW_invert_widget(draw_pb) ; return ;
02303 }
02304
02305 /* 07 Jan 2000 - make the showthru image now, if needed */
02306
02307 #if 1
02308 # define STCOM(x) (x)
02309 #else
02310 # define STCOM(x) (((x) + ((x)<<1))>>2) /* 0.75 * x */
02311 #endif
02312
02313 if( func_computed && func_showthru ){
02314 MRI_IMAGE * cim ;
02315
02316 float ccf=-666.0 , ggf ; /* 10 Jan 2000: merger factors */
02317 int ccm=0 ;
02318 char * env = getenv("AFNI_RENDER_SHOWTHRU_FAC") ;
02319 if( env != NULL ) ccf = strtod(env,NULL) ;
02320 if( ccf <= 0.0 || ccf > 1.0 ) ccf = 1.0 ;
02321 ggf = 1.0 - ccf ;
02322 ccm = (ccf != 1.0) ;
02323
02324 func_showthru_pass = 1 ;
02325 REND_reload_renderer() ; /* load showthru data */
02326
02327 if( func_showthru_dcue )
02328 MREN_depth_cue( render_handle , 1 ) ; /* 11 Sep 2001 */
02329
02330 cim = MREN_render( render_handle , npixels ) ; /* render it */
02331
02332 if( func_showthru_dcue )
02333 MREN_depth_cue( render_handle , 0 ) ; /* 11 Sep 2001 */
02334
02335 if( cim == NULL ){
02336 (void) MCW_popup_message( draw_pb ,
02337 "** ShowThru Rendering fails, **\n"
02338 "** for unknown reasons **\n\n"
02339 "** Sorry about that -- RWCox **\n" ,
02340 MCW_USER_KILL | MCW_TIMER_KILL ) ;
02341 XBell(dc->display,100) ;
02342 } else {
02343 byte *rar=MRI_BYTE_PTR(rim) , *car=MRI_RGB_PTR(cim) ; /* composite it */
02344 int ii ;
02345
02346 for( ii=0 ; ii < cim->nvox ; ii++ ){
02347 if( car[3*ii] == 0 && car[3*ii+1] == 0 && car[3*ii+2] == 0 ){
02348 car[3*ii] = car[3*ii+1] = car[3*ii+2] = STCOM( rar[ii] ) ;
02349
02350 } else if( ccm ){ /* 10 Jan 2000 */
02351 car[3*ii] = ccf*car[3*ii] + ggf*rar[ii] ; /* merge color */
02352 car[3*ii+1] = ccf*car[3*ii+1] + ggf*rar[ii] ; /* & grayscale */
02353 car[3*ii+2] = ccf*car[3*ii+2] + ggf*rar[ii] ;
02354 }
02355 }
02356
02357 mri_free(rim) ; rim = cim ;
02358 }
02359 }
02360
02361 /* 20 Dec 1999 - restrict colors, if ordered and needed */
02362
02363 if( rim->kind == MRI_rgb && wfunc_color_pbar != NULL && func_mixshade >= NOSHADE ){
02364
02365 int ii ; byte * bp = MRI_RGB_PTR(rim) ;
02366 for( ii=0 ; ii < rim->nvox ; ii++ )
02367 if( bp[3*ii] != 0 || bp[3*ii+1] != 0 || bp[3*ii+2] != 0 )
02368 DC_rgb_to_ovrgb( dc ,
02369 wfunc_color_pbar->num_panes , wfunc_color_pbar->ov_index ,
02370 (func_mixshade == NOMIX) ,
02371 bp+(3*ii) , bp+(3*ii+1) , bp+(3*ii+2) ) ;
02372 }
02373
02374 #ifdef USE_SCRIPTING
02375 if( last_rendered_state == NULL )
02376 last_rendered_state = (RENDER_state *) malloc(sizeof(RENDER_state)) ;
02377
02378 REND_widgets_to_state( last_rendered_state ) ;
02379 #endif
02380
02381 if( accum_flag || automate_flag ){
02382 if( renderings == NULL ){
02383 INIT_IMARR( renderings ) ;
02384 #ifdef USE_SCRIPTING
02385 INIT_RSA( renderings_state ) ; script_load_last = -1 ;
02386 #endif
02387 }
02388 ADDTO_IMARR( renderings , rim ) ;
02389 #ifdef USE_SCRIPTING
02390 { RENDER_state * rs = (RENDER_state *) malloc(sizeof(RENDER_state)) ;
02391 *rs = *last_rendered_state ;
02392 ADDTO_RSA( renderings_state , rs ) ;
02393 }
02394 #endif
02395 } else {
02396 DESTROY_IMARR( renderings ) ;
02397 INIT_IMARR( renderings ) ;
02398 ADDTO_IMARR( renderings , rim ) ;
02399 #ifdef USE_SCRIPTING
02400 { RENDER_state * rs = (RENDER_state *) malloc(sizeof(RENDER_state)) ;
02401 DESTROY_RSA( renderings_state ) ;
02402 INIT_RSA( renderings_state ) ; script_load_last = -1 ;
02403 *rs = *last_rendered_state ;
02404 ADDTO_RSA( renderings_state , rs ) ;
02405 }
02406 #endif
02407 }
02408 REND_update_imseq() ;
02409
02410 MCW_invert_widget(draw_pb) ;
02411 FIX_SCALE_SIZE ; /* 09 May 2001 */
02412 return ;
02413 }
|
|
||||||||||||||||
|
Definition at line 3626 of file plug_render.c. References client_data, dynamic_flag, and MCW_val_bbox(). Referenced by REND_make_widgets().
03627 {
03628 dynamic_flag = MCW_val_bbox( dynamic_bbox ) ;
03629 return ;
03630 }
|
|
|
Definition at line 7999 of file plug_render.c. References angle_fstep, cutout_fstep, MCW_arrowval::fstep, getenv(), MAX_CUTOUTS, REND_cutout::param_av, shell, and strtod(). Referenced by PLUGIN_init().
08000 {
08001 char * ept ;
08002 float val ;
08003
08004 /* sanity checks */
08005
08006 if( ename == NULL ) return ;
08007 ept = getenv(ename) ;
08008 if( ept == NULL ) return ;
08009
08010 /*---*/
08011
08012 if( strcmp(ename,"AFNI_RENDER_ANGLE_DELTA") == 0 ){
08013 float val = strtod(ept,NULL) ;
08014 if( val > 0.0 && val < 100.0 ){
08015 angle_fstep = val ;
08016 if( shell != NULL )
08017 roll_av->fstep = pitch_av->fstep = yaw_av->fstep = val ;
08018 }
08019 }
08020
08021 /*---*/
08022
08023 else if( strcmp(ename,"AFNI_RENDER_CUTOUT_DELTA") == 0 ){
08024 float val = strtod(ept,NULL) ;
08025 if( val > 0.0 && val < 100.0 ){
08026 int ii ;
08027 cutout_fstep = val ;
08028 if( shell != NULL ){
08029 for( ii=0 ; ii < MAX_CUTOUTS ; ii++ )
08030 cutouts[ii]->param_av->fstep = val ;
08031 }
08032 }
08033 }
08034
08035 /*---*/
08036
08037 return ;
08038 }
|
|
|
Definition at line 4333 of file plug_render.c. References atoz, AV_assign_fval(), free, MCW_arrowval::fval, PARSER_evaluate_one(), PARSER_generate_code(), strtod(), MCW_arrowval::wtext, and XtFree. Referenced by REND_draw_CB(), REND_load_cutout_state(), and REND_textact_CB().
04334 {
04335 PARSER_code * pcode ;
04336 char * str , * cpt ;
04337 float val ;
04338
04339 /* get the string to convert */
04340
04341 if( av == NULL ) return 0.0 ; /* these cases should */
04342 if( av->wtext == NULL ) return av->fval ; /* never happen */
04343
04344 str = XmTextFieldGetString( av->wtext ) ;
04345 if( str == NULL || str[0] == '\0' ){ XtFree(str) ; return 0.0 ; }
04346
04347 /* try a regular numerical conversion */
04348
04349 val = strtod( str , &cpt ) ;
04350
04351 for( ; *cpt != '\0' && isspace(*cpt) ; cpt++ ) ; /* skip blanks */
04352
04353 if( *cpt == '\0' ){ XtFree(str); AV_assign_fval(av,val); return val; }
04354
04355 /* try to parse an expression */
04356
04357 pcode = PARSER_generate_code( str ) ;
04358 if( pcode == NULL ){ XtFree(str) ; return 0.0 ; }
04359
04360 val = PARSER_evaluate_one( pcode , atoz ) ; free(pcode) ;
04361
04362 XtFree(str) ; return val ;
04363 }
|
|
||||||||||||||||
|
Definition at line 3142 of file plug_render.c. References AV_fval_to_char(), AV_SENSITIZE, choose_pb, destroy_MREN_renderer(), MCW_DC::display, DSET_BRICK_FACTOR, DSET_CUBICAL, dset_ival, DSET_NVALS, DSET_NX, DSET_NY, DSET_NZ, dset_title, dsl, 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, npixels, PLUTO_find_dset(), POPDOWN_strlist_chooser, refit_MCW_optmenu(), REND_choose_av_label_CB(), REND_reload_dataset(), render_handle, renderer_open, THD_MAX_NAME, and TURNOFF_OVERLAY_WIDGETS. Referenced by REND_choose_CB(), and REND_state_to_widgets().
03143 {
03144 int id = cbs->ival ;
03145 THD_3dim_dataset * qset ;
03146 XmString xstr ;
03147 char str[2*THD_MAX_NAME] ;
03148 float fac ;
03149
03150 /* check for errors */
03151
03152 if( ! renderer_open ){ POPDOWN_strlist_chooser ; XBell(dc->display,100) ; return ; }
03153
03154 if( id < 0 || id >= ndsl ){ XBell(dc->display,100) ; return ; }
03155
03156 qset = PLUTO_find_dset( &(dsl[id].idcode) ) ; /* the new dataset? */
03157
03158 if( qset == NULL ){ XBell(dc->display,100) ; return ; }
03159
03160 if( ! DSET_CUBICAL(qset) ){ XBell(dc->display,100) ; return ; }
03161
03162 /* if there was an existing renderer, kill it off */
03163
03164 if( render_handle != NULL ){
03165 destroy_MREN_renderer(render_handle) ;
03166 render_handle = NULL ; func_cmap_set = 0 ;
03167 }
03168 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
03169
03170 /* accept this dataset */
03171
03172 dset = qset ;
03173 dset_idc = qset->idcode ; /* 31 Mar 1999 */
03174
03175 npixels = 256 ; /* size of image to render */
03176 npixels = MAX( npixels , DSET_NX(dset) ) ;
03177 npixels = MAX( npixels , DSET_NY(dset) ) ;
03178 npixels = MAX( npixels , DSET_NZ(dset) ) ;
03179
03180 /* refit the sub-brick selector menu */
03181
03182 if( dset_ival >= DSET_NVALS(dset) ) dset_ival = DSET_NVALS(dset)-1 ;
03183
03184 refit_MCW_optmenu( choose_av ,
03185 0 , /* new minval */
03186 DSET_NVALS(dset)-1 , /* new maxval */
03187 dset_ival , /* new inival */
03188 0 , /* new decim? */
03189 REND_choose_av_label_CB , /* text routine */
03190 dset /* text data */
03191 ) ;
03192
03193 AV_SENSITIZE( choose_av , (DSET_NVALS(dset) > 1) ) ;
03194
03195 /* write the informational label */
03196
03197 strcpy( dset_title , dsl[id].title ) ;
03198 fac = DSET_BRICK_FACTOR(dset,dset_ival) ;
03199
03200 if( fac == 0.0 || fac == 1.0 ){
03201 strcpy(str,dset_title) ;
03202 } else {
03203 char abuf[16] ;
03204 AV_fval_to_char( fac , abuf ) ;
03205 sprintf(str,"%s [* %s]", dset_title , abuf ) ;
03206 }
03207 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
03208 XtVaSetValues( info_lab , XmNlabelString , xstr , NULL ) ;
03209 XmStringFree(xstr) ;
03210
03211 /* if the existing overlay dataset doesn't match this one, kill the overlay */
03212
03213 if( func_dset != NULL && ( DSET_NX(dset) != DSET_NX(func_dset) ||
03214 DSET_NY(dset) != DSET_NY(func_dset) ||
03215 DSET_NZ(dset) != DSET_NZ(func_dset) ) ){
03216
03217 INVALIDATE_OVERLAY ;
03218 func_dset = NULL ;
03219
03220 TURNOFF_OVERLAY_WIDGETS ;
03221
03222 (void) MCW_popup_message( choose_pb ,
03223 " \n"
03224 "** New underlay dataset did **\n"
03225 "** not match dimensions of **\n"
03226 "** existing overlay dataset, **\n"
03227 "** so the latter was removed **\n" ,
03228 MCW_USER_KILL | MCW_TIMER_KILL ) ;
03229 }
03230
03231 /* read the new data */
03232
03233 new_dset = 1 ; /* flag it as new */
03234 REND_reload_dataset() ; /* load the data */
03235
03236 return ;
03237 }
|
|
||||||||||||||||
|
Definition at line 3239 of file plug_render.c. References AFNI_hintize_pbar(), AV_fval_to_char(), AV_SENSITIZE, MCW_DC::display, DSET_BRICK_FACTOR, DSET_NVALS, dsl, 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_dset, PLUTO_find_dset(), POPDOWN_strlist_chooser, refit_MCW_optmenu(), REND_autorange_label(), REND_choose_av_label_CB(), REND_range_label(), REND_reload_dataset(), REND_set_thr_pval(), renderer_open, THD_MAX_NAME, MCW_bbox::wbut, wfunc_info_lab, and wfunc_range_label. Referenced by REND_choose_CB(), and REND_state_to_widgets().
03240 {
03241 int id = cbs->ival ;
03242 THD_3dim_dataset * qset , * oset ;
03243 XmString xstr ;
03244 char str[2*THD_MAX_NAME] ;
03245 float fac ;
03246
03247 /* check for errors */
03248
03249 if( ! renderer_open ){ POPDOWN_strlist_chooser ; XBell(dc->display,100) ; return ; }
03250
03251 if( id < 0 || id >= ndsl ){ XBell(dc->display,100) ; return ; }
03252
03253 qset = PLUTO_find_dset( &(dsl[id].idcode) ) ; /* the new dataset? */
03254
03255 if( qset == NULL ){ XBell(dc->display,100) ; return ; }
03256
03257 /* accept this dataset */
03258
03259 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
03260
03261 oset = func_dset ;
03262 func_dset = qset ;
03263 func_dset_idc = qset->idcode ; /* 31 Mar 1999 */
03264
03265 /* refit the sub-brick selector menus */
03266
03267 if( oset == NULL ){ func_color_ival = 0 ; func_thresh_ival = 1 ; }
03268
03269 if( func_color_ival >= DSET_NVALS(func_dset) )
03270 func_color_ival = DSET_NVALS(func_dset)-1;
03271
03272 refit_MCW_optmenu( wfunc_color_av ,
03273 0 , /* new minval */
03274 DSET_NVALS(func_dset)-1 , /* new maxval */
03275 func_color_ival , /* new inival */
03276 0 , /* new decim? */
03277 REND_choose_av_label_CB , /* text routine */
03278 func_dset /* text data */
03279 ) ;
03280
03281 AV_SENSITIZE( wfunc_color_av , (DSET_NVALS(func_dset) > 1) ) ;
03282
03283 if( func_thresh_ival >= DSET_NVALS(func_dset) )
03284 func_thresh_ival = DSET_NVALS(func_dset)-1;
03285
03286 refit_MCW_optmenu( wfunc_thresh_av ,
03287 0 , /* new minval */
03288 DSET_NVALS(func_dset)-1 , /* new maxval */
03289 func_thresh_ival , /* new inival */
03290 0 , /* new decim? */
03291 REND_choose_av_label_CB , /* text routine */
03292 func_dset /* text data */
03293 ) ;
03294
03295 AV_SENSITIZE( wfunc_thresh_av , (DSET_NVALS(func_dset) > 1) ) ;
03296
03297 /* write the informational label */
03298
03299 strcpy( func_dset_title , dsl[id].title ) ;
03300 fac = DSET_BRICK_FACTOR(func_dset,func_color_ival) ;
03301
03302 if( fac == 0.0 || fac == 1.0 ){
03303 strcpy(str,func_dset_title) ;
03304 } else {
03305 char abuf[16] ;
03306 AV_fval_to_char( fac , abuf ) ;
03307 sprintf(str,"%s [* %s]", func_dset_title , abuf ) ;
03308 }
03309 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
03310 XtVaSetValues( wfunc_info_lab , XmNlabelString , xstr , NULL ) ;
03311 XmStringFree(xstr) ;
03312
03313 /* fix the range labels */
03314
03315 xstr = REND_range_label() ;
03316 XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ;
03317 XmStringFree(xstr) ;
03318
03319 xstr = REND_autorange_label() ;
03320 XtVaSetValues( wfunc_range_bbox->wbut[0], XmNlabelString,xstr , NULL ) ;
03321 XmStringFree(xstr) ;
03322
03323 /* fix the p-value label */
03324
03325 REND_set_thr_pval() ;
03326
03327 /* read the new data */
03328
03329 #if 0
03330 new_dset = 1 ; /* flag it as new */
03331 REND_reload_dataset() ; /* load the data */
03332 #endif
03333
03334 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Jul 2001 */
03335
03336 return ;
03337 }
|
|
||||||||||||||||
|
Definition at line 6121 of file plug_render.c. References MCW_choose_cbs::cval, 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 REND_pbarmenu_CB().
06122 {
06123 Three_D_View * im3d = (Three_D_View *) cd ;
06124 char * fname , * ptr ;
06125 int ll , nx=20 , ny=256 ;
06126 MRI_IMAGE * im ;
06127
06128 if( !renderer_open || cbs->reason != mcwCR_string ||
06129 cbs->cval == NULL || (ll=strlen(cbs->cval)) == 0 ) return;
06130
06131 fname = (char *) malloc( sizeof(char) * (ll+8) ) ;
06132 strcpy( fname , cbs->cval ) ;
06133
06134 if( ll > 240 || ! THD_filename_ok(fname) ){free(fname); return;}
06135
06136 ptr = strstr(fname,".ppm") ;
06137 if( ptr == NULL ) ptr = strstr(fname,".pnm") ;
06138 if( ptr == NULL ) ptr = strstr(fname,".jpg") ;
06139 if( ptr == NULL ) strcat(fname,".ppm") ;
06140
06141 fprintf(stderr,"Writing palette image to %s\n",fname) ;
06142
06143 ptr = getenv( "AFNI_PBAR_IMXY" );
06144 if( ptr != NULL ){
06145 ll = sscanf( ptr , "%dx%d" , &nx , &ny ) ;
06146 if( ll < 2 || nx < 1 || ny < 32 ){ nx=20; ny=256; }
06147 }
06148
06149 im = MCW_pbar_to_mri( wfunc_color_pbar , nx,ny ) ;
06150 mri_write_pnm( fname , im ) ;
06151
06152 POPDOWN_string_chooser; mri_free(im); free(fname); return;
06153 }
|
|
|
Definition at line 4811 of file plug_render.c. References allow_MCW_optmenu_popup(), anat_frame, AV_SENSITIZE, AVOPT_columnize, COLSIZE, 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_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, pmax, pmin, refit_MCW_optmenu(), REND_autorange_label(), REND_choose_av_CB(), REND_choose_CB(), REND_clusters_av_CB(), REND_color_bbox_CB(), REND_color_opacity_CB(), REND_color_pbar_CB(), REND_colornum_av_CB(), REND_cut_overlay_CB(), REND_dummy_av_label, REND_kill_clusters_CB(), REND_mixshade_av_CB(), REND_palette_av_CB(), REND_pbarmenu_CB(), REND_pbarmenu_EV(), REND_range_av_CB(), REND_range_bbox_CB(), REND_range_label(), REND_see_overlay_CB(), REND_see_ttatlas_CB(), REND_setup_color_pbar(), REND_thr_scale_CB(), REND_thr_scale_drag_CB(), REND_thresh_tlabel_CB(), REND_thresh_top_CB(), 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 REND_make_widgets(), and REND_open_func_CB().
04812 {
04813 XmString xstr ;
04814 Widget wqqq ;
04815 int sel_height ;
04816
04817 /* top level managers */
04818
04819 wfunc_vsep = SEP_VER(top_rowcol) ;
04820
04821 wfunc_frame = XtVaCreateWidget(
04822 "AFNI" , xmFrameWidgetClass , top_rowcol ,
04823 XmNshadowType , XmSHADOW_ETCHED_IN ,
04824 XmNshadowThickness , 5 ,
04825 XmNtraversalOn , False ,
04826 XmNinitialResourcesPersistent , False ,
04827 NULL ) ;
04828
04829 wfunc_uber_rowcol = XtVaCreateWidget(
04830 "AFNI" , xmRowColumnWidgetClass , wfunc_frame ,
04831 XmNorientation , XmVERTICAL ,
04832 XmNpacking , XmPACK_TIGHT ,
04833 XmNtraversalOn , False ,
04834 XmNinitialResourcesPersistent , False ,
04835 NULL ) ;
04836
04837 xstr = XmStringCreateLtoR( NO_DATASET_STRING ,
04838 XmFONTLIST_DEFAULT_TAG ) ;
04839 wfunc_info_lab = XtVaCreateManagedWidget(
04840 "AFNI" , xmLabelWidgetClass , wfunc_uber_rowcol ,
04841 XmNlabelString , xstr ,
04842 XmNrecomputeSize , False ,
04843 XmNinitialResourcesPersistent , False ,
04844 NULL ) ;
04845 XmStringFree(xstr) ;
04846
04847 SEP_HOR(wfunc_uber_rowcol) ;
04848
04849 xstr = XmStringCreateLtoR( "Choose Overlay Dataset" , XmFONTLIST_DEFAULT_TAG ) ;
04850 wfunc_choose_pb = XtVaCreateManagedWidget(
04851 "AFNI" , xmPushButtonWidgetClass , wfunc_uber_rowcol ,
04852 XmNalignment , XmALIGNMENT_CENTER ,
04853 XmNlabelString , xstr ,
04854 XmNtraversalOn , False ,
04855 XmNinitialResourcesPersistent , False ,
04856 NULL ) ;
04857 XmStringFree(xstr) ;
04858 XtAddCallback( wfunc_choose_pb, XmNactivateCallback, REND_choose_CB, NULL ) ;
04859
04860 SEP_HOR(wfunc_uber_rowcol) ;
04861
04862 wfunc_rowcol = XtVaCreateWidget(
04863 "AFNI" , xmRowColumnWidgetClass , wfunc_uber_rowcol ,
04864 XmNorientation , XmHORIZONTAL ,
04865 XmNpacking , XmPACK_TIGHT ,
04866 XmNtraversalOn , False ,
04867 XmNinitialResourcesPersistent , False ,
04868 NULL ) ;
04869
04870 /*---------------------------- 1st column: threshold stuff ----------------------------*/
04871
04872 wfunc_thr_rowcol = XtVaCreateWidget(
04873 "AFNI" , xmRowColumnWidgetClass , wfunc_rowcol ,
04874 XmNorientation , XmVERTICAL ,
04875 XmNpacking , XmPACK_TIGHT ,
04876 XmNmarginHeight, 0 ,
04877 XmNmarginWidth , 0 ,
04878 XmNtraversalOn , False ,
04879 XmNinitialResourcesPersistent , False ,
04880 NULL ) ;
04881
04882 xstr = XmStringCreateLtoR( "Thresh" , XmFONTLIST_DEFAULT_TAG ) ;
04883 wfunc_thr_label = XtVaCreateManagedWidget(
04884 "AFNI" , xmLabelWidgetClass , wfunc_thr_rowcol ,
04885 XmNlabelString , xstr ,
04886 XmNrecomputeSize , False ,
04887 XmNinitialResourcesPersistent , False ,
04888 NULL ) ;
04889 XmStringFree(xstr) ;
04890
04891 { int smax , stop , decim , sstep ; /* 30 Nov 1997: */
04892 decim = THR_TOP_EXPON ; /* compute parameters */
04893 smax = (int)( pow(10.0,decim) + 0.001 ) ; /* for scale display. */
04894 stop = smax - 1 ;
04895 sstep = smax / 1000 ; if( sstep < 1 ) sstep = 1 ;
04896 { char *eee = getenv("AFNI_THRESH_BIGSTEP") ; /* 09 May 2003 */
04897 if( eee != NULL ){ int iq=strtol(eee,NULL,10); if(iq > 0) sstep=iq; }
04898 }
04899
04900 #ifdef BOXUP_SCALE
04901 wqqq = XtVaCreateManagedWidget(
04902 "AFNI" , xmFrameWidgetClass , wfunc_thr_rowcol ,
04903 XmNshadowType , XmSHADOW_ETCHED_IN ,
04904 XmNtraversalOn , False ,
04905 XmNinitialResourcesPersistent , False ,
04906 NULL ) ;
04907 #else
04908 wqqq = wfunc_thr_rowcol ;
04909 #endif
04910
04911 #if 1
04912 MCW_widget_geom( anat_frame , &sel_height , NULL,NULL,NULL ) ;
04913 sel_height -= (74 + 24*MAX_CUTOUTS) ; /* shorter allows for widgets below */
04914 #else
04915 sel_height = 290 ; /* a hardwired approach */
04916 #endif
04917
04918 wfunc_thr_scale =
04919 XtVaCreateManagedWidget(
04920 "scale" , xmScaleWidgetClass , wqqq ,
04921 XmNminimum , 0 ,
04922 XmNmaximum , stop ,
04923 XmNscaleMultiple , sstep ,
04924 XmNdecimalPoints , decim ,
04925 XmNshowValue , True ,
04926 XmNvalue , (int)(smax*func_threshold) ,
04927 XmNorientation , XmVERTICAL ,
04928 XmNheight , sel_height ,
04929 XmNborderWidth , 0 ,
04930 XmNtraversalOn , False ,
04931 XmNinitialResourcesPersistent , False ,
04932 NULL ) ;
04933 }
04934
04935 #ifdef FIX_SCALE_SIZE_PROBLEM
04936 XtVaSetValues( wfunc_thr_scale , XmNuserData , (XtPointer) sel_height , NULL ) ;
04937 #endif
04938
04939 #ifdef USING_LESSTIF
04940 XtVaSetValues( wfunc_thr_scale , XmNscaleWidth,24 , NULL ) ;
04941 #endif
04942
04943 XtAddCallback( wfunc_thr_scale , XmNvalueChangedCallback ,
04944 REND_thr_scale_CB , NULL ) ;
04945
04946 XtAddCallback( wfunc_thr_scale , XmNdragCallback ,
04947 REND_thr_scale_drag_CB , NULL ) ;
04948
04949 /** label for computed p-value, under scale **/
04950
04951 xstr = XmStringCreateLtoR( THR_PVAL_LABEL_NONE , XmFONTLIST_DEFAULT_TAG ) ;
04952 wfunc_thr_pval_label =
04953 XtVaCreateManagedWidget(
04954 "AFNI" , xmLabelWidgetClass , wfunc_thr_rowcol ,
04955 XmNlabelString , xstr ,
04956 XmNrecomputeSize , False ,
04957 XmNinitialResourcesPersistent , False ,
04958 NULL ) ;
04959 XmStringFree(xstr) ;
04960
04961 /** optmenu to choose top value for scale **/
04962
04963 wfunc_thr_top_av = new_MCW_arrowval( wfunc_thr_rowcol ,
04964 "**" ,
04965 MCW_AV_optmenu ,
04966 0,THR_TOP_EXPON,0 ,
04967 MCW_AV_notext , 0 ,
04968 REND_thresh_top_CB , NULL ,
04969 REND_thresh_tlabel_CB , NULL ) ;
04970 XtManageChild(wfunc_thr_rowcol) ;
04971
04972 /*--------------- column 2: color chooser stuff ------------------------------*/
04973
04974 wfunc_color_rowcol =
04975 XtVaCreateWidget(
04976 "AFNI" , xmRowColumnWidgetClass , wfunc_rowcol ,
04977 XmNorientation , XmVERTICAL ,
04978 XmNmarginHeight, 0 ,
04979 XmNmarginWidth , 0 ,
04980 XmNpacking , XmPACK_TIGHT ,
04981 XmNtraversalOn , False ,
04982 XmNinitialResourcesPersistent , False ,
04983 NULL ) ;
04984
04985 xstr = XmStringCreateLtoR( "Color" , XmFONTLIST_DEFAULT_TAG ) ;
04986 wfunc_color_label =
04987 XtVaCreateManagedWidget(
04988 "AFNI" , xmLabelWidgetClass , wfunc_color_rowcol ,
04989 XmNlabelString , xstr ,
04990 XmNinitialResourcesPersistent , False ,
04991 NULL ) ;
04992 XmStringFree(xstr) ;
04993
04994 /**-- Popup menu to control some facets of the pbar --**/
04995
04996 #ifdef BAD_BUTTON3_POPUPS /* 21 Jul 2003 */
04997 wfunc_pbar_menu = XmCreatePopupMenu( wfunc_color_rowcol, "menu" , NULL , 0 ) ;
04998 #else
04999 wfunc_pbar_menu = XmCreatePopupMenu( wfunc_color_label , "menu" , NULL , 0 ) ;
05000 #endif
05001
05002 SAVEUNDERIZE(XtParent(wfunc_pbar_menu)) ; /* 27 Feb 2001 */
05003
05004 VISIBILIZE_WHEN_MAPPED(wfunc_pbar_menu) ;
05005
05006 XtInsertEventHandler( wfunc_color_label , /* handle events in label */
05007
05008 0
05009 | ButtonPressMask /* button presses */
05010 ,
05011 FALSE , /* nonmaskable events? */
05012 REND_pbarmenu_EV , /* handler */
05013 NULL , /* client data */
05014 XtListTail /* last in queue */
05015 ) ;
05016
05017 #if 0
05018 allow_MCW_optmenu_popup(0) ; /* 12 Dec 2001 */
05019 #endif
05020
05021 (void) XtVaCreateManagedWidget(
05022 "dialog" , xmLabelWidgetClass , wfunc_pbar_menu ,
05023 LABEL_ARG("-- Cancel --") ,
05024 XmNrecomputeSize , False ,
05025 XmNinitialResourcesPersistent , False ,
05026 NULL ) ;
05027
05028 (void) XtVaCreateManagedWidget(
05029 "dialog" , xmSeparatorWidgetClass , wfunc_pbar_menu ,
05030 XmNseparatorType , XmSINGLE_LINE , NULL ) ;
05031
05032 wfunc_pbar_equalize_pb =
05033 XtVaCreateManagedWidget(
05034 "dialog" , xmPushButtonWidgetClass , wfunc_pbar_menu ,
05035 LABEL_ARG("Equalize Spacing") ,
05036 XmNmarginHeight , 0 ,
05037 XmNtraversalOn , False ,
05038 XmNinitialResourcesPersistent , False ,
05039 NULL ) ;
05040
05041 XtAddCallback( wfunc_pbar_equalize_pb , XmNactivateCallback ,
05042 REND_pbarmenu_CB , im3d ) ;
05043
05044 wfunc_pbar_settop_pb =
05045 XtVaCreateManagedWidget(
05046 "dialog" , xmPushButtonWidgetClass , wfunc_pbar_menu ,
05047 LABEL_ARG("Set Top Value") ,
05048 XmNmarginHeight , 0 ,
05049 XmNtraversalOn , False ,
05050 XmNinitialResourcesPersistent , False ,
05051 NULL ) ;
05052
05053 XtAddCallback( wfunc_pbar_settop_pb , XmNactivateCallback ,
05054 REND_pbarmenu_CB , im3d ) ;
05055
05056 /* 15 Jun 2000: image save button */
05057
05058 wfunc_pbar_saveim_pb =
05059 XtVaCreateManagedWidget(
05060 "dialog" , xmPushButtonWidgetClass , wfunc_pbar_menu ,
05061 LABEL_ARG("Save to PPM") ,
05062 XmNmarginHeight , 0 ,
05063 XmNtraversalOn , False ,
05064 XmNinitialResourcesPersistent , False ,
05065 NULL ) ;
05066
05067 MCW_register_hint( wfunc_pbar_saveim_pb ,
05068 "Write out as image file" );
05069
05070 XtAddCallback( wfunc_pbar_saveim_pb , XmNactivateCallback ,
05071 REND_pbarmenu_CB , im3d ) ;
05072
05073 (void) XtVaCreateManagedWidget(
05074 "dialog" , xmSeparatorWidgetClass , wfunc_pbar_menu ,
05075 XmNseparatorType , XmSINGLE_LINE , NULL ) ;
05076
05077 { static char * pb_dum_label[2] = { "Dummy" , "Dummy" } ;
05078 wfunc_pbar_palette_av = new_MCW_arrowval(
05079 wfunc_pbar_menu , /* parent Widget */
05080 "Set Pal " , /* label */
05081 MCW_AV_optmenu , /* option menu style */
05082 0 , /* first option */
05083 1 , /* last option */
05084 0 , /* initial selection */
05085 MCW_AV_readtext , /* ignored but needed */
05086 0 , /* ditto */
05087 REND_palette_av_CB , /* callback when changed */
05088 NULL , /* data for above */
05089 MCW_av_substring_CB , /* text creation routine */
05090 pb_dum_label /* data for above */
05091 ) ;
05092 }
05093
05094 (void) XtVaCreateManagedWidget(
05095 "dialog" , xmSeparatorWidgetClass , wfunc_pbar_menu ,
05096 XmNseparatorType , XmSINGLE_LINE , NULL ) ;
05097
05098 { static char * pb_dum_label[3] = { "Normal" , "NoShade" , "NoMix" } ; /* 21 Dec 1999 */
05099 wfunc_pbar_mixshade_av = new_MCW_arrowval(
05100 wfunc_pbar_menu , /* parent Widget */
05101 "Mixing " , /* label */
05102 MCW_AV_optmenu , /* option menu style */
05103 0 , /* first option */
05104 2 , /* last option */
05105 0 , /* initial selection */
05106 MCW_AV_readtext , /* ignored but needed */
05107 0 , /* ditto */
05108 REND_mixshade_av_CB , /* callback when changed */
05109 NULL , /* data for above */
05110 MCW_av_substring_CB , /* text creation routine */
05111 pb_dum_label /* data for above */
05112 ) ;
05113 }
05114
05115 if( GPT != NULL && PALTAB_NUM(GPT) > 0 ){
05116 refit_MCW_optmenu( wfunc_pbar_palette_av ,
05117 0 , /* new minval */
05118 PALTAB_NUM(GPT)-1 , /* new maxval */
05119 0 , /* new inival */
05120 0 , /* new decim? */
05121 AFNI_palette_label_CB , /* text routine */
05122 NULL /* text data */
05123 ) ;
05124 } else {
05125 XtUnmanageChild( wfunc_pbar_palette_av->wrowcol ) ;
05126 }
05127
05128 #if 0
05129 allow_MCW_optmenu_popup(1) ; /* 12 Dec 2001 */
05130 #endif
05131
05132 /**-- Color pbar to control intensity-to-color mapping --**/
05133
05134 { float pmin=-1.0 , pmax=1.0 ;
05135 int npane = INIT_panes_sgn ; /* from afni.h */
05136
05137 sel_height -= 22 ; /* a little shorter than the scale */
05138
05139 wfunc_color_pbar = new_MCW_pbar(
05140 wfunc_color_rowcol , /* parent */
05141 dc , /* display */
05142 npane , /* number panes */
05143 sel_height / npane , /* init pane height */
05144 pmin , pmax , /* value range */
05145 REND_color_pbar_CB , /* callback */
05146 NULL ) ; /* callback data */
05147
05148 wfunc_color_pbar->parent = NULL ;
05149 wfunc_color_pbar->mode = 0 ;
05150 wfunc_color_pbar->npan_save[0] = INIT_panes_sgn ; /* from afni.h */
05151 wfunc_color_pbar->npan_save[1] = INIT_panes_pos ;
05152 wfunc_color_pbar->hide_changes = INIT_panes_hide ;
05153
05154 REND_setup_color_pbar() ; /* other setup stuff */
05155
05156 (void) XtVaCreateManagedWidget(
05157 "AFNI" , xmSeparatorWidgetClass , wfunc_color_rowcol ,
05158 XmNseparatorType , XmSINGLE_LINE ,
05159 NULL ) ;
05160
05161 wfunc_colornum_av = new_MCW_arrowval(
05162 wfunc_color_rowcol ,
05163 "#" ,
05164 MCW_AV_optmenu ,
05165 NPANE_MIN , NPANE_MAX , npane ,
05166 MCW_AV_notext , 0 ,
05167 REND_colornum_av_CB , NULL ,
05168 NULL,NULL ) ;
05169
05170 if( NPANE_MAX >= COLSIZE )
05171 AVOPT_columnize( wfunc_colornum_av , 1+(NPANE_MAX+1)/COLSIZE ) ;
05172 }
05173
05174 /*--- toggle button to control posfunc option for pbar ---*/
05175
05176 { char * color_bbox_label[1] = { "Pos?" } ;
05177 wfunc_color_bbox = new_MCW_bbox( wfunc_color_rowcol ,
05178 1 , color_bbox_label ,
05179 MCW_BB_check ,
05180 MCW_BB_noframe ,
05181 REND_color_bbox_CB , NULL ) ;
05182 }
05183
05184 XtManageChild(wfunc_color_rowcol) ;
05185
05186 /*---------- Column 3: Choices controls -------------------------------*/
05187
05188 wfunc_choices_rowcol =
05189 XtVaCreateWidget(
05190 "AFNI" , xmRowColumnWidgetClass , wfunc_rowcol ,
05191 XmNorientation , XmVERTICAL ,
05192 XmNpacking , XmPACK_TIGHT ,
05193 XmNmarginHeight, 0 ,
05194 XmNmarginWidth , 0 ,
05195 XmNtraversalOn , False ,
05196 XmNinitialResourcesPersistent , False ,
05197 NULL ) ;
05198
05199 xstr = XmStringCreateLtoR( "Choices" , XmFONTLIST_DEFAULT_TAG ) ;
05200 wfunc_choices_label =
05201 XtVaCreateManagedWidget(
05202 "AFNI" , xmLabelWidgetClass , wfunc_choices_rowcol ,
05203 XmNlabelString , xstr ,
05204 XmNinitialResourcesPersistent , False ,
05205 NULL ) ;
05206 XmStringFree(xstr) ;
05207
05208 /*--- 30 Nov 1997: sub-brick menus ---*/
05209
05210 wfunc_buck_frame =
05211 XtVaCreateWidget(
05212 "AFNI" , xmFrameWidgetClass , wfunc_choices_rowcol ,
05213 XmNshadowType , XmSHADOW_ETCHED_IN ,
05214 XmNtraversalOn , False ,
05215 XmNinitialResourcesPersistent , False ,
05216 NULL ) ;
05217
05218 wfunc_buck_rowcol =
05219 XtVaCreateWidget(
05220 "AFNI" , xmRowColumnWidgetClass , wfunc_buck_frame ,
05221 XmNorientation , XmVERTICAL ,
05222 XmNpacking , XmPACK_TIGHT ,
05223 XmNtraversalOn , False ,
05224 XmNinitialResourcesPersistent , False ,
05225 NULL ) ;
05226
05227 /*--- Sub-brick selectors for Color & Threshold ---*/
05228 /* (Actual labels are set when used) */
05229
05230 wfunc_color_av = new_MCW_arrowval(
05231 wfunc_buck_rowcol , /* parent Widget */
05232 "Color" , /* label */
05233 MCW_AV_optmenu , /* option menu style */
05234 0 , /* first option */
05235 1 , /* last option */
05236 0 , /* initial selection */
05237 MCW_AV_readtext , /* ignored but needed */
05238 0 , /* decimal shift */
05239 REND_choose_av_CB , /* callback when changed */
05240 NULL , /* data for above */
05241 MCW_av_substring_CB , /* text creation routine */
05242 REND_dummy_av_label /* data for above */
05243 ) ;
05244
05245 wfunc_thresh_av = new_MCW_arrowval(
05246 wfunc_buck_rowcol , /* parent Widget */
05247 "Thr " , /* label */
05248 MCW_AV_optmenu , /* option menu style */
05249 0 , /* first option */
05250 1 , /* last option */
05251 0 , /* initial selection */
05252 MCW_AV_readtext , /* ignored but needed */
05253 0 , /* decimal shift */
05254 REND_choose_av_CB , /* callback when changed */
05255 NULL , /* data for above */
05256 MCW_av_substring_CB , /* text creation routine */
05257 REND_dummy_av_label /* data for above */
05258 ) ;
05259
05260 XtManageChild( wfunc_buck_rowcol ) ;
05261 XtManageChild( wfunc_buck_frame ) ;
05262
05263 AV_SENSITIZE( wfunc_color_av , False ) ; /* turn these off for now */
05264 AV_SENSITIZE( wfunc_thresh_av , False ) ;
05265
05266 /*--- menus to control opacity of color ---*/
05267
05268 wfunc_opacity_frame =
05269 XtVaCreateWidget(
05270 "AFNI" , xmFrameWidgetClass , wfunc_choices_rowcol ,
05271 XmNshadowType , XmSHADOW_ETCHED_IN ,
05272 XmNtraversalOn , False ,
05273 XmNinitialResourcesPersistent , False ,
05274 NULL ) ;
05275
05276 wfunc_opacity_rowcol =
05277 XtVaCreateWidget(
05278 "AFNI" , xmRowColumnWidgetClass , wfunc_opacity_frame ,
05279 XmNorientation , XmVERTICAL ,
05280 XmNpacking , XmPACK_TIGHT ,
05281 XmNtraversalOn , False ,
05282 XmNinitialResourcesPersistent , False ,
05283 NULL ) ;
05284
05285 { static char * func_opacity_labels[13] = { /* 11 Sep 2001: add ST+Dcue */
05286 "Underlay" ,
05287 " 0.1" , " 0.2" , " 0.3" , " 0.4" , " 0.5" ,
05288 " 0.6" , " 0.7" , " 0.8" , " 0.9" , " 1.0" ,
05289 "ShowThru" , "ST+Dcue" } ;
05290
05291 wfunc_opacity_av = new_MCW_arrowval(
05292 wfunc_opacity_rowcol , /* parent Widget */
05293 "Color Opacity " , /* label */
05294 MCW_AV_optmenu , /* option menu style */
05295 0 , /* first option */
05296 12 , /* last option */
05297 5 , /* initial selection */
05298 MCW_AV_readtext , /* ignored but needed */
05299 0 , /* decimal shift */
05300 REND_color_opacity_CB , /* callback when changed */
05301 NULL , /* data for above */
05302 MCW_av_substring_CB , /* text creation routine */
05303 func_opacity_labels /* data for above */
05304 ) ;
05305 }
05306
05307 /*--- toggle switches to control if we see function ---*/
05308
05309 { char * see_overlay_label[1] = { "See Overlay" } ;
05310 char * cut_overlay_label[1] = { "Cutout Overlay" } ;
05311 char * kill_clusters_label[1] = { "Remove Small Clusters" } ;
05312 char * see_ttatlas_label[1] = { "TT Atlas" } ; /* 24 Jul 2001 */
05313 Widget wrc ;
05314
05315 wrc = XtVaCreateWidget( /* 24 Jul 2001 */
05316 "AFNI" , xmRowColumnWidgetClass , wfunc_opacity_rowcol ,
05317 XmNorientation , XmHORIZONTAL ,
05318 XmNpacking , XmPACK_TIGHT ,
05319 XmNmarginHeight, 0 ,
05320 XmNmarginWidth , 0 ,
05321 XmNtraversalOn , False ,
05322 XmNinitialResourcesPersistent , False ,
05323 NULL ) ;
05324
05325 wfunc_see_overlay_bbox = new_MCW_bbox( wrc ,
05326 1 , see_overlay_label ,
05327 MCW_BB_check ,
05328 MCW_BB_noframe ,
05329 REND_see_overlay_CB , NULL ) ;
05330
05331 wfunc_see_ttatlas_bbox = new_MCW_bbox( wrc , /* 24 Jul 2001 */
05332 1 , see_ttatlas_label ,
05333 MCW_BB_check ,
05334 MCW_BB_noframe ,
05335 REND_see_ttatlas_CB , NULL ) ;
05336
05337 if( TT_retrieve_atlas() == NULL )
05338 XtSetSensitive( wfunc_see_ttatlas_bbox->wrowcol , False ) ;
05339
05340 XtManageChild(wrc) ; /* 24 Jul 2001 */
05341
05342 wfunc_cut_overlay_bbox = new_MCW_bbox( wfunc_opacity_rowcol ,
05343 1 , cut_overlay_label ,
05344 MCW_BB_check ,
05345 MCW_BB_noframe ,
05346 REND_cut_overlay_CB , NULL ) ;
05347
05348 wfunc_kill_clusters_bbox = new_MCW_bbox( wfunc_opacity_rowcol ,
05349 1 , kill_clusters_label ,
05350 MCW_BB_check ,
05351 MCW_BB_noframe ,
05352 REND_kill_clusters_CB , NULL ) ;
05353
05354 wfunc_clusters_rmm_av =
05355 new_MCW_arrowval( wfunc_opacity_rowcol , " rmm " , MCW_AV_downup ,
05356 0 , 99 , (int)(10*func_clusters_rmm) ,
05357 MCW_AV_edittext , 1 ,
05358 REND_clusters_av_CB,NULL,NULL,NULL
05359 ) ;
05360
05361 wfunc_clusters_vmul_av =
05362 new_MCW_arrowval( wfunc_opacity_rowcol , " vmul " , MCW_AV_downup ,
05363 0 , 9999 , (int)(0.1*func_clusters_vmul),
05364 MCW_AV_edittext , -1 ,
05365 REND_clusters_av_CB,NULL,NULL,NULL
05366 ) ;
05367
05368 AV_SENSITIZE( wfunc_clusters_rmm_av , False ) ;
05369 AV_SENSITIZE( wfunc_clusters_vmul_av, False ) ;
05370 }
05371
05372 XtManageChild( wfunc_opacity_rowcol ) ;
05373 XtManageChild( wfunc_opacity_frame ) ;
05374
05375 /*--- range controls ---*/
05376
05377 wfunc_range_frame =
05378 XtVaCreateManagedWidget(
05379 "AFNI" , xmFrameWidgetClass , wfunc_choices_rowcol ,
05380 XmNshadowType , XmSHADOW_ETCHED_IN ,
05381 XmNtraversalOn , False ,
05382 XmNinitialResourcesPersistent , False ,
05383 NULL ) ;
05384
05385 wfunc_range_rowcol =
05386 XtVaCreateWidget(
05387 "AFNI" , xmRowColumnWidgetClass , wfunc_range_frame ,
05388 XmNorientation , XmVERTICAL ,
05389 XmNpacking , XmPACK_TIGHT ,
05390 XmNtraversalOn , False ,
05391 XmNinitialResourcesPersistent , False ,
05392 NULL ) ;
05393
05394 /*--- label to show the data ranges from the overlay dataset ---*/
05395
05396 xstr = REND_range_label() ; /* make a dummy label */
05397 wfunc_range_label =
05398 XtVaCreateManagedWidget(
05399 "AFNI" , xmLabelWidgetClass , wfunc_range_rowcol ,
05400 XmNrecomputeSize , False ,
05401 XmNlabelString , xstr ,
05402 XmNtraversalOn , False ,
05403 XmNinitialResourcesPersistent , False ,
05404 NULL ) ;
05405 XmStringFree(xstr) ;
05406
05407 /*--- toggle button to control automatic range scaling for pbar ---*/
05408
05409 { char * range_bbox_label[1] = { "autoRange:xxxxxxxxx" } ;
05410
05411 wfunc_range_bbox =
05412 new_MCW_bbox( wfunc_range_rowcol ,
05413 1 , range_bbox_label ,
05414 MCW_BB_check ,
05415 MCW_BB_noframe ,
05416 REND_range_bbox_CB , NULL ) ;
05417
05418 MCW_set_bbox( wfunc_range_bbox , 1 ) ;
05419
05420 xstr = REND_autorange_label() ;
05421 XtVaSetValues( wfunc_range_bbox->wbut[0], XmNlabelString,xstr , NULL ) ;
05422 XmStringFree(xstr) ;
05423 }
05424
05425 /*--- 30 Mar 2001: put next 2 things in a horizontal rowcol ---*/
05426
05427 wqqq = XtVaCreateWidget(
05428 "dialog" , xmRowColumnWidgetClass , wfunc_range_rowcol ,
05429 XmNorientation , XmHORIZONTAL ,
05430 XmNpacking , XmPACK_TIGHT ,
05431 XmNtraversalOn , False ,
05432 XmNinitialResourcesPersistent , False ,
05433 NULL ) ;
05434
05435 /*--- arrowval to provide user control for pbar scaling ---*/
05436
05437 wfunc_range_av =
05438 new_MCW_arrowval( wqqq , /* parent */
05439 NULL , /* label */
05440 MCW_AV_downup , /* arrow directions */
05441 0 , /* min value */
05442 9999999 , /* max value */
05443 (int)(func_range) , /* init value */
05444 MCW_AV_editext , /* input/output text display */
05445 0 , /* decimal shift */
05446 REND_range_av_CB , /* routine to call when button */
05447 NULL , /* is pressed, and its data */
05448 NULL,NULL /* no special display */
05449 ) ;
05450 AV_SENSITIZE( wfunc_range_av , False ) ;
05451
05452 /*--- 30 Mar 2001: rotate pbar ---*/
05453
05454 wfunc_range_rotate_av = new_MCW_arrowval(
05455 wqqq , "Rota" ,
05456 MCW_AV_downup , 0,0,0 ,
05457 MCW_AV_notext , 0 ,
05458 AFNI_range_rotate_av_CB , (XtPointer) wfunc_color_pbar ,
05459 NULL,NULL ) ;
05460
05461 XtManageChild( wqqq ) ;
05462 XtManageChild( wfunc_range_rowcol ) ;
05463 XtManageChild( wfunc_range_frame ) ;
05464
05465 XtManageChild( wfunc_choices_rowcol ) ;
05466
05467 XtManageChild( wfunc_rowcol ) ;
05468 XtManageChild( wfunc_uber_rowcol ) ;
05469
05470 #if 0
05471 XtVaSetValues( wfunc_uber_rowcol , XmNresizeWidth , False , NULL ) ;
05472 #endif
05473
05474 return ;
05475 }
|
|
||||||||||||
|
Definition at line 3709 of file plug_render.c. References FREE_VOLUMES. Referenced by REND_make_widgets().
03710 {
03711 FREE_VOLUMES ; /* free the volumes, will force reloading at redraw */
03712 return ;
03713 }
|
|
||||||||||||||||
|
Definition at line 2419 of file plug_render.c. References ALLOW_INCROT, client_data, info_lab, new_MCW_textwin(), ONLY_AXIAL, SCRIPT_DSETS, SCRIPT_GRAFS, TEXT_READONLY, and USE_SCRIPTING.
02420 {
02421 (void ) new_MCW_textwin( info_lab ,
02422
02423 "++++++++++++++++++ V O L U M E R E N D E R I N G ++++++++++++++++++\n"
02424 "\n"
02425 "This plugin is used to render one brick from a 3D dataset in grayscale\n"
02426 "(the underlay), possibly overlaid in color with another (functional)\n"
02427 "dataset. Although lengthy, this help is still rather terse. Some\n"
02428 "experimentation will be needed to get decent results, since there are\n"
02429 "many controls that affect the way the final images appear.\n"
02430 "\n"
02431 "General Notes:\n"
02432 "--------------\n"
02433 " * To be rendered, an underlay dataset must have cubical voxels,\n"
02434 " its data must be stored as bytes or shorts (but may have\n"
02435 " a floating point scaling factor attached), and must\n"
02436 " be stored as axial slices in the 'RAI' orientation\n"
02437 " (x axis is Right-to-Left, y axis is Anterior-to-Posterior,\n"
02438 " and z axis is Inferior-to-Superior). This orientation\n"
02439 " is how datasets are written out in the +acpc and +tlrc\n"
02440 " coordinates -- with axial slices.\n"
02441 #ifdef ONLY_AXIAL
02442 " N.B.: Combining the 3ddup and 3daxialize programs makes it\n"
02443 " possible to create an cubical-voxel axially-oriented\n"
02444 " copy of any dataset.\n"
02445 #else
02446 " N.B.: The requirement that the dataset be stored in axial slices\n"
02447 " has been removed; however, the cutouts will not work\n"
02448 " properly. For example, a 'Superior to' cutout will remove\n"
02449 " voxels along the 3rd axis of a dataset; for a dataset made\n"
02450 " up of sagittal slices, this will result in a 'Left of' or\n"
02451 " a 'Right of' type of cutting.\n"
02452 #endif
02453 "\n"
02454 " * Use the Draw button to render and image after making changes\n"
02455 " to the drawing parameters or after closing the image window.\n"
02456 "\n"
02457 " * The 'Reload' button is used to re-copy the dataset brick into\n"
02458 " the renderer. This can be used if you are altering the\n"
02459 " dataset interactively with the Draw Dataset plugin.\n"
02460 " Otherwise, you probably don't need this often, since the reload\n"
02461 " operation will be carried out as needed by the renderer.\n"
02462 "\n"
02463 " * The Precalc mode determines how much work is done ahead of\n"
02464 " time to make rendering more efficient:\n"
02465 "\n"
02466 " Low = no precalculation, very slow rendering\n"
02467 " (this is the default on SGI machines);\n"
02468 " Medium = small amount of precalculation, speeds up\n"
02469 " rendering quite a lot on most computers\n"
02470 " (this is the default on non-SGI machines);\n"
02471 " High = large amount of precalculation, can speed up\n"
02472 " rendering even more, but will consume \n"
02473 " several seconds and A LOT of memory in\n"
02474 " the process. This is useful if the only\n"
02475 " changes between frames are viewing angles.\n"
02476 "\n"
02477 " * WARNING: The Medium and High mode rendering functions do not\n"
02478 " work well on some computers, producing images with\n"
02479 " a grid stippled on top. This problem occurs with\n"
02480 " some SGI compilers and (I've heard) some Sun systems.\n"
02481 " In such a case, you may have to use the Low mode,\n"
02482 " as painful as it is. (If I knew how to fix this,\n"
02483 " I would, so don't complain to me!)\n"
02484 " N.B.: The Unix environment variable AFNI_RENDER_PRECALC_MODE can\n"
02485 " be set to 'Low', 'Medium', or 'High' to override the default\n"
02486 " initial setting.\n"
02487 "\n"
02488 " * If you depress 'See Xhairs', a 3D set of crosshairs\n"
02489 " corresponding to the AFNI focus position will be drawn.\n"
02490 " If you move the crosshairs in one of the AFNI image\n"
02491 " windows, the rendering window is not automatically updated,\n"
02492 " unless the 'DynaDraw' button is also depressed. Otherwise,\n"
02493 " the next time the rendering is redrawn for some other\n"
02494 " reason, the correct crosshair positions will be shown.\n"
02495 " 02 Jun 1999: The renderer will now draw partial crosshair sets,\n"
02496 " as indicated by the 'Xhairs' chooser in the AFNI control\n"
02497 " window from which the renderer was started.\n"
02498 " 08 Mar 2001: Right-clicking (mouse button 3) on this toggle will\n"
02499 " popup a color chooser. If you set the color to something\n"
02500 " besides 'none', AND if you are displaying a color overlay,\n"
02501 " then the crosshairs will be rendered in the overlay (you\n"
02502 " could still choose 'white' for the color, if you like).\n"
02503 " N.B.: If the color opacity is set to 'ShowThru', then the\n"
02504 " crosshairs will show through whatever underlay data\n"
02505 " may be in the way.\n"
02506 " N.B.: If you want only the crosshairs in color, then set the\n"
02507 " theshold on the overlay dataset so high that no actual\n"
02508 " data will show in color. The crosshair overlay will\n"
02509 " still be visible.\n"
02510 " N.B.: If you change the crosshair gap in the AFNI control panel,\n"
02511 " you will have to press 'Reload' in the renderer to force\n"
02512 " a redraw with the new crosshairs.\n"
02513 "\n"
02514 " * If you depress 'DynaDraw', then the image will be re-\n"
02515 " rendered immediately whenever certain actions are taken:\n"
02516 " + The 'See Xhairs' toggle state is changed.\n"
02517 " + A viewing angle is changed by pressing an arrow.\n"
02518 " + A cutout parameter value is changed by pressing an arrow or\n"
02519 " a 'Get' button.\n"
02520 " Changing one of these values by directly typing in the\n"
02521 " corresponding text entry field will NOT force a redraw\n"
02522 " even in DynaDraw mode -- you will have to press 'Draw'.\n"
02523 " Other changes (e.g., altering the opacity graph) will\n"
02524 " not force a dynamic redraw and also require the use\n"
02525 " of the 'Draw' button.\n"
02526 " N.B.: The data entry fields with which DynaDraw and Automate\n"
02527 " interact are displayed with a raised border, unlike\n"
02528 " other data entry fields (e.g., 'Bot').\n"
02529 " N.B.: The default stepsize for the angle and cutout variables\n"
02530 " when an arrow is pressed is 5.0. These values can be\n"
02531 " altered by setting the Unix environment variables\n"
02532 " AFNI_RENDER_ANGLE_DELTA and AFNI_RENDER_CUTOUT_DELTA\n"
02533 " prior to running AFNI. Once AFNI is started, these\n"
02534 " stepsizes can only be altered from the\n"
02535 " 'Datamode->Misc->Edit Environment' menu item.\n"
02536 " N.B.: Other circumstances that will invoke automatic redrawing\n"
02537 " when DynaDraw is depressed include:\n"
02538 " + The crosshairs are moved in an AFNI image window belonging\n"
02539 " to the same controller, AND the 'See Xhairs' button is\n"
02540 " depressed.\n"
02541 " + You are also editing the dataset using the 'Draw Dataset'\n"
02542 " plugin (invoked from the same controller), and you have\n"
02543 " changed the dataset with a drawing operation.\n"
02544 "\n"
02545 " * If you depress 'Accumulate' IN, then rendered images are\n"
02546 " saved as they are computed and can be re-viewed in the\n"
02547 " image display window. If Accumulate is OUT, then only\n"
02548 " the latest image is kept.\n"
02549 " N.B.: The image display window is like an AFNI slice viewing\n"
02550 " window, but the slider control simply lets you scroll\n"
02551 " back through past renderings, not through the spatial\n"
02552 " extent of the dataset in any way. Each additional\n"
02553 " accumulated image appears as the last image in the\n"
02554 " sequence, no matter where you are when 'Draw' activates.\n"
02555 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
02556 "\n"
02557 " * The 'I' toggle left of the 'Roll' button lets you select\n"
02558 " incremental mode for angle changes made with the arrow\n"
02559 " buttons.\n"
02560 " + In incremental mode, the extra rotation implied by\n"
02561 " pressing the arrow button will be around the spatial\n"
02562 " axis corresponding to that button:\n"
02563 " Roll=I-S axis, Pitch=R-L axis, Yaw=A-P axis.\n"
02564 " + In non-incremental mode, the rotation angles are always\n"
02565 " applied in the order Yaw, Pitch, Roll; the result may\n"
02566 " not be intuitive since the SO(3) group is not Abelian.\n"
02567 " + In incremental mode, when you press an angle arrow button,\n"
02568 " new absolute spatial angles corresponding to the changed\n"
02569 " orientation are calculated and put into the Roll, Pitch,\n"
02570 " and Yaw text fields.\n"
02571 " + Incremental rotation mode does not combine with Automate.\n"
02572 #endif /* ALLOW_INCROT */
02573 "\n"
02574 "Brightness and Opacity:\n"
02575 "-----------------------\n"
02576 " * The Min= and Max= values show the range of numbers stored\n"
02577 " in the dataset brick. The brick is copied into internal\n"
02578 " memory for rendering. You can use the 'Bot' and 'Top'\n"
02579 " controls to limit the range of the copied voxel data.\n"
02580 " Anything below 'Bot' will be set to the Bot value, and\n"
02581 " anything above 'Top' will be set to the Top value.\n"
02582 " (If Bot < Min, then Bot is effectively equal to Min;\n"
02583 " if Top > Max, then Top is effectively equal to Max.)\n"
02584 " In this way, you can eliminate the effect of a few extreme\n"
02585 " data values.\n"
02586 "\n"
02587 " * The 'Sqrt Histogram' graph displays the square root of the\n"
02588 " histogram of the dataset brick. (The square root is graphed\n"
02589 " so that small values will be somewhat enhanced in the display.\n"
02590 " Also, the 0 bin value is not used in selecting the scale factor\n"
02591 " for display, since it often is far larger than other bins.)\n"
02592 " The purpose of this histogram is to let you choose good\n"
02593 " values for Bot and Top. After altering Bot and Top, press\n"
02594 " the 'Reload' button to make the histogram graph be redrawn.\n"
02595 "\n"
02596 " * The 'Brightness' and 'Opacity' graphs are used to control\n"
02597 " the mappings from dataset signal level (the numbers stored\n"
02598 " in the voxels) to the grayscale and opacity levels.\n"
02599 " The abscissa represents the copied voxel values, ranging\n"
02600 " the larger of Min or Bot, to the smaller of Max or Top.\n"
02601 " A larger opacity makes a voxel less transparent; for\n"
02602 " example, a high opacity with a low brightness is like\n"
02603 " black barrier in the line of sight. Zero opacity\n"
02604 " means a voxel is transparent and does not contribute to\n"
02605 " the rendered image.\n"
02606 "\n"
02607 " * The ordinate on the 'Brightness' graph ranges from black\n"
02608 " at the bottom to white at the top. The ordinate on the\n"
02609 " 'Opacity' graph ranges from 0 (transparent) to 1 (opaque).\n"
02610 "\n"
02611 " * The 'Opacity Factor' control lets you scale the entire\n"
02612 " underlay opacity down by some constant factor. (However,\n"
02613 " this doesn't seem to be very useful.)\n"
02614 "\n"
02615 "Cutouts:\n"
02616 "--------\n"
02617 " * The 'Cutouts' menu lets you select the number of regions to\n"
02618 " be cut out of the volume prior to rendering (this is done\n"
02619 " by setting the voxel opacity inside each cutout to zero).\n"
02620 " Up to 9 cutouts can be combined at once. There are 21 types\n"
02621 " of cutouts, each of which is controlled by a single parameter.\n"
02622 " For example, the parameter for a 'Right of' cutout is an\n"
02623 " x-coordinate, and all the voxels to the right of this value\n"
02624 " will be included in the cutout.\n"
02625 " N.B.: Right (of midline) = negative x\n"
02626 " Left (of midline) = positive x\n"
02627 " Anterior (to the AC) = negative y\n"
02628 " Posterior (to the AC) = positive y\n"
02629 " Inferior (to the AC-PC) = negative z\n"
02630 " Superior (to the AC-PC) = positive z\n"
02631 "\n"
02632 " * The 'Expr > 0' cutout is a special (and slow) case. Instead\n"
02633 " of a number, you enter an expression (using the 3dcalc\n"
02634 " syntax) containing the symbols 'x', 'y', and 'z', which\n"
02635 " represent the spatial coordinates of each voxel. Voxels\n"
02636 " where the expression evaluates to a positive number will\n"
02637 " be cut out. For example, '900-x*x-y*y-z*z' will cut out\n"
02638 " the INTERIOR of a sphere of radius 30 mm, centered at the\n"
02639 " origin of coordinates; 'x*x+y*y+z*z-900' will remove the\n"
02640 " EXTERIOR of this sphere.\n"
02641 "\n"
02642 " * The 'TT Ellipsoid' cutout will remove all voxels exterior to\n"
02643 " an ellipsoid that approximates the outer contour of the\n"
02644 " Talairach-Tournoux atlas, when its 'Percentage' parameter\n"
02645 " is set to 100. Smaller percentages will shrink the ellipsoid\n"
02646 " in towards the center of the brain; large percentages will\n"
02647 " expand it outwards.\n"
02648 "\n"
02649 " * The 12 'Behind', 'Above', etc. cutouts are relative to planes at\n"
02650 " 45 degrees to the standard views. For example, 'Behind AL-PR'\n"
02651 " cuts out behind a slice that starts at Anterior-Left (AL) and\n"
02652 " ends up at Posterior-Right (PR) -- halfway between a coronal\n"
02653 " and a sagittal slice. The simplest way to set the value\n"
02654 " parameter for these (at least to start) is to use 'Get'.\n"
02655 "\n"
02656 " * The 'NonOverlay++' cutout will remove all voxels that would not\n"
02657 " get colored if the overlay were turned on. (If the parameter\n"
02658 " 'Radius++' is positive, then the region is dilated by that\n"
02659 " many mm in all directions.) This can be useful for seeing\n"
02660 " exactly the anatomy that is deemed to be 'active'.\n"
02661 " Notes:\n"
02662 " + If there is no overlay dataset loaded, then this type of cutout\n"
02663 " has no effect.\n"
02664 " + 'Get' does nothing for this type of cutout.\n"
02665 " + Viewing the color overlay with Radius++ set to a positive\n"
02666 " value may be confusing, since the colored voxels will be\n"
02667 " buried inside the visible tissue. The combination of bright\n"
02668 " colors with high color opacity and the use of a small\n"
02669 " underlay opacity factor can make it possible to see the\n"
02670 " color overlay through the translucent surrounding shell\n"
02671 " of thickness Radius++.\n"
02672 "\n"
02673 " * Cutouts can be combined with the 'OR' logic, which means that\n"
02674 " the union of all the specified cutout regions will be\n"
02675 " removed. They can also be combined with the 'AND' logic,\n"
02676 " which means that the intersection of the cutout regions\n"
02677 " will be removed.\n"
02678 " N.B.: If the 'AND' logic is selected, a cutout can still be\n"
02679 " forced to be removed in its entirety using the 'Must Do'\n"
02680 " control. (That is, 'AND' only applies to those that\n"
02681 " do NOT have 'Must Do' selected; 'OR' applies to those\n"
02682 " that DO have 'Must Do' selected.) For an example, try\n"
02683 " combining 'Right of', 'Anterior to', and 'Superior to'\n"
02684 " cutouts first with 'OR', then with 'AND', and finally\n"
02685 " with 'AND' but with the 'Superior to' cutout set to\n"
02686 " 'Must Do'.\n"
02687 "\n"
02688 "Automating the Calculation of Many Renderings:\n"
02689 "----------------------------------------------\n"
02690 " * If you depress 'Automate', then the automatic generation\n"
02691 " of renderings as some parameter varies is enabled.\n"
02692 " The 'Frames' field controls how many renderings will\n"
02693 " be made. To vary some parameter, you type an\n"
02694 " arithmetic expression in the variable 't' in the\n"
02695 " parameter control field. The parameters that can\n"
02696 " be so varied are the viewing angles and the cutout\n"
02697 " parameters (i.e., those whose data entry field is\n"
02698 " drawn with a raised border). For the first rendering\n"
02699 " t=0, for the second t=1, etc., up to t=N-1, where N is\n"
02700 " the number of frames ordered. (You can also use the\n"
02701 " variable 'N' in the parameter expressions.) Once the\n"
02702 " expressions are set up, press 'Compute' to begin\n"
02703 " rendering automation. (Then go have a pumpernickel\n"
02704 " bagel and a cup of lapsang souchong tea.)\n"
02705 "\n"
02706 " * Notes about Automate:\n"
02707 " 1) If none of the parameters has an expression involving\n"
02708 " 't', then each frame in the rendering will be identical,\n"
02709 " but the program won't detect that and you will waste a\n"
02710 " lot of CPU time and memory.\n"
02711 " 2) Use the same expression syntax as with program 3dcalc.\n"
02712 " An illegal expression (e.g., '2+*3t') will silently\n"
02713 " evaluate to zero.\n"
02714 " 3) It is legal to have more than one parameter depend on 't'.\n"
02715 " For example, combining cutouts\n"
02716 " Anterior To: -50+2*t\n"
02717 " Posterior To: -40+2*t\n"
02718 " with the OR logic produces a 10 mm thick coronal slice\n"
02719 " that slides backwards at 2 mm per frame.\n"
02720 " 4) If Accumulate is on, then the frames created by automated\n"
02721 " rendering will be added to the list of stored images. If\n"
02722 " Accumulate is off, the previously saved images will be\n"
02723 " discarded, and only the newly generated image sequence will\n"
02724 " be available for viewing.\n"
02725 " 5) There is no way to save an animation to disk as a unit.\n"
02726 " However, you could use the 'Save:bkg' button on the image\n"
02727 " viewer to save each image to disk in PNM format, then convert\n"
02728 " the collection of individual image files to some movie format,\n"
02729 " using software outside of the AFNI package.\n"
02730 " 6) Using an arrow to change a field with an expression\n"
02731 " entered will result in the destruction of the expression\n"
02732 " string and its replacement by a number.\n"
02733 " 7) At the end of an Automate run, you can convert a field\n"
02734 " with an expression to its final numerical value by\n"
02735 " clicking in the data field and then pressing the\n"
02736 " Enter (or Return) key. In combination with Accumulate,\n"
02737 " this makes it easy to chain together the results of\n"
02738 " multiple automated rendering computations, first varying\n"
02739 " one parameter and then another.\n"
02740 " 8) During an Automate run, a 'CANCEL' button to the right\n"
02741 " of 'Compute' becomes visible. If you press this, then\n"
02742 " the automation will be interrupted when it finishes the\n"
02743 " image on which it is working (you have to wait until\n"
02744 " that time -- pressing the button twice won't help!).\n"
02745 #ifdef USE_SCRIPTING
02746 " Z) The 'Scripts' method, described below, is an entirely\n"
02747 " separate method of generating multiple renderings at once.\n"
02748 #endif
02749 "\n"
02750 "Color Overlays\n"
02751 "--------------\n"
02752 "By pressing the 'Overlay' button, you can access the controls for\n"
02753 "displaying a second dataset in color on top of the underlay dataset.\n"
02754 "(Unlike the underlay dataset, the voxel data in the overlay may be\n"
02755 "stored as floats, as well as shorts or bytes.) The controls are\n"
02756 "designed to be similar to the controls in the 'Define Function'\n"
02757 "control panel in a main AFNI window, and so only the principal\n"
02758 "differences will be explained here.\n"
02759 "\n"
02760 " * One brick ('Color') is chosen to determine the colors shown, and\n"
02761 " another brick ('Thr') to determine which voxels from the overlay\n"
02762 " dataset will be shown at all. If you don't want thresholding\n"
02763 " applied, just set the threshold slider down to 0.\n"
02764 "\n"
02765 " * The 'Color Opacity' control determines how opaque each supra-\n"
02766 " threshold voxel will be. If it is set to 'Underlay', then\n"
02767 " the opacity of a colored voxel will be determined from the\n"
02768 " underlay opacity at that location.\n"
02769 " N.B.: The special value of 'ShowThru' will make the color overlay\n"
02770 " be opaque (opacity=1.0), and also show through the grayscale\n"
02771 " underlay no matter how far it is embedded inside the brain.\n"
02772 " This is done by doing 2 renderings, 1 with the underlay only\n"
02773 " and one with the overlay only. The resulting 2 images are\n"
02774 " then merged. The default merger is to use an overlay pixel\n"
02775 " if it is nonzero, otherwise use the corresponding underlay\n"
02776 " pixel. The environment variable AFNI_RENDER_SHOWTHRU_FAC\n"
02777 " can be used to control the merging when the overlay image\n"
02778 " pixel is nonzero. This variable should be set to a value\n"
02779 " between 0.0 and 1.0; suppose that its value is denoted by c.\n"
02780 " Then the merging algorithm, at each image pixel, is\n"
02781 " if( overlay == 0 ) pixel = underlay;\n"
02782 " else pixel = c * overlay + (1-c) * underlay;\n"
02783 " I personally like the results with c=0.65. This environment\n"
02784 " variable (and others) can be set from the AFNI control panel\n"
02785 " 'Datamode->Misc->Edit Environment' menu item.\n"
02786 " 11 Sep 2001: The new option 'ST+Dcue' is the same as ShowThru,\n"
02787 " with the addition of Depth cueing to the color overlay.\n"
02788 " This means that colored voxels in the back half of the\n"
02789 " rendered volume will be darkened, simulating fading off\n"
02790 " with depth. This helps cue your visual system to understand\n"
02791 " which objects are where in the image.\n"
02792 "\n"
02793 " * 'See Overlay' is used to toggle the color overlay computations\n"
02794 " on and off - it should be pressed IN for the overlay to become\n"
02795 " visible.\n"
02796 " * 'TT Atlas' is used to toggle the overlay of regions from the\n"
02797 " Talairach Atlas on and off. This option only has effect if\n"
02798 " the underlay dataset being viewed in the the +tlrc coordinate\n"
02799 " system and has 1 mm cubical voxels (the default).\n"
02800 "\n"
02801 " * 'Cutout Overlay' determines if the cutout operations affect the\n"
02802 " overlaid voxels. If it is pressed IN, then cutouts will include\n"
02803 " the overlay; if OUT, then colored voxels will hang free in\n"
02804 " empty space where the underlay was cutout beneath them.\n"
02805 " N.B.: If 'Color Opacity' is set to 'Underlay', the cutouts will\n"
02806 " hit the overlay in all cases, since cutouts are implemented\n"
02807 " by setting the opacity of the underlay to zero in the chosen\n"
02808 " regions.\n"
02809 "\n"
02810 " * 'Remove Small Clusters', if pressed IN, will cause clusters\n"
02811 " of voxels below a given threshold volume to be excised before\n"
02812 " rendering. The parameters defining this cluster editing are\n"
02813 " determined by the controls immmediately beneath, which use the\n"
02814 " same conventions as program 3dclust.\n"
02815 "\n"
02816 " * None of the overlay controls are hooked up to 'DynaDraw' or to\n"
02817 " 'Automate'. You must manually press 'Draw' to see the effects\n"
02818 " of changes to these settings.\n"
02819 "\n"
02820 " * A slightly different colormap is used when rendering overlays than\n"
02821 " when only underlays are visible. The result is that the grayscale\n"
02822 " underlay will look a little different between the 'See Overlay'\n"
02823 " IN and OUT conditions. Also, the colormaps are rendered into\n"
02824 " 24 bit RGB images, which might not be faithfully displayed in\n"
02825 " the image window if your system is using an X11 PseudoColor visual\n"
02826 " (the most common display mode). If the 'Save:bkg' button is used\n"
02827 " to save a set of RGB images, they will be saved in their internal\n"
02828 " color resolution (in PPM format); they might appear slightly\n"
02829 " different when viewed outside AFNI (e.g., using program xv).\n"
02830 " N.B.: When viewing an RGB image, most of the image processing\n"
02831 " options available from the 'Disp' control panel do not\n"
02832 " function. 'Sharpen' still works, and is very useful.\n"
02833 "\n"
02834 " * The Button-3 popup menu under the 'Color' label above the pbar\n"
02835 " has an extra menu that lets you control the way in which colors\n"
02836 " are mixed in the final display.\n"
02837 " In the Volpack color computations, colors are composited along rays\n"
02838 " that pass through the volume. This can produce peculiar mixes of\n"
02839 " colors (e.g., a blue voxel behind a red voxel will produce a\n "
02840 " purple shade, which may not be on the color pbar).\n"
02841 " The 'Mixing' menu lets you excise these mixed colors:\n"
02842 " * 'Normal' gives the full range of Volpack generated colors.\n"
02843 " * 'NoShade' means the overlaid colors generated by Volpack\n"
02844 " will be remapped to the set shown on the pbar.\n"
02845 " * 'NoMix' means that the overlay colors rendered will be remapped\n"
02846 " to shades of the set shown on the pbar (that is, the hues will\n"
02847 " be the same, but the intensities will vary).\n"
02848 " N.B.: Volpack controls the color composition along each pixel ray.\n"
02849 " All that these options do is remap the composed colors back to\n"
02850 " a more limited set. If no good match is found, then a gray shade\n"
02851 " with the same intensity is chosen. The results of this remapping\n"
02852 " may or may not look good!\n"
02853 " N.B.: As discussed above, when shown on a PseudoColor display, shaded\n"
02854 " colors may look peculiar, but will be saved to a PPM file\n"
02855 " properly.\n"
02856 " N.B.: You may want to set 'Color Opacity' to 1.0 when using the 'NoMix'\n"
02857 " and 'NoShade' options.\n"
02858 #ifdef USE_SCRIPTING
02859 " N.B.: The setting of the 'Mixing' control is NOT saved or restored by\n"
02860 " any of the 'Scripts' options!\n"
02861 #endif
02862 "\n"
02863 #ifdef USE_SCRIPTING
02864 "Scripts: [July 1999]\n"
02865 "--------\n"
02866 " * This facility, controlled from the 'Scripts' menu button, lets you\n"
02867 " save rendering settings and recall them later. This is useful\n"
02868 " when you want to render multiple datasets in the same fashion.\n"
02869 "\n"
02870 " * 'Save This' will store the current state of the rendering settings\n"
02871 " to a file. Rendering settings are stored in files with suffix\n"
02872 " '.rset', and are ASCII files that can be edited -- with care!\n"
02873 "\n"
02874 " * 'Save Many' will store all the rendering settings used to create\n"
02875 " the currently accumulated images.\n"
02876 "\n"
02877 " * 'Read This' will read one rendering state from a .rset file and\n"
02878 " make the interface widgets reflect that state. Nothing will\n"
02879 " be rendered until you press the 'Draw' button. If the .rset\n"
02880 " file has more than one rendering state (e.g., from ''Save Many')\n"
02881 " you will be asked to choose which state you want to load.\n"
02882 "\n"
02883 " * 'Read & Exec' will read a set of rendering states from a .rset file\n"
02884 " and execute them, producing a new set of images. If more than\n"
02885 " one rendering is being computed, you can use the CANCEL button\n"
02886 " (as in Automate) to stop the rendering.\n"
02887 "\n"
02888 " * The toggle button 'Load Widgets', when activated, will cause the\n"
02889 " interface widgets to be loaded with the rendering state used to\n"
02890 " create the currently visible image. When you move the slider\n"
02891 " to see a different image from the accumulation, the widgets will\n"
02892 " change accordingly. This lets you recall how you created a\n"
02893 " particular image. If this button is deactivated, then the\n"
02894 " widgets will reflect the last image rendered, no matter which\n"
02895 " image is actually visible.\n"
02896 "\n"
02897 " * The toggle button 'Brick Index?' controls whether the sub-brick\n"
02898 " indexes are to be changed when new rendering values are loaded\n"
02899 " via one of the 'Read' buttons, or via the 'Load Widgets' toggle.\n"
02900 #ifdef SCRIPT_GRAFS
02901 "\n"
02902 " * The toggle button 'Alter Grafs?' controls whether the Brightness\n"
02903 " and Opacity interactive graphs are to be restored when new\n"
02904 " rendering values are loaded (via 'Read' or 'Load Widgets').\n"
02905 #endif
02906 #ifdef SCRIPT_DSETS
02907 "\n"
02908 " * The toggle button 'Alter Dsets?' controls whether the datasets\n"
02909 " will be changed (from the dataset ID codes) when new\n"
02910 " rendering values are loaded (via 'Read' or 'Load Widgets').\n"
02911 #endif
02912 "\n"
02913 " N.B.: When you render a new image, it always goes at the END of\n"
02914 " the accumulation, no matter which image you happen to be\n"
02915 " viewing when you press 'Draw', or otherwise cause rendering.\n"
02916 " N.B.: The format of a .rset file is described in the documentation\n"
02917 " file README.render_scripts. By editing such a file, you can\n"
02918 " create a script that can be used to create many renderings\n"
02919 " at once (via the 'Read & Exec' button).\n"
02920 "\n"
02921 #endif /* USE_SCRIPTING */
02922 "Final Notes:\n"
02923 "------------\n"
02924 " * The rendering is done using the VolPack library from Stanford,\n"
02925 " by Philippe Lacroute (http://www-graphics.stanford.edu).\n"
02926 " This library behaves peculiarly on some SGI systems (perhaps\n"
02927 " due to compiler bugs) , and may produce incorrect images\n"
02928 " in 'Medium' and 'High' modes. 'Low' mode seem always to work\n"
02929 " well, but is unfortunately quite slow.\n"
02930 "\n"
02931 " * The images produced may look a little blurry, due to the linear\n"
02932 " interpolation scheme used by VolPack. You can use the 'Sharpen'\n"
02933 " option on the image viewer 'Disp' control panel to make them\n"
02934 " look nicer.\n"
02935 "\n"
02936 " * When only one image is rendered (i.e., Accumulate is off), the\n"
02937 " image viewer window does not show the control widgets. The 'Disp'\n"
02938 " controls can be accessed by the combination keypress-mouseclick\n"
02939 " 'Shift-Button3' in the image window, and the 'Save' controls by\n"
02940 " 'Alt-Button3' (some systems don't allow this last combination\n"
02941 " to be detected by the application program; in such a case, you\n"
02942 " must have at least 2 images accumulated to be able to use 'Save').\n"
02943 "\n"
02944 " * This plugin is very CPU and memory intensive, and will not run\n"
02945 " at all decently on a computer with less than 128 MB of RAM.\n"
02946 "------------------------------------------------------------------------\n"
02947 "\n"
02948 "RW Cox, Milwaukee - February 1999 [first version]\n"
02949 " - July 1999 [Scripts]\n"
02950 " - April 2000 [Scripts can change datasets]\n"
02951
02952 , TEXT_READONLY ) ;
02953 return ;
02954 }
|
|
||||||||||||||||
|
Definition at line 4526 of file plug_render.c. References automate_flag, MCW_imseq_status::aux, GLOBAL_library, IMARR_COUNT, IMARR_SUBIMAGE, isqCR_getimage, isqCR_getoverlay, isqCR_getqimage, isqCR_getstatus, MRI_IMAGE::kind, mri_to_mri(), mri_to_rgb(), myXtNew, MCW_imseq_status::num_series, MCW_imseq_status::num_total, MCW_imseq_status::parent, AFNI_library_type::registered_0D, AFNI_library_type::registered_2D, REND_seq_send_CB(), REND_state_to_widgets(), RSA_COUNT, RSA_SUBSTATE, script_load, script_load_last, MCW_imseq_status::send_CB, MCW_imseq_status::slice_proj, MCW_imseq_status::transforms0D, and MCW_imseq_status::transforms2D. Referenced by REND_open_imseq().
04527 {
04528 int ntot = 0 ;
04529
04530 if( renderings != NULL ) ntot = IMARR_COUNT(renderings) ;
04531 if( ntot < 1 ) ntot = 1 ;
04532
04533 /*--- send control info ---*/
04534
04535 if( type == isqCR_getstatus ){
04536 MCW_imseq_status * stat = myXtNew( MCW_imseq_status ) ; /* will be free-d */
04537 /* when imseq is */
04538 /* destroyed */
04539 stat->num_total = ntot ;
04540 stat->num_series = stat->num_total ;
04541 stat->send_CB = REND_seq_send_CB ;
04542 stat->parent = NULL ;
04543 stat->aux = NULL ;
04544
04545 stat->transforms0D = &(GLOBAL_library.registered_0D) ;
04546 stat->transforms2D = &(GLOBAL_library.registered_2D) ;
04547 stat->slice_proj = NULL ;
04548
04549 return (XtPointer) stat ;
04550 }
04551
04552 /*--- no overlay, never ---*/
04553
04554 if( type == isqCR_getoverlay ) return NULL ;
04555
04556 /*--- return a copy of a rendered image
04557 (since the imseq will delete it when it is done) ---*/
04558
04559 if( type == isqCR_getimage || type == isqCR_getqimage ){
04560 MRI_IMAGE * im = NULL , * rim ;
04561
04562 if( renderings != NULL ){
04563 if( n < 0 ) n = 0 ; else if( n >= ntot ) n = ntot-1 ;
04564 rim = IMARR_SUBIMAGE(renderings,n) ;
04565 if( any_rgb_images )
04566 im = mri_to_rgb( rim ) ;
04567 else
04568 im = mri_to_mri( rim->kind , rim ) ;
04569
04570 #ifdef USE_SCRIPTING
04571 if( renderings_state != NULL &&
04572 n < RSA_COUNT(renderings_state) &&
04573 ! automate_flag &&
04574 script_load && script_load_last != n ){
04575
04576 REND_state_to_widgets( RSA_SUBSTATE(renderings_state,n) ) ;
04577 script_load_last = n ;
04578 }
04579 #endif
04580 }
04581 return (XtPointer) im ;
04582 }
04583
04584 return NULL ; /* should not occur, but who knows? */
04585 }
|
|
||||||||||||||||||||||||
|
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 8048 of file plug_render.c. References a, c, DMAT_MUL, LOAD_ROT_MAT, REND_rotmatrix(), REND_rotmatrix_to_angles(), and roll(). Referenced by REND_do_incrot().
08050 {
08051 double a,b,c ;
08052 THD_dmat33 qq , rr , pp ;
08053
08054 a = *yaw ; b = *pitch ; c = *roll ; /* fetch input angles */
08055 qq = REND_rotmatrix( 1,a , 0,b , 2,c ) ; /* compute matrix from angles */
08056
08057 LOAD_ROT_MAT(rr,th,ax) ; /* incremental rotation */
08058
08059 pp = DMAT_MUL(rr,qq) ; /* total rotation matrix */
08060 REND_rotmatrix_to_angles( pp , &a,&b,&c ) ; /* get angles from this */
08061 *yaw = a ; *pitch = b ; *roll = c ; /* store angles */
08062 return ;
08063 }
|
|
||||||||||||||||
|
callback for above toggle * Definition at line 3400 of file plug_render.c. References MCW_set_bbox(), MCW_val_bbox(), REND_textact_CB(), and MCW_arrowval::wtext. Referenced by REND_make_widgets().
03401 {
03402 if( MCW_val_bbox(automate_bbox) ){ /* don't allow incrot */
03403 MCW_set_bbox( incrot_bbox , 0 ) ; /* if Automate is set */
03404 return ;
03405 }
03406
03407 /* if incrot is on, then force arrowvals back to numerical
03408 values in case they are now encoded as Automate expressions */
03409
03410 if( MCW_val_bbox(incrot_bbox) ){
03411 REND_textact_CB( roll_av ->wtext , (XtPointer)roll_av , NULL ) ;
03412 REND_textact_CB( pitch_av->wtext , (XtPointer)pitch_av , NULL ) ;
03413 REND_textact_CB( yaw_av ->wtext , (XtPointer)yaw_av , NULL ) ;
03414 }
03415 }
|
|
|
-- Color pbar to control intensity-to-color mapping --* Definition at line 5481 of file plug_render.c. References DCOV_BLUEBYTE, DCOV_GREENBYTE, DCOV_REDBYTE, func_bmap, func_cmap_set, func_gmap, func_ncmap, func_rmap, MIN, MREN_set_rgbmap(), nc, MCW_DCOV::ncol_ov, MCW_DC::ovc, and render_handle. Referenced by REND_open_func_CB().
05482 {
05483 int ii , nc ;
05484
05485 for( ii=0 ; ii < 127 ; ii++ ) /* gray part */
05486 func_rmap[ii] = func_gmap[ii] = func_bmap[ii] = 2*ii ;
05487
05488 func_rmap[127] = func_gmap[127] = func_bmap[127] = 255 ; /* white pixel */
05489
05490 nc = MIN( dc->ovc->ncol_ov , 129 ) ; /* don't allow colormap overflow */
05491
05492 for( ii=1 ; ii < nc ; ii++ ){ /* color part */
05493 func_rmap[127+ii] = DCOV_REDBYTE(dc,ii) ; /* [skips #0] */
05494 func_gmap[127+ii] = DCOV_GREENBYTE(dc,ii) ;
05495 func_bmap[127+ii] = DCOV_BLUEBYTE(dc,ii) ;
05496 }
05497
05498 func_ncmap = 127 + nc ; /* size of map */
05499
05500 if( render_handle != NULL ){
05501 MREN_set_rgbmap( render_handle, func_ncmap, func_rmap,func_gmap,func_bmap ) ;
05502 func_cmap_set = 1 ;
05503 } else {
05504 func_cmap_set = 0 ;
05505 }
05506
05507 return ;
05508 }
|
|
||||||||||||||||
|
Definition at line 5955 of file plug_render.c. References AV_SENSITIZE, CUT_NONOVERLAY, FREE_VOLUMES, func_kill_clusters, INVALIDATE_OVERLAY, MCW_val_bbox(), CUTOUT_state::num, and CUTOUT_state::type. Referenced by REND_func_widgets(), and REND_state_to_widgets().
05956 {
05957 int cc , newkill = MCW_val_bbox(wfunc_kill_clusters_bbox) ;
05958
05959 if( newkill == func_kill_clusters ) return ;
05960
05961 func_kill_clusters = newkill ;
05962
05963 AV_SENSITIZE( wfunc_clusters_rmm_av , newkill ) ;
05964 AV_SENSITIZE( wfunc_clusters_vmul_av, newkill ) ;
05965
05966 INVALIDATE_OVERLAY ;
05967
05968 for( cc=0 ; cc < current_cutout_state.num ; cc++ )
05969 if( current_cutout_state.type[cc] == CUT_NONOVERLAY ){
05970 FREE_VOLUMES ;
05971 break ;
05972 }
05973
05974 return ;
05975 }
|
|
|
||||||||||||
|
Definition at line 2991 of file plug_render.c. References DSET_NX, DSET_NY, DSET_NZ, dsl, THD_session::dsset, 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 REND_choose_CB().
02992 {
02993 THD_session * ss = im3d->ss_now ; /* current session */
02994 int vv = im3d->vinfo->view_type ; /* view type */
02995 THD_3dim_dataset * qset ;
02996 int id , nx,ny,nz ;
02997
02998 ndsl = 0 ; /* initialize */
02999
03000 if( ISVALID_DSET(mset) ){
03001 nx = DSET_NX(mset) ; ny = DSET_NY(mset) ; nz = DSET_NZ(mset) ;
03002 } else {
03003 nx = ny = nz = 0 ;
03004 }
03005
03006 /* scan datasets */
03007
03008 for( id=0 ; id < ss->num_dsset ; id++ ){
03009 qset = ss->dsset[id][vv] ;
03010
03011 if( ! USEFUL_DSET(qset) ) continue ; /* skip this one */
03012
03013 if( nx > 0 && DSET_NX(qset) != nx ) continue ; /* must match */
03014 if( ny > 0 && DSET_NY(qset) != ny ) continue ; /* brick size */
03015 if( nz > 0 && DSET_NZ(qset) != nz ) continue ;
03016
03017 ndsl++ ;
03018 dsl = (PLUGIN_dataset_link *)
03019 XtRealloc( (char *) dsl , sizeof(PLUGIN_dataset_link)*ndsl ) ;
03020
03021 make_PLUGIN_dataset_link( qset , dsl + (ndsl-1) ) ; /* cf. afni_plugin.c */
03022 }
03023
03024 return ;
03025 }
|
|
|
Definition at line 708 of file plug_render.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, dynamic_flag, IM3D_OPEN, info_lab, MCW_set_bbox(), new_data_loaded, NO_DATASET_STRING, plint, PLUTO_cursorize, PLUTO_set_topshell(), range_faclab, range_lab, RECEIVE_DRAWNOTICE_MASK, RECEIVE_DSETCHANGE_MASK, RECEIVE_VIEWPOINT_MASK, redraw_MCW_pasgraf(), REND_load_cutout_state(), REND_make_widgets(), REND_numcutout_CB(), REND_xhair_recv(), render_handle, renderer_open, 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().
00709 {
00710 XmString xstr ;
00711
00712 /*-- sanity checks --*/
00713
00714 if( ! IM3D_OPEN(plint->im3d) ) return "AFNI Controller\nnot opened?!" ;
00715
00716 if( renderer_open ){
00717 XtMapWidget(shell) ;
00718 XRaiseWindow( XtDisplay(shell) , XtWindow(shell) ) ;
00719 return NULL ;
00720 }
00721
00722 im3d = plint->im3d ; /* save for local use */
00723
00724 /*-- create widgets, first time through --*/
00725
00726 if( shell == NULL ){
00727 dc = im3d->dc ; /* save this too */
00728 REND_make_widgets() ;
00729 PLUTO_set_topshell( plint , shell ) ; /* 22 Sep 2000 */
00730 RWC_visibilize_widget( shell ) ; /* 27 Sep 2000 */
00731 }
00732
00733 /*-- set titlebar --*/
00734
00735 { char ttl[PLUGIN_STRING_SIZE] ;
00736 sprintf( ttl , "AFNI Renderer %s" , AFNI_controller_label(im3d) ) ;
00737 XtVaSetValues( shell , XmNtitle , ttl , NULL ) ;
00738 }
00739
00740 /*-- set some widget values --*/
00741
00742 xstr = XmStringCreateLtoR( NO_DATASET_STRING ,
00743 XmFONTLIST_DEFAULT_TAG ) ;
00744 XtVaSetValues( info_lab , XmNlabelString , xstr , NULL ) ;
00745 XmStringFree(xstr) ;
00746
00747 xstr = XmStringCreateLtoR( "Min=?????? Max=??????" ,
00748 XmFONTLIST_DEFAULT_TAG ) ;
00749 XtVaSetValues( range_lab , XmNlabelString , xstr , NULL ) ;
00750 XmStringFree(xstr) ;
00751
00752 AV_assign_ival( clipbot_av , -CLIP_RANGE ) ;
00753 AV_assign_ival( cliptop_av , CLIP_RANGE ) ;
00754
00755 brickfac = 0.0 ;
00756 XtUnmanageChild( range_faclab ) ;
00757 XtUnmanageChild( clipbot_faclab ) ;
00758 XtUnmanageChild( cliptop_faclab ) ;
00759
00760 MCW_set_bbox( xhair_bbox , 0 ) ; xhair_flag = 0 ; xhair_ovc = 0 ;
00761 MCW_set_bbox( dynamic_bbox , 0 ) ; dynamic_flag = 0 ;
00762 MCW_set_bbox( accum_bbox , 0 ) ; accum_flag = 0 ;
00763
00764 MCW_set_bbox( automate_bbox , 0 ) ; automate_flag = 0 ;
00765 XtSetSensitive( autocompute_pb , False ) ;
00766
00767 AV_assign_ival( numcutout_av , 0 ) ; /* turn off cutouts */
00768 REND_numcutout_CB( numcutout_av , NULL ) ;
00769
00770 REND_load_cutout_state() ; old_cutout_state = current_cutout_state ;
00771
00772 AV_SENSITIZE( choose_av , False ) ;
00773
00774 /*--- some of the function widgets, too ---*/
00775
00776 if( wfunc_frame != NULL ){
00777
00778 TURNOFF_OVERLAY_WIDGETS ;
00779
00780 }
00781
00782 /*-- pop the widget up --*/
00783
00784 XtMapWidget(shell) ;
00785 PLUTO_cursorize(shell) ;
00786
00787 /*-- misc initialization --*/
00788
00789 dset = NULL ; /* not rendering anything */
00790 dset_ival = 0 ; /* if we were, it would be #0 */
00791 renderer_open = 1 ; /* renderer is now open for business */
00792 imseq = NULL ; /* no image window is open yet */
00793 grim = opim = NULL ; /* don't have volumes to render yet */
00794 render_handle = NULL ; /* don't have a renderer yet */
00795
00796 ovim = NULL ; /* no overlay volume yet */
00797 func_dset = NULL ; /* no functional dataset yet */
00798
00799 new_data_loaded = 0 ; /* not yet */
00800
00801 grim_showthru = opim_showthru = NULL ; /* 07 Jan 2000 */
00802
00803 set_MCW_pasgraf( his_graf , NULL ) ; /* set histogram graph to 0's */
00804 redraw_MCW_pasgraf( his_graf ) ;
00805
00806 xhair_ixold = -666 ; xhair_jyold = -666 ; xhair_kzold = -666 ;
00807
00808 /* 29 Mar 1999: register to receive updates from AFNI */
00809
00810 #if 1
00811 xhair_recv = AFNI_receive_init( im3d ,
00812 RECEIVE_VIEWPOINT_MASK
00813 | RECEIVE_DRAWNOTICE_MASK
00814 | RECEIVE_DSETCHANGE_MASK ,
00815 REND_xhair_recv , NULL ,
00816 "REND_xhair_recv" ) ;
00817 #else
00818 xhair_recv = AFNI_receive_init( im3d ,
00819 RECEIVE_VIEWPOINT_MASK ,
00820 REND_xhair_recv , NULL ,
00821 "REND_xhair_recv" ) ;
00822 #endif
00823
00824 MPROBE ;
00825 return NULL ;
00826 }
|
|
|
Definition at line 1725 of file plug_render.c. References anat_rowcol, AVOPT_columnize, COLSIZE, CUT_NONE, cutout_fstep, cutout_param_labels, cutout_type_labels, MCW_arrowval::fstep, REND_cutout::hrc, MCW_AV_downup, MCW_AV_noactext, MCW_BB_check, MCW_BB_noframe, MCW_reghelp_children(), MCW_register_help(), MCW_set_bbox(), REND_cutout::mustdo_bbox, mustdo_bbox_label, myXtNew, new_MCW_arrowval(), new_MCW_bbox(), new_MCW_optmenu(), NUM_CUTOUT_TYPES, REND_cutout::param_av, REND_cutout::param_lab, REND_cutout_set_CB(), REND_cutout_type_CB(), REND_param_CB(), REND_textact_CB(), REND_cutout::set_pb, REND_cutout::type_av, MCW_bbox::wrowcol, MCW_arrowval::wrowcol, and MCW_arrowval::wtext. Referenced by REND_make_widgets().
01726 {
01727 XmString xstr ;
01728 char str[64] ;
01729 REND_cutout * rc ;
01730
01731 rc = myXtNew(REND_cutout) ;
01732
01733 /* horizontal rowcol holds all that follows */
01734
01735 rc->hrc = XtVaCreateWidget(
01736 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01737 XmNorientation , XmHORIZONTAL ,
01738 XmNpacking , XmPACK_TIGHT ,
01739 XmNadjustLast , False ,
01740 XmNadjustMargin, False ,
01741 XmNtraversalOn , False ,
01742 XmNmarginWidth , 0 ,
01743 XmNmarginHeight, 0 ,
01744 XmNinitialResourcesPersistent , False ,
01745 NULL ) ;
01746
01747 /* menu to choose type of cutout */
01748
01749 sprintf(str,"#%d",n+1) ;
01750 rc->type_av = new_MCW_optmenu( rc->hrc , str ,
01751 0 , NUM_CUTOUT_TYPES-1 , CUT_NONE,0 ,
01752 REND_cutout_type_CB , NULL ,
01753 MCW_av_substring_CB , cutout_type_labels ) ;
01754 if( NUM_CUTOUT_TYPES >= COLSIZE )
01755 AVOPT_columnize( rc->type_av , 1+(NUM_CUTOUT_TYPES+1)/COLSIZE ) ;
01756
01757 MCW_reghelp_children( rc->type_av->wrowcol ,
01758 "Use this to set the type of cutout\n"
01759 "controlled by this line of inputs." ) ;
01760
01761 /* label to indicate parameter to enter */
01762
01763 xstr = XmStringCreateLtoR( cutout_param_labels[0] , XmFONTLIST_DEFAULT_TAG ) ;
01764 rc->param_lab = XtVaCreateWidget(
01765 "AFNI" , xmLabelWidgetClass , rc->hrc ,
01766 XmNlabelString , xstr ,
01767 XmNinitialResourcesPersistent , False ,
01768 NULL ) ;
01769 XmStringFree(xstr) ;
01770
01771 /* arrowval to enter parameter */
01772
01773 rc->param_av = new_MCW_arrowval( rc->hrc , NULL ,
01774 MCW_AV_downup , -999999,999999,0 ,
01775 MCW_AV_noactext , -1 ,
01776 REND_param_CB , NULL , NULL,NULL ) ;
01777 rc->param_av->fstep = cutout_fstep ;
01778 XtAddCallback( rc->param_av->wtext, XmNactivateCallback, REND_textact_CB, rc->param_av ) ;
01779 XtUnmanageChild( rc->param_av->wrowcol ) ;
01780
01781 /* button to "Get" parameter from AFNI */
01782
01783 xstr = XmStringCreateLtoR( "Get" , XmFONTLIST_DEFAULT_TAG ) ;
01784 rc->set_pb = XtVaCreateWidget(
01785 "AFNI" , xmPushButtonWidgetClass , rc->hrc ,
01786 XmNlabelString , xstr ,
01787 XmNtraversalOn , False ,
01788 XmNinitialResourcesPersistent , False ,
01789 NULL ) ;
01790 XmStringFree(xstr) ;
01791 XtAddCallback( rc->set_pb, XmNactivateCallback, REND_cutout_set_CB, NULL ) ;
01792 MCW_register_help( rc->set_pb , "Use this to get the parameter\n"
01793 "for this cutout from the current\n"
01794 "AFNI crosshair location." ) ;
01795
01796 /* button box to allow "must do" status (overriding "AND") */
01797
01798 rc->mustdo_bbox = new_MCW_bbox( rc->hrc ,
01799 1 , mustdo_bbox_label ,
01800 MCW_BB_check , MCW_BB_noframe ,
01801 NULL , NULL ) ;
01802
01803 MCW_set_bbox( rc->mustdo_bbox , 0 ) ;
01804
01805 MCW_reghelp_children( rc->mustdo_bbox->wrowcol ,
01806 "Use this to force the cutout\n"
01807 "to be performed, even if the\n"
01808 "chosen logic is 'AND'. If the\n"
01809 "logic is 'OR', this does nothing." ) ;
01810
01811 XtUnmanageChild( rc->mustdo_bbox->wrowcol ) ;
01812
01813 XtManageChild( rc->hrc ) ;
01814 return rc ;
01815 }
|
|
|
Definition at line 864 of file plug_render.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, MCW_arrowval::fstep, help_pb, info_lab, 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, NUM_precalc, PASGRAF_BAR, plint, POPUP_cursorize, precalc_ival, precalc_strings, range_faclab, range_lab, reload_pb, REND_accum_CB(), REND_angle_CB(), REND_autocancel_CB(), REND_autocompute_CB(), REND_autoflag_CB(), REND_choose_av_CB(), REND_choose_CB(), REND_clip_CB(), REND_done_CB(), REND_dummy_av_label, REND_dynamic_CB(), REND_func_widgets(), REND_graf_CB(), REND_incrot_CB(), REND_make_cutout(), REND_numcutout_CB(), REND_opacity_scale_CB(), REND_open_func_CB(), REND_precalc_CB(), REND_script_menu(), REND_textact_CB(), REND_xhair_CB(), REND_xhair_EV(), 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 REND_main().
00865 {
00866 XmString xstr ;
00867 char str[64] ;
00868 Widget hrc , vrc ;
00869 int ii ;
00870 char * env ;
00871 float val ;
00872
00873 /***=============================================================*/
00874
00875 /*** top level shell for window manager ***/
00876
00877 shell =
00878 XtVaAppCreateShell(
00879 "AFNI" , "AFNI" , topLevelShellWidgetClass , dc->display ,
00880
00881 XmNtitle , "AFNI Renderer" , /* top of window */
00882 XmNiconName , "Renderer" , /* label on icon */
00883 XmNdeleteResponse , XmDO_NOTHING , /* deletion handled below */
00884 XmNallowShellResize , True , /* let code resize shell? */
00885 XmNmappedWhenManaged , False , /* must map it manually */
00886 XmNinitialResourcesPersistent , False ,
00887 NULL ) ;
00888
00889 DC_yokify( shell , dc ) ; /* 14 Sep 1998 */
00890
00891 #ifndef DONT_INSTALL_ICONS
00892 if( afni48_good ) /* set icon pixmap */
00893 XtVaSetValues( shell ,
00894 XmNiconPixmap , afni48_pixmap ,
00895 NULL ) ;
00896 #endif
00897
00898 if( MCW_isitmwm(shell) ) /* remove some MWM functions */
00899 XtVaSetValues( shell ,
00900 XmNmwmFunctions ,
00901 MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE ,
00902 NULL ) ;
00903
00904 XmAddWMProtocolCallback( /* make "Close" window menu work */
00905 shell ,
00906 XmInternAtom( dc->display , "WM_DELETE_WINDOW" , False ) ,
00907 REND_done_CB , (XtPointer) plint ) ;
00908
00909 /*** horizontal rowcol to hold ALL interface stuff ***/
00910
00911 top_rowcol = XtVaCreateWidget(
00912 "AFNI" , xmRowColumnWidgetClass , shell ,
00913 XmNorientation , XmHORIZONTAL ,
00914 XmNpacking , XmPACK_TIGHT ,
00915 XmNadjustLast , False ,
00916 XmNadjustMargin , False ,
00917 XmNtraversalOn , False ,
00918 XmNmarginWidth , 0 ,
00919 XmNmarginHeight , 0 ,
00920 XmNinitialResourcesPersistent , False ,
00921 NULL ) ;
00922
00923 /*** vertical rowcolumn widget to hold anat interface stuff ***/
00924
00925 anat_frame = XtVaCreateWidget(
00926 "AFNI" , xmFrameWidgetClass , top_rowcol ,
00927 XmNshadowType , XmSHADOW_ETCHED_IN ,
00928 XmNshadowThickness , 5 ,
00929 XmNtraversalOn , False ,
00930 XmNinitialResourcesPersistent , False ,
00931 NULL ) ;
00932
00933 anat_rowcol = XtVaCreateWidget(
00934 "AFNI" , xmRowColumnWidgetClass , anat_frame ,
00935 XmNpacking , XmPACK_TIGHT ,
00936 XmNorientation , XmVERTICAL ,
00937 XmNadjustLast , False ,
00938 XmNadjustMargin, False ,
00939 XmNtraversalOn , False ,
00940 XmNinitialResourcesPersistent , False ,
00941 NULL ) ;
00942
00943 /***=============================================================*/
00944
00945 /*** label at top to let user know who we are ***/
00946
00947 xstr = XmStringCreateLtoR( NO_DATASET_STRING ,
00948 XmFONTLIST_DEFAULT_TAG ) ;
00949 info_lab = XtVaCreateManagedWidget(
00950 "AFNI" , xmLabelWidgetClass , anat_rowcol ,
00951 XmNlabelString , xstr ,
00952 XmNrecomputeSize , False ,
00953 XmNinitialResourcesPersistent , False ,
00954 NULL ) ;
00955 XmStringFree(xstr) ;
00956 MCW_register_help( info_lab , "Shows dataset being rendered" ) ;
00957
00958 /***** top row of widgets to choose dataset and sub-brick *****/
00959
00960 SEP_HOR(anat_rowcol) ; /* separator widget */
00961
00962 hrc = XtVaCreateWidget(
00963 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
00964 XmNorientation , XmHORIZONTAL ,
00965 XmNpacking , XmPACK_TIGHT ,
00966 XmNadjustLast , False ,
00967 XmNadjustMargin , False ,
00968 XmNtraversalOn , False ,
00969 XmNmarginWidth , 0 ,
00970 XmNmarginHeight , 0 ,
00971 XmNinitialResourcesPersistent , False ,
00972 NULL ) ;
00973
00974 /*** button to let user choose dataset to render ***/
00975
00976 xstr = XmStringCreateLtoR( "Choose Underlay Dataset" , XmFONTLIST_DEFAULT_TAG ) ;
00977 choose_pb = XtVaCreateManagedWidget(
00978 "AFNI" , xmPushButtonWidgetClass , hrc ,
00979 XmNalignment , XmALIGNMENT_CENTER ,
00980 XmNlabelString , xstr ,
00981 XmNtraversalOn , False ,
00982 XmNinitialResourcesPersistent , False ,
00983 NULL ) ;
00984 XmStringFree(xstr) ;
00985 XtAddCallback( choose_pb, XmNactivateCallback, REND_choose_CB, NULL ) ;
00986 MCW_register_help( choose_pb ,
00987 "Use this to popup a\n"
00988 "'chooser' that lets\n"
00989 "you select which\n"
00990 "dataset to render."
00991 ) ;
00992
00993 /*** menu to let user choose sub-brick to deal with ***/
00994
00995 SEP_VER(hrc) ;
00996
00997 choose_av = new_MCW_arrowval(
00998 hrc , /* parent Widget */
00999 "Brick " , /* label */
01000 MCW_AV_optmenu , /* option menu style */
01001 0 , /* first option */
01002 1 , /* last option */
01003 0 , /* initial selection */
01004 MCW_AV_readtext , /* ignored but needed */
01005 0 , /* decimal shift */
01006 REND_choose_av_CB , /* callback when changed */
01007 NULL , /* data for above */
01008 MCW_av_substring_CB , /* text creation routine */
01009 REND_dummy_av_label /* data for above */
01010 ) ;
01011
01012 /*** button to open and close overlay panel ***/
01013
01014 SEP_VER(hrc) ;
01015
01016 xstr = XmStringCreateLtoR( "Overlay" , XmFONTLIST_DEFAULT_TAG ) ;
01017 wfunc_open_pb = XtVaCreateManagedWidget(
01018 "AFNI" , xmPushButtonWidgetClass , hrc ,
01019 XmNalignment , XmALIGNMENT_CENTER ,
01020 XmNlabelString , xstr ,
01021 XmNtraversalOn , False ,
01022 XmNinitialResourcesPersistent , False ,
01023 NULL ) ;
01024 XmStringFree(xstr) ;
01025 XtAddCallback( wfunc_open_pb, XmNactivateCallback, REND_open_func_CB, NULL ) ;
01026
01027 XtManageChild(hrc) ;
01028
01029 /***=============================================================*/
01030
01031 /*** horizontal rowcol for data value clipping ***/
01032
01033 SEP_HOR(anat_rowcol) ; /* separator */
01034
01035 hrc = XtVaCreateWidget(
01036 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01037 XmNorientation , XmHORIZONTAL ,
01038 XmNpacking , XmPACK_TIGHT ,
01039 XmNadjustLast , False ,
01040 XmNadjustMargin , False ,
01041 XmNtraversalOn , False ,
01042 XmNmarginWidth , 0 ,
01043 XmNmarginHeight , 0 ,
01044 XmNinitialResourcesPersistent , False ,
01045 NULL ) ;
01046
01047 /*** vertical rowcol for dataset range information labels ***/
01048
01049 vrc = XtVaCreateWidget(
01050 "AFNI" , xmRowColumnWidgetClass , hrc ,
01051 XmNpacking , XmPACK_TIGHT ,
01052 XmNorientation , XmVERTICAL ,
01053 XmNadjustLast , False ,
01054 XmNadjustMargin, False ,
01055 XmNtraversalOn , False ,
01056 XmNmarginWidth , 0 ,
01057 XmNmarginHeight, 0 ,
01058 XmNinitialResourcesPersistent , False ,
01059 NULL ) ;
01060
01061 /*** 1st label for dataset range information ***/
01062
01063 xstr = XmStringCreateLtoR( "Min=?????? Max=??????" , XmFONTLIST_DEFAULT_TAG ) ;
01064 range_lab = XtVaCreateManagedWidget(
01065 "AFNI" , xmLabelWidgetClass , vrc ,
01066 XmNlabelString , xstr ,
01067 XmNrecomputeSize , False ,
01068 XmNinitialResourcesPersistent , False ,
01069 NULL ) ;
01070 XmStringFree(xstr) ;
01071
01072 MCW_register_help( range_lab ,
01073 "Shows the range of the data stored\n"
01074 "in the brick voxels.\n"
01075 "\n"
01076 "N.B.: These values are NOT scaled\n"
01077 " by any floating point\n"
01078 " brick scaling factor."
01079 ) ;
01080
01081 /*** 2nd label for scaled dataset range information ***/
01082
01083 xstr = XmStringCreateLtoR( "[123456789 123456789]" , XmFONTLIST_DEFAULT_TAG ) ;
01084 range_faclab = XtVaCreateWidget(
01085 "AFNI" , xmLabelWidgetClass , vrc ,
01086 XmNlabelString , xstr ,
01087 XmNrecomputeSize , False ,
01088 XmNinitialResourcesPersistent , False ,
01089 NULL ) ;
01090 XmStringFree(xstr) ;
01091
01092 MCW_register_help( range_faclab ,
01093 "Shows the range of data stored\n"
01094 "in the brick, this time multiplied\n"
01095 "by the brick's scaling factor."
01096 ) ;
01097
01098 XtManageChild(vrc) ;
01099
01100 SEP_VER(hrc) ;
01101
01102 /*** arrowvals to get dataset clip levels ***/
01103
01104 /*** vertical rowcol for Bot arrowval ***/
01105
01106 vrc = XtVaCreateWidget(
01107 "AFNI" , xmRowColumnWidgetClass , hrc ,
01108 XmNpacking , XmPACK_TIGHT ,
01109 XmNorientation , XmVERTICAL ,
01110 XmNadjustLast , False ,
01111 XmNadjustMargin, False ,
01112 XmNtraversalOn , False ,
01113 XmNmarginWidth , 0 ,
01114 XmNmarginHeight, 0 ,
01115 XmNinitialResourcesPersistent , False ,
01116 NULL ) ;
01117
01118 clipbot_av = new_MCW_arrowval( vrc , "Bot " ,
01119 MCW_AV_downup , -CLIP_RANGE,CLIP_RANGE,-CLIP_RANGE ,
01120 MCW_AV_editext , 0 ,
01121 REND_clip_CB , NULL , NULL,NULL ) ;
01122
01123 MCW_reghelp_children( clipbot_av->wrowcol ,
01124 "All (unscaled) voxel values below\n"
01125 "'Bot' will be increased to this\n"
01126 "value. The larger of 'Bot' and\n"
01127 "'Min' is the left edge of the\n"
01128 "brick graphs shown below."
01129 ) ;
01130
01131 xstr = XmStringCreateLtoR( "[-> 123456789]" , XmFONTLIST_DEFAULT_TAG ) ;
01132 clipbot_faclab = XtVaCreateWidget(
01133 "AFNI" , xmLabelWidgetClass , vrc ,
01134 XmNlabelString , xstr ,
01135 XmNrecomputeSize , False ,
01136 XmNinitialResourcesPersistent , False ,
01137 NULL ) ;
01138 XmStringFree(xstr) ;
01139
01140 MCW_register_help( clipbot_faclab ,
01141 "Shows the scaled\nvalue of 'Bot'." ) ;
01142
01143 XtManageChild(vrc) ;
01144
01145 SEP_VER(hrc) ;
01146
01147 /*** vertical rowcol for Top arrowval ***/
01148
01149 vrc = XtVaCreateWidget(
01150 "AFNI" , xmRowColumnWidgetClass , hrc ,
01151 XmNpacking , XmPACK_TIGHT ,
01152 XmNorientation , XmVERTICAL ,
01153 XmNadjustLast , False ,
01154 XmNadjustMargin, False ,
01155 XmNtraversalOn , False ,
01156 XmNmarginWidth , 0 ,
01157 XmNmarginHeight, 0 ,
01158 XmNinitialResourcesPersistent , False ,
01159 NULL ) ;
01160
01161 cliptop_av = new_MCW_arrowval( vrc , "Top " ,
01162 MCW_AV_downup , -CLIP_RANGE,CLIP_RANGE, CLIP_RANGE ,
01163 MCW_AV_editext , 0 ,
01164 REND_clip_CB , NULL , NULL,NULL ) ;
01165
01166 MCW_reghelp_children( cliptop_av->wrowcol ,
01167 "All (unscaled) voxel values above\n"
01168 "'Top' will be decreased to this\n"
01169 "value. The smaller of 'Top' and\n"
01170 "'Max' is the right edge of the\n"
01171 "brick graphs shown below."
01172 ) ;
01173
01174 xstr = XmStringCreateLtoR( "[-> 123456789]" , XmFONTLIST_DEFAULT_TAG ) ;
01175 cliptop_faclab = XtVaCreateWidget(
01176 "AFNI" , xmLabelWidgetClass , vrc ,
01177 XmNlabelString , xstr ,
01178 XmNrecomputeSize , False ,
01179 XmNinitialResourcesPersistent , False ,
01180 NULL ) ;
01181 XmStringFree(xstr) ;
01182
01183 MCW_register_help( clipbot_faclab ,
01184 "Shows the scaled\nvalue of 'Top'." ) ;
01185
01186 XtManageChild(vrc) ;
01187 XtManageChild(hrc) ;
01188
01189 /***=============================================================*/
01190
01191 /*** horizontal rowcol for graphs ***/
01192
01193 SEP_HOR(anat_rowcol) ; /* separator */
01194
01195 hrc = XtVaCreateWidget(
01196 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01197 XmNorientation , XmHORIZONTAL ,
01198 XmNpacking , XmPACK_TIGHT ,
01199 XmNadjustLast , False ,
01200 XmNadjustMargin, False ,
01201 XmNtraversalOn , False ,
01202 XmNmarginWidth , 0 ,
01203 XmNmarginHeight, 0 ,
01204 XmNinitialResourcesPersistent , False ,
01205 NULL ) ;
01206
01207 /*** graph to control grayscale ***/
01208
01209 gry_graf = new_MCW_graf( hrc , im3d->dc, "Brightness", REND_graf_CB, NULL ) ;
01210
01211 MCW_reghelp_children( gry_graf->topform ,
01212 "This controls the brightness of each\n"
01213 "voxel, as a function of input signal.\n"
01214 "After you change this curve, you\n"
01215 "must press 'Draw' to see the effect." ) ;
01216
01217 SEP_VER(hrc) ;
01218
01219 /*** graph to control opacity ***/
01220
01221 opa_graf = new_MCW_graf( hrc , im3d->dc, "Opacity", REND_graf_CB, NULL ) ;
01222
01223 MCW_reghelp_children( opa_graf->topform ,
01224 "This controls the opacity of each\n"
01225 "voxel, as a function of input signal.\n\n"
01226 "After you change this curve, you\n"
01227 "must press 'Draw' to see the effect." ) ;
01228
01229 SEP_VER(hrc) ;
01230
01231 /*** passive graph to show data distribution ***/
01232
01233 his_graf = new_MCW_pasgraf( hrc , im3d->dc , "Sqrt Histogram" ) ;
01234 his_graf->mode = PASGRAF_BAR ;
01235
01236 MCW_reghelp_children( his_graf->topform ,
01237 "The graph height is proportional to\n"
01238 "the square-root of the histogram of\n"
01239 "the input signal.\n"
01240 "\n"
01241 "N.B.: The histogram at 0 is not included\n"
01242 " in the scaling, since it tends to\n"
01243 " be huge. The square-root is graphed\n"
01244 " to enhance the range of the plot." ) ;
01245
01246 XtManageChild(hrc) ;
01247
01248 /***=============================================================*/
01249
01250 /*** horizontal rowcol to hold cutout controls ***/
01251
01252 SEP_HOR(anat_rowcol) ; /* separator */
01253
01254 hrc = XtVaCreateWidget(
01255 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01256 XmNorientation , XmHORIZONTAL ,
01257 XmNpacking , XmPACK_TIGHT ,
01258 XmNadjustLast , False ,
01259 XmNadjustMargin, False ,
01260 XmNtraversalOn , False ,
01261 XmNmarginWidth , 0 ,
01262 XmNmarginHeight, 0 ,
01263 XmNinitialResourcesPersistent , False ,
01264 NULL ) ;
01265
01266 /*** option menu to choose number of cutouts ***/
01267
01268 numcutout_av = new_MCW_optmenu( hrc , "Cutouts " ,
01269 0 , MAX_CUTOUTS , num_cutouts,0 ,
01270 REND_numcutout_CB , NULL , NULL , NULL ) ;
01271
01272 MCW_reghelp_children( numcutout_av->wrowcol ,
01273 "Use this to choose the number of cutouts\n"
01274 "to apply before rendering. Controls for\n"
01275 "the number selected will be activated below."
01276 ) ;
01277
01278 /*** option menu to choose cutout logic ***/
01279
01280 logiccutout_av = new_MCW_optmenu( hrc , "+" ,
01281 0 , 1 , logic_cutout,0 ,
01282 NULL , NULL ,
01283 MCW_av_substring_CB , cutout_logic_labels ) ;
01284
01285 MCW_reghelp_children( logiccutout_av->wrowcol ,
01286 "Use this to control the logic of how\n"
01287 "multiple cutouts are combined:\n\n"
01288 "OR = the union of all regions\n"
01289 "AND = the intersection of all regions"
01290 ) ;
01291
01292 SEP_VER(hrc) ; /* separator */
01293
01294 /*** arrowval to select opacity reduction factor ***/
01295
01296 opacity_scale_av = new_MCW_arrowval( hrc , "Opacity Factor " ,
01297 MCW_AV_downup , 0,10,10 ,
01298 MCW_AV_noactext , 1 ,
01299 REND_opacity_scale_CB , NULL , NULL,NULL ) ;
01300 XtAddCallback( opacity_scale_av->wtext, XmNactivateCallback,
01301 REND_textact_CB, opacity_scale_av ) ;
01302
01303 /*** 07 July 1999: insert menu to control scripting actions ***/
01304
01305 #ifdef USE_SCRIPTING
01306 SEP_VER(hrc) ;
01307 REND_script_menu( hrc ) ;
01308 #endif
01309
01310 XtManageChild(hrc) ;
01311
01312 /*** Create the widgets for each cutout ***/
01313
01314 for( ii=0 ; ii < MAX_CUTOUTS ; ii++ ) cutouts[ii] = REND_make_cutout(ii) ;
01315
01316 /***=============================================================*/
01317
01318 /*** horizontal rowcol to hold automation controls ***/
01319
01320 SEP_HOR(anat_rowcol) ; /* separator */
01321
01322 hrc = XtVaCreateWidget(
01323 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01324 XmNorientation , XmHORIZONTAL ,
01325 XmNpacking , XmPACK_TIGHT ,
01326 XmNadjustLast , False ,
01327 XmNadjustMargin, False ,
01328 XmNtraversalOn , False ,
01329 XmNmarginWidth , 0 ,
01330 XmNmarginHeight, 0 ,
01331 XmNinitialResourcesPersistent , False ,
01332 NULL ) ;
01333
01334 /*** button box to enable automation mode ***/
01335
01336 automate_bbox = new_MCW_bbox( hrc ,
01337 1 , automate_bbox_label ,
01338 MCW_BB_check , MCW_BB_noframe ,
01339 REND_autoflag_CB , NULL ) ;
01340
01341 MCW_set_bbox( automate_bbox , automate_flag ) ;
01342
01343 MCW_reghelp_children( automate_bbox->wrowcol ,
01344 "IN: Enable automation of renderings\n"
01345 "OUT: Don't allow automated rendering" ) ;
01346
01347 SEP_VER(hrc) ; /* separator */
01348
01349 /*** arrowval to control number of frames to compute */
01350
01351 autoframe_av = new_MCW_arrowval( hrc , "Frames " ,
01352 MCW_AV_downup , 2,999,5 ,
01353 MCW_AV_editext , 0 ,
01354 NULL , NULL , NULL,NULL ) ;
01355
01356 MCW_reghelp_children( autoframe_av->wrowcol ,
01357 "Use this to set the number\n"
01358 "of frames that will be rendered\n"
01359 "when 'Compute' is activated." ) ;
01360
01361 SEP_VER(hrc) ; /* separator */
01362
01363 /*** pushbutton to activate the automation ***/
01364
01365 xstr = XmStringCreateLtoR( "Compute" , XmFONTLIST_DEFAULT_TAG ) ;
01366 autocompute_pb = XtVaCreateManagedWidget(
01367 "AFNI" , xmPushButtonWidgetClass , hrc ,
01368 XmNlabelString , xstr ,
01369 XmNtraversalOn , False ,
01370 XmNinitialResourcesPersistent , False ,
01371 NULL ) ;
01372 XmStringFree(xstr) ;
01373 XtAddCallback( autocompute_pb, XmNactivateCallback, REND_autocompute_CB, NULL ) ;
01374 MCW_register_help( autocompute_pb ,
01375 "Use this to start the\n"
01376 "automation of rendering" ) ;
01377
01378 /*** pushbutton to cancel the automation [not managed now] ***/
01379
01380 xstr = XmStringCreateLtoR( " * CANCEL * " , XmFONTLIST_DEFAULT_TAG ) ;
01381 autocancel_pb = XtVaCreateWidget(
01382 "AFNI" , xmPushButtonWidgetClass , hrc ,
01383 XmNlabelString , xstr ,
01384 XmNtraversalOn , False ,
01385 XmNinitialResourcesPersistent , False ,
01386 NULL ) ;
01387 XmStringFree(xstr) ;
01388 XtAddCallback( autocancel_pb, XmNactivateCallback, REND_autocancel_CB, NULL ) ;
01389
01390 XtManageChild(hrc) ;
01391
01392 /***=============================================================*/
01393
01394 /*** horizontal rowcol to hold miscellaneous display controls ***/
01395
01396 SEP_HOR(anat_rowcol) ; /* separator */
01397
01398 hrc = XtVaCreateWidget(
01399 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01400 XmNorientation , XmHORIZONTAL ,
01401 XmNpacking , XmPACK_TIGHT ,
01402 XmNadjustLast , False ,
01403 XmNadjustMargin, False ,
01404 XmNtraversalOn , False ,
01405 XmNmarginWidth , 0 ,
01406 XmNmarginHeight, 0 ,
01407 XmNinitialResourcesPersistent , False ,
01408 NULL ) ;
01409
01410 /*** option menu to choose precalculation level ***/
01411
01412 precalc_av = new_MCW_optmenu( hrc , "Precalc " ,
01413 0 , NUM_precalc-1 , precalc_ival,0 ,
01414 REND_precalc_CB , NULL ,
01415 MCW_av_substring_CB , precalc_strings ) ;
01416
01417 MCW_reghelp_children( precalc_av->wrowcol ,
01418 "Use this to set the amount of precalculation\n"
01419 "performed before rendering. The higher levels\n"
01420 "will speed drawing, but will require overhead\n"
01421 "anytime the dataset, colors, or opacity are\n"
01422 "modified (i.e., anything but the angles).\n"
01423 "\n"
01424 "Low = slow rendering, no precalculation\n"
01425 "Medium = faster rendering, some precalculation\n"
01426 "High = fastest rendering, much precalculation"
01427 ) ;
01428
01429 SEP_VER(hrc) ; /* separator */
01430
01431 /*** button box to show AFNI crosshair location ***/
01432
01433 xhair_bbox = new_MCW_bbox( hrc ,
01434 1 , xhair_bbox_label ,
01435 MCW_BB_check , MCW_BB_noframe ,
01436 REND_xhair_CB , NULL ) ;
01437
01438 /* 08 Mar 2001: Button3 popup to control xhair color */
01439
01440 XtInsertEventHandler( xhair_bbox->wbut[0] ,
01441
01442 0
01443 | ButtonPressMask /* button presses */
01444 ,
01445 FALSE , /* nonmaskable events? */
01446 REND_xhair_EV , /* handler */
01447 NULL , /* client data */
01448 XtListTail /* last in queue */
01449 ) ;
01450
01451 MCW_set_bbox( xhair_bbox , xhair_flag ) ;
01452
01453 MCW_reghelp_children( xhair_bbox->wrowcol ,
01454 "IN: show AFNI crosshair location\n"
01455 "OUT: don't show AFNI crosshairs\n"
01456 "\n"
01457 "N.B.: Must press Reload to see the\n"
01458 " crosshair position updated\n"
01459 " if it is changed in AFNI."
01460 ) ;
01461
01462 SEP_VER(hrc) ; /* separator */
01463
01464 /*** button box to do dynamic updates ***/
01465
01466 dynamic_bbox = new_MCW_bbox( hrc ,
01467 1 , dynamic_bbox_label ,
01468 MCW_BB_check , MCW_BB_noframe ,
01469 REND_dynamic_CB , NULL ) ;
01470
01471 MCW_set_bbox( dynamic_bbox , dynamic_flag ) ;
01472
01473 MCW_reghelp_children( dynamic_bbox->wrowcol ,
01474 "IN: Redraw immediately upon changes\n"
01475 "OUT: Redraw only when commanded\n"
01476 "\n"
01477 "N.B.: Changes to the AFNI crosshair\n"
01478 " position are not detectable\n"
01479 " to force a dynamic redraw." ) ;
01480
01481 SEP_VER(hrc) ; /* separator */
01482
01483 /*** button box to accumulate images ***/
01484
01485 accum_bbox = new_MCW_bbox( hrc ,
01486 1 , accum_bbox_label ,
01487 MCW_BB_check , MCW_BB_noframe ,
01488 REND_accum_CB , NULL ) ;
01489
01490 MCW_set_bbox( accum_bbox , accum_flag ) ;
01491
01492 MCW_reghelp_children( accum_bbox->wrowcol ,
01493 "IN: Accumulate images for viewing\n"
01494 "OUT: Save only the latest images" ) ;
01495
01496 XtManageChild(hrc) ;
01497
01498 /***=============================================================*/
01499
01500 /*** horizontal rowcol to hold angle arrows ***/
01501
01502 SEP_HOR(anat_rowcol) ; /* separator widget */
01503
01504 hrc = XtVaCreateWidget(
01505 "AFNI" , xmRowColumnWidgetClass , anat_rowcol ,
01506 XmNorientation , XmHORIZONTAL ,
01507 XmNpacking , XmPACK_TIGHT ,
01508 XmNadjustLast , False ,
01509 XmNadjustMargin, False ,
01510 XmNtraversalOn , False ,
01511 XmNmarginWidth , 0 ,
01512 XmNmarginHeight, 0 ,
01513 XmNinitialResourcesPersistent , False ,
01514 NULL ) ;
01515
01516 /*==========================================================================*/
01517 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
01518 { static char * incrot_bbox_label[1] = { "I" } ;
01519 incrot_bbox = new_MCW_bbox( hrc , 1 , incrot_bbox_label ,
01520 MCW_BB_check , MCW_BB_noframe ,
01521 REND_incrot_CB, NULL ) ;
01522 MCW_set_bbox( incrot_bbox , 0 ) ;
01523 MCW_reghelp_children( incrot_bbox->wrowcol ,
01524 "OUT: angles increment globally\n"
01525 "IN: angles increment locally" ) ;
01526 MCW_reghint_children( incrot_bbox->wrowcol , "Incremental rotation?" ) ;
01527 SEP_VER(hrc) ;
01528 }
01529 #endif /* ALLOW_INCROT */
01530
01531 /** N.B.: removed trailing space from "Roll", "Pitch", "Yaw" labels
01532 for arrowvals below, to make space for the bbox created above **/
01533 /*==========================================================================*/
01534
01535 /*** arrowvals to choose rotation angles ***/
01536
01537 roll_av = new_MCW_arrowval( hrc , "Roll" ,
01538 MCW_AV_downup , -999999,999999,(int)(0.1*angle_roll) ,
01539 MCW_AV_noactext , -1 ,
01540 REND_angle_CB , NULL , NULL,NULL ) ;
01541 roll_av->fstep = angle_fstep ;
01542 MCW_reghelp_children( roll_av->wrowcol ,
01543 "Use this to set the roll angle\n"
01544 "(about the I-S axis) for viewing,\n"
01545 "then press 'Draw'"
01546 ) ;
01547 XtAddCallback( roll_av->wtext, XmNactivateCallback, REND_textact_CB, roll_av ) ;
01548
01549 SEP_VER(hrc) ; /* separator widget */
01550
01551 pitch_av = new_MCW_arrowval( hrc , "Pitch" ,
01552 MCW_AV_downup , -999999,999999,(int)(0.1*angle_pitch) ,
01553 MCW_AV_noactext , -1 ,
01554 REND_angle_CB , NULL , NULL,NULL ) ;
01555 pitch_av->fstep = angle_fstep ;
01556 MCW_reghelp_children( pitch_av->wrowcol ,
01557 "Use this to set the pitch angle\n"
01558 "(about the R-L axis) for viewing,\n"
01559 "then press 'Draw'"
01560 ) ;
01561 XtAddCallback( pitch_av->wtext, XmNactivateCallback, REND_textact_CB, pitch_av ) ;
01562
01563 SEP_VER(hrc) ; /* separator widget */
01564
01565 yaw_av = new_MCW_arrowval( hrc , "Yaw" ,
01566 MCW_AV_downup , -999999,999999,(int)(0.1*angle_yaw) ,
01567 MCW_AV_noactext , -1 ,
01568 REND_angle_CB , NULL , NULL,NULL ) ;
01569 yaw_av->fstep = angle_fstep ;
01570 MCW_reghelp_children( yaw_av->wrowcol ,
01571 "Use this to set the yaw angle\n"
01572 "(about the A-P axis) for viewing,\n"
01573 "then press 'Draw'"
01574 ) ;
01575 XtAddCallback( yaw_av->wtext, XmNactivateCallback, REND_textact_CB, yaw_av ) ;
01576
01577 /** 26 Apr 2002: add hints to these arrows as well **/
01578
01579 MCW_reghint_children( roll_av->wrowcol , "Angle about I-S axis" ) ;
01580 MCW_reghint_children( pitch_av->wrowcol , "Angle about R-L axis" ) ;
01581 MCW_reghint_children( yaw_av->wrowcol , "Angle about A-P axis" ) ;
01582
01583 /*==========================================================================*/
01584 #if 1
01585 #ifdef ALLOW_INCROT /* 26 Apr 2002 - RWCox */
01586 XtVaSetValues( roll_av->wtext , XmNcolumns , 8 , NULL ) ;
01587 XtVaSetValues( pitch_av->wtext , XmNcolumns , 8 , NULL ) ;
01588 XtVaSetValues( yaw_av->wtext , XmNcolumns , 8 , NULL ) ;
01589 #endif
01590 #endif
01591 /*==========================================================================*/
01592
01593 XtManageChild(hrc) ;
01594
01595 /***=============================================================*/
01596
01597 /*** a set of action buttons below the line ***/
01598
01599 SEP_HOR(anat_rowcol) ;
01600
01601 (void) MCW_action_area( anat_rowcol , REND_actor , NACT ) ;
01602
01603 help_pb = (Widget) REND_actor[0].data ;
01604 draw_pb = (Widget) REND_actor[1].data ;
01605 reload_pb = (Widget) REND_actor[2].data ;
01606 done_pb = (Widget) REND_actor[3].data ;
01607
01608 /***=============================================================*/
01609
01610 /*** that's all ***/
01611
01612 XtManageChild(anat_rowcol) ;
01613 XtManageChild(anat_frame) ;
01614
01615 XtManageChild(top_rowcol) ;
01616 XtRealizeWidget(shell) ; /* will not be mapped */
01617
01618 WAIT_for_window(shell) ;
01619 POPUP_cursorize(xhair_bbox->wbut[0]) ;
01620
01621 /*** 12 July 1999: make the overlay widgets now, instead of later ***/
01622
01623 REND_func_widgets() ;
01624
01625 #if 0
01626 XtVaSetValues( anat_rowcol , XmNresizeWidth , False , NULL ) ;
01627 #endif
01628 return ;
01629 }
|
|
||||||||||||
|
Definition at line 6091 of file plug_render.c. References func_mixshade, and MCW_arrowval::ival. Referenced by REND_func_widgets().
06092 {
06093 func_mixshade = av->ival ;
06094 return ;
06095 }
|
|
||||||||||||
|
Definition at line 3821 of file plug_render.c. References FIX_SCALE_SIZE, HIDE_SCALE, MCW_arrowval::ival, MAX_CUTOUTS, and num_cutouts. Referenced by REND_main(), REND_make_widgets(), and REND_state_to_widgets().
03822 {
03823 int ii ;
03824 num_cutouts = av->ival ;
03825
03826 HIDE_SCALE ;
03827
03828 for( ii=0 ; ii < MAX_CUTOUTS ; ii++ ){
03829 if( ii < num_cutouts )
03830 XtManageChild( cutouts[ii]->hrc ) ;
03831 else
03832 XtUnmanageChild( cutouts[ii]->hrc ) ;
03833 }
03834
03835 FIX_SCALE_SIZE ;
03836 return ;
03837 }
|
|
||||||||||||
|
Definition at line 6522 of file plug_render.c. References AV_assign_fval(), dynamic_flag, MCW_arrowval::fval, MIN_OPACITY_SCALE, REND_draw_CB(), and render_handle. Referenced by REND_make_widgets(), and REND_state_to_widgets().
06523 {
06524 if( av->fval < MIN_OPACITY_SCALE ) AV_assign_fval(av,MIN_OPACITY_SCALE) ;
06525 if( cd == NULL && dynamic_flag && render_handle != NULL )
06526 REND_draw_CB(NULL,NULL,NULL) ;
06527 return ;
06528 }
|
|
||||||||||||||||
|
Definition at line 5532 of file plug_render.c. References client_data, FIX_SCALE_SIZE, HIDE_SCALE, MCW_invert_widget(), POPUP_cursorize, REND_func_widgets(), REND_init_cmap(), update_MCW_pbar(), wfunc_color_label, wfunc_frame, wfunc_open_pb, and wfunc_vsep. Referenced by REND_done_CB(), REND_make_widgets(), and REND_state_to_widgets().
05533 {
05534 if( wfunc_frame == NULL ) REND_func_widgets() ; /* need to make them */
05535
05536 if( XtIsManaged(wfunc_frame) ){ /* if open, close */
05537 XtUnmanageChild(wfunc_vsep ) ;
05538 XtUnmanageChild(wfunc_frame) ;
05539 } else { /* if closed, open */
05540 HIDE_SCALE ;
05541 XtManageChild(wfunc_vsep ) ;
05542 XtManageChild(wfunc_frame) ;
05543 update_MCW_pbar( wfunc_color_pbar ) ; /* may need to be redrawn */
05544 FIX_SCALE_SIZE ;
05545 #ifdef FIX_SCALE_SIZE_LATER
05546 (void) XtAppAddTimeOut( XtWidgetToApplicationContext(wfunc_frame),
05547 50,fixscale,NULL ) ; /* 09 May 2001 */
05548 #endif
05549 REND_init_cmap() ; /* setup the colormap */
05550
05551 POPUP_cursorize(wfunc_color_label) ;
05552 }
05553
05554 MCW_invert_widget(wfunc_open_pb) ; /* a flag */
05555 return ;
05556 }
|
|
|
Definition at line 4401 of file plug_render.c. References afni48ren_bits, afni48ren_height, afni48ren_pixmap, afni48ren_width, any_rgb_images, drive_MCW_imseq(), 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, isqDR_zoombut, NORMAL_cursorize, open_MCW_imseq(), REND_imseq_getim(), ISQ_options::save_filter, ISQ_options::save_one, ISQ_options::save_pnm, shell, and MCW_imseq::wimage. Referenced by REND_update_imseq().
04402 {
04403 int ntot , ii ;
04404
04405 if( imseq != NULL ||
04406 renderings == NULL || IMARR_COUNT(renderings) == 0 ) return ;
04407
04408 ntot = IMARR_COUNT(renderings) ;
04409
04410 any_rgb_images = 0 ;
04411 for( ii=0 ; ii < ntot ; ii++ ){
04412 if( IMARR_SUBIMAGE(renderings,ii) != NULL &&
04413 IMARR_SUBIMAGE(renderings,ii)->kind == MRI_rgb ){
04414
04415 any_rgb_images = 1 ; break ;
04416 }
04417 }
04418
04419 imseq = open_MCW_imseq( dc , REND_imseq_getim , NULL ) ;
04420
04421 drive_MCW_imseq( imseq , isqDR_clearstat , NULL ) ;
04422
04423 { ISQ_options opt ; /* change some options from the defaults */
04424
04425 ISQ_DEFAULT_OPT(opt) ;
04426 opt.save_one = False ; /* change to Save:bkg */
04427 opt.save_pnm = False ;
04428 opt.save_filter = -1 ; /* 27 Jun 2001 */
04429 drive_MCW_imseq( imseq , isqDR_options , (XtPointer) &opt ) ;
04430 drive_MCW_imseq( imseq , isqDR_periodicmont , (XtPointer) 0 ) ;
04431 }
04432
04433 /* make it popup */
04434
04435 drive_MCW_imseq( imseq , isqDR_realize, NULL ) ;
04436
04437 NORMAL_cursorize( imseq->wimage ) ; /* 07 Dec 2001 */
04438
04439 drive_MCW_imseq( imseq , isqDR_title, "AFNI Renderings" ) ;
04440
04441 if( ntot == 1 )
04442 drive_MCW_imseq( imseq , isqDR_onoffwid , (XtPointer) isqDR_offwid ) ;
04443 else {
04444 drive_MCW_imseq( imseq , isqDR_onoffwid , (XtPointer) isqDR_onwid ) ;
04445 drive_MCW_imseq( imseq , isqDR_penbbox , (XtPointer) 0 ) ; /* 18 Jul 2003 */
04446 #if 0
04447 drive_MCW_imseq( imseq , isqDR_opacitybut , (XtPointer) 0 ) ; /* 07 Mar 2001 */
04448 drive_MCW_imseq( imseq , isqDR_zoombut , (XtPointer) 0 ) ; /* 12 Mar 2002 */
04449 #endif
04450 }
04451
04452 drive_MCW_imseq( imseq , isqDR_reimage , (XtPointer) (ntot-1) ) ;
04453
04454 #ifndef DONT_INSTALL_ICONS
04455 if( afni48_good && afni48ren_pixmap == XmUNSPECIFIED_PIXMAP ){
04456 Pixel bg_pix , fg_pix ;
04457
04458 XtVaGetValues( info_lab ,
04459 XmNforeground , &fg_pix ,
04460 XmNbackground , &bg_pix ,
04461 NULL ) ;
04462
04463 afni48ren_pixmap = XCreatePixmapFromBitmapData(
04464 XtDisplay(shell) ,
04465 RootWindowOfScreen(XtScreen(shell)) ,
04466 afni48ren_bits , afni48ren_width , afni48ren_height ,
04467 bg_pix , fg_pix ,
04468 DefaultDepthOfScreen(XtScreen(shell)) ) ;
04469
04470 }
04471 if( afni48_good )
04472 drive_MCW_imseq( imseq,isqDR_icon , (XtPointer) afni48ren_pixmap ) ;
04473 #endif
04474
04475 return ;
04476 }
|
|
|
Definition at line 6376 of file plug_render.c. References DSET_ARRAY, DSET_load, DSET_NVOX, 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 REND_reload_func_dset().
06377 {
06378 TTRR_params *ttp ;
06379 THD_3dim_dataset *dseTT ;
06380 byte *b0 , *b1 , *ovar ;
06381 int nvox , ii,jj , xx ;
06382 int fwin , gwin , nreg , hemi,hbot ;
06383 byte *brik , *val , *ovc , g_ov , a_ov , final_ov ;
06384
06385 /* sanity checks and setup */
06386
06387 if( ovim == NULL ) return ;
06388
06389 nvox = ovim->nvox ;
06390
06391 #if 0
06392 # define RET(s) do{fprintf(stderr,s);return;}while(0)
06393 #else
06394 # define RET(s) return
06395 #endif
06396
06397 /* 01 Aug 2001: retrieve Atlas dataset depending on size of brick */
06398 #if 1
06399 dseTT = TT_retrieve_atlas_nz(ovim->nz) ;
06400 if( dseTT == NULL ) RET("no dataset\n") ;
06401 #else
06402 dseTT = TT_retrieve_atlas() ; if( dseTT == NULL ) RET("no dataset\n") ;
06403 #endif
06404
06405 if( DSET_NVOX(dseTT) != nvox ) RET("dataset mismatch\n");
06406 ttp = TTRR_get_params() ; if( ttp == NULL ) RET("no ttp\n") ;
06407
06408 DSET_load(dseTT) ;
06409 b0 = DSET_ARRAY(dseTT,0) ; b1 = DSET_ARRAY(dseTT,1) ;
06410 if( b0 == NULL || b1 == NULL ) RET("no bricks\n") ;
06411
06412 ovar = MRI_BYTE_PTR(ovim) ;
06413
06414 fwin = (ttp->meth == TTRR_METH_FGA) || (ttp->meth == TTRR_METH_FAG) ;
06415 gwin = (ttp->meth == TTRR_METH_FGA) || (ttp->meth == TTRR_METH_GAF) ;
06416
06417 nreg = ttp->num ;
06418 brik = ttp->ttbrik ;
06419 val = ttp->ttval ;
06420 ovc = ttp->ttovc ;
06421
06422 hemi = ttp->hemi ;
06423 switch( hemi ){
06424 case TTRR_HEMI_LEFT: hbot=HEMX+1 ; break ;
06425 case TTRR_HEMI_RIGHT: hbot= 0 ; break ;
06426 case TTRR_HEMI_BOTH: hbot= 0 ; break ;
06427 }
06428
06429 /* ready to do something */
06430
06431 for( xx=0,ii=hbot ; ii < nvox ; ii++ ){
06432
06433 if( hemi != TTRR_HEMI_BOTH ){
06434 if( xx == HEMX ){
06435 xx = 0 ; ii += HEMX ; continue ; /* skip ahead 1/2 row */
06436 }
06437 xx++ ;
06438 }
06439
06440 if( ovar[ii] && fwin ) continue ; /* function wins */
06441
06442 /* check atlas dataset for hits */
06443
06444 g_ov = a_ov = 0 ;
06445 for( jj=0 ; (g_ov==0 || a_ov==0) && jj<nreg ; jj++ ){
06446 if( b0[ii] == val[jj] ) g_ov = ovc[jj] ;
06447 else if( b1[ii] == val[jj] ) a_ov = ovc[jj] ;
06448 }
06449
06450 if( g_ov==0 && a_ov==0 ) continue ; /* no hit */
06451
06452 if( g_ov && (gwin || a_ov==0) ) final_ov = g_ov ;
06453 else final_ov = a_ov ;
06454
06455 ovar[ii] = final_ov ;
06456 }
06457
06458 return ;
06459 }
|
|
||||||||||||
|
Definition at line 6078 of file plug_render.c. References FIX_SCALE_SIZE, GPT, HIDE_SCALE, INVALIDATE_OVERLAY, MCW_arrowval::ival, load_PBAR_palette_array(), PALTAB_ARR, and PALTAB_NUM. Referenced by REND_func_widgets().
06079 {
06080 if( GPT == NULL || av->ival < 0 || av->ival >= PALTAB_NUM(GPT) ) return ;
06081
06082 HIDE_SCALE ;
06083 load_PBAR_palette_array( wfunc_color_pbar , /* cf. afni_setup.c */
06084 PALTAB_ARR(GPT,av->ival) , 0 ) ;
06085 FIX_SCALE_SIZE ;
06086
06087 INVALIDATE_OVERLAY ;
06088 return ;
06089 }
|
|
||||||||||||
|
Definition at line 4321 of file plug_render.c. References dynamic_flag, REND_draw_CB(), and render_handle. Referenced by REND_make_cutout().
04322 {
04323 if( cd == NULL && dynamic_flag && render_handle != NULL )
04324 REND_draw_CB(NULL,NULL,NULL) ;
04325 }
|
|
||||||||||||||||
|
Definition at line 6034 of file plug_render.c. References alter_MCW_pbar(), 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, REND_finalize_saveim_CB(), REND_set_pbar_top_CB(), wfunc_choices_label, wfunc_pbar_equalize_pb, wfunc_pbar_saveim_pb, and wfunc_pbar_settop_pb. Referenced by REND_func_widgets().
06035 {
06036 MCW_pbar * pbar ;
06037 int npane , jm , ii ;
06038 double pmax , pmin ;
06039 float pval[NPANE_MAX+1] ;
06040
06041 pbar = wfunc_color_pbar ;
06042 npane = pbar->num_panes ;
06043 jm = pbar->mode ;
06044 pmax = pbar->pval_save[npane][0][jm] ;
06045 pmin = pbar->pval_save[npane][npane][jm] ;
06046
06047 /*--- Equalize spacings ---*/
06048
06049 if( w == wfunc_pbar_equalize_pb ){
06050 for( ii=0 ; ii <= npane ; ii++ )
06051 pval[ii] = pmax - ii * (pmax-pmin)/npane ;
06052
06053 HIDE_SCALE ;
06054 alter_MCW_pbar( pbar , 0 , pval ) ;
06055 FIX_SCALE_SIZE ;
06056 INVALIDATE_OVERLAY ;
06057 }
06058
06059 /*--- Set top value ---*/
06060
06061 else if( w == wfunc_pbar_settop_pb ){
06062 MCW_choose_integer( wfunc_choices_label ,
06063 "Pbar Top" , 0 , 99999 , 1 ,
06064 REND_set_pbar_top_CB , NULL ) ;
06065 }
06066
06067 /*--- Save pbar into image file ---*/
06068
06069 else if( w == wfunc_pbar_saveim_pb ){
06070 MCW_choose_string( wfunc_choices_label,
06071 "PPM file prefix" , NULL ,
06072 REND_finalize_saveim_CB , cd ) ;
06073 }
06074
06075 return ;
06076 }
|
|
||||||||||||||||||||
|
Definition at line 5996 of file plug_render.c. References ev, event, GPT, PALTAB_NUM, refit_MCW_optmenu(), wfunc_pbar_menu, and MCW_arrowval::wrowcol. Referenced by REND_func_widgets().
05998 {
05999 static int old_paltab_num = 0 ;
06000
06001 switch( ev->type ){
06002 case ButtonPress:{
06003 XButtonEvent * event = (XButtonEvent *) ev ;
06004 if( event->button == Button3 || event->button == Button1 ){
06005
06006 /* in case the user read in any new palette, add them to menu */
06007
06008 if( GPT != NULL && PALTAB_NUM(GPT) > old_paltab_num ){
06009 refit_MCW_optmenu( wfunc_pbar_palette_av ,
06010 0 , /* new minval */
06011 PALTAB_NUM(GPT)-1 , /* new maxval */
06012 0 , /* new inival */
06013 0 , /* new decim? */
06014 AFNI_palette_label_CB , /* text routine */
06015 NULL /* text data */
06016 ) ;
06017 XtManageChild( wfunc_pbar_palette_av->wrowcol ) ;
06018 old_paltab_num = PALTAB_NUM(GPT) ;
06019 }
06020
06021 XmMenuPosition( wfunc_pbar_menu , event ) ; /* where */
06022 XtManageChild ( wfunc_pbar_menu ) ; /* popup */
06023 }
06024 }
06025 break ;
06026 }
06027 return ;
06028 }
|
|
||||||||||||
|
Definition at line 3343 of file plug_render.c. References MCW_arrowval::ival, and precalc_ival. Referenced by REND_make_widgets().
03344 {
03345 precalc_ival = av->ival ;
03346 return ;
03347 }
|
|
||||||||||||
|
Definition at line 5804 of file plug_render.c. References AFNI_hintize_pbar(), FUNC_RANGE, func_range, MCW_arrowval::fval, and INVALIDATE_OVERLAY. Referenced by REND_func_widgets(), and REND_state_to_widgets().
05805 {
05806 func_range = av->fval ;
05807
05808 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Mar 2001 */
05809
05810 INVALIDATE_OVERLAY ;
05811 return ;
05812 }
|
|
||||||||||||||||
|
Definition at line 5781 of file plug_render.c. References AFNI_hintize_pbar(), AV_SENSITIZE, FUNC_RANGE, func_range, func_use_autorange, MCW_arrowval::fval, INVALIDATE_OVERLAY, and MCW_val_bbox(). Referenced by REND_func_widgets(), and REND_state_to_widgets().
05782 {
05783 int newauto = MCW_val_bbox(wfunc_range_bbox) ;
05784
05785 if( newauto == func_use_autorange ) return ; /* no change? */
05786
05787 func_use_autorange = newauto ;
05788
05789 func_range = (newauto) ? (func_autorange)
05790 : (wfunc_range_av->fval) ;
05791
05792 AFNI_hintize_pbar( wfunc_color_pbar , FUNC_RANGE ) ; /* 30 Mar 2001 */
05793
05794 AV_SENSITIZE( wfunc_range_av , ! newauto ) ;
05795
05796 INVALIDATE_OVERLAY ;
05797 return ;
05798 }
|
|
|
load the values for the current pane count * Definition at line 5612 of file plug_render.c. References AV_fval_to_char(), THD_statistics::bstat, DSET_VALID_BSTAT, func_color_ival, func_thresh_ival, ISVALID_DSET, ISVALID_STATISTIC, THD_brick_stats::max, THD_brick_stats::min, and THD_3dim_dataset::stats. Referenced by REND_choose_av_CB(), REND_finalize_func_CB(), REND_func_widgets(), and REND_xhair_recv().
05613 {
05614 char fim_minch[10] = " --------" , fim_maxch[10] = " --------" ,
05615 thr_minch[10] = " --------" , thr_maxch[10] = " --------" ;
05616 char buf[256] , qbuf[16] ;
05617 XmString xstr ;
05618 int iv ;
05619
05620 if( ISVALID_DSET(func_dset) && ISVALID_STATISTIC(func_dset->stats) ){
05621
05622 iv = func_color_ival ;
05623
05624 if( DSET_VALID_BSTAT(func_dset,iv) ){
05625 AV_fval_to_char( func_dset->stats->bstat[iv].min , qbuf ) ;
05626 sprintf( fim_minch , "%9.9s" , qbuf ) ;
05627 AV_fval_to_char( func_dset->stats->bstat[iv].max , qbuf ) ;
05628 sprintf( fim_maxch , "%9.9s" , qbuf ) ;
05629 }
05630
05631 iv = func_thresh_ival ;
05632
05633 if( DSET_VALID_BSTAT(func_dset,iv) ){
05634 AV_fval_to_char( func_dset->stats->bstat[iv].min , qbuf ) ;
05635 sprintf( thr_minch , "%9.9s" , qbuf ) ;
05636 AV_fval_to_char( func_dset->stats->bstat[iv].max , qbuf ) ;
05637 sprintf( thr_maxch , "%9.9s" , qbuf ) ;
05638 }
05639 }
05640
05641 sprintf( buf , "Color %s:%s\nThr %s:%s" ,
05642 fim_minch,fim_maxch, thr_minch,thr_maxch ) ;
05643
05644 xstr = XmStringCreateLtoR( buf , XmFONTLIST_DEFAULT_TAG ) ;
05645
05646 return xstr ;
05647 }
|
|
||||||||||||||||
|
Definition at line 7006 of file plug_render.c. References accum_flag, AFNI_add_interruptable(), AFNI_process_interrupts(), autocancel_pb, autokill, automate_flag, MCW_choose_cbs::cval, DESTROY_IMARR, DESTROY_RSA, 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, MCW_choose_cbs::reason, REND_draw_CB(), REND_read_states(), REND_state_to_widgets(), REND_widgets_to_state(), renderer_open, RSA_COUNT, RSA_SUBSTATE, script_cbut, script_read_fname, and shell. Referenced by REND_script_CB().
07007 {
07008 int ll , it , ntime ;
07009 char * fname , buf[256] , * sbuf ;
07010 RENDER_state rs ;
07011 RENDER_state_array * rsa ;
07012 FILE * fp ;
07013 float scl ;
07014 Widget autometer ;
07015
07016 if( !renderer_open ){ POPDOWN_string_chooser ; return ; }
07017
07018 if( cbs->reason != mcwCR_string ||
07019 cbs->cval == NULL || (ll = strlen(cbs->cval)) == 0 ){
07020
07021 PLUTO_beep() ; return ;
07022 }
07023
07024 fname = malloc( sizeof(char) * (ll+8) ) ;
07025 strcpy(fname,cbs->cval) ; strcpy(script_read_fname,fname) ;
07026
07027 if( strstr(fname,".rset") == NULL ){
07028 if( fname[ll-1] != '.' ){ fname[ll++] = '.'; fname[ll] = '\0'; }
07029 strcat(fname,"rset") ;
07030 }
07031
07032 REND_widgets_to_state( &rs ) ;
07033 rsa = REND_read_states( fname , &rs ) ;
07034
07035 if( rsa == NULL || RSA_COUNT(rsa) < 1 ){
07036 sprintf(buf, "\n"
07037 "** Some error occured when\n"
07038 "** trying to read file %s\n" , fname ) ;
07039 (void) MCW_popup_message( script_cbut , buf ,
07040 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07041 free(fname) ; PLUTO_beep() ; return ;
07042 }
07043
07044 free(fname) ; POPDOWN_string_chooser ;
07045
07046 /*-- now execute the renderings (a la 'Automate' )--*/
07047
07048 automate_flag = 1 ;
07049 if( ! accum_flag ){
07050 DESTROY_IMARR(renderings) ;
07051 DESTROY_RSA(renderings_state) ;
07052 }
07053 ntime = RSA_COUNT(rsa) ;
07054
07055 if( ntime > 1 ){
07056 autometer = MCW_popup_meter( shell , METER_TOP_WIDE ) ;
07057 XtManageChild( autocancel_pb ) ; AFNI_add_interruptable( autocancel_pb ) ;
07058 autokill = 0 ; scl = 100.0/ntime ;
07059 }
07060
07061 for( it=0 ; it < ntime ; it++ ){
07062
07063 REND_state_to_widgets( RSA_SUBSTATE(rsa,it) ) ;
07064 if( dset == NULL ) break ; /* some error */
07065
07066 REND_draw_CB(NULL,NULL,NULL) ;
07067
07068 if( it < ntime-1 ){
07069 AFNI_process_interrupts(autocancel_pb) ;
07070 if( autokill ) break ;
07071 }
07072
07073 if( ntime > 1 ) MCW_set_meter( autometer , (int)(scl*(it+1)) ) ;
07074 }
07075
07076 /*-- done: cleanup time --*/
07077
07078 DESTROY_RSA(rsa) ;
07079
07080 if( ntime > 1 ){
07081 MCW_popdown_meter( autometer ) ;
07082 XtUnmanageChild( autocancel_pb ) ; AFNI_add_interruptable(NULL) ;
07083 }
07084
07085 automate_flag = 0 ;
07086 return ;
07087 }
|
|
||||||||||||
|
Definition at line 7126 of file plug_render.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, 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_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, 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 REND_read_exec_CB(), and REND_read_this_CB().
07127 {
07128 int nbuf , nused , ii ;
07129 char * fbuf , * fptr ;
07130 char str[NSBUF] , left[NSBUF] , middle[NSBUF] , right[NSBUF] ;
07131 int ival ; float fval ;
07132 RENDER_state * rs ;
07133 RENDER_state_array * rsa = NULL ;
07134
07135 /* setup & sanity checks */
07136
07137 fbuf = AFNI_suck_file( fname ) ; if( fbuf == NULL ) return NULL ;
07138
07139 nbuf = strlen(fbuf) ; fptr = fbuf ; nused = 0 ;
07140
07141 /** scan for section strings, which start with "***" **/
07142
07143 str[0] = '\0' ; /* initialize string */
07144
07145 /**----------------------------------------**/
07146 /**-- skip ahead to next section keyword --**/
07147
07148 SkipSection:
07149 while( ! ISTARRED(str) ){ GETSTR; }
07150 if( strcmp(str,"***END") == 0 ) goto Finished ;
07151
07152 /*-- the only thing we like are ***RENDER sections --*/
07153
07154 if( strcmp(str,"***RENDER") != 0 ) goto SkipSection ;
07155
07156 if( rsa == NULL ){ INIT_RSA(rsa) ; } /* create the output array */
07157
07158 rs = (RENDER_state *) calloc( 1,sizeof(RENDER_state) ) ; /* create the new state */
07159
07160 if( RSA_COUNT(rsa) == 0 && rsbase != NULL ){
07161 *rs = *rsbase ; /* copy base state */
07162 } else if( RSA_COUNT(rsa) > 0 ){
07163 *rs = *(RSA_SUBSTATE(rsa,RSA_COUNT(rsa)-1)) ; /* copy previous state */
07164 }
07165
07166 ADDTO_RSA(rsa,rs) ; /* put new state in output array */
07167
07168 /*--- Scan for rendering variable assignments ---*/
07169
07170 #undef ASS_IVAL
07171 #define ASS_IVAL(a,b,c) { if( ival >= b && ival <= c ) a = ival ; }
07172
07173 #undef ASS_FVAL
07174 #define ASS_FVAL(a,b,c) { if( fval >= b && fval <= c ) a = fval ; }
07175
07176 while(1){ /* loop, looking for 'name = value' */
07177
07178 GETEQN ; /* loop exits when this fails */
07179
07180 /*-- dataset stuff --*/
07181
07182 if( strcmp(left,"dset_name") == 0 ){
07183 MCW_strncpy(rs->dset_name,right,THD_MAX_NAME) ;
07184 #if 0
07185 ZERO_IDCODE(rs->dset_idc) ;
07186 #endif
07187 continue ; /* the while(1) loop */
07188 }
07189
07190 if( strcmp(left,"func_dset_name") == 0 ){
07191 MCW_strncpy(rs->func_dset_name,right,THD_MAX_NAME) ;
07192 #if 0
07193 ZERO_IDCODE(rs->func_dset_idc) ;
07194 #endif
07195 continue ;
07196 }
07197
07198 if( strcmp(left,"dset_idc") == 0 ){
07199 MCW_strncpy(rs->dset_idc.str,right,MCW_IDSIZE) ;
07200 #if 0
07201 rs->dset_name[0] = '\0' ;
07202 #endif
07203 continue ;
07204 }
07205
07206 if( strcmp(left,"func_dset_idc") == 0 ){
07207 MCW_strncpy(rs->func_dset_idc.str,right,MCW_IDSIZE) ;
07208 #if 0
07209 rs->func_dset_name[0] = '\0' ;
07210 #endif
07211 continue ;
07212 }
07213
07214 /*-- cutout stuff --*/
07215
07216 if( strcmp(left,"cutout_num") == 0 ){
07217 ival = strtol(right,NULL,10) ;
07218 ASS_IVAL( rs->current_cutout_state.num , 0 , MAX_CUTOUTS ) ;
07219 continue ;
07220 }
07221
07222 if( strcmp(left,"cutout_logic") == 0 ){
07223 if( strcmp(right,"AND")==0 || strcmp(right,"and")==0 || strcmp(right,"And")==0 )
07224 rs->current_cutout_state.logic = CUTOUT_AND ;
07225 else if( strcmp(right,"OR")==0 || strcmp(right,"or")==0 || strcmp(right,"Or")==0 )
07226 rs->current_cutout_state.logic = CUTOUT_OR ;
07227 continue ;
07228 }
07229
07230 if( strcmp(left,"opacity_scale") == 0 ){
07231 fval = strtod(right,NULL) ;
07232 ASS_FVAL( rs->current_cutout_state.opacity_scale , MIN_OPACITY_SCALE , 1.0 ) ;
07233 continue ;
07234 }
07235
07236 #define ASS_CUT_TYPE(nnn) \
07237 if( strcmp(right,#nnn) == 0 ){ rs->current_cutout_state.type[iii] = nnn; continue;}
07238
07239 if( strncmp(left,"cutout_type",strlen("cutout_type")) == 0 ){
07240 char * srb = strstr(left,"[") ;
07241 if( srb != NULL ){
07242 int iii = strtol(srb+1,NULL,10) ;
07243 if( iii >= 0 && iii < MAX_CUTOUTS ){
07244 if( isdigit(right[0]) ){
07245 ival = strtol(right,NULL,10) ;
07246 if( ival >= 0 && ival < NUM_CUTOUT_TYPES && ival != CUT_EXPRESSION )
07247 rs->current_cutout_state.type[iii] = ival ;
07248 } else {
07249 ASS_CUT_TYPE(CUT_NONE) ;
07250 ASS_CUT_TYPE(CUT_RIGHT_OF) ;
07251 ASS_CUT_TYPE(CUT_LEFT_OF) ;
07252 ASS_CUT_TYPE(CUT_ANTERIOR_TO) ;
07253 ASS_CUT_TYPE(CUT_POSTERIOR_TO) ;
07254 ASS_CUT_TYPE(CUT_INFERIOR_TO) ;
07255 ASS_CUT_TYPE(CUT_SUPERIOR_TO) ;
07256 ASS_CUT_TYPE(CUT_TT_ELLIPSOID) ;
07257 ASS_CUT_TYPE(CUT_SLANT_XPY_GT) ;
07258 ASS_CUT_TYPE(CUT_SLANT_XPY_LT) ;
07259 ASS_CUT_TYPE(CUT_SLANT_XMY_GT) ;
07260 ASS_CUT_TYPE(CUT_SLANT_XMY_LT) ;
07261 ASS_CUT_TYPE(CUT_SLANT_YPZ_GT) ;
07262 ASS_CUT_TYPE(CUT_SLANT_YPZ_LT) ;
07263 ASS_CUT_TYPE(CUT_SLANT_YMZ_GT) ;
07264 ASS_CUT_TYPE(CUT_SLANT_YMZ_LT) ;
07265 ASS_CUT_TYPE(CUT_SLANT_XPZ_GT) ;
07266 ASS_CUT_TYPE(CUT_SLANT_XPZ_LT) ;
07267 ASS_CUT_TYPE(CUT_SLANT_XMZ_GT) ;
07268 ASS_CUT_TYPE(CUT_SLANT_XMZ_LT) ;
07269 ASS_CUT_TYPE(CUT_NONOVERLAY) ;
07270 }
07271 }
07272 }
07273 continue ;
07274 }
07275
07276 if( strncmp(left,"cutout_mustdo",strlen("cutout_mustdo")) == 0 ){
07277 char * srb = strstr(left,"[") ;
07278 if( srb != NULL ){
07279 int iii = strtol(srb+1,NULL,10) ;
07280 if( iii >= 0 && iii < MAX_CUTOUTS ){
07281 if( strcmp(right,"TRUE") == 0 || strcmp(right,"true") == 0 ||
07282 strcmp(right,"True") == 0 || strcmp(right,"YES") == 0 ||
07283 strcmp(right,"yes") == 0 || strcmp(right,"Yes") == 0 ||
07284 strcmp(right,"1") == 0 )
07285 rs->current_cutout_state.mustdo[iii] = 1 ;
07286
07287 else if( strcmp(right,"FALSE") == 0 || strcmp(right,"false") == 0 ||
07288 strcmp(right,"False") == 0 || strcmp(right,"NO") == 0 ||
07289 strcmp(right,"no") == 0 || strcmp(right,"No") == 0 ||
07290 strcmp(right,"0") == 0 )
07291 rs->current_cutout_state.mustdo[iii] = 0 ;
07292 }
07293 }
07294 continue ;
07295 }
07296
07297 if( strncmp(left,"cutout_param",strlen("cutout_param")) == 0 ){
07298 char * srb = strstr(left,"[") ;
07299 if( srb != NULL ){
07300 int iii = strtol(srb+1,NULL,10) ;
07301 if( iii >= 0 && iii < MAX_CUTOUTS ){
07302 rs->current_cutout_state.param[iii] = strtod(right,NULL) ;
07303 }
07304 }
07305 continue ;
07306 }
07307
07308 /*-- all other desiderata --*/
07309
07310 #define ASS_INT(nnn) if( strcmp(left,#nnn) == 0 ){ \
07311 rs -> nnn = strtol(right,NULL,10) ; \
07312 continue ; \
07313 }
07314
07315 #define ASS_FLOAT(nnn) if( strcmp(left,#nnn) == 0 ){ \
07316 rs -> nnn = strtod(right,NULL) ; \
07317 continue ; \
07318 }
07319
07320 #define ASS_FLOAT_SUB(nnn,mmm) \
07321 if( strncmp(left,#nnn,strlen(#nnn)) == 0 ){ \
07322 char * srb = strstr(left,"[") ; \
07323 if( srb != NULL ){ \
07324 int iii = strtol(srb+1,NULL,10) ; \
07325 if( iii >= 0 && iii < mmm ) rs->nnn[iii] = strtod(right,NULL) ; \
07326 } \
07327 continue ; \
07328 }
07329
07330 ASS_INT(dset_ival) ; ASS_INT(func_color_ival) ; ASS_INT(func_thresh_ival) ;
07331
07332 ASS_INT(clipbot) ; ASS_INT(cliptop) ;
07333
07334 ASS_FLOAT(angle_roll) ; ASS_FLOAT(angle_pitch) ; ASS_FLOAT(angle_yaw) ;
07335
07336 ASS_INT(xhair_flag) ;
07337 ASS_INT(xhair_ovc) ; /* 08 Mar 2001 */
07338
07339 ASS_INT( func_use_autorange ) ;
07340 ASS_FLOAT( func_threshold ) ;
07341 ASS_FLOAT( func_thresh_top ) ;
07342 ASS_FLOAT( func_color_opacity ) ;
07343 ASS_INT( func_see_overlay ) ;
07344 ASS_INT( func_see_ttatlas ) ; /* 24 Jul 2001 */
07345 ASS_INT( func_cut_overlay ) ;
07346 ASS_INT( func_kill_clusters ) ;
07347 ASS_FLOAT( func_clusters_rmm ) ;
07348 ASS_FLOAT( func_clusters_vmul ) ;
07349 ASS_FLOAT( func_range ) ;
07350
07351 ASS_INT( pbar_mode ) ; ASS_INT( pbar_npane ) ;
07352
07353 ASS_FLOAT_SUB(pbar_pval,NPANE_MAX+1) ;
07354
07355 #ifdef SCRIPT_GRAFS
07356 /*-- read graf stuff --*/
07357
07358 if( strcmp(left,"bright_nhands") == 0 ){
07359 ival = strtol(right,NULL,10) ;
07360 if( ival > 1 && ival <= MAX_GHANDS ) rs->bright_graf_state.nh = ival ;
07361 continue ;
07362 }
07363
07364 if( strcmp(left,"bright_spline") == 0 ){
07365 rs->bright_graf_state.spl = strtol(right,NULL,10) ;
07366 continue ;
07367 }
07368
07369 if( strncmp(left,"bright_handx",strlen("bright_handx")) == 0 ){
07370 char * srb = strstr(left,"[") ;
07371 if( srb != NULL ){
07372 int iii = strtol(srb+1,NULL,10) ;
07373 if( iii >= 0 && iii < MAX_GHANDS ){
07374 rs->bright_graf_state.xh[iii] = strtol(right,NULL,10) ;
07375 }
07376 }
07377 continue ;
07378 }
07379
07380 if( strncmp(left,"bright_handy",strlen("bright_handy")) == 0 ){
07381 char * srb = strstr(left,"[") ;
07382 if( srb != NULL ){
07383 int iii = strtol(srb+1,NULL,10) ;
07384 if( iii >= 0 && iii < MAX_GHANDS ){
07385 rs->bright_graf_state.yh[iii] = strtol(right,NULL,10) ;
07386 }
07387 }
07388 continue ;
07389 }
07390
07391 if( strcmp(left,"opacity_nhands") == 0 ){
07392 ival = strtol(right,NULL,10) ;
07393 if( ival > 1 && ival <= MAX_GHANDS ) rs->opacity_graf_state.nh = ival ;
07394 continue ;
07395 }
07396
07397 if( strcmp(left,"opacity_spline") == 0 ){
07398 rs->opacity_graf_state.spl = strtol(right,NULL,10) ;
07399 continue ;
07400 }
07401
07402 if( strncmp(left,"opacity_handx",strlen("opacity_handx")) == 0 ){
07403 char * srb = strstr(left,"[") ;
07404 if( srb != NULL ){
07405 int iii = strtol(srb+1,NULL,10) ;
07406 if( iii >= 0 && iii < MAX_GHANDS ){
07407 rs->opacity_graf_state.xh[iii] = strtol(right,NULL,10) ;
07408 }
07409 }
07410 continue ;
07411 }
07412
07413 if( strncmp(left,"opacity_handy",strlen("opacity_handy")) == 0 ){
07414 char * srb = strstr(left,"[") ;
07415 if( srb != NULL ){
07416 int iii = strtol(srb+1,NULL,10) ;
07417 if( iii >= 0 && iii < MAX_GHANDS ){
07418 rs->opacity_graf_state.yh[iii] = strtol(right,NULL,10) ;
07419 }
07420 }
07421 continue ;
07422 }
07423 #endif /* SCRIPT_GRAFS */
07424
07425 } /* end of loop over "equations" in the ***RENDER section */
07426
07427 /* loop exits when GETEQN fails miserably (i.e., at EOF) */
07428
07429 Finished:
07430 free(fbuf) ;
07431 if( rsa != NULL && RSA_COUNT(rsa) == 0 ){ FREE_RSA(rsa) ; }
07432 return rsa ;
07433 }
|
|
||||||||||||||||
|
Definition at line 6863 of file plug_render.c. References MCW_choose_cbs::cval, 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, MCW_choose_cbs::reason, REND_read_states(), REND_read_this_finalize_CB(), REND_widgets_to_state(), renderer_open, RSA_COUNT, script_cbut, and script_read_fname. Referenced by REND_script_CB().
06864 {
06865 int ll ;
06866 char * fname , buf[256] , * sbuf ;
06867 RENDER_state rs ;
06868 RENDER_state_array * rsa ;
06869 FILE * fp ;
06870
06871 if( !renderer_open ){ POPDOWN_string_chooser ; return ; }
06872
06873 if( cbs->reason != mcwCR_string ||
06874 cbs->cval == NULL || (ll = strlen(cbs->cval)) == 0 ){
06875
06876 PLUTO_beep() ; return ;
06877 }
06878
06879 fname = malloc( sizeof(char) * (ll+8) ) ;
06880 strcpy(fname,cbs->cval) ; strcpy(script_read_fname,fname) ;
06881
06882 if( strstr(fname,".rset") == NULL ){
06883 if( fname[ll-1] != '.' ){ fname[ll++] = '.'; fname[ll] = '\0'; }
06884 strcat(fname,"rset") ;
06885 }
06886
06887 REND_widgets_to_state( &rs ) ;
06888 rsa = REND_read_states( fname , &rs ) ;
06889
06890 if( rsa == NULL || RSA_COUNT(rsa) < 1 ){
06891 sprintf(buf, "\n"
06892 "** Some error occured when\n"
06893 "** trying to read file %s\n" , fname ) ;
06894 (void) MCW_popup_message( script_cbut , buf ,
06895 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06896 free(fname) ; PLUTO_beep() ; return ;
06897 }
06898
06899 free(fname) ; POPDOWN_string_chooser ;
06900
06901 if( RSA_COUNT(rsa) == 1 ){
06902 MCW_choose_cbs cbs ;
06903 cbs.ival = 0 ; cbs.reason = mcwCR_integer ;
06904 REND_read_this_finalize_CB( NULL , (XtPointer) rsa , &cbs ) ;
06905 } else {
06906 MCW_choose_integer( w , "[Read This] State Index" ,
06907 0 , RSA_COUNT(rsa)-1 , 0 ,
06908 REND_read_this_finalize_CB , (XtPointer) rsa ) ;
06909 }
06910
06911 return ;
06912 }
|
|
||||||||||||||||
|
Definition at line 6914 of file plug_render.c. References DESTROY_RSA, MCW_choose_cbs::ival, mcwCR_integer, PLUTO_beep(), POPDOWN_integer_chooser, MCW_choose_cbs::reason, REND_state_to_widgets(), RSA_COUNT, and RSA_SUBSTATE. Referenced by REND_read_this_CB().
06915 {
06916 RENDER_state_array * rsa = (RENDER_state_array *) cd ;
06917
06918 POPDOWN_integer_chooser ;
06919
06920 if( cbs->reason != mcwCR_integer ||
06921 cbs->ival < 0 || cbs->ival >= RSA_COUNT(rsa) ){
06922
06923 PLUTO_beep() ; return ;
06924 }
06925
06926 REND_state_to_widgets( RSA_SUBSTATE(rsa,cbs->ival) ) ;
06927
06928 DESTROY_RSA(rsa) ;
06929 return ;
06930 }
|
|
||||||||||||||||
|
Definition at line 2173 of file plug_render.c. References client_data, MCW_DC::display, REND_draw_CB(), REND_reload_dataset(), and render_handle.
02174 {
02175 if( dset == NULL ){ XBell(dc->display,100) ; return ; }
02176
02177 REND_reload_dataset() ; /* load data again */
02178
02179 if( render_handle != NULL ) REND_draw_CB(NULL,NULL,NULL) ; /* draw */
02180
02181 return ;
02182 }
|
|
|
like AFNI itself, require two quick presses to exit * Definition at line 1875 of file plug_render.c. References AV_assign_ival(), AV_fval_to_char(), brickfac, clipbot_faclab, cliptop_faclab, DSET_ARRAY, DSET_BRICK, DSET_BRICK_FACTOR, DSET_BRICK_TYPE, dset_ival, DSET_load, FIX_SCALE_SIZE, FREE_VOLUMES, MCW_graf::func, func_color_opacity, func_computed, func_cut_overlay, func_showthru, GRAF_SIZE, HIDE_SCALE, MCW_arrowval::ival, MAX, MCW_histo_bytes(), MCW_invert_widget(), MIN, MRI_BYTE_PTR, mri_histobyte(), mri_histogram(), mri_new_conforming, mri_to_byte(), new_data_loaded, new_dset, num_cutouts, MRI_IMAGE::nvox, CUTOUT_state::opacity_scale, RANGE, range_faclab, range_lab, redraw_MCW_pasgraf(), reload_pb, REND_cutout_blobs(), REND_reload_func_dset(), REND_xhair_underlay(), set_MCW_pasgraf(), var, and MCW_graf::yeqx. Referenced by REND_choose_av_CB(), REND_draw_CB(), REND_finalize_dset_CB(), REND_finalize_func_CB(), and REND_reload_CB().
01876 {
01877 int ii , nvox , vmin,vmax , cbot,ctop , ival,val , cutdone ;
01878 float fac ;
01879 void * var ;
01880 byte * gar ;
01881 MRI_IMAGE * vim ;
01882 XmString xstr ;
01883 char str[64] ;
01884
01885 #define HISTOGRAMATE /* 25 Jul 2001 */
01886 #define NHIST 255
01887 int vtop ;
01888
01889 MCW_invert_widget(reload_pb) ; /* flash a signal */
01890
01891 /* start by tossing any old data */
01892
01893 FREE_VOLUMES ;
01894
01895 /* make sure the dataset is in memory */
01896
01897 DSET_load(dset) ;
01898 vim = DSET_BRICK(dset,dset_ival) ; nvox = vim->nvox ;
01899 var = DSET_ARRAY(dset,dset_ival) ; brickfac = DSET_BRICK_FACTOR(dset,dset_ival) ;
01900
01901 /* find data range, clip it, convert to bytes */
01902
01903 grim = mri_new_conforming( vim , MRI_byte ) ; /* new image data */
01904 gar = MRI_BYTE_PTR(grim) ;
01905
01906 switch( DSET_BRICK_TYPE(dset,dset_ival) ){
01907
01908 case MRI_short:{
01909 short * sar = (short *) var ;
01910
01911 vmin = vmax = sar[0] ;
01912 for( ii=1 ; ii < nvox ; ii++ ){ /* find range of values */
01913 val = sar[ii] ;
01914 if( vmin > val ) vmin = val ;
01915 else if( vmax < val ) vmax = val ;
01916 }
01917
01918 #ifdef HISTOGRAMATE
01919 if( vmax > vmin && vmin >= 0 && new_dset ){ /* 25 Jul 2001: find 'good' upper value */
01920 int hist[NHIST] , nhist,nh,hh ;
01921 nhist = (vmax-vmin > NHIST) ? NHIST : (vmax-vmin) ;
01922 mri_histogram( vim , vmin,vmax , 1,nhist , hist ) ;
01923 for( nh=ii=0 ; ii < nvox ; ii++ ) if( sar[ii] ) nh++ ; /* count nonzeros */
01924 nh *= 0.005 ; /* find 99.5% point */
01925 for( ii=nhist-1 ; ii > 1 && nh > 0 ; ii-- ) nh -= hist[ii] ; /* in histogram */
01926 vtop = vmin + (ii+0.5)*(vmax-vmin)/(nhist-0.01) ;
01927 if( vtop > vmax || vtop <= vmin ) vtop = vmax ;
01928 } else {
01929 vtop = vmax ;
01930 }
01931 #else
01932 vtop = vmax ;
01933 #endif
01934
01935 if( new_dset ){
01936 AV_assign_ival( clipbot_av , vmin ) ; cbot = vmin ;
01937 AV_assign_ival( cliptop_av , vtop ) ; ctop = vtop ; /* 25 Jul 2001: vmax -> vtop */
01938 } else {
01939 cbot = MAX( clipbot_av->ival , vmin ) ;
01940 ctop = MIN( cliptop_av->ival , vmax ) ;
01941 }
01942
01943 fac = (ctop > cbot) ? 255.9/(ctop-cbot) : 1.0 ;
01944 for( ii=0 ; ii < nvox ; ii++ ){
01945 val = sar[ii] ;
01946 ival = fac * (val-cbot) ; RANGE(ival,0,255) ; gar[ii] = ival ;
01947 }
01948 }
01949 break ;
01950
01951 case MRI_byte:{
01952 byte * bar = (byte *) var ;
01953
01954 vmin = vmax = bar[0] ;
01955 for( ii=1 ; ii < nvox ; ii++ ){ /* find range of values */
01956 val = bar[ii] ;
01957 if( vmin > val ) vmin = val ;
01958 else if( vmax < val ) vmax = val ;
01959 }
01960
01961 #ifdef HISTOGRAMATE
01962 if( vmax > vmin && new_dset ){ /* 25 Jul 2001: find 'good' upper value */
01963 int hist[256] , nhist=256,nh,hh ;
01964 mri_histobyte( vim , hist ) ;
01965 for( nh=0,ii=1 ; ii < nhist ; ii++ ) nh += hist[ii] ; /* count nonzeros */
01966 nh *= 0.005 ; /* find 99.5% point */
01967 for( ii=nhist-1 ; ii > 1 && nh > 0 ; ii-- ) nh -= hist[ii] ; /* in histogram */
01968 vtop = ii ;
01969 if( vtop > vmax || vtop <= vmin ) vtop = vmax ;
01970 } else {
01971 vtop = vmax ;
01972 }
01973 #else
01974 vtop = vmax ;
01975 #endif
01976
01977 if( new_dset ){
01978 AV_assign_ival( clipbot_av , vmin ) ; cbot = vmin ;
01979 AV_assign_ival( cliptop_av , vtop ) ; ctop = vtop ; /* 25 Jul 2001: vmax -> vtop */
01980 } else {
01981 cbot = MAX( clipbot_av->ival , vmin ) ;
01982 ctop = MIN( cliptop_av->ival , vmax ) ;
01983 }
01984
01985 fac = (ctop > cbot) ? 255.9/(ctop-cbot) : 1.0 ;
01986 for( ii=0 ; ii < nvox ; ii++ ){
01987 val = bar[ii] ;
01988 ival = fac * (val-cbot) ; RANGE(ival,0,255) ; gar[ii] = ival ;
01989 }
01990 }
01991 break ;
01992 }
01993
01994 /* set label showing data range */
01995
01996 sprintf(str,"Min=%d Max=%d",vmin,vmax) ;
01997 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
01998 XtVaSetValues( range_lab , XmNlabelString , xstr , NULL ) ;
01999 XmStringFree(xstr) ;
02000
02001 /* if brick is scaled, show the scaled labels */
02002
02003 HIDE_SCALE ;
02004
02005 if( brickfac != 0.0 && brickfac != 1.0 ){
02006 char minch[16] , maxch[16] ;
02007
02008 AV_fval_to_char( vmin*brickfac , minch ) ;
02009 AV_fval_to_char( vmax*brickfac , maxch ) ;
02010 sprintf(str,"[%s %s]",minch,maxch) ;
02011 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
02012 XtVaSetValues( range_faclab , XmNlabelString , xstr , NULL ) ;
02013 XmStringFree(xstr) ;
02014
02015 AV_fval_to_char( brickfac * clipbot_av->ival , minch ) ;
02016 sprintf(str,"[-> %s]",minch) ;
02017 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
02018 XtVaSetValues( clipbot_faclab , XmNlabelString , xstr , NULL ) ;
02019 XmStringFree(xstr) ;
02020
02021 AV_fval_to_char( brickfac * cliptop_av->ival , maxch ) ;
02022 sprintf(str,"[-> %s]",maxch) ;
02023 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
02024 XtVaSetValues( cliptop_faclab , XmNlabelString , xstr , NULL ) ;
02025 XmStringFree(xstr) ;
02026
02027 XtManageChild( range_faclab ) ;
02028 XtManageChild( clipbot_faclab ) ;
02029 XtManageChild( cliptop_faclab ) ;
02030 } else {
02031 XtUnmanageChild( range_faclab ) ;
02032 XtUnmanageChild( clipbot_faclab ) ;
02033 XtUnmanageChild( cliptop_faclab ) ;
02034 }
02035
02036 FIX_SCALE_SIZE ;
02037
02038 /* copy image data into opacity */
02039
02040 opim = mri_to_byte( grim ) ;
02041
02042 { int hist[256] , nvox = grim->nvox , htop , ii ;
02043 float ofac = current_cutout_state.opacity_scale ;
02044
02045 /* do the histogram graph */
02046
02047 MCW_histo_bytes( nvox , MRI_BYTE_PTR(grim) , hist ) ;
02048
02049 htop = 0 ;
02050 for( ii=0 ; ii < GRAF_SIZE ; ii++ ){
02051 hist[ii] = hist[2*ii] + hist[2*ii+1] ; /* fold 2 into 1 */
02052 if( ii > 0 && hist[ii] > htop ) htop = hist[ii] ; /* find max value */
02053 }
02054
02055 if( htop == 0 ){
02056 set_MCW_pasgraf( his_graf , NULL ) ;
02057 } else {
02058 float scl = (GRAF_SIZE-0.44) / sqrt((double)htop) ;
02059 byte bhis[GRAF_SIZE] ;
02060 for( ii=0 ; ii < GRAF_SIZE ; ii++ )
02061 bhis[ii] = (hist[ii] > htop) ? GRAF_SIZE-1
02062 : (byte)(scl*sqrt((double)hist[ii])+0.49) ;
02063
02064 set_MCW_pasgraf( his_graf , bhis ) ;
02065 }
02066
02067 redraw_MCW_pasgraf( his_graf ) ;
02068
02069 /* modify the grayscale per the brightness graf */
02070
02071 if( ! gry_graf->yeqx ){
02072 byte * bar=MRI_BYTE_PTR(grim) , * fun=gry_graf->func ;
02073
02074 for( ii=0 ; ii < nvox ; ii++ ) bar[ii] = fun[ bar[ii] ] ;
02075 }
02076
02077 /* modify the opacity per the opacity graf */
02078
02079 if( !opa_graf->yeqx || ofac < 1.0 ){
02080 byte * bar=MRI_BYTE_PTR(opim) , * fun=opa_graf->func ;
02081
02082 if( !opa_graf->yeqx )
02083 for( ii=0 ; ii < nvox ; ii++ ) bar[ii] = fun[ bar[ii] ] ;
02084
02085 if( ofac < 1.0 )
02086 for( ii=0 ; ii < nvox ; ii++ ) bar[ii] *= ofac ;
02087 }
02088 }
02089
02090 /*--- Now deal with overlay, if need be ---*/
02091
02092 func_computed = 0 ; /* at this point, data is for grayscale rendering */
02093 cutdone = 0 ; /* cutouts not done yet */
02094
02095 if( DO_OVERLAY ){
02096 byte * gar , * opar , * ovar ;
02097 int nvox = grim->nvox , ii ;
02098
02099 REND_reload_func_dset() ;
02100
02101 if( num_cutouts > 0 && !func_cut_overlay ){ /* do cutouts NOW if not */
02102 REND_cutout_blobs(opim) ; /* to be done to overlay */
02103 cutdone = 1 ;
02104 }
02105
02106 ovar = MRI_BYTE_PTR(ovim) ;
02107
02108 if( !func_showthru ){ /* the old code: embed color into volume */
02109
02110 gar = MRI_BYTE_PTR(grim) ;
02111 opar = MRI_BYTE_PTR(opim) ;
02112
02113 /* convert gar into index into the functional colormap */
02114
02115 for( ii=0 ; ii < nvox ; ii++ ){
02116 if( ovar[ii] == 0 ) gar[ii] = gar[ii] >> 1 ; /* gray */
02117 else gar[ii] = 127 + ovar[ii] ; /* color */
02118 }
02119
02120 /* if needed, modify the opacity where there is color */
02121
02122 if( func_color_opacity > 0.0 ){
02123 byte opac = (byte)(255.0 * MIN(func_color_opacity,1.0)) ;
02124 for( ii=0 ; ii < nvox ; ii++ )
02125 if( ovar[ii] != 0 ) opar[ii] = opac ;
02126 }
02127
02128 } else { /* 07 Jan 2000: make the showthru bricks instead */
02129
02130 byte * garst , * oparst ;
02131
02132 grim_showthru = mri_new_conforming( vim , MRI_byte ) ;
02133 opim_showthru = mri_new_conforming( vim , MRI_byte ) ;
02134 garst = MRI_BYTE_PTR(grim_showthru) ;
02135 oparst = MRI_BYTE_PTR(opim_showthru) ;
02136
02137 memset( garst , 0 , sizeof(byte)*nvox ) ;
02138 memset( oparst , 0 , sizeof(byte)*nvox ) ;
02139
02140 for( ii=0 ; ii < nvox ; ii++ ){ /* load values only if */
02141 if( ovar[ii] != 0 ){ /* there is overlay */
02142
02143 garst[ii] = 127 + ovar[ii] ; /* color index */
02144 oparst[ii] = 240 ; /* mostly opaque */
02145 }
02146 }
02147 }
02148
02149 func_computed = 1 ; /* data is now set for color rendering */
02150 }
02151
02152 /*--- Other piddling details ---*/
02153
02154 if( num_cutouts > 0 && !cutdone ){ /* if cutouts hit overlay */
02155 REND_cutout_blobs(opim) ;
02156 if( func_showthru && opim_showthru != NULL )
02157 REND_cutout_blobs(opim_showthru) ;
02158 }
02159
02160 if( xhair_flag ) REND_xhair_underlay() ;
02161
02162 MCW_invert_widget(reload_pb) ; /* turn the signal off */
02163
02164 new_dset = 0 ; new_data_loaded = 1 ;
02165 FIX_SCALE_SIZE ; /* 09 May 2001 */
02166 return ;
02167 }
|
|
|
Definition at line 6160 of file plug_render.c. References MCW_cluster_array::clar, THD_3dim_dataset::daxes, DESTROY_CLARR, DSET_ARRAY, DSET_BRICK, DSET_BRICK_FACTOR, dset_ival, DSET_load, DSET_NVOX, func_color_ival, FUNC_RANGE, func_see_overlay, func_thresh_ival, func_thresh_top, func_threshold, func_use_thresh, MCW_arrowval::fval, INVALIDATE_OVERLAY, MRI_IMAGE::kind, MCW_cluster_to_vol(), MCW_find_clusters(), MRI_BYTE_PTR, mri_new_conforming, 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_pbar::pval, REND_overlay_ttatlas(), REND_xhair_overlay(), thr, THD_dataxes::xxdel, THD_dataxes::yydel, and THD_dataxes::zzdel. Referenced by REND_cutout_blobs(), and REND_reload_dataset().
06161 {
06162 MRI_IMAGE * cim , * tim ;
06163 void * car , * tar ;
06164 float cfac , tfac ;
06165 int ii , nvox , num_lp , lp ;
06166 byte * ovar ;
06167 MCW_pbar * pbar = wfunc_color_pbar ;
06168 byte fim_ovc[NPANE_MAX+1] ;
06169 float fim_thr[NPANE_MAX] , scale_factor , thresh ;
06170
06171 INVALIDATE_OVERLAY ; /* toss old overlay, if any */
06172
06173 if( !func_see_overlay || func_dset == NULL ){ /* 24 Jul 2001: if not seeing */
06174 /* function, make empty ovim */
06175
06176 ovim = mri_new_conforming( DSET_BRICK(dset,dset_ival) , MRI_byte ) ;
06177 ovar = MRI_BYTE_PTR(ovim) ;
06178 memset( ovar , 0 , DSET_NVOX(dset) ) ;
06179 goto EndOfFuncOverlay ; /* AHA! */
06180 }
06181
06182 DSET_load(func_dset) ; /* make sure is in memory */
06183
06184 cim = DSET_BRICK(func_dset,func_color_ival) ; nvox = cim->nvox ; /* color brick */
06185 car = DSET_ARRAY(func_dset,func_color_ival) ;
06186 cfac = DSET_BRICK_FACTOR(func_dset,func_color_ival) ;
06187 if( cfac == 0.0 ) cfac = 1.0 ;
06188
06189 tim = DSET_BRICK(func_dset,func_thresh_ival) ; /* thresh brick */
06190 tar = DSET_ARRAY(func_dset,func_thresh_ival) ;
06191 tfac = DSET_BRICK_FACTOR(func_dset,func_thresh_ival) ;
06192 if( tfac == 0.0 ) tfac = 1.0 ;
06193
06194 ovim = mri_new_conforming( cim , MRI_byte ) ; /* new overlay */
06195 ovar = MRI_BYTE_PTR(ovim) ;
06196
06197 scale_factor = FUNC_RANGE ; /* for map from pbar to data value range */
06198
06199 num_lp = pbar->num_panes ;
06200 for( lp=0 ; lp < num_lp ; lp++ ) fim_ovc[lp] = pbar->ov_index[lp] ; /* top to bottom */
06201 fim_ovc[num_lp] = (func_posfunc) ? (0) : (fim_ovc[num_lp-1]) ; /* off the bottom */
06202
06203 thresh = func_threshold * func_thresh_top / tfac ; /* threshold in tar[] scale */
06204
06205 /*--- Load the overlay image with the color overlay index ---*/
06206
06207 if( thresh < 1.0 || !func_use_thresh ){ /*--- no thresholding needed ---*/
06208
06209 switch( cim->kind ){
06210
06211 case MRI_short:{
06212 short * sar = (short *) car ;
06213
06214 for( lp=0 ; lp < num_lp ; lp++ ) /* pbar in */
06215 fim_thr[lp] = scale_factor * pbar->pval[lp+1] / cfac ; /* car[] scale */
06216
06217 for( ii=0 ; ii < nvox ; ii++ ){
06218 if( sar[ii] == 0 ){
06219 ovar[ii] = 0 ;
06220 } else {
06221 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ ) ; /*nada*/
06222 ovar[ii] = fim_ovc[lp] ;
06223 }
06224 }
06225 }
06226 break ;
06227
06228 case MRI_float:{
06229 float * sar = (float *) car ;
06230
06231 for( lp=0 ; lp < num_lp ; lp++ )
06232 fim_thr[lp] = scale_factor * pbar->pval[lp+1] / cfac ;
06233
06234 for( ii=0 ; ii < nvox ; ii++ ){
06235 if( sar[ii] == 0.0 ){
06236 ovar[ii] = 0 ;
06237 } else {
06238 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ ) ; /*nada*/
06239 ovar[ii] = fim_ovc[lp] ;
06240 }
06241 }
06242 }
06243 break ;
06244
06245 case MRI_byte:{
06246 byte * sar = (byte *) car ;
06247
06248 for( lp=0 ; lp < num_lp ; lp++ )
06249 if( pbar->pval[lp+1] <= 0.0 )
06250 fim_thr[lp] = 0 ;
06251 else
06252 fim_thr[lp] = scale_factor * pbar->pval[lp+1] / cfac ;
06253
06254 for( ii=0 ; ii < nvox ; ii++ ){
06255 if( sar[ii] == 0 ){
06256 ovar[ii] = 0 ;
06257 } else {
06258 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ ) ; /*nada*/
06259 ovar[ii] = fim_ovc[lp] ;
06260 }
06261 }
06262 }
06263 break ;
06264 } /*--- end of no thresholding case ---*/
06265
06266 } else { /*--- start of thresholding ---*/
06267
06268 switch( cim->kind ){
06269
06270 case MRI_short:{
06271 short * sar = (short *) car ;
06272 short * qar = (short *) tar ;
06273 int thr = (int) thresh ;
06274
06275 for( lp=0 ; lp < num_lp ; lp++ )
06276 fim_thr[lp] = scale_factor * pbar->pval[lp+1] / cfac ;
06277
06278 for( ii=0 ; ii < nvox ; ii++ ){
06279 if( (qar[ii] > -thr && qar[ii] < thr) || sar[ii] == 0.0 ){
06280 ovar[ii] = 0 ;
06281 } else {
06282 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ ) ; /*nada*/
06283 ovar[ii] = fim_ovc[lp] ;
06284 }
06285 }
06286 }
06287 break ;
06288
06289 case MRI_float:{
06290 float * sar = (float *) car ;
06291 float * qar = (float *) tar ;
06292 float thr = thresh ;
06293
06294 for( lp=0 ; lp < num_lp ; lp++ )
06295 fim_thr[lp] = scale_factor * pbar->pval[lp+1] / cfac ;
06296
06297 for( ii=0 ; ii < nvox ; ii++ ){
06298 if( (qar[ii] > -thr && qar[ii] < thr) || sar[ii] == 0 ){
06299 ovar[ii] = 0 ;
06300 } else {
06301 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ ) ; /*nada*/
06302 ovar[ii] = fim_ovc[lp] ;
06303 }
06304 }
06305 }
06306 break ;
06307
06308 case MRI_byte:{
06309 byte * sar = (byte *) car ;
06310 byte * qar = (byte *) tar ;
06311 int thr = (int) thresh ;
06312
06313 for( lp=0 ; lp < num_lp ; lp++ )
06314 if( pbar->pval[lp+1] <= 0.0 )
06315 fim_thr[lp] = 0 ;
06316 else
06317 fim_thr[lp] = scale_factor * pbar->pval[lp+1] / cfac ;
06318
06319 for( ii=0 ; ii < nvox ; ii++ ){
06320 if( qar[ii] < thr || sar[ii] == 0 ){
06321 ovar[ii] = 0 ;
06322 } else {
06323 for( lp=0 ; lp < num_lp && sar[ii] < fim_thr[lp] ; lp++ ) ; /*nada*/
06324 ovar[ii] = fim_ovc[lp] ;
06325 }
06326 }
06327 }
06328 break ;
06329 }
06330 }
06331
06332 /*----- if ordered, remove clusters -----*/
06333
06334 if( func_kill_clusters ){
06335 int nx=ovim->nx , ny=ovim->ny , nz=ovim->nz , ptmin,iclu ;
06336 float dx = fabs(func_dset->daxes->xxdel) ,
06337 dy = fabs(func_dset->daxes->yydel) ,
06338 dz = fabs(func_dset->daxes->zzdel) ;
06339 float rmm = wfunc_clusters_rmm_av->fval ,
06340 vmul = wfunc_clusters_vmul_av->fval ;
06341 MCW_cluster_array * clar ;
06342 MCW_cluster * cl ;
06343
06344 if( (rmm >= dx || rmm >= dy || rmm >= dz) && vmul > (dx*dy*dz) ){
06345 ptmin = vmul / (dx*dy*dz) + 0.99 ;
06346 clar = MCW_find_clusters( nx,ny,nz , dx,dy,dz , MRI_byte,ovar , rmm ) ;
06347 if( clar != NULL ){
06348 for( iclu=0 ; iclu < clar->num_clu ; iclu++ ){
06349 cl = clar->clar[iclu] ;
06350 if( cl->num_pt >= ptmin ) /* put back into array */
06351 MCW_cluster_to_vol( nx,ny,nz , MRI_byte,ovar , cl ) ;
06352 }
06353 DESTROY_CLARR(clar) ;
06354 }
06355 }
06356 } /* end of cluster removal */
06357
06358 /*----- other overlay stuff -----*/
06359
06360 EndOfFuncOverlay:
06361
06362 if( func_see_ttatlas ) REND_overlay_ttatlas() ; /* 12 July 2001 */
06363
06364 if( xhair_flag ) REND_xhair_overlay() ; /* 08 Mar 2001 */
06365
06366 return ;
06367 }
|
|
|
Definition at line 2188 of file plug_render.c. References func_bmap, func_cmap_set, func_gmap, func_ncmap, func_rmap, func_showthru, MREN_set_graybytes(), MREN_set_opabytes(), MREN_set_rgbbytes(), MREN_set_rgbmap(), and render_handle. Referenced by REND_draw_CB().
02189 {
02190 if( render_handle == NULL ) return ; /* error */
02191
02192 if( func_computed ){ /* render the underlay and overlay */
02193
02194 if( !func_cmap_set ){
02195 MREN_set_rgbmap( render_handle, func_ncmap, func_rmap,func_gmap,func_bmap ) ;
02196 func_cmap_set = 1 ;
02197 }
02198
02199 if( !func_showthru ){ /* the old code: both underlay and overlay are in grim */
02200
02201 MREN_set_rgbbytes( render_handle , grim ) ; /* color overlay */
02202 MREN_set_opabytes( render_handle , opim ) ;
02203
02204 } else { /* 07 Jan 2000:
02205 grayscale underlay is in grim
02206 color overlay is in grim_showthru */
02207
02208 switch( func_showthru_pass ){ /* do the 2 images separately */
02209 default:
02210 case 0:
02211 MREN_set_graybytes( render_handle , grim ) ; /* underlay */
02212 MREN_set_opabytes ( render_handle , opim ) ;
02213 break ;
02214
02215 case 1:
02216 MREN_set_rgbbytes( render_handle , grim_showthru ) ; /* overlay */
02217 MREN_set_opabytes( render_handle , opim_showthru ) ;
02218 break ;
02219 }
02220 }
02221
02222 } else { /* just render the underlay in gray */
02223
02224 MREN_set_graybytes( render_handle , grim ) ; /* grayscale underlay */
02225 MREN_set_opabytes ( render_handle , opim ) ;
02226 }
02227
02228 return ;
02229 }
|
|
||||||||||||||||||||||||||||
|
Compute a rotation matrix. Definition at line 8068 of file plug_render.c. References DMAT_MUL, LOAD_ROT_MAT, p, and q. Referenced by REND_inc_angles().
08070 {
08071 THD_dmat33 q , p ;
08072
08073 LOAD_ROT_MAT( q , th1 , ax1 ) ;
08074 LOAD_ROT_MAT( p , th2 , ax2 ) ; q = DMAT_MUL( p , q ) ;
08075 LOAD_ROT_MAT( p , th3 , ax3 ) ; q = DMAT_MUL( p , q ) ;
08076
08077 return q ;
08078 }
|
|
||||||||||||||||||||
|
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 8093 of file plug_render.c. References a, c, THD_dmat33::mat, q, roll(), and sb. Referenced by REND_inc_angles().
08095 {
08096 double a,b,c ;
08097 double sb,cb , sa,ca , sc,cc ;
08098
08099 sb = -q.mat[2][1] ; b = PI-asin(sb) ; cb = cos(b) ;
08100
08101 if( fabs(cb) < 0.001 ){ /* singular case */
08102 a = 0 ;
08103 cc = q.mat[0][0] ;
08104 sc = q.mat[0][2] ; if( sb < 0.0 ) sc = -sc ;
08105 c = atan2( sc , cc ) ;
08106 } else {
08107 a = atan2( -q.mat[2][0] , -q.mat[2][2] ) ;
08108 c = atan2( -q.mat[0][1] , -q.mat[1][1] ) ;
08109 }
08110
08111 if( a < 0 ) a += 2.0*PI ;
08112 if( c < 0 ) c += 2.0*PI ;
08113
08114 *yaw = a ; *pitch = b ; *roll = c ; return ;
08115 }
|
|
||||||||||||||||
|
Definition at line 6936 of file plug_render.c. References MCW_choose_cbs::cval, free, malloc, MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, mcwCR_string, PLUTO_beep(), POPDOWN_string_chooser, MCW_choose_cbs::reason, REND_save_state(), renderer_open, RSA_COUNT, RSA_SUBSTATE, script_cbut, THD_filename_ok(), and THD_is_file(). Referenced by REND_script_CB().
06937 {
06938 int ll , ii ;
06939 char * fname , buf[256] , * sbuf ;
06940 RENDER_state * rs ;
06941 FILE * fp ;
06942
06943 if( !renderer_open ||
06944 renderings_state == NULL || RSA_COUNT(renderings_state) < 1 ){
06945
06946 POPDOWN_string_chooser ; return ;
06947 }
06948
06949 if( cbs->reason != mcwCR_string ||
06950 cbs->cval == NULL || (ll = strlen(cbs->cval)) == 0 ){
06951
06952 PLUTO_beep() ; return ;
06953 }
06954
06955 fname = malloc( sizeof(char) * (ll+8) ) ;
06956 strcpy(fname,cbs->cval) ;
06957
06958 if( strstr(fname,".rset") == NULL ){
06959 if( fname[ll-1] != '.' ){ fname[ll++] = '.'; fname[ll] = '\0'; }
06960 strcat(fname,"rset") ;
06961 }
06962
06963 if( !THD_filename_ok(fname) ){
06964 sprintf(buf," \n"
06965 "** Filename %s is illegal!\n"
06966 "** Try something different.\n" , fname ) ;
06967 (void) MCW_popup_message( script_cbut , buf ,
06968 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06969 free(fname) ; PLUTO_beep() ; return ;
06970 }
06971
06972 if( THD_is_file(fname) ){
06973 sprintf(buf," \n"
06974 "** File %s already exists!\n"
06975 "** AFNI won't overwrite it.\n" , fname ) ;
06976 (void) MCW_popup_message( script_cbut , buf ,
06977 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06978 free(fname) ; PLUTO_beep() ; return ;
06979 }
06980
06981 fp = fopen( fname , "w" ) ;
06982 if( fp == NULL ){
06983 sprintf(buf, " \n"
06984 "** Some error occured when\n"
06985 "** trying to open file %s\n" , fname ) ;
06986 (void) MCW_popup_message( script_cbut , buf ,
06987 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06988 free(fname) ; PLUTO_beep() ; return ;
06989 }
06990 free(fname) ; POPDOWN_string_chooser ;
06991
06992 rs = NULL ;
06993 for( ii=0 ; ii < RSA_COUNT(renderings_state) ; ii++ ){
06994 sbuf = REND_save_state( RSA_SUBSTATE(renderings_state,ii) , rs ) ;
06995 fwrite( sbuf , 1 , strlen(sbuf) , fp ) ; free(sbuf) ;
06996 rs = RSA_SUBSTATE(renderings_state,ii) ;
06997 }
06998
06999 fclose( fp ) ;
07000 }
|
|
||||||||||||
|
Definition at line 7459 of file plug_render.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, 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_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, 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 REND_save_many_CB(), and REND_save_this_CB().
07460 {
07461 char * sss ;
07462 int ii ;
07463
07464 if( rs == NULL ) return NULL ;
07465
07466 sss = (char *) malloc( sizeof(char) * 32 ) ;
07467 strcpy(sss,"\n***RENDER\n") ;
07468
07469 /* write dataset names */
07470
07471 RSP_STR(dset_name) ;
07472 RSP_STR(func_dset_name) ;
07473
07474 /* write dataset ID codes [12 Apr 2000] */
07475
07476 if( rsbase == NULL || !EQUIV_IDCODES(rsbase->dset_idc,rs->dset_idc) )
07477 if( !ISZERO_IDCODE(rs->dset_idc) )
07478 sss = THD_zzprintf( sss , " dset_idc = %s\n" , rs->dset_idc.str ) ;
07479
07480 if( rsbase == NULL || !EQUIV_IDCODES(rsbase->func_dset_idc,rs->func_dset_idc) )
07481 if( !ISZERO_IDCODE(rs->func_dset_idc) )
07482 sss = THD_zzprintf( sss , " func_dset_idc = %s\n" , rs->func_dset_idc.str ) ;
07483
07484 /* scalar values */
07485
07486 RSP_INT(dset_ival) ;
07487 RSP_INT(func_color_ival) ; RSP_INT(func_thresh_ival) ;
07488
07489 RSP_INT(clipbot) ; RSP_INT(cliptop) ;
07490
07491 RSP_FLOAT(angle_roll) ; RSP_FLOAT(angle_pitch) ; RSP_FLOAT(angle_yaw) ;
07492
07493 RSP_INT(xhair_flag) ;
07494 RSP_INT(xhair_ovc) ; /* 08 Mar 2001 */
07495
07496 RSP_INT( func_use_autorange ) ; RSP_FLOAT( func_threshold ) ;
07497 RSP_FLOAT( func_thresh_top ) ;
07498 RSP_FLOAT( func_color_opacity ) ; RSP_INT( func_see_overlay ) ;
07499 RSP_INT( func_cut_overlay ) ; RSP_INT( func_kill_clusters ) ;
07500 RSP_FLOAT( func_clusters_rmm ) ; RSP_FLOAT( func_clusters_vmul ) ;
07501 RSP_FLOAT( func_range ) ;
07502 RSP_INT( func_see_ttatlas ) ; /* 24 Jul 2001 */
07503
07504 /* pbar values [all of them if number or mode changed] */
07505
07506 if( rsbase == NULL ||
07507 rsbase->pbar_mode != rs->pbar_mode || rsbase->pbar_npane != rs->pbar_npane ){
07508
07509 sss = THD_zzprintf( sss , " // new pbar values\n" ) ;
07510 sss = THD_zzprintf( sss , " pbar_mode = %d\n",rs->pbar_mode ) ;
07511 sss = THD_zzprintf( sss , " pbar_npane = %d\n",rs->pbar_npane ) ;
07512 for( ii=0 ; ii <= rs->pbar_npane ; ii++ )
07513 sss = THD_zzprintf( sss , " pbar_pval[%d] = %s\n" ,
07514 ii , RSP_F2C(rs->pbar_pval[ii]) ) ;
07515 } else {
07516 for( ii=0 ; ii <= rs->pbar_npane ; ii++ )
07517 if( rsbase->pbar_pval[ii] != rs->pbar_pval[ii] )
07518 sss = THD_zzprintf( sss , " pbar_pval[%d] = %s\n" ,
07519 ii , RSP_F2C(rs->pbar_pval[ii]) ) ;
07520 }
07521
07522 /* cutout stuff */
07523
07524 if( RSDIFF_NUM(current_cutout_state.opacity_scale) )
07525 sss = THD_zzprintf(sss," opacity_scale = %s\n",
07526 RSP_F2C(rs->current_cutout_state.opacity_scale) ) ;
07527
07528 /* all cutout parameters if number or global logic changed */
07529
07530 if( RSDIFF_NUM(current_cutout_state.num) || RSDIFF_NUM(current_cutout_state.logic) ){
07531
07532 sss = THD_zzprintf( sss , " // new cutout values\n" ) ;
07533 sss = THD_zzprintf( sss , " cutout_num = %d\n" , rs->current_cutout_state.num ) ;
07534 sss = THD_zzprintf( sss , " cutout_logic = %s\n" ,
07535 cutout_logic_labels[rs->current_cutout_state.logic]) ;
07536
07537 for( ii=0 ; ii < rs->current_cutout_state.num ; ii++ ){
07538 sss = THD_zzprintf( sss , " cutout_type[%d] = %s\n" ,
07539 ii ,
07540 cutout_type_names[rs->current_cutout_state.type[ii]] ) ;
07541
07542 sss = THD_zzprintf( sss , " cutout_mustdo[%d] = %s\n" ,
07543 ii ,
07544 cutout_mustdo_names[rs->current_cutout_state.mustdo[ii]] ) ;
07545
07546 sss = THD_zzprintf( sss , " cutout_param[%d] = %s\n" ,
07547 ii , RSP_F2C(rs->current_cutout_state.param[ii]) ) ;
07548 }
07549
07550 } else {
07551 for( ii=0 ; ii < rs->current_cutout_state.num ; ii++ ){
07552 if( RSDIFF_NUM(current_cutout_state.type[ii]) )
07553 sss = THD_zzprintf( sss , " cutout_type[%d] = %s\n" ,
07554 ii ,
07555 cutout_type_names[rs->current_cutout_state.type[ii]] ) ;
07556
07557 if( RSDIFF_NUM(current_cutout_state.mustdo[ii]) )
07558 sss = THD_zzprintf( sss , " cutout_mustdo[%d] = %s\n" ,
07559 ii ,
07560 cutout_mustdo_names[rs->current_cutout_state.mustdo[ii]] ) ;
07561
07562 if( RSDIFF_NUM(current_cutout_state.param[ii]) )
07563 sss = THD_zzprintf( sss , " cutout_param[%d] = %s\n" ,
07564 ii , RSP_F2C(rs->current_cutout_state.param[ii]) ) ;
07565 }
07566 }
07567
07568 #ifdef SCRIPT_GRAFS
07569 /*-- write graf stuff --*/
07570
07571 if( rsbase == NULL || !graf_states_equal(&(rsbase->bright_graf_state),&(rs->bright_graf_state)) ){
07572 sss = THD_zzprintf( sss , " // new bright graf values\n" ) ;
07573 sss = THD_zzprintf( sss , " bright_nhands = %d\n" , rs->bright_graf_state.nh ) ;
07574 sss = THD_zzprintf( sss , " bright_spline = %d\n" , rs->bright_graf_state.spl) ;
07575 for( ii=0 ; ii < rs->bright_graf_state.nh ; ii++ ){
07576 sss = THD_zzprintf( sss , " bright_handx[%d] = %d\n" ,
07577 ii , rs->bright_graf_state.xh[ii] ) ;
07578 sss = THD_zzprintf( sss , " bright_handy[%d] = %d\n" ,
07579 ii , rs->bright_graf_state.yh[ii] ) ;
07580 }
07581 }
07582
07583 if( rsbase == NULL || !graf_states_equal(&(rsbase->opacity_graf_state),&(rs->opacity_graf_state)) ){
07584 sss = THD_zzprintf( sss , " // new opacity graf values\n" ) ;
07585 sss = THD_zzprintf( sss , " opacity_nhands = %d\n" , rs->opacity_graf_state.nh ) ;
07586 sss = THD_zzprintf( sss , " opacity_spline = %d\n" , rs->opacity_graf_state.spl) ;
07587 for( ii=0 ; ii < rs->opacity_graf_state.nh ; ii++ ){
07588 sss = THD_zzprintf( sss , " opacity_handx[%d] = %d\n" ,
07589 ii , rs->opacity_graf_state.xh[ii] ) ;
07590 sss = THD_zzprintf( sss , " opacity_handy[%d] = %d\n" ,
07591 ii , rs->opacity_graf_state.yh[ii] ) ;
07592 }
07593 }
07594 #endif /* SCRIPT_GRAFS */
07595
07596 sss = THD_zzprintf( sss , "\n" ) ;
07597 return sss ;
07598 }
|
|
||||||||||||||||
|
Definition at line 6790 of file plug_render.c. References MCW_choose_cbs::cval, free, malloc, MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, mcwCR_string, PLUTO_beep(), POPDOWN_string_chooser, MCW_choose_cbs::reason, REND_save_state(), REND_widgets_to_state(), renderer_open, script_cbut, THD_filename_ok(), and THD_is_file(). Referenced by REND_script_CB().
06791 {
06792 int ll ;
06793 char * fname , buf[256] , * sbuf ;
06794 RENDER_state rs ;
06795 FILE * fp ;
06796
06797 if( !renderer_open ){ POPDOWN_string_chooser ; return ; }
06798
06799 if( cbs->reason != mcwCR_string ||
06800 cbs->cval == NULL || (ll = strlen(cbs->cval)) == 0 ){
06801
06802 PLUTO_beep() ; return ;
06803 }
06804
06805 fname = malloc( sizeof(char) * (ll+8) ) ;
06806 strcpy(fname,cbs->cval) ;
06807
06808 if( strstr(fname,".rset") == NULL ){
06809 if( fname[ll-1] != '.' ){ fname[ll++] = '.'; fname[ll] = '\0'; }
06810 strcat(fname,"rset") ;
06811 }
06812
06813 if( !THD_filename_ok(fname) ){
06814 sprintf(buf," \n"
06815 "** Filename %s is illegal!\n"
06816 "** Try something different.\n" , fname ) ;
06817 (void) MCW_popup_message( script_cbut , buf ,
06818 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06819 free(fname) ; PLUTO_beep() ; return ;
06820 }
06821
06822 if( THD_is_file(fname) ){
06823 sprintf(buf," \n"
06824 "** File %s already exists!\n"
06825 "** AFNI won't overwrite it.\n" , fname ) ;
06826 (void) MCW_popup_message( script_cbut , buf ,
06827 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06828 free(fname) ; PLUTO_beep() ; return ;
06829 }
06830
06831 REND_widgets_to_state( &rs ) ;
06832 sbuf = REND_save_state( &rs , NULL ) ;
06833
06834 if( sbuf == NULL ){
06835 (void) MCW_popup_message( script_cbut ,
06836 "\n"
06837 "** Some error occured when\n"
06838 "** trying to save the state!\n" ,
06839 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06840 free(fname) ; PLUTO_beep() ; return ;
06841 }
06842
06843 fp = fopen( fname , "w" ) ;
06844 if( fp == NULL ){
06845 (void) MCW_popup_message( script_cbut ,
06846 "\n"
06847 "** Some error occured when\n"
06848 "** trying to open the file!\n" ,
06849 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06850 free(sbuf) ; free(fname) ; PLUTO_beep() ; return ;
06851 }
06852
06853 POPDOWN_string_chooser ;
06854 fwrite( sbuf , 1 , strlen(sbuf) , fp ) ;
06855 fclose( fp ) ;
06856 free( sbuf ) ; free(fname) ; return ;
06857 }
|
|
||||||||||||||||
|
Definition at line 6693 of file plug_render.c. References MCW_val_bbox(), and script_brindex. Referenced by REND_script_menu().
06694 {
06695 script_brindex = MCW_val_bbox( script_brindex_bbox ) ;
06696 return ;
06697 }
|
|
||||||||||||||||
|
Definition at line 6732 of file plug_render.c. References MCW_choose_string(), MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, PLUTO_beep(), REND_read_exec_CB(), REND_read_this_CB(), REND_save_many_CB(), REND_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.
06733 {
06734 if( w == script_save_this_pb ){
06735 MCW_choose_string( w , "[Save This] Filename prefix:" , NULL ,
06736 REND_save_this_CB , NULL ) ;
06737 return ;
06738 }
06739
06740 if( w == script_read_this_pb ){
06741 MCW_choose_string( w , "[Read This] Filename prefix:" ,
06742 script_read_fname ,
06743 REND_read_this_CB , NULL ) ;
06744 return ;
06745 }
06746
06747 if( w == script_save_many_pb ){
06748 if( renderings_state == NULL || RSA_COUNT(renderings_state) < 1 ){
06749 (void) MCW_popup_message( script_cbut ,
06750 " \n"
06751 "** No rendering states\n"
06752 "** available to save!\n" ,
06753 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06754 PLUTO_beep() ; return ;
06755 }
06756 MCW_choose_string( w , "[Save Many] Filename prefix:" , NULL ,
06757 REND_save_many_CB , NULL ) ;
06758 return ;
06759 }
06760
06761 if( w == script_read_exec_pb ){
06762 #ifdef SCRIPT_DSETS
06763 if( dset == NULL && script_dsetchange == 0 )
06764 #else
06765 if( dset == NULL )
06766 #endif
06767 {
06768 (void) MCW_popup_message( script_cbut ,
06769 " \n"
06770 "** No dataset loaded\n"
06771 "** for rendering!\n" ,
06772 MCW_USER_KILL | MCW_TIMER_KILL ) ;
06773 PLUTO_beep() ; return ;
06774 }
06775 MCW_choose_string( w , "[Read & Exec] Filename prefix:" ,
06776 script_read_fname ,
06777 REND_read_exec_CB , NULL ) ;
06778 return ;
06779 }
06780
06781 /*-- should never be reached --*/
06782
06783 PLUTO_beep() ; return ;
06784 }
|
|
||||||||||||||||
|
Definition at line 6670 of file plug_render.c. References MCW_val_bbox(), and script_dsetchange. Referenced by REND_script_menu().
06671 {
06672 script_dsetchange = MCW_val_bbox( script_dset_bbox ) ;
06673 return ;
06674 }
|
|
||||||||||||||||
|
Definition at line 6682 of file plug_render.c. References MCW_val_bbox(), and script_graf. Referenced by REND_script_menu().
06683 {
06684 script_graf = MCW_val_bbox( script_graf_bbox ) ;
06685 return ;
06686 }
|
|
||||||||||||||||
|
Definition at line 6703 of file plug_render.c. References drive_MCW_imseq(), isqDR_getimnr, MCW_val_bbox(), REND_state_to_widgets(), RSA_COUNT, RSA_SUBSTATE, script_load, and script_load_last. Referenced by REND_script_menu().
06704 {
06705 int sl = MCW_val_bbox( script_load_bbox ) ;
06706
06707 if( sl == script_load ) return ; /* no change? */
06708
06709 script_load = sl ;
06710 script_load_last = -1 ;
06711
06712 if( script_load && imseq != NULL && renderings_state != NULL ){
06713 int nn ;
06714 drive_MCW_imseq( imseq , isqDR_getimnr , (XtPointer) &nn ) ;
06715 if( nn >= 0 && nn < RSA_COUNT(renderings_state) ){
06716 REND_state_to_widgets( RSA_SUBSTATE(renderings_state,nn) ) ;
06717 script_load_last = nn ;
06718 }
06719 } else if( !script_load && last_rendered_state != NULL ){
06720 REND_state_to_widgets( last_rendered_state ) ;
06721 }
06722
06723 return ;
06724 }
|
|
|
Definition at line 6540 of file plug_render.c. References Three_D_View::dc, LABEL_ARG, MCW_BB_check, MCW_BB_noframe, MCW_reghint_children(), new_MCW_bbox(), MCW_DC::ovc, MCW_DCOV::pixov_brightest, REND_script_brindex_CB(), REND_script_dset_CB(), REND_script_graf_CB(), REND_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 REND_make_widgets().
06541 {
06542 Widget rc , mbar ;
06543 static char * load_bbox_label[1] = { "Load Widgets" } ;
06544 static char * brindex_bbox_label[1] = { "Brick Index?" } ;
06545 #ifdef SCRIPT_GRAFS
06546 static char * graf_bbox_label[1] = { "Alter Grafs?" } ;
06547 #endif
06548 static char * dset_bbox_label[1] = { "Alter Dsets?" } ;
06549
06550 rc = XtVaCreateWidget(
06551 "dialog" , xmRowColumnWidgetClass , parent ,
06552 XmNorientation , XmHORIZONTAL ,
06553 XmNpacking , XmPACK_TIGHT ,
06554 XmNtraversalOn , False ,
06555 XmNinitialResourcesPersistent , False ,
06556 NULL ) ;
06557
06558 mbar = XmCreateMenuBar( rc , "dialog" , NULL,0 ) ;
06559 XtVaSetValues( mbar ,
06560 XmNmarginWidth , 0 ,
06561 XmNmarginHeight , 0 ,
06562 XmNspacing , 3 ,
06563 XmNborderWidth , 0 ,
06564 XmNborderColor , 0 ,
06565 XmNtraversalOn , False ,
06566 XmNbackground , im3d->dc->ovc->pixov_brightest ,
06567 NULL ) ;
06568 XtManageChild( mbar ) ;
06569
06570 script_menu =
06571 XmCreatePulldownMenu( mbar , "menu" , NULL,0 ) ;
06572
06573 VISIBILIZE_WHEN_MAPPED(script_menu) ;
06574
06575 script_cbut =
06576 XtVaCreateManagedWidget(
06577 "dialog" , xmCascadeButtonWidgetClass , mbar ,
06578 LABEL_ARG("Scripts") ,
06579 XmNsubMenuId , script_menu ,
06580 XmNmarginWidth , 0 ,
06581 XmNmarginHeight , 0 ,
06582 XmNmarginBottom , 0 ,
06583 XmNmarginTop , 0 ,
06584 XmNmarginRight , 0 ,
06585 XmNmarginLeft , 0 ,
06586 XmNtraversalOn , False ,
06587 XmNinitialResourcesPersistent , False ,
06588 NULL ) ;
06589
06590 #undef MENU_SLINE
06591 #define MENU_SLINE \
06592 (void) XtVaCreateManagedWidget( \
06593 "dialog" , xmSeparatorWidgetClass , script_menu , \
06594 XmNseparatorType , XmSINGLE_LINE , NULL )
06595
06596 /* macro to create a new script menu button */
06597
06598 #define SCRIPT_MENU_BUT(wname,label) \
06599 wname = \
06600 XtVaCreateManagedWidget( \
06601 "dialog" , xmPushButtonWidgetClass , script_menu , \
06602 LABEL_ARG( label ) , \
06603 XmNmarginHeight , 0 , \
06604 XmNtraversalOn , False , \
06605 XmNinitialResourcesPersistent , False , \
06606 NULL ) ; \
06607 XtAddCallback( wname , XmNactivateCallback , \
06608 REND_script_CB , NULL ) ;
06609
06610 /*** top of menu = a label to click on that does nothing at all ***/
06611
06612 (void) XtVaCreateManagedWidget(
06613 "dialog" , xmLabelWidgetClass , script_menu ,
06614 LABEL_ARG("-- Cancel --") ,
06615 XmNrecomputeSize , False ,
06616 XmNinitialResourcesPersistent , False ,
06617 NULL ) ;
06618
06619 MENU_SLINE ;
06620
06621 SCRIPT_MENU_BUT( script_save_this_pb , "Save This" ) ;
06622 SCRIPT_MENU_BUT( script_save_many_pb , "Save Many" ) ;
06623
06624 MENU_SLINE ;
06625
06626 SCRIPT_MENU_BUT( script_read_this_pb , "Read This" ) ;
06627 SCRIPT_MENU_BUT( script_read_exec_pb , "Read & Exec" ) ;
06628
06629 MENU_SLINE ;
06630
06631 script_load_bbox = new_MCW_bbox( script_menu , 1 , load_bbox_label ,
06632 MCW_BB_check , MCW_BB_noframe ,
06633 REND_script_load_CB , NULL ) ;
06634 MCW_reghint_children( script_load_bbox->wrowcol ,
06635 "Recall settings from images" ) ;
06636
06637 script_brindex_bbox = new_MCW_bbox( script_menu , 1 , brindex_bbox_label ,
06638 MCW_BB_check , MCW_BB_noframe ,
06639 REND_script_brindex_CB , NULL ) ;
06640 MCW_reghint_children( script_brindex_bbox->wrowcol ,
06641 "Set brick index when loading widgets?" ) ;
06642
06643 #ifdef SCRIPT_GRAFS
06644 script_graf_bbox = new_MCW_bbox( script_menu , 1 , graf_bbox_label ,
06645 MCW_BB_check , MCW_BB_noframe ,
06646 REND_script_graf_CB , NULL ) ;
06647 MCW_reghint_children( script_graf_bbox->wrowcol ,
06648 "Set grafs when loading widgets?" ) ;
06649 #endif
06650
06651 #ifdef SCRIPT_DSETS
06652 /* 12 Apr 2000 - toggle button for dataset changing via scripts */
06653
06654 script_dset_bbox = new_MCW_bbox( script_menu , 1 , dset_bbox_label ,
06655 MCW_BB_check , MCW_BB_noframe ,
06656 REND_script_dset_CB , NULL ) ;
06657 MCW_reghint_children( script_dset_bbox->wrowcol ,
06658 "Change datasets when loading widgets?" ) ;
06659 #endif
06660
06661 XtManageChild( rc ) ;
06662 return ;
06663 }
|
|
||||||||||||||||
|
Definition at line 5910 of file plug_render.c. References FREE_VOLUMES, func_see_overlay, INVALIDATE_OVERLAY, and MCW_val_bbox(). Referenced by REND_func_widgets(), and REND_state_to_widgets().
05911 {
05912 int newsee = MCW_val_bbox(wfunc_see_overlay_bbox) ;
05913
05914 if( newsee == func_see_overlay ) return ;
05915
05916 func_see_overlay = newsee ;
05917 INVALIDATE_OVERLAY ; FREE_VOLUMES ;
05918 return ;
05919 }
|
|
||||||||||||||||
|
Definition at line 5925 of file plug_render.c. References FREE_VOLUMES, func_see_ttatlas, INVALIDATE_OVERLAY, and MCW_val_bbox(). Referenced by REND_func_widgets(), and REND_state_to_widgets().
05926 {
05927 int newsee = MCW_val_bbox(wfunc_see_ttatlas_bbox) ;
05928
05929 if( newsee == func_see_ttatlas ) return ;
05930
05931 func_see_ttatlas = newsee ;
05932 INVALIDATE_OVERLAY ; FREE_VOLUMES ;
05933 return ;
05934 }
|
|
||||||||||||||||
|
Definition at line 4593 of file plug_render.c. References isqCR_destroy, myXtFree, ISQ_cbs::reason, and MCW_imseq::status. Referenced by REND_imseq_getim().
|
|
||||||||||||||||
|
Definition at line 6097 of file plug_render.c. References alter_MCW_pbar(), MCW_DC::display, 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 REND_pbarmenu_CB().
06098 {
06099 MCW_pbar * pbar ;
06100 float pval[NPANE_MAX+1] ;
06101 double pmax , fac ;
06102 int ii ;
06103
06104 if( ! renderer_open ){ POPDOWN_integer_chooser; XBell(dc->display,100); return; }
06105
06106 pmax = cbs->fval ; if( pmax <= 0.0 ) return ; /* illegal */
06107 pbar = wfunc_color_pbar ;
06108 fac = pmax / pbar->pval[0] ; if( fac == 1.0 ) return ; /* no change */
06109
06110 for( ii=0 ; ii <= pbar->num_panes ; ii++ )
06111 pval[ii] = fac * pbar->pval[ii] ;
06112
06113 HIDE_SCALE ;
06114 alter_MCW_pbar( pbar , 0 , pval ) ;
06115 FIX_SCALE_SIZE ;
06116
06117 INVALIDATE_OVERLAY ;
06118 return ;
06119 }
|
|
|
Definition at line 5688 of file plug_render.c. References DSET_BRICK_STATAUX, DSET_BRICK_STATCODE, DSET_THRESH_VALUE, 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 REND_choose_av_CB(), REND_finalize_func_CB(), REND_thr_scale_CB(), REND_thr_scale_drag_CB(), and REND_thresh_top_CB().
05689 {
05690 float thresh , pval ;
05691 int dec ;
05692 char buf[16] ;
05693
05694 if( !ISVALID_DSET(func_dset) ) return ;
05695
05696 /* get the "true" threshold (scaled up from being in [0,1]) */
05697
05698 thresh = func_threshold * func_thresh_top ;
05699
05700 /* get the p-value that goes with this threshold, for this functional dataset */
05701
05702 #if 0
05703 if( ISFUNCBUCKET(func_dset) )
05704 pval = THD_stat_to_pval( thresh ,
05705 DSET_BRICK_STATCODE(func_dset,func_thresh_ival) ,
05706 DSET_BRICK_STATAUX (func_dset,func_thresh_ival) ) ;
05707
05708 else if( func_thresh_ival == DSET_THRESH_VALUE(func_dset) )
05709 pval = THD_stat_to_pval( thresh , func_dset->func_type ,
05710 func_dset->stat_aux ) ;
05711
05712 else
05713 pval = -1.0 ;
05714 #else
05715 pval = THD_stat_to_pval( thresh ,
05716 DSET_BRICK_STATCODE(func_dset,func_thresh_ival) ,
05717 DSET_BRICK_STATAUX (func_dset,func_thresh_ival) ) ;
05718 #endif
05719
05720 if( pval < 0.0 ){
05721 strcpy( buf , THR_PVAL_LABEL_NONE ) ;
05722 } else {
05723 if( pval == 0.0 ){
05724 strcpy( buf , "p = 0" ) ;
05725 } else if( pval >= 0.9999 ){
05726 strcpy( buf , "p = 1" ) ;
05727 } else if( pval >= 0.0010 ){
05728 char qbuf[16] ;
05729 sprintf( qbuf , "%5.4f" , pval ) ;
05730 strcpy( buf , qbuf+1 ) ;
05731 } else {
05732 int dec = (int)(0.999 - log10(pval)) ;
05733 pval = pval * pow( 10.0 , (double) dec ) ; /* between 1 and 10 */
05734 if( dec < 10 ) sprintf( buf , "%3.1f-%1d" , pval, dec ) ;
05735 else sprintf( buf , "%1d.-%2d" , (int)pval, dec ) ;
05736 }
05737 }
05738 MCW_set_widget_label( wfunc_thr_pval_label , buf ) ;
05739 return ;
05740 }
|
|
|
Definition at line 5573 of file plug_render.c. References 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, and MCW_pbar::update_me. Referenced by REND_func_widgets().
05574 {
05575 MCW_pbar * pbar = wfunc_color_pbar ;
05576 int np , i , jm , lcol ;
05577
05578 jm = pbar->mode ;
05579 lcol = dc->ovc->ncol_ov - 1 ;
05580
05581 /** load the 'save' values for all possible pane counts **/
05582
05583 for( np=NPANE_MIN ; np <= NPANE_MAX ; np++ ){
05584
05585 for( i=0 ; i <= np ; i++ ){
05586 pbar->pval_save[np][i][0] = INIT_pval_sgn[np][i] ; /* from afni.h */
05587 pbar->pval_save[np][i][1] = INIT_pval_pos[np][i] ;
05588 }
05589
05590 for( i=0 ; i < np ; i++ ){
05591 pbar->ovin_save[np][i][0] = MIN( lcol , INIT_ovin_sgn[np][i] ) ;
05592 pbar->ovin_save[np][i][1] = MIN( lcol , INIT_ovin_pos[np][i] ) ;
05593 }
05594 }
05595
05596 /** load the values for the current pane count **/
05597
05598 np = pbar->num_panes ;
05599 jm = pbar->mode ;
05600
05601 for( i=0 ; i <= np ; i++ ) pbar->pval[i] = pbar->pval_save[np][i][jm] ;
05602 for( i=0 ; i < np ; i++ ) pbar->ov_index[i] = pbar->ovin_save[np][i][jm] ;
05603
05604 pbar->update_me = 1 ;
05605 return ;
05606 }
|
|
|
Definition at line 7693 of file plug_render.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, 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_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, REND_angle_CB(), REND_choose_av_CB(), REND_clip_CB(), REND_clusters_av_CB(), REND_color_bbox_CB(), REND_color_opacity_CB(), REND_colornum_av_CB(), REND_cut_overlay_CB(), REND_cutout_type_CB(), REND_finalize_dset_CB(), REND_finalize_func_CB(), REND_kill_clusters_CB(), REND_load_cutout_state(), REND_numcutout_CB(), REND_opacity_scale_CB(), REND_open_func_CB(), REND_range_av_CB(), REND_range_bbox_CB(), REND_see_overlay_CB(), REND_see_ttatlas_CB(), REND_thr_scale_CB(), REND_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 REND_imseq_getim(), REND_read_exec_CB(), REND_read_this_finalize_CB(), and REND_script_load_CB().
07694 {
07695 int ii , flag ;
07696 static XtPointer xpt = (XtPointer) "Mr Tambourine Man" ;
07697
07698 if( rs == NULL ) return ;
07699
07700 script_dontdraw = 1 ; /* 24 Nov 2000 */
07701
07702 #ifdef SCRIPT_DSETS
07703 /* 12 Apr 2000: allow change of dataset! */
07704
07705 if( script_dsetchange ){
07706 THD_3dim_dataset * qset ;
07707 MCW_choose_cbs cbs ;
07708 char serr[256] ;
07709
07710 /*- underlay -*/
07711
07712 if( !ISZERO_IDCODE(rs->dset_idc) ){
07713
07714 if( dset == NULL || !EQUIV_IDCODES(rs->dset_idc,dset->idcode) ){
07715 fprintf(stderr,"++ Changing underlay dataset to %s\n",rs->dset_idc.str) ;
07716 qset = PLUTO_find_dset( &(rs->dset_idc) ) ;
07717 if( !ISVALID_DSET(qset) ){
07718 sprintf(serr, " \n"
07719 "** Can't find desired\n"
07720 "** underlay dataset:\n"
07721 "** %s\n" , rs->dset_idc.str ) ;
07722 (void) MCW_popup_message( script_cbut , serr ,
07723 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07724 PLUTO_beep() ;
07725 fprintf(stderr,"** Couldn't find new underlay dataset!\n") ;
07726 } else {
07727 ndsl = 1 ;
07728 dsl = (PLUGIN_dataset_link *)
07729 XtRealloc( (char *)dsl, sizeof(PLUGIN_dataset_link)*ndsl );
07730 make_PLUGIN_dataset_link( qset , dsl ) ;
07731 cbs.ival = 0 ;
07732 REND_finalize_dset_CB( NULL , NULL , &cbs ) ;
07733 }
07734 }
07735 }
07736
07737 /*- overlay -*/
07738
07739 if( !ISZERO_IDCODE(rs->func_dset_idc) && dset != NULL ){
07740
07741 if( func_dset == NULL ||
07742 !EQUIV_IDCODES(rs->func_dset_idc,func_dset->idcode) ){
07743 fprintf(stderr,"++ Changing overlay dataset to %s\n",rs->func_dset_idc.str) ;
07744 qset = PLUTO_find_dset( &(rs->func_dset_idc) ) ;
07745 if( !ISVALID_DSET(qset) ){
07746 sprintf(serr, " \n"
07747 "** Can't find desired\n"
07748 "** overlay dataset:\n"
07749 "** %s\n" , rs->func_dset_idc.str ) ;
07750 (void) MCW_popup_message( script_cbut , serr ,
07751 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07752 PLUTO_beep() ;
07753 fprintf(stderr,"** Couldn't find new overlay dataset!\n") ;
07754 } else if( DSET_NX(dset) != DSET_NX(qset) ||
07755 DSET_NY(dset) != DSET_NY(qset) ||
07756 DSET_NZ(dset) != DSET_NZ(qset) ){
07757 sprintf(serr," \n"
07758 "** Desired overlay dataset:\n"
07759 "** %s\n"
07760 "** doesn't match underlay\n"
07761 "** dataset's dimensions!\n", rs->func_dset_idc.str );
07762 (void) MCW_popup_message( script_cbut , serr ,
07763 MCW_USER_KILL | MCW_TIMER_KILL ) ;
07764 PLUTO_beep() ;
07765 fprintf(stderr,"** New overlay dataset doesn't match underlay dimensions!\n") ;
07766 } else {
07767 ndsl = 1 ;
07768 dsl = (PLUGIN_dataset_link *)
07769 XtRealloc( (char *)dsl,sizeof(PLUGIN_dataset_link)*ndsl );
07770 make_PLUGIN_dataset_link( qset , dsl ) ;
07771 cbs.ival = 0 ;
07772
07773 if( wfunc_frame == NULL || !XtIsManaged(wfunc_frame) )
07774 REND_open_func_CB(NULL,NULL,NULL) ;
07775
07776 REND_finalize_func_CB( NULL , NULL , &cbs ) ;
07777 }
07778 }
07779 }
07780 }
07781 #endif /* SCRIPT_DSETS */
07782
07783 /* change the sub-values in the dataset (maybe?) */
07784
07785 if( script_brindex ){
07786 if( dset != NULL && RSOK(dset_ival,0,DSET_NVALS(dset)-1) ){
07787 AV_assign_ival( choose_av , rs->dset_ival ) ;
07788 REND_choose_av_CB( choose_av , xpt ) ;
07789 }
07790
07791 if( func_dset != NULL && RSOK(func_color_ival,0,DSET_NVALS(func_dset)-1) ){
07792 AV_assign_ival( wfunc_color_av , rs->func_color_ival ) ;
07793 REND_choose_av_CB( wfunc_color_av , xpt ) ;
07794 }
07795
07796 if( func_dset != NULL && RSOK(func_thresh_ival,0,DSET_NVALS(func_dset)-1) ){
07797 AV_assign_ival( wfunc_thresh_av , rs->func_thresh_ival ) ;
07798 REND_choose_av_CB( wfunc_thresh_av , xpt ) ;
07799 }
07800 }
07801
07802 #ifdef SCRIPT_GRAFS
07803 /* change grafs (maybe?) */
07804
07805 if( script_graf ){
07806 graf_state gs ;
07807
07808 graf_state_get( gry_graf , &gs ) ;
07809 if( ! graf_states_equal( &(rs->bright_graf_state) , &gs ) ){
07810 FREE_VOLUMES ;
07811 graf_state_put( gry_graf , &(rs->bright_graf_state) ) ;
07812 }
07813
07814 graf_state_get( opa_graf , &gs ) ;
07815 if( ! graf_states_equal( &(rs->opacity_graf_state) , &gs ) ){
07816 FREE_VOLUMES ;
07817 graf_state_put( opa_graf , &(rs->opacity_graf_state) ) ;
07818 }
07819 }
07820 #endif /* SCRIPT_GRAFS */
07821
07822 /* change clipping values */
07823
07824 if( rs->clipbot != clipbot_av->ival ){
07825 AV_assign_ival( clipbot_av , rs->clipbot ) ;
07826 REND_clip_CB( clipbot_av , NULL ) ;
07827 }
07828
07829 if( rs->cliptop != cliptop_av->ival ){
07830 AV_assign_ival( cliptop_av , rs->cliptop ) ;
07831 REND_clip_CB( cliptop_av , NULL ) ;
07832 }
07833
07834 /* change angles */
07835
07836 if( RSOK(angle_roll,-359.9,719.9) ){
07837 AV_assign_fval( roll_av , rs->angle_roll ) ;
07838 REND_angle_CB ( roll_av , xpt ) ; /* will set angle_roll */
07839 }
07840 if( RSOK(angle_pitch,-359.9,719.9) ){
07841 AV_assign_fval( pitch_av , rs->angle_pitch ) ;
07842 REND_angle_CB ( pitch_av , xpt ) ; /* will set angle_pitch */
07843 }
07844 if( RSOK(angle_yaw,-359.9,719.9) ){
07845 AV_assign_fval( yaw_av , rs->angle_yaw ) ;
07846 REND_angle_CB ( yaw_av , xpt ) ; /* will set angle_yaw */
07847 }
07848
07849 /* change xhair mode */
07850
07851 if( RSOK(xhair_flag,0,1) ){
07852 xhair_flag = rs->xhair_flag ;
07853 MCW_set_bbox( xhair_bbox , xhair_flag ) ;
07854 }
07855
07856 if( RSOK(xhair_ovc,0,dc->ovc->ncol_ov) ){ /* 08 Mar 2001 */
07857 xhair_ovc = rs->xhair_ovc ;
07858 }
07859
07860 /* change function stuff, if the functional widgets exist */
07861
07862 if( wfunc_frame != NULL ){
07863
07864 { static float dval[9] = { 1.0 , 10.0 , 100.0 , 1000.0 , 10000.0 ,
07865 100000.0 , 1000000.0 , 10000000.0 , 100000000.0 } ;
07866
07867 if( RSOK(func_thresh_top,1.0,dval[THR_TOP_EXPON]) ){
07868 for( ii=THR_TOP_EXPON ; ii > 0 ; ii-- )
07869 if( rs->func_thresh_top >= dval[ii] ) break ;
07870
07871 AV_assign_ival( wfunc_thr_top_av , ii ) ;
07872 REND_thresh_top_CB( wfunc_thr_top_av , NULL ) ;
07873 }
07874 }
07875
07876 if( RSOK(func_threshold,0.0,0.9999) ){
07877 XmScaleCallbackStruct cbs ;
07878 cbs.value = (int)( rs->func_threshold / THR_FACTOR + 0.01 ) ;
07879 REND_thr_scale_CB( NULL,NULL , &cbs ) ;
07880 XmScaleSetValue( wfunc_thr_scale , cbs.value ) ; /* oops, forgot this! 12 Apr 2000 */
07881 }
07882
07883 if( RSOK(func_color_opacity,0.0,1.201) ){ /* 11 Sep 2001: add ST+Dcue=12 */
07884 ii = (int)(rs->func_color_opacity * 10.0 + 0.01) ;
07885 AV_assign_ival( wfunc_opacity_av , ii ) ;
07886 REND_color_opacity_CB( wfunc_opacity_av , NULL ) ;
07887 }
07888
07889 if( RSOK(func_see_overlay,0,1) ){
07890 MCW_set_bbox( wfunc_see_overlay_bbox , rs->func_see_overlay ) ;
07891 REND_see_overlay_CB(NULL,NULL,NULL) ;
07892 }
07893
07894 if( RSOK(func_see_ttatlas,0,1) ){ /* 24 Jul 2001 */
07895 MCW_set_bbox( wfunc_see_ttatlas_bbox , rs->func_see_ttatlas ) ;
07896 REND_see_ttatlas_CB(NULL,NULL,NULL) ;
07897 }
07898
07899 if( RSOK(func_cut_overlay,0,1) ){
07900 MCW_set_bbox( wfunc_cut_overlay_bbox , rs->func_cut_overlay ) ;
07901 REND_cut_overlay_CB(NULL,NULL,NULL) ;
07902 }
07903
07904 if( RSOK(func_kill_clusters,0,1) ){
07905 MCW_set_bbox( wfunc_kill_clusters_bbox , rs->func_kill_clusters ) ;
07906 REND_kill_clusters_CB(NULL,NULL,NULL) ;
07907 }
07908
07909 if( RSOK(func_clusters_rmm,0,99) ){
07910 AV_assign_fval( wfunc_clusters_rmm_av , rs->func_clusters_rmm ) ;
07911 REND_clusters_av_CB(wfunc_clusters_rmm_av,xpt) ;
07912 }
07913
07914 if( RSOK(func_clusters_vmul,0,9999) ){
07915 AV_assign_fval( wfunc_clusters_vmul_av , rs->func_clusters_vmul ) ;
07916 REND_clusters_av_CB(wfunc_clusters_vmul_av,xpt) ;
07917 }
07918
07919 if( RSOK(func_use_autorange,0,1) ){
07920 MCW_set_bbox( wfunc_range_bbox , rs->func_use_autorange ) ;
07921 REND_range_bbox_CB(NULL,NULL,NULL) ;
07922 }
07923
07924 if( RSOK(func_range,0,9999999) ){
07925 AV_assign_fval( wfunc_range_av , rs->func_range ) ;
07926 REND_range_av_CB(wfunc_range_av,xpt) ;
07927 }
07928
07929 /* pbar stuff */
07930
07931 if( rs->pbar_mode != wfunc_color_pbar->mode ){
07932 MCW_set_bbox( wfunc_color_bbox , rs->pbar_mode ) ;
07933 REND_color_bbox_CB(NULL,NULL,NULL) ;
07934 }
07935
07936 if( rs->pbar_npane != wfunc_color_pbar->num_panes ){
07937 AV_assign_ival( wfunc_colornum_av , rs->pbar_npane ) ;
07938 REND_colornum_av_CB( wfunc_colornum_av , NULL ) ;
07939 }
07940
07941 for( flag=ii=0 ; ii <= rs->pbar_npane ; ii++ ){
07942 if( rs->pbar_pval[ii] != wfunc_color_pbar->pval[ii] ) flag++ ;
07943 }
07944 if( flag ){
07945 alter_MCW_pbar( wfunc_color_pbar , 0 , rs->pbar_pval ) ;
07946 INVALIDATE_OVERLAY ;
07947 }
07948 }
07949
07950 /* load cutout stuff into widgets */
07951
07952 REND_load_cutout_state() ; /* save current widget state into cutout state */
07953
07954 if( RSOK(current_cutout_state.opacity_scale,0.0,1.0) ){
07955 AV_assign_fval( opacity_scale_av , rs->current_cutout_state.opacity_scale ) ;
07956 REND_opacity_scale_CB( opacity_scale_av , xpt ) ;
07957 }
07958
07959 if( RSOK(current_cutout_state.num,0,MAX_CUTOUTS) ){
07960 AV_assign_ival( numcutout_av , rs->current_cutout_state.num ) ;
07961 REND_numcutout_CB( numcutout_av , xpt ) ;
07962 }
07963
07964 if( RSOK(current_cutout_state.logic,0,1) ){
07965 AV_assign_ival( logiccutout_av , rs->current_cutout_state.logic ) ;
07966 FREE_VOLUMES ;
07967 }
07968
07969 for( ii=0 ; ii < num_cutouts ; ii++ ){
07970
07971 if( RSOK(current_cutout_state.type[ii],0,NUM_CUTOUT_TYPES-1) ){
07972 AV_assign_ival( cutouts[ii]->type_av , rs->current_cutout_state.type[ii] ) ;
07973 REND_cutout_type_CB( cutouts[ii]->type_av , xpt ) ;
07974 }
07975
07976 if( RSOK(current_cutout_state.mustdo[ii],0,1) ){
07977 MCW_set_bbox( cutouts[ii]->mustdo_bbox , rs->current_cutout_state.mustdo[ii] ) ;
07978 }
07979
07980 if( RSOK(current_cutout_state.param[ii],-999999,999999) ){
07981 AV_assign_fval( cutouts[ii]->param_av , rs->current_cutout_state.param[ii] ) ;
07982 }
07983 }
07984
07985 REND_load_cutout_state() ; /* save current widget state into cutout state */
07986
07987 script_dontdraw = 0 ; /* 24 Nov 2000 */
07988
07989 return ;
07990 }
|
|
||||||||||||||||
|
Definition at line 4371 of file plug_render.c. References AV_assign_fval(), client_data, CUT_EXPRESSION, MCW_arrowval::ival, MCW_invert_widget(), num_cutouts, REND_cutout::param_av, REND_evaluate(), and REND_cutout::type_av. Referenced by REND_incrot_CB(), REND_make_cutout(), and REND_make_widgets().
04372 {
04373 MCW_arrowval * av = (MCW_arrowval *) client_data ;
04374 XmAnyCallbackStruct * cbs = (XmAnyCallbackStruct *) call_data ;
04375 float sval ;
04376 int iv ;
04377
04378 for( iv=0 ; iv < num_cutouts ; iv++ ) /* skip if is an Expr > 0 cutout */
04379 if( av == cutouts[iv]->param_av &&
04380 cutouts[iv]->type_av->ival == CUT_EXPRESSION ) return ;
04381
04382 MCW_invert_widget(wtex) ;
04383
04384 sval = REND_evaluate( av ) ;
04385 AV_assign_fval( av , sval ) ;
04386
04387 MCW_invert_widget(wtex) ;
04388 return ;
04389 }
|
|
||||||||||||||||
|
Definition at line 5746 of file plug_render.c. References client_data, FIX_SCALE_SIZE, func_threshold, INVALIDATE_OVERLAY, REND_set_thr_pval(), and THR_FACTOR. Referenced by REND_func_widgets(), and REND_state_to_widgets().
05747 {
05748 XmScaleCallbackStruct * cbs = (XmScaleCallbackStruct *) call_data ;
05749 float fff ;
05750
05751 fff = THR_FACTOR * cbs->value ; /* between 0 and 1 now */
05752 if( fff >= 0.0 && fff <= 1.0 ) func_threshold = fff ; else return ;
05753 REND_set_thr_pval() ;
05754
05755 INVALIDATE_OVERLAY ;
05756 FIX_SCALE_SIZE ; /* 09 May 2001 */
05757 return ;
05758 }
|
|
||||||||||||||||
|
Definition at line 5764 of file plug_render.c. References client_data, func_threshold, REND_set_thr_pval(), and THR_FACTOR. Referenced by REND_func_widgets().
05765 {
05766 XmScaleCallbackStruct * cbs = (XmScaleCallbackStruct *) call_data ;
05767 float fff ;
05768
05769 fff = THR_FACTOR * cbs->value ; /* between 0 and 1 now */
05770 if( fff >= 0.0 && fff <= 1.0 ) func_threshold = fff ; else return ;
05771 REND_set_thr_pval() ;
05772
05773 return ;
05774 }
|
|
||||||||||||
|
Definition at line 5562 of file plug_render.c. References MCW_arrowval::ival. Referenced by REND_func_widgets().
05563 {
05564 static char tlab[8] ;
05565 sprintf(tlab,"%d",av->ival) ;
05566 return tlab ;
05567 }
|
|
||||||||||||
|
Definition at line 5818 of file plug_render.c. References func_thresh_top, INVALIDATE_OVERLAY, MCW_arrowval::ival, REND_set_thr_pval(), THR_TOP_EXPON, and wfunc_thr_scale. Referenced by REND_func_widgets(), and REND_state_to_widgets().
05819 {
05820 static float dval[9] = { 1.0 , 10.0 , 100.0 , 1000.0 , 10000.0 ,
05821 100000.0 , 1000000.0 , 10000000.0 , 100000000.0 } ;
05822 int decim ;
05823 float tval ;
05824
05825 tval = dval[av->ival] ; if( tval <= 0.0 ) tval = 1.0 ;
05826
05827 decim = (2*THR_TOP_EXPON) - (int)(THR_TOP_EXPON + 0.01 + log10(tval)) ;
05828 if( decim < 0 ) decim = 0 ;
05829
05830 XtVaSetValues( wfunc_thr_scale, XmNdecimalPoints, decim, NULL ) ;
05831
05832 func_thresh_top = tval ;
05833 REND_set_thr_pval() ;
05834
05835 INVALIDATE_OVERLAY ;
05836 return ;
05837 }
|
|
|
Definition at line 4478 of file plug_render.c. References any_rgb_images, drive_MCW_imseq(), IMARR_COUNT, IMARR_SUBIMAGE, isqDR_newseq, isqDR_offwid, isqDR_onoffwid, isqDR_onwid, isqDR_opacitybut, isqDR_penbbox, isqDR_reimage, isqDR_zoombut, and REND_open_imseq(). Referenced by REND_draw_CB().
04479 {
04480 int ntot , ii ;
04481
04482 if( imseq == NULL ){ REND_open_imseq() ; return ; }
04483 if( renderings == NULL || IMARR_COUNT(renderings) == 0 ) return ;
04484
04485 ntot = IMARR_COUNT(renderings) ;
04486
04487 any_rgb_images = 0 ;
04488 for( ii=0 ; ii < ntot ; ii++ ){
04489 if( IMARR_SUBIMAGE(renderings,ii) != NULL &&
04490 IMARR_SUBIMAGE(renderings,ii)->kind == MRI_rgb ){
04491
04492 any_rgb_images = 1 ; break ;
04493 }
04494 }
04495
04496 drive_MCW_imseq( imseq , isqDR_newseq , NULL ) ;
04497
04498 if( ntot == 1 )
04499 drive_MCW_imseq( imseq , isqDR_onoffwid , (XtPointer) isqDR_offwid ) ;
04500 else {
04501 drive_MCW_imseq( imseq , isqDR_onoffwid , (XtPointer) isqDR_onwid ) ;
04502 drive_MCW_imseq( imseq , isqDR_penbbox , (XtPointer) 0 ) ; /* 18 Jul 2003 */
04503 #if 0
04504 drive_MCW_imseq( imseq , isqDR_opacitybut , (XtPointer) 0 ) ; /* 07 Mar 2001 */
04505 drive_MCW_imseq( imseq , isqDR_zoombut , (XtPointer) 0 ) ; /* 12 Mar 2002 */
04506 #endif
04507 }
04508
04509 drive_MCW_imseq( imseq , isqDR_reimage , (XtPointer)(ntot-1) ) ;
04510
04511 return ;
04512 }
|
|
|
||||||||||||||||
|
Definition at line 3486 of file plug_render.c. References CHECK_XHAIR_ERROR, dynamic_flag, FREE_VOLUMES, INVALIDATE_OVERLAY, MCW_val_bbox(), REND_draw_CB(), render_handle, xhair_flag, xhair_ixold, xhair_jyold, and xhair_kzold. Referenced by REND_make_widgets().
03487 {
03488 int old_xh = xhair_flag ;
03489
03490 xhair_flag = MCW_val_bbox( xhair_bbox ) ;
03491 if( old_xh == xhair_flag ) return ;
03492
03493 CHECK_XHAIR_ERROR ;
03494 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
03495
03496 xhair_ixold = -666 ; xhair_jyold = -666 ; xhair_kzold = -666 ; /* forget */
03497
03498 if( cd == NULL && dynamic_flag && render_handle != NULL )
03499 REND_draw_CB(NULL,NULL,NULL) ;
03500
03501 return ;
03502 }
|
|
||||||||||||||||||||
|
Definition at line 3508 of file plug_render.c. References allow_MCW_optmenu_popup(), ev, event, MCW_choose_ovcolor(), REND_xhair_ovc_CB(), and xhair_ovc. Referenced by REND_make_widgets().
03510 {
03511 switch( ev->type ){
03512 case ButtonPress:{
03513 XButtonEvent * event = (XButtonEvent *) ev ;
03514 if( event->button == Button3 || event->button == Button2 ){
03515 #if 0
03516 allow_MCW_optmenu_popup(0) ;
03517 #endif
03518 MCW_choose_ovcolor( w,dc , xhair_ovc , REND_xhair_ovc_CB,NULL ) ;
03519 #if 0
03520 allow_MCW_optmenu_popup(1) ;
03521 #endif
03522 }
03523 }
03524 break ;
03525 }
03526 return ;
03527 }
|
|
||||||||||||||||
|
Definition at line 3531 of file plug_render.c. References FREE_VOLUMES, INVALIDATE_OVERLAY, MCW_choose_cbs::ival, and xhair_ovc. Referenced by REND_xhair_EV().
03532 {
03533 xhair_ovc = cbs->ival ;
03534 INVALIDATE_OVERLAY ; FREE_VOLUMES ;
03535 }
|
|
|
Definition at line 6470 of file plug_render.c. References abs, CHECK_XHAIR_ERROR, AFNI_view_info::crosshair_gap, AFNI_view_info::i1, AFNI_view_info::j2, AFNI_view_info::k3, MRI_BYTE_PTR, MRI_IMAGE::nx, MRI_IMAGE::ny, MRI_IMAGE::nz, nz, ORIMASK_AP, ORIMASK_IS, ORIMASK_LR, OV, Three_D_View::vinfo, xhair_ixold, xhair_jyold, xhair_kzold, xhair_omold, xhair_ovc, and AFNI_view_info::xhairs_orimask. Referenced by REND_reload_func_dset().
06471 {
06472 int ix,jy,kz , nx,ny,nz,nxy , ii , gap , om ;
06473 byte * ovar ;
06474 byte gxh = xhair_ovc ;
06475
06476 if( ovim == NULL || xhair_ovc == 0 ) return ; /* error */
06477
06478 CHECK_XHAIR_ERROR ;
06479
06480 ix = im3d->vinfo->i1 ; nx = ovim->nx ;
06481 jy = im3d->vinfo->j2 ; ny = ovim->ny ; nxy = nx * ny ;
06482 kz = im3d->vinfo->k3 ; nz = ovim->nz ;
06483
06484 om = im3d->vinfo->xhairs_orimask ; /* 02 Jun 1999 */
06485
06486 if( ix < 0 || ix >= nx ) return ; /* error */
06487 if( jy < 0 || jy >= ny ) return ; /* error */
06488 if( kz < 0 || kz >= nz ) return ; /* error */
06489
06490 gap = im3d->vinfo->crosshair_gap ;
06491 ovar = MRI_BYTE_PTR(ovim) ;
06492
06493 /* 02 Jun 1999: allow for partial crosshair drawing */
06494
06495 if( (om & ORIMASK_LR) != 0 ){
06496 for( ii=0 ; ii < nx ; ii++ ){
06497 if( abs(ii-ix) > gap ){ OV(ii,jy,kz) = gxh ; }
06498 }
06499 }
06500
06501 if( (om & ORIMASK_AP) != 0 ){
06502 for( ii=0 ; ii < ny ; ii++ ){
06503 if( abs(ii-jy) > gap ){ OV(ix,ii,kz) = gxh ; }
06504 }
06505 }
06506
06507 if( (om & ORIMASK_IS) != 0 ){
06508 for( ii=0 ; ii < nz ; ii++ ){
06509 if( abs(ii-kz) > gap ){ OV(ix,jy,ii) = gxh ; }
06510 }
06511 }
06512
06513 xhair_ixold = ix ; xhair_jyold = jy ; xhair_kzold = kz ; /* memory */
06514 xhair_omold = om ; /* 02 Jun 1999 */
06515 return ;
06516 }
|
|
||||||||||||||||||||
|
Definition at line 3542 of file plug_render.c. References Three_D_View::anat_now, CHECK_XHAIR_ERROR, dynamic_flag, EQUIV_DSETS, Three_D_View::fim_now, FREE_VOLUMES, INVALIDATE_OVERLAY, MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, PLUTO_find_dset(), RECEIVE_DRAWNOTICE, RECEIVE_DSETCHANGE, RECEIVE_VIEWPOINT, reload_pb, REND_autorange_label(), REND_draw_CB(), REND_range_label(), render_handle, MCW_bbox::wbut, wfunc_range_label, and xhair_flag. Referenced by REND_main().
03543 {
03544 switch( why ){
03545
03546 /*-- change of crosshair location --*/
03547
03548 case RECEIVE_VIEWPOINT:{
03549 if( !xhair_flag || !dynamic_flag || render_handle == NULL ) return ;
03550
03551 CHECK_XHAIR_ERROR ;
03552
03553 if( CHECK_XHAIR_MOTION ){
03554 FREE_VOLUMES ;
03555 REND_draw_CB(NULL,NULL,NULL) ;
03556 }
03557 }
03558 return ;
03559
03560 /*-- user drew something --*/
03561
03562 case RECEIVE_DRAWNOTICE:{ /* 30 Mar 1999 */
03563 int doit=0 ;
03564
03565 if( EQUIV_DSETS(im3d->anat_now,dset) || /* can't tell if user */
03566 EQUIV_DSETS(im3d->fim_now,dset) ){ /* is drawing on anat */
03567
03568 doit = 1 ; FREE_VOLUMES ;
03569
03570 }
03571
03572 if( EQUIV_DSETS(im3d->anat_now,func_dset) || /* or is drawing */
03573 EQUIV_DSETS(im3d->fim_now,func_dset) ){ /* on the fim */
03574
03575 doit = 1 ; INVALIDATE_OVERLAY ;
03576
03577 /* 15 Jun 1999: fix the range labels */
03578
03579 { XmString xstr ;
03580 xstr = REND_range_label() ;
03581 XtVaSetValues( wfunc_range_label , XmNlabelString , xstr , NULL ) ;
03582 XmStringFree(xstr) ;
03583
03584 xstr = REND_autorange_label() ;
03585 XtVaSetValues( wfunc_range_bbox->wbut[0], XmNlabelString,xstr , NULL ) ;
03586 XmStringFree(xstr) ;
03587 }
03588 }
03589
03590 if( doit && dynamic_flag && render_handle != NULL )
03591 REND_draw_CB(NULL,NULL,NULL) ;
03592 }
03593 return ;
03594
03595 /*-- dataset pointers have changed --*/
03596
03597 case RECEIVE_DSETCHANGE:{ /* 31 Mar 1999 */
03598
03599 if( dset != NULL )
03600 dset = PLUTO_find_dset( &dset_idc ) ;
03601
03602 if( func_dset != NULL )
03603 func_dset = PLUTO_find_dset( &func_dset_idc ) ;
03604
03605 FREE_VOLUMES ; INVALIDATE_OVERLAY ;
03606
03607 (void) MCW_popup_message( reload_pb ,
03608 "********** NOTICE ***********\n"
03609 "* Session rescan has forced *\n"
03610 "* purge of dataset brick(s) *\n"
03611 "* from memory. *\n"
03612 "*****************************" ,
03613 MCW_USER_KILL | MCW_TIMER_KILL ) ;
03614 }
03615 return ;
03616
03617 } /* end of switch on "why" */
03618
03619 return ;
03620 }
|
|
|
Definition at line 3651 of file plug_render.c. References abs, CHECK_XHAIR_ERROR, AFNI_view_info::crosshair_gap, DO_OVERLAY, GR, GXH_COLOR, GXH_GRAY, AFNI_view_info::i1, AFNI_view_info::j2, AFNI_view_info::k3, MRI_BYTE_PTR, MRI_IMAGE::nx, MRI_IMAGE::ny, MRI_IMAGE::nz, nz, OP, ORIMASK_AP, ORIMASK_IS, ORIMASK_LR, OXH, Three_D_View::vinfo, xhair_ixold, xhair_jyold, xhair_kzold, xhair_omold, xhair_ovc, and AFNI_view_info::xhairs_orimask. Referenced by REND_reload_dataset().
03652 {
03653 int ix,jy,kz , nx,ny,nz,nxy , ii , gap , om ;
03654 byte * gar , * oar ;
03655 byte gxh , oxh=OXH ;
03656
03657 if( grim == NULL || opim == NULL ) return ; /* error */
03658
03659 if( xhair_ovc > 0 && DO_OVERLAY ) return ; /* 08 Mar 2001 */
03660
03661 gxh = (func_computed) ? GXH_COLOR : GXH_GRAY ;
03662
03663 CHECK_XHAIR_ERROR ;
03664
03665 ix = im3d->vinfo->i1 ; nx = grim->nx ;
03666 jy = im3d->vinfo->j2 ; ny = grim->ny ; nxy = nx * ny ;
03667 kz = im3d->vinfo->k3 ; nz = grim->nz ;
03668
03669 om = im3d->vinfo->xhairs_orimask ; /* 02 Jun 1999 */
03670
03671 if( ix < 0 || ix >= nx ) return ; /* error */
03672 if( jy < 0 || jy >= ny ) return ; /* error */
03673 if( kz < 0 || kz >= nz ) return ; /* error */
03674
03675 gap = im3d->vinfo->crosshair_gap ;
03676 gar = MRI_BYTE_PTR(grim) ;
03677 oar = MRI_BYTE_PTR(opim) ;
03678
03679 /* 02 Jun 1999: allow for partial crosshair drawing */
03680
03681 if( (om & ORIMASK_LR) != 0 ){
03682 for( ii=0 ; ii < nx ; ii++ ){
03683 if( abs(ii-ix) > gap ){ GR(ii,jy,kz) = gxh ; OP(ii,jy,kz) = oxh ; }
03684 }
03685 }
03686
03687 if( (om & ORIMASK_AP) != 0 ){
03688 for( ii=0 ; ii < ny ; ii++ ){
03689 if( abs(ii-jy) > gap ){ GR(ix,ii,kz) = gxh ; OP(ix,ii,kz) = oxh ; }
03690 }
03691 }
03692
03693 if( (om & ORIMASK_IS) != 0 ){
03694 for( ii=0 ; ii < nz ; ii++ ){
03695 if( abs(ii-kz) > gap ){ GR(ix,jy,ii) = gxh ; OP(ix,jy,ii) = oxh ; }
03696 }
03697 }
03698
03699 xhair_ixold = ix ; xhair_jyold = jy ; xhair_kzold = kz ; /* memory */
03700 xhair_omold = om ; /* 02 Jun 1999 */
03701 return ;
03702 }
|
Variable Documentation
|
|
Definition at line 189 of file plug_render.c. |
|
|
Definition at line 217 of file plug_render.c. Referenced by REND_make_widgets(). |
|
|
Definition at line 247 of file plug_render.c. Referenced by REND_accum_CB(), REND_autocompute_CB(), REND_draw_CB(), REND_main(), REND_make_widgets(), and REND_read_exec_CB(). |
|
|
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 359 of file plug_render.c. Referenced by REND_open_imseq(). |
|
|
Definition at line 356 of file plug_render.c. Referenced by REND_open_imseq(). |
|
|
Definition at line 200 of file plug_render.c. Referenced by REND_func_widgets(), and REND_make_widgets(). |
|
|
Definition at line 186 of file plug_render.c. Referenced by REND_make_cutout(), and REND_make_widgets(). |
|
|
Definition at line 62 of file plug_render.c. Referenced by PLUGIN_init(), REND_environ_CB(), and REND_make_widgets(). |
|
|
Definition at line 249 of file plug_render.c. Referenced by REND_angle_CB(), REND_do_incrot(), REND_draw_CB(), REND_make_widgets(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 248 of file plug_render.c. Referenced by REND_angle_CB(), REND_do_incrot(), REND_draw_CB(), REND_make_widgets(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 250 of file plug_render.c. Referenced by REND_angle_CB(), REND_do_incrot(), REND_draw_CB(), REND_make_widgets(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 4399 of file plug_render.c. Referenced by REND_open_imseq(), and REND_update_imseq(). |
|
|
Definition at line 344 of file plug_render.c. Referenced by REND_autocompute_CB(), REND_cutout_blobs(), and REND_evaluate(). |
|
|
Definition at line 290 of file plug_render.c. Referenced by REND_autocompute_CB(), REND_make_widgets(), and REND_read_exec_CB(). |
|
|
Definition at line 290 of file plug_render.c. Referenced by REND_autocompute_CB(), REND_autoflag_CB(), REND_main(), and REND_make_widgets(). |
|
|
Definition at line 289 of file plug_render.c. |
|
|
Definition at line 4624 of file plug_render.c. Referenced by REND_autocancel_CB(), REND_autocompute_CB(), and REND_read_exec_CB(). |
|
|
Definition at line 284 of file plug_render.c. |
|
|
Definition at line 287 of file plug_render.c. Referenced by REND_make_widgets(). |
|
|
Definition at line 286 of file plug_render.c. Referenced by REND_autocompute_CB(), REND_cutout_state_changed(), REND_draw_CB(), REND_imseq_getim(), REND_main(), REND_make_widgets(), and REND_read_exec_CB(). |
|
|
Definition at line 207 of file plug_render.c. Referenced by REND_clip_CB(), REND_main(), and REND_reload_dataset(). |
|
|
Definition at line 190 of file plug_render.c. |
|
|
Definition at line 186 of file plug_render.c. Referenced by REND_finalize_dset_CB(), and REND_make_widgets(). |
|
|
Definition at line 205 of file plug_render.c. |
|
|
Definition at line 208 of file plug_render.c. Referenced by REND_clip_CB(), REND_main(), REND_make_widgets(), and REND_reload_dataset(). |
|
|
Definition at line 205 of file plug_render.c. |
|
|
Definition at line 208 of file plug_render.c. Referenced by REND_clip_CB(), REND_main(), REND_make_widgets(), and REND_reload_dataset(). |
|
|
Definition at line 334 of file plug_render.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 1711 of file plug_render.c. Referenced by REND_cutout_blobs(), and REND_cutout_set_CB(). |
|
|
Definition at line 63 of file plug_render.c. Referenced by PLUGIN_init(), REND_environ_CB(), and REND_make_cutout(). |
|
|
Definition at line 315 of file plug_render.c. Referenced by REND_make_widgets(), and REND_save_state(). |
|
|
Definition at line 317 of file plug_render.c. Referenced by REND_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 1654 of file plug_render.c. Referenced by REND_cutout_type_CB(), and REND_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 1637 of file plug_render.c. Referenced by REND_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 1671 of file plug_render.c. Referenced by REND_save_state(). |
|
|
Definition at line 311 of file plug_render.c. |
|
|
Definition at line 223 of file plug_render.c. |
|
|
Definition at line 187 of file plug_render.c. Referenced by REND_done_CB(), REND_done_timeout_CB(), and REND_make_widgets(). |
|
|
Definition at line 187 of file plug_render.c. Referenced by REND_draw_CB(), and REND_make_widgets(). |
|
|
Definition at line 225 of file plug_render.c. |
|
|
Definition at line 226 of file plug_render.c. |
|
|
Definition at line 228 of file plug_render.c. Referenced by REND_choose_av_CB(), REND_finalize_dset_CB(), REND_main(), REND_read_states(), REND_reload_dataset(), REND_reload_func_dset(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 229 of file plug_render.c. Referenced by REND_choose_av_CB(), and REND_finalize_dset_CB(). |
|
|
Definition at line 2989 of file plug_render.c. Referenced by REND_choose_CB(), REND_finalize_dset_CB(), REND_finalize_func_CB(), REND_load_dsl(), and REND_state_to_widgets(). |
|
|
Definition at line 189 of file plug_render.c. |
|
|
Definition at line 216 of file plug_render.c. Referenced by REND_make_widgets(). |
|
|
Definition at line 246 of file plug_render.c. Referenced by REND_angle_CB(), REND_cutout_set_CB(), REND_do_incrot(), REND_dynamic_CB(), REND_main(), REND_make_widgets(), REND_opacity_scale_CB(), REND_param_CB(), REND_xhair_CB(), and REND_xhair_recv(). |
|
|
Definition at line 477 of file plug_render.c. Referenced by REND_autorange_label(). |
|
|
Definition at line 497 of file plug_render.c. Referenced by REND_init_cmap(), and REND_reload_renderer(). |
|
|
Definition at line 473 of file plug_render.c. Referenced by REND_func_widgets(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 474 of file plug_render.c. Referenced by REND_func_widgets(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 499 of file plug_render.c. Referenced by REND_done_CB(), REND_finalize_dset_CB(), REND_init_cmap(), and REND_reload_renderer(). |
|
|
Definition at line 494 of file plug_render.c. Referenced by REND_autorange_label(), REND_choose_av_CB(), REND_finalize_func_CB(), REND_range_label(), REND_read_states(), REND_reload_func_dset(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 468 of file plug_render.c. Referenced by REND_color_opacity_CB(), REND_read_states(), REND_reload_dataset(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 478 of file plug_render.c. Referenced by REND_draw_CB(), and REND_reload_dataset(). |
|
|
Definition at line 471 of file plug_render.c. Referenced by REND_cut_overlay_CB(), REND_read_states(), REND_reload_dataset(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 491 of file plug_render.c. |
|
|
Definition at line 492 of file plug_render.c. |
|
|
Definition at line 503 of file plug_render.c. Referenced by REND_choose_av_CB(), and REND_finalize_func_CB(). |
|
|
Definition at line 497 of file plug_render.c. Referenced by REND_init_cmap(), and REND_reload_renderer(). |
|
|
Definition at line 472 of file plug_render.c. Referenced by REND_kill_clusters_CB(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 489 of file plug_render.c. Referenced by REND_draw_CB(), and REND_mixshade_av_CB(). |
|
|
Definition at line 498 of file plug_render.c. Referenced by REND_init_cmap(), and REND_reload_renderer(). |
|
|
Definition at line 475 of file plug_render.c. Referenced by REND_color_bbox_CB(). |
|
|
Definition at line 476 of file plug_render.c. Referenced by REND_func_widgets(), REND_range_av_CB(), REND_range_bbox_CB(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 497 of file plug_render.c. Referenced by REND_init_cmap(), and REND_reload_renderer(). |
|
|
Definition at line 469 of file plug_render.c. Referenced by REND_read_states(), REND_reload_func_dset(), REND_save_state(), REND_see_overlay_CB(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 470 of file plug_render.c. Referenced by REND_read_states(), REND_save_state(), REND_see_ttatlas_CB(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 483 of file plug_render.c. Referenced by REND_color_opacity_CB(), REND_draw_CB(), REND_reload_dataset(), and REND_reload_renderer(). |
|
|
Definition at line 485 of file plug_render.c. Referenced by REND_color_opacity_CB(). |
|
|
Definition at line 484 of file plug_render.c. Referenced by REND_draw_CB(). |
|
|
Definition at line 495 of file plug_render.c. Referenced by REND_choose_av_CB(), REND_finalize_func_CB(), REND_range_label(), REND_read_states(), REND_reload_func_dset(), REND_save_state(), REND_set_thr_pval(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 466 of file plug_render.c. Referenced by REND_read_states(), REND_reload_func_dset(), REND_save_state(), REND_set_thr_pval(), REND_state_to_widgets(), REND_thresh_top_CB(), and REND_widgets_to_state(). |
|
|
Definition at line 465 of file plug_render.c. Referenced by REND_func_widgets(), REND_read_states(), REND_reload_func_dset(), REND_save_state(), REND_set_thr_pval(), REND_state_to_widgets(), REND_thr_scale_CB(), REND_thr_scale_drag_CB(), and REND_widgets_to_state(). |
|
|
Definition at line 464 of file plug_render.c. Referenced by REND_range_bbox_CB(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 467 of file plug_render.c. Referenced by REND_reload_func_dset(). |
|
|
Definition at line 231 of file plug_render.c. |
|
|
Definition at line 235 of file plug_render.c. |
|
|
Definition at line 212 of file plug_render.c. |
|
|
Definition at line 187 of file plug_render.c. Referenced by REND_make_widgets(). |
|
|
Definition at line 213 of file plug_render.c. |
|
|
Definition at line 224 of file plug_render.c. |
|
|
Definition at line 273 of file plug_render.c. |
|
|
toggle button for incremental rotations * Definition at line 91 of file plug_render.c. |
|
|
Definition at line 186 of file plug_render.c. Referenced by REND_choose_av_CB(), REND_finalize_dset_CB(), REND_help_CB(), REND_main(), REND_make_widgets(), and REND_open_imseq(). |
|
|
Definition at line 699 of file plug_render.c. |
|
|
Definition at line 320 of file plug_render.c. Referenced by REND_load_cutout_state(), and REND_make_widgets(). |
|
|
Definition at line 323 of file plug_render.c. |
|
|
Definition at line 340 of file plug_render.c. Referenced by REND_make_cutout(). |
|
|
Definition at line 2988 of file plug_render.c. Referenced by REND_choose_CB(), REND_finalize_dset_CB(), REND_finalize_func_CB(), REND_load_dsl(), and REND_state_to_widgets(). |
|
|
Definition at line 265 of file plug_render.c. Referenced by REND_draw_CB(), REND_main(), and REND_reload_dataset(). |
|
|
Definition at line 227 of file plug_render.c. Referenced by REND_choose_av_CB(), REND_finalize_dset_CB(), REND_finalize_func_CB(), and REND_reload_dataset(). |
|
|
Definition at line 269 of file plug_render.c. Referenced by REND_draw_CB(), and REND_finalize_dset_CB(). |
|
|
Definition at line 319 of file plug_render.c. Referenced by REND_cut_overlay_CB(), REND_cutout_set_CB(), REND_cutout_type_CB(), REND_load_cutout_state(), REND_make_widgets(), REND_numcutout_CB(), REND_reload_dataset(), REND_state_to_widgets(), and REND_textact_CB(). |
|
|
Definition at line 322 of file plug_render.c. |
|
|
Definition at line 334 of file plug_render.c. |
|
|
Definition at line 211 of file plug_render.c. |
|
|
Definition at line 190 of file plug_render.c. |
|
|
Definition at line 232 of file plug_render.c. |
|
|
Definition at line 236 of file plug_render.c. |
|
|
Definition at line 501 of file plug_render.c. |
|
|
Definition at line 188 of file plug_render.c. |
|
|
Definition at line 58 of file plug_render.c. Referenced by PLUGIN_init(), REND_main(), and REND_make_widgets(). |
|
|
Definition at line 188 of file plug_render.c. |
|
|
Definition at line 76 of file plug_render.c. Referenced by PLUGIN_init(), REND_draw_CB(), REND_make_widgets(), and REND_precalc_CB(). |
|
|
Definition at line 67 of file plug_render.c. Referenced by PLUGIN_init(), and REND_draw_CB(). |
|
|
Definition at line 66 of file plug_render.c. Referenced by PLUGIN_init(), and REND_make_widgets(). |
|
|
Definition at line 1821 of file plug_render.c. Referenced by REND_done_CB(), and REND_done_timeout_CB(). |
|
|
Definition at line 208 of file plug_render.c. Referenced by REND_main(), REND_make_widgets(), and REND_reload_dataset(). |
|
|
Definition at line 204 of file plug_render.c. Referenced by REND_main(), REND_make_widgets(), and REND_reload_dataset(). |
|
|
Definition at line 187 of file plug_render.c. Referenced by REND_make_widgets(), REND_reload_dataset(), and REND_xhair_recv(). |
|
|
Initial value: {
{"Help",REND_help_CB,NULL,
"Displays more help" , "Displays more help",0} ,
{"Draw",REND_draw_CB,NULL,
"(Re)Draw the image" , "(Re)Draw the image",0} ,
{"Reload",REND_reload_CB,NULL,
"Reload dataset values" , "Reload dataset values",0} ,
{"done",REND_done_CB,NULL,
"Close renderer\nand image." , "Close windows",1}
}Definition at line 836 of file plug_render.c. |
|
|
Definition at line 198 of file plug_render.c. Referenced by REND_func_widgets(), and REND_make_widgets(). |
|
|
Definition at line 233 of file plug_render.c. Referenced by REND_angle_CB(), REND_choose_av_CB(), REND_cutout_set_CB(), REND_do_incrot(), REND_done_CB(), REND_draw_CB(), REND_finalize_dset_CB(), REND_init_cmap(), REND_main(), REND_opacity_scale_CB(), REND_param_CB(), REND_reload_CB(), REND_reload_renderer(), REND_xhair_CB(), and REND_xhair_recv(). |
|
|
Definition at line 267 of file plug_render.c. Referenced by REND_done_CB(), REND_finalize_dset_CB(), REND_finalize_func_CB(), REND_finalize_saveim_CB(), REND_main(), REND_read_exec_CB(), REND_read_this_CB(), REND_save_many_CB(), REND_save_this_CB(), and REND_set_pbar_top_CB(). |
|
|
Definition at line 274 of file plug_render.c. |
|
|
Definition at line 698 of file plug_render.c. |
|
|
Definition at line 188 of file plug_render.c. |
|
|
Definition at line 572 of file plug_render.c. Referenced by REND_script_brindex_CB(). |
|
|
Definition at line 558 of file plug_render.c. |
|
|
Definition at line 555 of file plug_render.c. Referenced by REND_read_exec_CB(), REND_read_this_CB(), REND_save_many_CB(), REND_save_this_CB(), REND_script_CB(), REND_script_menu(), and REND_state_to_widgets(). |
|
|
Definition at line 574 of file plug_render.c. Referenced by REND_state_to_widgets(). |
|
|
Definition at line 614 of file plug_render.c. |
|
|
Definition at line 616 of file plug_render.c. Referenced by REND_script_CB(), and REND_script_dset_CB(). |
|
|
Definition at line 607 of file plug_render.c. Referenced by REND_script_graf_CB(). |
|
|
Definition at line 605 of file plug_render.c. |
|
|
Definition at line 570 of file plug_render.c. Referenced by REND_imseq_getim(), and REND_script_load_CB(). |
|
|
Definition at line 558 of file plug_render.c. |
|
|
Definition at line 571 of file plug_render.c. Referenced by REND_done_CB(), REND_draw_CB(), REND_imseq_getim(), and REND_script_load_CB(). |
|
|
Definition at line 555 of file plug_render.c. Referenced by REND_script_menu(). |
|
|
Definition at line 555 of file plug_render.c. Referenced by REND_script_CB(), and REND_script_menu(). |
|
|
Definition at line 6730 of file plug_render.c. Referenced by REND_read_exec_CB(), REND_read_this_CB(), and REND_script_CB(). |
|
|
Definition at line 555 of file plug_render.c. Referenced by REND_script_CB(), and REND_script_menu(). |
|
|
Definition at line 555 of file plug_render.c. Referenced by REND_script_CB(), and REND_script_menu(). |
|
|
Definition at line 555 of file plug_render.c. Referenced by REND_script_CB(), and REND_script_menu(). |
|
|
Definition at line 186 of file plug_render.c. Referenced by REND_autocompute_CB(), REND_done_CB(), REND_environ_CB(), REND_main(), REND_make_widgets(), REND_open_imseq(), and REND_read_exec_CB(). |
|
|
Definition at line 200 of file plug_render.c. Referenced by REND_func_widgets(), and REND_make_widgets(). |
|
|
Definition at line 436 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 436 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 436 of file plug_render.c. Referenced by REND_func_widgets(), and REND_pbarmenu_CB(). |
|
|
Definition at line 436 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 424 of file plug_render.c. Referenced by REND_choose_CB(), and REND_func_widgets(). |
|
|
Definition at line 446 of file plug_render.c. |
|
|
Definition at line 446 of file plug_render.c. |
|
|
Definition at line 433 of file plug_render.c. |
|
|
Definition at line 434 of file plug_render.c. |
|
|
Definition at line 431 of file plug_render.c. Referenced by REND_func_widgets(), and REND_open_func_CB(). |
|
|
Definition at line 432 of file plug_render.c. |
|
|
Definition at line 431 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 433 of file plug_render.c. |
|
|
Definition at line 444 of file plug_render.c. |
|
|
Definition at line 424 of file plug_render.c. Referenced by REND_done_CB(), REND_func_widgets(), REND_main(), REND_open_func_CB(), REND_state_to_widgets(), and REND_widgets_to_state(). |
|
|
Definition at line 424 of file plug_render.c. Referenced by REND_choose_av_CB(), REND_finalize_func_CB(), and REND_func_widgets(). |
|
|
Definition at line 444 of file plug_render.c. |
|
|
Definition at line 442 of file plug_render.c. |
|
|
Definition at line 436 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 436 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 421 of file plug_render.c. Referenced by REND_make_widgets(), and REND_open_func_CB(). |
|
|
Definition at line 450 of file plug_render.c. Referenced by REND_func_widgets(), and REND_pbarmenu_CB(). |
|
|
Definition at line 450 of file plug_render.c. Referenced by REND_func_widgets(), and REND_pbarmenu_EV(). |
|
|
Definition at line 453 of file plug_render.c. |
|
|
Definition at line 452 of file plug_render.c. |
|
|
Definition at line 451 of file plug_render.c. Referenced by REND_func_widgets(), and REND_pbarmenu_CB(). |
|
|
Definition at line 450 of file plug_render.c. Referenced by REND_func_widgets(), and REND_pbarmenu_CB(). |
|
|
Definition at line 442 of file plug_render.c. |
|
|
Definition at line 444 of file plug_render.c. |
|
|
Definition at line 436 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 441 of file plug_render.c. Referenced by REND_choose_av_CB(), REND_finalize_func_CB(), REND_func_widgets(), and REND_xhair_recv(). |
|
|
Definition at line 443 of file plug_render.c. |
|
|
Definition at line 436 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 424 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 444 of file plug_render.c. |
|
|
Definition at line 448 of file plug_render.c. |
|
|
Definition at line 427 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 427 of file plug_render.c. Referenced by REND_func_widgets(), and REND_set_thr_pval(). |
|
|
Definition at line 427 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 427 of file plug_render.c. Referenced by REND_func_widgets(), REND_state_to_widgets(), and REND_thresh_top_CB(). |
|
|
Definition at line 429 of file plug_render.c. |
|
|
Definition at line 433 of file plug_render.c. |
|
|
Definition at line 424 of file plug_render.c. Referenced by REND_func_widgets(). |
|
|
Definition at line 424 of file plug_render.c. Referenced by REND_func_widgets(), and REND_open_func_CB(). |
|
|
Definition at line 189 of file plug_render.c. |
|
|
Definition at line 215 of file plug_render.c. Referenced by REND_make_widgets(). |
|
|
Definition at line 252 of file plug_render.c. Referenced by REND_draw_CB(), REND_main(), REND_make_widgets(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), REND_widgets_to_state(), REND_xhair_CB(), and REND_xhair_recv(). |
|
|
Definition at line 253 of file plug_render.c. Referenced by REND_main(), REND_xhair_CB(), REND_xhair_overlay(), and REND_xhair_underlay(). |
|
|
Definition at line 254 of file plug_render.c. Referenced by REND_main(), REND_xhair_CB(), REND_xhair_overlay(), and REND_xhair_underlay(). |
|
|
Definition at line 255 of file plug_render.c. Referenced by REND_main(), REND_xhair_CB(), REND_xhair_overlay(), and REND_xhair_underlay(). |
|
|
Definition at line 256 of file plug_render.c. Referenced by REND_xhair_overlay(), and REND_xhair_underlay(). |
|
|
Definition at line 196 of file plug_render.c. Referenced by REND_draw_CB(), REND_main(), REND_read_states(), REND_save_state(), REND_state_to_widgets(), REND_widgets_to_state(), REND_xhair_EV(), REND_xhair_ovc_CB(), REND_xhair_overlay(), and REND_xhair_underlay(). |
|
|
Definition at line 258 of file plug_render.c. Referenced by REND_done_CB(), and REND_main(). |
|
|
Definition at line 188 of file plug_render.c. |