/* Procedure associated with the cancel button. */ void cancel_sigmabutton_callback(Widget w, XtPointer client_data, XmSelectionBoxCallbackStruct *call_data){ action=SELECT; refresh_action(); deactivate_sigma_dialog(); }
void activate_version_dialog(Widget w, XtPointer client_data, XmAnyCallbackStruct *call_data) { selection = VERSION; action = SELECT; refresh_action(); XtManageChild(version_dialog); }
/* Procedure associated with the ok button. */ void ok_sigmabutton_callback(Widget w, XtPointer client_data, XmSelectionBoxCallbackStruct *call_data){ float sigma; char *value; /* Get sigma value from user's selection */ XmStringGetLtoR(call_data->value, XmSTRING_DEFAULT_CHARSET, &value); sigma = atof(value); if ( atoi(value) < 0.5 || atoi(value) > 20 ) XBell(XtDisplay(w),100); else switch (filter) { case f1: gaussian_filter(sigma); break; case f2: dgaussian_filter(sigma); break; case f3: d2gaussian_filter(sigma); break; case f4: dgaux_gauy_filter(sigma); break; case f5: dgauy_gaux_filter(sigma); break; case f6: total_gradient_filter(sigma); break; case f7: gradient_x_y_filter(sigma); break; default: break; } action=SELECT; refresh_action(); }
void activate_merge_dialog(Widget w, XtPointer client_data, XmAnyCallbackStruct *call_data) { selection = SPLIT_MERGE; action = CLICK; refresh_action(); XtManageChild(merge_dialog); }
void activate_split_dialog(Widget w, XtPointer client_data, XmAnyCallbackStruct *call_data) { if (file_not_loaded) return; selection = SPLIT_MERGE; action = CLICK; refresh_action(); XtManageChild(split_dialog); }
/*Definition of gradient_x_y functions*/ void activate_gradient_x_y_dialog(Widget w, XtPointer client_data, XmAnyCallbackStruct *call_data){ if (file_not_loaded) return; selection = GRADIENTXY; filter = f7; action = SIGMAVALUE; refresh_action(); XtManageChild(sigma_dialog); }
/*Definition of dgauy_gaux functions*/ void activate_dgauy_gaux_dialog(Widget w, XtPointer client_data, XmAnyCallbackStruct *call_data){ if (file_not_loaded) return; selection = DGAUYGAUX; filter = f5; action = SIGMAVALUE; refresh_action(); XtManageChild(sigma_dialog); }
/*Definition of total_gradient functions*/ void activate_total_gradient_dialog(Widget w, XtPointer client_data, XmAnyCallbackStruct *call_data){ int a,b; FILE *p_file; if (yhs_files_open == 0 || yhs_filename[0] == 0 || yhs_files_open > 19 || running == 1) return; selection = TOTALGRADIENT; filter = f6; action = SIGMAVALUE; refresh_action(); if((p_file = fopen(yhs_filename1,"r")) == NULL) { fprintf(stderr, "Cannot open: %s\n",yhs_filename1); exit(1); } for (a=0;a<512;a++){ for (b=0;b<512;b++) { array1[a][b]=getc(p_file);array2[a][b]=0; }} fclose(p_file); XtManageChild(sigma_dialog); }
/* Function definition */ void activate_ctomass_callback(Widget w, XtPointer client_data, XmAnyCallbackStruct *call_data) { int i, j; long kk; float *ii, *jj ; unsigned long val = 134L; if (file_not_loaded) return; selection = CTOMASS; action = SELECT; refresh_action(); /* Calculate the coordinates of the center of mass of the region(s) marked with the value VAL. Return as (II,JJ). */ kk = 0; *ii = 0.0; *jj = 0.0; for (i=0; i<IMAGE_WIDTH; i++) { for (j=0; j<IMAGE_HEIGHT; j++) { if (XGetPixel(theXImage_1,i,j) == val) { *ii += (float)i; *jj += (float)j; kk += 1; } } } if (kk==0) { return; } *ii = *ii/(float)kk; *jj = *jj/(float)kk; printf("Center of Mass = %f\n , %f\n", *ii, *jj); }
int main(int argc, char **argv) { ROBOT_SPECIFICATIONS robot_specifications_data; PROGRAM_STATE program_state_data; ROBOT_STATE robot_state_data; ACTION action_data; SENSATION sensation_data; ROBOT_SPECIFICATIONS_PTR robot_specifications = &robot_specifications_data; PROGRAM_STATE_PTR program_state = &program_state_data; ROBOT_STATE_PTR robot_state = &robot_state_data; ACTION_PTR action = &action_data; SENSATION_PTR sensation = &sensation_data; struct timeval TCX_waiting_time = {0, 0}; robot_specifications->is_initialized = 0; program_state->is_initialized = 0; robot_state->is_initialized = 0; action->is_initialized = 0; sensation->is_initialized = 0; allGlobal.is_initialized = 0; signal(SIGTERM, &interrupt_handler); /* kill interupt handler */ signal(SIGINT, &interrupt_handler); /* control-C interupt handler */ #if 0 signal(SIGALRM, &alarm_handler); /* handler for regular interrupts */ #endif bParamList = bParametersAddEntry(bParamList, "robot", "name", "B21"); bParamList = bParametersAddEntry(bParamList, "", "TCXHOST", "localhost"); bParamList = bParametersAddEntry(bParamList, "", "fork", "yes"); /* add some parameter files */ bParamList = bParametersAddFile (bParamList, "etc/beeSoft.ini"); /* add some enviroment variables */ bParamList = bParametersAddEnv(bParamList, "", "TCXHOST"); bParamList = bParametersAddArray(bParamList, "", argc, argv); bParametersFillParams(bParamList); check_commandline_parameters(argc, argv, ALL); init_program(ALL); if (!load_parameters(RHINO_INIT_NAME, ALL)) exit(-1); allocate_memory(ALL); /*save_parameters(RHINO_INIT_NAME, ALL);*/ init_graphics(ALL); connect_to_tcx(ALL); G_display_switch(TITLE_BUTTON, 1); #if 0 alarm((unsigned) robot_specifications->alarm_interval); /* set up alarm */ #endif tcx_reset_joystick(ALL); for (;!program_state->quit;){ program_state->something_happened = 0; if (program_state->tcx_autoconnect) connect_to_tcx(ALL); if (test_mouse(ALL)) program_state->something_happened = 1; if (refresh_action(ALL)) program_state->something_happened = 1; if (initiate_action(ALL)) program_state->something_happened = 1; /* if (terminate_action(ALL)) program_state->something_happened = 1; */ if (program_state->tcx_initialized){ TCX_waiting_time.tv_sec = 0; TCX_waiting_time.tv_usec = 0; tcxRecvLoop((void *) &TCX_waiting_time); } if (!program_state->something_happened){ block_waiting_time.tv_sec = 1; block_waiting_time.tv_usec = 0; block_wait(&block_waiting_time, program_state->tcx_initialized, program_state->graphics_initialized); } #ifdef TOURGUIDE_VERSION tourguide_check_for_timeout(ALL); #endif /* TOURGUIDE_VERSION */ } /* close_log_file(ALL);*/ /* if (program_state->tcx_initialized) tcxCloseAll();*/ G_display_switch(TITLE_BUTTON, 2); fprintf(stderr, "\nGood-bye.\n"); sleep(1); exit(0); }