#include "stdafx.h" #include "FiltersInput.h" void disable_inputs(FiltersDialog * FiltDlg){ //common inputs disabled in dialog class //convolve FiltDlg->field_aniso_midpt_txt.EnableWindow(false); FiltDlg->field_filter_aniso_midpoint_cntrl.EnableWindow(false); //binerization FiltDlg->check_skip_binarize.EnableWindow(false); //anisotropic parameters FiltDlg->check_filter_aniso_fast.EnableWindow(false); FiltDlg->check_filter_aniso_conboost.EnableWindow(false); FiltDlg->check_filter_aniso_var.EnableWindow(false); FiltDlg->combo_filter_aniso_diffcoef.EnableWindow(false); FiltDlg->field_filter_aniso_K_cntrl.EnableWindow(false); FiltDlg->field_filter_aniso_TAU_cntrl.EnableWindow(false); FiltDlg->field_filter_aniso_iterations_cntrl.EnableWindow(false); FiltDlg->field_filter_aniso_midpoint_cntrl.EnableWindow(false); FiltDlg->field_aniso_midpt_txt.EnableWindow(false); //voxel removal parameters FiltDlg->check_voxrem_run_pores.EnableWindow(false); FiltDlg->field_voxrem_pore_vox_vol_cntrl.EnableWindow(false); FiltDlg->field_voxrem_pore_um_vol_cntrl.EnableWindow(false); FiltDlg->check_voxrem_run_fibers.EnableWindow(false); FiltDlg->field_voxrem_fiber_vox_vol_cntrl.EnableWindow(false); FiltDlg->field_voxrem_fiber_um_vol_cntrl.EnableWindow(false); //close filter FiltDlg->field_filter_close_iterations_cntrl.EnableWindow(false); FiltDlg->field_filter_close_neighs_cntrl.EnableWindow(false); FiltDlg->check_filter_close_extended.EnableWindow(false); //output options FiltDlg->field_rotate_XY_YZ_times_cntrl.EnableWindow(false); FiltDlg->field_rotate_XY_ZX_times_cntrl.EnableWindow(false); FiltDlg->check_save_raw_files.EnableWindow(false); FiltDlg->check_save_bin_stack.EnableWindow(false); FiltDlg->check_save_bin_files.EnableWindow(false); FiltDlg->check_save_cbin_files.EnableWindow(false); FiltDlg->check_save_intermediate_results.EnableWindow(false); } /* re-enable the windows after an analysis run is done */ void enable_inputs(FiltersDialog * FiltDlg){ //enable the common inputs FiltDlg->EnableCommonInputs(); //convolve FiltDlg->field_aniso_midpt_txt.EnableWindow(true); FiltDlg->field_filter_aniso_midpoint_cntrl.EnableWindow(true); //binerization FiltDlg->check_skip_binarize.EnableWindow(true); //anisotropic parameters if (FiltDlg->check_filter_aniso_enable.GetCheck()) { FiltDlg->check_filter_aniso_fast.EnableWindow(true); FiltDlg->check_filter_aniso_conboost.EnableWindow(true); FiltDlg->check_filter_aniso_var.EnableWindow(true); FiltDlg->combo_filter_aniso_diffcoef.EnableWindow(true); FiltDlg->field_filter_aniso_K_cntrl.EnableWindow(true); FiltDlg->field_filter_aniso_TAU_cntrl.EnableWindow(true); FiltDlg->field_filter_aniso_iterations_cntrl.EnableWindow(true); if (FiltDlg->check_filter_aniso_conboost.GetCheck()) { FiltDlg->field_filter_aniso_midpoint_cntrl.EnableWindow(true); FiltDlg->field_aniso_midpt_txt.EnableWindow(true); } } //voxel removal parameters if (FiltDlg->check_filter_voxrem_enable.GetCheck()) { FiltDlg->check_voxrem_run_pores.EnableWindow(true); FiltDlg->field_voxrem_pore_vox_vol_cntrl.EnableWindow(true); FiltDlg->field_voxrem_pore_um_vol_cntrl.EnableWindow(true); FiltDlg->check_voxrem_run_fibers.EnableWindow(true); FiltDlg->field_voxrem_fiber_vox_vol_cntrl.EnableWindow(true); FiltDlg->field_voxrem_fiber_um_vol_cntrl.EnableWindow(true); } //close filter if (FiltDlg->check_filter_close_enable.GetCheck()) { FiltDlg->field_filter_close_iterations_cntrl.EnableWindow(true); FiltDlg->field_filter_close_neighs_cntrl.EnableWindow(true); FiltDlg->check_filter_close_extended.EnableWindow(true); } //output options FiltDlg->field_rotate_XY_YZ_times_cntrl.EnableWindow(true); FiltDlg->field_rotate_XY_ZX_times_cntrl.EnableWindow(true); FiltDlg->check_save_raw_files.EnableWindow(true); FiltDlg->check_save_bin_stack.EnableWindow(true); FiltDlg->check_save_bin_files.EnableWindow(true); FiltDlg->check_save_cbin_files.EnableWindow(true); FiltDlg->check_save_intermediate_results.EnableWindow(true); //flash for 3 seconds to alert user that we are done FiltDlg->FlashWindowEx(FLASHW_TRAY, 3, 0); } UINT FiltersSetup(LPVOID pParam) { FiltersDialog * FiltDlg = (FiltersDialog*) pParam; disable_inputs(FiltDlg); // //set global variables with filter settings // //skipping binarization if (FiltDlg->check_skip_binarize.GetCheck()) FiltDlg->skip_binarization = true; else FiltDlg->skip_binarization = false; //contrast FiltDlg->filter_contrast_percentage = FiltDlg->field_contrast_percentage_short; //percent for contrast //convolve FiltDlg->filter_convolve_type = (short)FiltDlg->combo_convolve_type.GetCurSel(); FiltDlg->filter_convolve_radius = FiltDlg->field_filter_convolve_float; if (FiltDlg->check_filter_convolve_savebounds.GetCheck()) FiltDlg->filter_convolve_savebounds = true; else FiltDlg->filter_convolve_savebounds = false; //old median //if (FiltDlg->check_filter_median_averaging.GetCheck()) //median filter using averaging // FiltDlg->filter_median_averaging = true; //else // FiltDlg->filter_median_averaging = false; //anisotropic diff FiltDlg->filter_aniso_K = FiltDlg->field_filter_aniso_K_short; //K const FiltDlg->filter_aniso_TAU = FiltDlg->field_filter_aniso_TAU_float; //TAU const FiltDlg->filter_aniso_iterations = FiltDlg->field_filter_aniso_iterations_short; //iterations FiltDlg->filter_aniso_midpoint = (unsigned char)FiltDlg->field_filter_aniso_midpoint_short; //midpoint FiltDlg->filter_aniso_diff_coef = (short)FiltDlg->combo_filter_aniso_diffcoef.GetCurSel(); if (FiltDlg->check_filter_aniso_conboost.GetCheck()) FiltDlg->filter_aniso_conboost = true; else FiltDlg->filter_aniso_conboost = false; if (FiltDlg->check_filter_aniso_var.GetCheck()) FiltDlg->filter_aniso_K_var = true; else FiltDlg->filter_aniso_K_var = false; if (FiltDlg->check_filter_aniso_fast.GetCheck()) FiltDlg->filter_aniso_fast = true; else FiltDlg->filter_aniso_fast = false; //specal removal if (FiltDlg->check_voxrem_run_pores.GetCheck()) FiltDlg->filter_voxrem_removal_run_4_pore = true; //run for pore else FiltDlg->filter_voxrem_removal_run_4_pore = false; if (FiltDlg->check_voxrem_run_fibers.GetCheck()) FiltDlg->filter_voxrem_removal_run_4_fiber = true; //run for fiber else FiltDlg->filter_voxrem_removal_run_4_fiber = false; FiltDlg->filter_voxrem_pore_um_vol = FiltDlg->field_voxrem_pore_um_vol_double; //vol for pore to remove FiltDlg->filter_voxrem_fiber_um_vol = FiltDlg->field_voxrem_fiber_um_vol_double; //vol for fiber to remove //Close filt FiltDlg->filter_close_iterations = FiltDlg->field_filter_close_iterations_short; //iterations FiltDlg->filter_close_neighs = FiltDlg->field_filter_close_neighs_short; //neighbor threshold if (FiltDlg->check_filter_close_extended.GetCheck())//extended FiltDlg->filter_close_extended = true; else FiltDlg->filter_close_extended = false; //additional output options if (FiltDlg->check_save_raw_files.GetCheck()) FiltDlg->check_save_raw_files_bool = true; else FiltDlg->check_save_raw_files_bool = false; if (FiltDlg->check_save_intermediate_results.GetCheck()) FiltDlg->save_intermediate_results = true; else FiltDlg->save_intermediate_results = false; //perform standard stuff DS_1b_cube * cube = FiltDlg->Dlg_Input_to_cDS(); //rotations, or any additional file saving //clean up if (cube) delete cube; enable_inputs(FiltDlg); return 0; }