Exemple #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;
}
Exemple #2
0
void draw_start()
{
	if (!paused)
	{
		/* Check to make sure its not already running */
		if (display_id)
		{
			printf("Bug detected, display already running NON-fatal\n");
			draw_stop();
		}

		if (mode == STARS)
			display_id = gtk_timeout_add(
					(int)
					((1.0/(float)refresh_rate)*1000.0),
					(GtkFunction)kt_stars_update_func,
					stars);
		else
			display_id = gtk_timeout_add(
					(int)
					((1.0/(float)refresh_rate)*1000.0),
					 (GtkFunction)draw, NULL);
	}
	else
		printf("Display in paused state,  click on \"Resume Display\" in the Options Panel\n");

}
Exemple #3
0
void leave(GtkWidget *widget, gpointer *data)
{
    draw_stop();
    save_config(widget);
    input_thread_stopper(data_handle);
    close_datasource(data_handle);
    /* Free all buffers */
    mem_dealloc();
    gtk_main_quit();
}
Exemple #4
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;
}
Exemple #5
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();
	  }
}
Exemple #6
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;
}
Exemple #7
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;

}
Exemple #8
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;
}