Пример #1
0
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;
}
Пример #2
0
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;

}
Пример #3
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;
}
Пример #4
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();
	  }
}
Пример #5
0
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;
}
Пример #6
0
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;

}
Пример #7
0
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;
}
Пример #8
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;
}
Пример #9
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);
}