gint set_data_source(GtkWidget *widget, gpointer data) { if (GTK_TOGGLE_BUTTON(widget)->active) { /* its pressed */ draw_stop(); input_thread_stopper(data_handle); close_datasource(data_handle); data_source = (DataSource) GPOINTER_TO_INT(data); /* start even if none previously opened (in case previous sound source was bad) */ if ((data_handle=open_datasource(data_source)) >= 0) { #ifdef USING_FFTW2 plan = fftw_create_plan(nsamp, FFTW_FORWARD, FFTW_ESTIMATE); #elif USING_FFTW3 plan = fftw_plan_r2r_1d(nsamp, raw_fft_in, raw_fft_out, FFTW_R2HC, FFTW_ESTIMATE); #endif ring_rate_changed(); /* Fix all gui controls that depend on * ring_rate (adjustments and such */ input_thread_starter(data_handle); draw_start(); } } return TRUE; }
int Impostor::draw_final(CVIEWptr&) { if(_mesh){ draw_start(); // b-c // | | // a-d mlib::NDCZpt a, c; _mesh->get_bb().ndcz_bounding_box(_mesh->obj_to_ndc(),a,c); mlib::NDCZpt b(a[0], c[1], 0); mlib::NDCZpt d(c[0], a[1], 0); // cerr << "final draw impostor " << min_pt << " and " << max_pt << endl; //glBegin(GL_QUADS); glBegin(GL_LINE_STRIP); glVertex2dv(a.data()); glVertex2dv(b.data()); glVertex2dv(c.data()); glVertex2dv(d.data()); glVertex2dv(a.data()); glEnd(); draw_end(); } return 0; }
gint slider_changed(GtkWidget *widget, gpointer data) { switch ((Slider) GPOINTER_TO_INT(data)) { case BANDS: bands = GTK_ADJUSTMENT(widget)->value; recalc_scale = TRUE; /* MUST recaluclate scalefactor */ recalc_markers = TRUE; /* recalculate marker values */ break; case SENSITIVITY: multiplier = GTK_ADJUSTMENT(widget)->value; break; case BAR_DECAY: bar_decay_speed = GTK_ADJUSTMENT(widget)->value; break; case PEAK_DECAY: peak_decay_speed = GTK_ADJUSTMENT(widget)->value; break; case PEAK_HOLD: peak_hold_time = GTK_ADJUSTMENT(widget)->value; break; case LAG: lag = (float)GTK_ADJUSTMENT(widget)->value; break; case NOISE_FLOOR: noise_floor = (float)GTK_ADJUSTMENT(widget)->value; break; case TAPE_SCROLL: tape_scroll = GTK_ADJUSTMENT(widget)->value; // update_time_markers(); break; case REFRESH_RATE: refresh_rate = GTK_ADJUSTMENT(widget)->value; draw_stop(); draw_start(); break; case LOW_LIMIT: low_freq = GTK_ADJUSTMENT(widget)->value; ring_rate_changed(); display_markers = TRUE; break; case HIGH_LIMIT: high_freq = GTK_ADJUSTMENT(widget)->value; ring_rate_changed(); display_markers = TRUE; break; case SCOPE_ZOOM: scope_zoom = GTK_ADJUSTMENT(widget)->value; break; default: break; } return 0; }
void reinit_extace(int new_nsamp) { /* Stop drawing the display */ draw_stop(); if(data_handle != -1) /* stop if previously opened */ { input_thread_stopper(data_handle); close_datasource(data_handle); } /* Free all buffers */ mem_dealloc(); scope_begin_l = 0; scope_begin_l = 0; /* auto shift lag slightly to maintain good sync * The idea is the shift the lag slighly so that the "on-time" data * is in the MIDDLE of the window function for better eye/ear matchup */ nsamp = new_nsamp; convolve_factor = floor(nsamp/width) < 3 ? floor(nsamp/width) : 3 ; if (convolve_factor == 0) convolve_factor = 1; recalc_markers = TRUE; recalc_scale = TRUE; mem_alloc(); setup_datawindow(NULL,(WindowFunction)window_func); ring_rate_changed(); ring_pos=0; /* only start if it has been stopped above */ if(data_handle != -1 && (data_handle=open_datasource(data_source)) >= 0) { #ifdef USING_FFTW2 fftw_destroy_plan(plan); plan = fftw_create_plan(nsamp, FFTW_FORWARD, FFTW_ESTIMATE); #elif USING_FFTW3 fftw_cleanup(); plan = fftw_plan_r2r_1d(nsamp, raw_fft_in, raw_fft_out,FFTW_R2HC, FFTW_ESTIMATE); #endif input_thread_starter(data_handle); ring_rate_changed(); /* Fix all gui controls that depend on * ring_rate (adjustments and such */ draw_start(); } }
gint set_data_source() { draw_stop(); input_thread_stopper(data_handle); close_datasource(data_handle); if ((data_handle=open_datasource(data_source)) >= 0) { #ifdef USING_FFTW2 plan = fftw_create_plan(nsamp, FFTW_FORWARD, FFTW_ESTIMATE); #elif USING_FFTW3 plan = fftw_plan_r2r_1d(nsamp, raw_fft_in, raw_fft_out, FFTW_R2HC, FFTW_ESTIMATE); #endif ring_rate_changed(); /* Fix all gui controls that depend on * ring_rate (adjustments and such */ input_thread_starter(data_handle); draw_start(); } return TRUE; }
gint change_display_mode(GtkWidget *widget, gpointer data) { gint enable_dir_win = 0; draw_stop(); /* stop the display */ /* Clear the screen to remove stray stuff */ gdk_draw_rectangle(main_pixmap, main_display->style->black_gc, TRUE, 0,0, width,height); gdk_draw_rectangle(main_display->window, main_display->style->black_gc, TRUE, 0,0, width,height); gdk_window_clear(main_display->window); switch ((DisplayMode) GPOINTER_TO_INT(data)) { case WIRE_3D: mode = LAND_3D; sub_mode_3D = WIRE_3D; enable_dir_win = 1; break; case FILL_3D: mode = LAND_3D; sub_mode_3D = FILL_3D; enable_dir_win = 1; break; case EQ_2D: mode = EQ_2D; enable_dir_win = 0; break; case LINE_EQ: mode = LINE_EQ; enable_dir_win = 0; break; case SCOPE: mode = SCOPE; enable_dir_win = 0; break; case HORIZ_SPECGRAM: mode = HORIZ_SPECGRAM; if (horiz_spec_start < 60) horiz_spec_start = 60; if (horiz_spec_start > width) horiz_spec_start = width-10; enable_dir_win = 0; display_markers = 1; break; case VERT_SPECGRAM: case VERT_SPECGRAM2: mode = (DisplayMode) GPOINTER_TO_INT(data); if (vert_spec_start > height) vert_spec_start = height-10; if (vert_spec_start < 120) vert_spec_start = 120; display_markers = 1; break; case SPIKE_3D: mode = SPIKE_3D; enable_dir_win = 1; break; case STARS: mode = STARS; enable_dir_win = 0; if (!stars) { GdkPixmap *pm = NULL, *mk = NULL; stars = (GtkWidget *)kt_stars_new( main_display, main_pixmap); pm = gdk_pixmap_create_from_xpm_d( stars-> window, &mk, NULL, logo_xpm); kt_stars_set_logo_pixmp(stars, pm, mk); } break; default: break; } if (enable_dir_win) /* enable direction control widget */ { if (!dir_win_present) { gtk_widget_show(dir_win); gtk_widget_set_uposition(dir_win, dir_x_origin,dir_y_origin); dir_win_present = TRUE; } update_dircontrol(dir_area); } else /* if enabled, disable it */ { if (dir_win_present) { gtk_widget_hide(dir_win); dir_win_present = FALSE; } } draw_start(); return TRUE; }
gint button_handle(GtkWidget *widget, gpointer data) { if (GTK_TOGGLE_BUTTON(widget)->active) /* its pressed */ { switch((ToggleButton) GPOINTER_TO_INT(data)) { case OPTIONS: gtk_widget_show(options_win_ptr); break; case LEADING_EDGE: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Leading Edge Shown"); show_leader = TRUE; break; case USE_BAR_DECAY: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Bar Decay Enabled"); bar_decay = TRUE; break; case USE_PEAK_DECAY: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Peak Decay Enabled"); peak_decay = TRUE; break; case OUTLINED: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Outlined 3D Landform"); outlined = TRUE; break; case STABILIZED: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Trace Stabilizer Enabled"); stabilized = TRUE; break; case GRATICULE: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Scope Graticule Enabled"); show_graticule = TRUE; break; case LAND_PERS_TILT: landtilt = TRUE; gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Landform Perspective Tilt Enabled"); break; case SPIKE_PERS_TILT: spiketilt = TRUE; gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Spikes Perspective Tilt Enabled"); break; case LANDFLIP: landflip = TRUE; break; case SPIKEFLIP: spikeflip = TRUE; break; case PAUSE_DISP: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Resume Display"); paused = TRUE; draw_stop(); //input_thread_stopper(data_handle); break; default: break; } } else { switch((ToggleButton) GPOINTER_TO_INT(data)) { case OPTIONS: gtk_widget_hide(options_win_ptr); break; case LEADING_EDGE: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Leading Edge Hidden"); show_leader = FALSE; break; case USE_BAR_DECAY: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Bar Decay Disabled"); bar_decay = FALSE; break; case USE_PEAK_DECAY: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Peak Decay Disabled"); peak_decay = FALSE; break; case OUTLINED: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Smooth 3D Landform"); outlined = FALSE; break; case STABILIZED: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Trace Stabilizer Disabled"); stabilized = FALSE; /* gotta clear the screen to prevent old data from * laying around.... */ gdk_draw_rectangle(main_display->window, main_display->style->black_gc, TRUE, 0,0, width,height); break; case GRATICULE: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Scope Graticule Disabled"); show_graticule = FALSE; /* gotta clear the screen to prevent old data from * laying around.... */ gdk_draw_rectangle(main_display->window, main_display->style->black_gc, TRUE, 0,0, width,height); break; case LAND_PERS_TILT: landtilt = FALSE; gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Landform Perspective Tilt Disabled"); break; case SPIKE_PERS_TILT: spiketilt = FALSE; gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Spikes Perspective Tilt Disabled"); break; case LANDFLIP: landflip = FALSE; break; case SPIKEFLIP: spikeflip = FALSE; break; case PAUSE_DISP: gtk_label_set_text(GTK_LABEL(GTK_BIN (widget)->child), "Pause Display"); paused = FALSE; if (data_handle >= 0) { //input_thread_starter(data_handle); draw_start(); } break; default: break; } } return 0; }
//main entry int main(int argc, char **argv) { unsigned int key = 0; signal(SIGINT, sig_handler); signal(SIGHUP, sig_handler); signal(SIGTERM, sig_handler); signal(SIGKILL, sig_handler); get_term_width_height(0, &gs.w, &gs.h); rawmode(); gs.buf = (char *)malloc(gs.w * gs.h+ gs.w); if( gs.buf == NULL ) goto EXIT; memset(gs.buf, 0, gs.w * gs.h+ gs.w); draw_start(); //start edit while(1) { key = get_key(); if( key == 'q' || key == 'Q' ) break; switch( key ) { case 's': case 'S': sc_cls(); break; case 'u': case 'U': sc_up(); break; case 'd': case 'D': sc_down(); break; case 'l': case 'L': sc_left(); break; case 'R': case 'r': sc_right(); break; default: sc_put_char(key); break; } } //free then exit free(gs.buf); normalmode(); EXIT: return 0; }
void bdd_plot_vec (FILE *fp, BDDPTR *f_vec, int size, int max_x, int max_y, char *(*name_func) ()) { int i; float xf, incr; int x; if (!f_vec) return; /* Watch out: constant don't have valid position. */ if (size == 1 && !BDD_VOID_P (f_vec[0]) && !BDD_CONST_P (f_vec[0])) { x = POSITION_F (f_vec[0]); incr = 0.0; } else { x = 0; if (size > max_x) { max_x = size; incr = 1; } else incr = (max_x + 1) / size; } draw_start (fp, max_x, max_y); xf = 0.0; for (i = 0; i < size; i++) { BDDPTR f = f_vec[i]; draw_func_name (fp, x, i); if (BDD_VOID_P (f)) draw_void (fp, x, 0); else if (BDD_0_P (f)) { /* draw_initial_edge (fp, x, x, 1, 0, 0);*/ draw_const (fp, x, 0, 0); } else if (BDD_1_P (f)) { /* draw_initial_edge (fp, x, x, 1, 0, 0);*/ draw_const (fp, x, 0, 1); } else if (BDD_X_P (f)) { /* draw_initial_edge (fp, x, x, 1, 0, 0);*/ draw_const (fp, x, 0, 2); } else { /* Draw initial edge to top variable node of f: */ /* First check whether this is a negative edge: */ /* BDD_NEG_P (f) */ draw_initial_edge (fp, x, POSITION_F (f), LEVEL_F (f), BDD_NEG_P (f), BDD_I_INV_EDGE_P (f)); plot_fp = fp; plot_name = name_func ? name_func : default_plot_name; if (!BDD_MARK (f)) bdd_traverse_pre (f, plot_node); } if (i < size-1) { xf += incr; x = xf; } } /*for*/ for (i = 0; i < size; i++) { BDDPTR f = f_vec[i]; if (!BDD_VOID_P (f) && BDD_MARK (f)) /* Let's be nice (and safe) and clear all aux fields. Already encountered segmentation violation once... */ bdd_traverse_pre (f, bdd_reinit_aux1_and_aux2_action); } draw_finish (fp); }