📄 gtkseisviewgl_test.c
字号:
gint layers_num = 5, i; gfloat h[] = { 600, 400, 600, 500, 300 }; gfloat vp[] = { 1500, 1900, 2200, 2000, 2500 }; gfloat ro[] = { 1.9, 2.1, 2.2, 2.2, 2.3 }; gfloat data[trace_num * samples_num]; gfloat data_display[trace_num * samples_num]; GtkWidget *window, *seis_view_gl; GtkWidget *shared_window, *shared_seis_view_gl; GdkColor sample_color; GSeisColor min_color, max_color; GSeisPaletteDef palette_def; GArray *palette_array_def; GSeisPalette *palette; GSeisViewToolMotion *motion_tool; GSeisViewToolHighlight *hlight_tool; GSeisViewToolScale *scale_tool; GSeisViewToolMagnify *magnify_tool; GSeisViewAxisZ *z_axis; GSeisViewAxisTraces *traces_axis; GArray *traces_nums;#ifdef GTK_SEIS_VIEW_GL_THREADED g_thread_init (NULL); gdk_threads_init (); gdk_threads_enter ();#endif gtk_init (&argc, &argv); gdk_gl_init (&argc, &argv); g_printf ("Calculating synthetic record...\n"); calculate_seismogram (data, trace_num, profile_length, start_offset, samples_num, dt, layers_num, vp, h, ro); g_printf ("Done!\n"); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Synthetic 2D seismic data rendering sample");#ifdef GTK_SEIS_VIEW_GL_THREADED seis_view_gl = gtk_seis_view_gl_new_threaded ();#else seis_view_gl = gtk_seis_view_gl_new ();#endif gtk_widget_set_size_request (seis_view_gl, 600, 400); gtk_container_add (GTK_CONTAINER (window), seis_view_gl); gtk_widget_show (seis_view_gl); gtk_widget_show (window); palette_array_def = g_array_new (FALSE, FALSE, sizeof (GSeisPaletteDef)); palette_def.interpolate = TRUE; palette_def.scale_position = 0.f; gdk_color_parse ("blue", &sample_color); palette_def.color.red = sample_color.red; palette_def.color.green = sample_color.green; palette_def.color.blue = sample_color.blue; min_color.red = sample_color.red; min_color.green = sample_color.green; min_color.blue = sample_color.blue; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 0.5f; gdk_color_parse ("white", &sample_color); palette_def.color.red = sample_color.red; palette_def.color.green = sample_color.green; palette_def.color.blue = sample_color.blue; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 1.f; gdk_color_parse ("red", &sample_color); palette_def.color.red = sample_color.red; palette_def.color.green = sample_color.green; palette_def.color.blue = sample_color.blue; max_color.red = sample_color.red; max_color.green = sample_color.green; max_color.blue = sample_color.blue; g_array_append_val (palette_array_def, palette_def);/* palette = g_seis_palette_new_by_min_max (&min_color, &max_color, "BlueRed");*//* palette = g_seis_palette_new_by_array (palette_array_def, "BlueWhiteRed");*/ palette = g_seis_palette_new_by_array (NULL, NULL); gtk_seis_view_gl_set_palette (GTK_SEIS_VIEW_GL (seis_view_gl), palette); g_array_free (palette_array_def, TRUE); g_object_unref (G_OBJECT (palette)); gtk_seis_view_gl_set_display_mode (GTK_SEIS_VIEW_GL (seis_view_gl), GTK_SEIS_VIEW_VA | GTK_SEIS_VIEW_VD | GTK_SEIS_VIEW_WIGGLE); motion_tool = g_seis_view_tool_motion_new (); hlight_tool = g_seis_view_tool_highlight_new (); scale_tool = g_seis_view_tool_scale_new (); magnify_tool = g_seis_view_tool_magnify_new (); g_seis_view_tool_set_alt_tool1 (G_SEIS_VIEW_TOOL (motion_tool), G_SEIS_VIEW_TOOL (hlight_tool)); g_seis_view_tool_set_alt_tool2 (G_SEIS_VIEW_TOOL (motion_tool), G_SEIS_VIEW_TOOL (scale_tool)); g_seis_view_tool_set_alt_tool3 (G_SEIS_VIEW_TOOL (motion_tool), G_SEIS_VIEW_TOOL (magnify_tool)); gtk_seis_view_gl_set_active_tool (GTK_SEIS_VIEW_GL (seis_view_gl), G_SEIS_VIEW_TOOL (motion_tool)); g_object_unref (G_OBJECT (motion_tool)); g_object_unref (G_OBJECT (hlight_tool)); g_object_unref (G_OBJECT (scale_tool)); g_object_unref (G_OBJECT (magnify_tool)); /* Vertical axis */ z_axis = g_seis_view_axis_z_new (); g_seis_view_axis_z_set_min_max (z_axis, 0, dt * 1000, samples_num); g_seis_view_axis_z_set_format (z_axis, G_SEIS_VIEW_AXIS_Z_INTEGER);#ifdef WIN32 g_seis_view_axis_z_set_font (z_axis, "Tahoma 8");#else g_seis_view_axis_z_set_font (z_axis, "Helvetica 8");#endif g_seis_view_axis_reshape (G_SEIS_VIEW_AXIS (z_axis), seis_view_gl); gtk_seis_view_gl_set_axis (GTK_SEIS_VIEW_GL (seis_view_gl), G_SEIS_VIEW_AXIS_LEFT, G_SEIS_VIEW_AXIS (z_axis)); g_object_unref (G_OBJECT (z_axis)); /* Array of values of labels for horizontal axis */ traces_nums = g_array_sized_new (FALSE, FALSE, sizeof (gint32), trace_num); for (i = 1; i <= trace_num; i++) g_array_append_val (traces_nums, i); /* Horizontal axis */ traces_axis = g_seis_view_axis_traces_new (); g_seis_view_axis_traces_set_values (traces_axis, G_SEIS_VIEW_AXIS_TRACES_INTEGER, traces_nums);#ifdef WIN32 g_seis_view_axis_traces_set_font (traces_axis, "Tahoma 8");#else g_seis_view_axis_traces_set_font (traces_axis, "Helvetica 8");#endif g_seis_view_axis_reshape (G_SEIS_VIEW_AXIS (traces_axis), seis_view_gl); gtk_seis_view_gl_set_axis (GTK_SEIS_VIEW_GL (seis_view_gl), G_SEIS_VIEW_AXIS_TOP, G_SEIS_VIEW_AXIS (traces_axis)); g_object_unref (G_OBJECT (traces_axis)); g_array_free (traces_nums, TRUE); /* Display everything - wiggles, variable density, variable area */ gtk_seis_view_gl_set_display_mode (GTK_SEIS_VIEW_GL (seis_view_gl), GTK_SEIS_VIEW_VA | GTK_SEIS_VIEW_VD | GTK_SEIS_VIEW_WIGGLE); gtk_seis_view_gl_set_va_fill_mode (GTK_SEIS_VIEW_GL (seis_view_gl), GTK_SEIS_VIEW_VA_POSITIVE);/* gtk_seis_view_gl_set_agc_use (GTK_SEIS_VIEW_GL (seis_view_gl), TRUE, 0.05); gtk_seis_view_gl_set_minmax_mode (GTK_SEIS_VIEW_GL (seis_view_gl), GTK_SEIS_VIEW_MINMAX_PER_ENSEMBLE);*/ gtk_seis_view_gl_set_data (GTK_SEIS_VIEW_GL (seis_view_gl), data, trace_num, samples_num, data_display);/* gtk_seis_view_gl_set_highlight_area (GTK_SEIS_VIEW_GL (seis_view_gl), 0.25, 0.5);*//* g_printf ("Capturing image...\n"); g_signal_connect (G_OBJECT (seis_view_gl), "pixbuf_progress", (GCallback)image_progress, NULL); g_signal_connect (G_OBJECT (seis_view_gl), "pixbuf_rendered", (GCallback)image_rendered, NULL); gtk_seis_view_gl_render_to_pixbuf (GTK_SEIS_VIEW_GL (seis_view_gl), 900, 2500);*/ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (window_close), (gpointer)seis_view_gl); /* Shared view in another window *//* shared_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (shared_window), "Shared seismic data view"); shared_seis_view_gl = gtk_seis_view_gl_new_shared (GTK_SEIS_VIEW_GL (seis_view_gl)); gtk_widget_set_size_request (shared_seis_view_gl, 350, 300); gtk_container_add (GTK_CONTAINER (shared_window), shared_seis_view_gl); gtk_signal_connect (GTK_OBJECT (shared_window), "delete_event", GTK_SIGNAL_FUNC (shared_window_close), (gpointer)shared_seis_view_gl); g_signal_connect (G_OBJECT (magnify_tool), "magnify_viewport", (GCallback)magnify_viewer_area, (gpointer)shared_seis_view_gl); gtk_widget_show (shared_seis_view_gl); gtk_widget_show (shared_window);*/ gtk_main ();#ifdef GTK_SEIS_VIEW_GL_THREADED gdk_threads_leave ();#endif return (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -