int main (int argc, char *argv[]) { set_log_handlers(); wf_debug = 1; gtk_init(&argc, &argv); GdkGLConfig* glconfig; if(!(glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGBA | GDK_GL_MODE_DEPTH | GDK_GL_MODE_DOUBLE))){ gerr ("Cannot initialise gtkglext."); return EXIT_FAILURE; } GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL); canvas = gtk_drawing_area_new(); gtk_widget_set_can_focus (canvas, true); gtk_widget_set_size_request (canvas, GL_WIDTH + 2 * HBORDER, 128); gtk_widget_set_gl_capability (canvas, glconfig, NULL, 1, GDK_GL_RGBA_TYPE); gtk_widget_add_events (canvas, GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); gtk_container_add((GtkContainer*)window, (GtkWidget*)canvas); agl = agl_get_instance(); scene = (AGlRootActor*)agl_actor__new_root(canvas); wfc = wf_canvas_new((AGlRootActor*)scene); char* filename = find_wav(WAV); w1 = waveform_load_new(filename); g_free(filename); g_signal_connect((gpointer)canvas, "realize", G_CALLBACK(on_canvas_realise), NULL); g_signal_connect((gpointer)canvas, "size-allocate", G_CALLBACK(on_allocate), NULL); g_signal_connect((gpointer)canvas, "expose-event", G_CALLBACK(agl_actor__on_expose), scene); gtk_widget_show_all(window); add_key_handlers((GtkWindow*)window, NULL, (Key*)&keys); gboolean window_on_delete(GtkWidget* widget, GdkEvent* event, gpointer user_data){ gtk_main_quit(); return false; }
int main (int argc, char* argv[]) { if(sizeof(off_t) != 8){ gerr("sizeof(off_t)=%zu\n", sizeof(off_t)); return EXIT_FAILURE; } set_log_handlers(); wf_debug = 0; gtk_init(&argc, &argv); GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL); #if 0 agl_get_instance()->pref_use_shaders = false; #endif WaveformView* waveform = waveform_view_new(NULL); #if 0 waveform_view_set_show_rms(waveform, false); waveform_view_add_layer(waveform, grid_actor(waveform_view_get_actor(waveform)), 0); #endif gtk_widget_set_size_request((GtkWidget*)waveform, 512, 256); gtk_container_add((GtkContainer*)window, (GtkWidget*)waveform); gtk_widget_show_all(window); char* filename = find_wav(WAV); waveform_view_load_file(waveform, filename); g_free(filename); add_key_handlers((GtkWindow*)window, waveform, (Key*)&keys); gboolean window_on_delete(GtkWidget* widget, GdkEvent* event, gpointer user_data){ gtk_main_quit(); return false; }
int main (int argc, char *argv[]) { set_log_handlers(); wf_debug = 1; gtk_init(&argc, &argv); if(!(glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGBA | GDK_GL_MODE_DEPTH | GDK_GL_MODE_DOUBLE))){ gerr ("Cannot initialise gtkglext."); return EXIT_FAILURE; } GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL); canvas = gtk_drawing_area_new(); #ifdef HAVE_GTK_2_18 gtk_widget_set_can_focus (canvas, true); #endif gtk_widget_set_size_request (canvas, 320, 128); gtk_widget_set_gl_capability (canvas, glconfig, NULL, 1, GDK_GL_RGBA_TYPE); gtk_widget_add_events (canvas, GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); gtk_container_add((GtkContainer*)window, (GtkWidget*)canvas); agl_get_instance()->pref_use_shaders = USE_SHADERS; scene = (AGlRootActor*)agl_actor__new_root(canvas); char* filename = g_build_filename(g_get_current_dir(), "test/data/mono_0:10.wav", NULL); w1 = waveform_load_new(filename); g_free(filename); wfc = wf_canvas_new(scene); int n_frames = waveform_get_n_frames(w1); WfSampleRegion region[] = { {0, n_frames - 1}, {0, n_frames / 2 - 1}, {n_frames / 4, n_frames / 4 - 1}, {n_frames / 2, n_frames / 2 - 1}, }; uint32_t colours[4][2] = { {0xffffff77, 0x0000ffff}, {0x66eeffff, 0x0000ffff}, {0xffdd66ff, 0x0000ffff}, {0x66ff66ff, 0x0000ffff}, }; int i; for(i=0;i<G_N_ELEMENTS(a);i++){ a[i] = wf_canvas_add_new_actor(wfc, w1); agl_actor__add_child((AGlActor*)scene, (AGlActor*)a[i]); wf_actor_set_region(a[i], ®ion[i]); wf_actor_set_colour(a[i], colours[i][0]); } g_signal_connect((gpointer)canvas, "realize", G_CALLBACK(on_canvas_realise), NULL); g_signal_connect((gpointer)canvas, "size-allocate", G_CALLBACK(on_allocate), NULL); g_signal_connect((gpointer)canvas, "expose-event", G_CALLBACK(agl_actor__on_expose), scene); gtk_widget_show_all(window); add_key_handlers((GtkWindow*)window, NULL, (Key*)&keys); bool window_on_delete(GtkWidget* widget, GdkEvent* event, gpointer user_data) { gtk_main_quit(); return false; }