--- drawtxt.cpp Mon Dec 29 18:19:47 2003 +++ drawtxt2.cpp Mon Dec 29 19:11:23 2003 @@ -1,11 +1,13 @@ #include #include "gdk/gdkx.h" #include +#include #include -#include -#include +#include #include +static int n_j; + gint delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) { gtk_main_quit (); return FALSE; @@ -18,7 +20,12 @@ int main( int argc, char *argv[] ) GtkWidget *box1; gtk_init (&argc, &argv); - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + + n_j = 100; + if (argc >= 2) { + n_j = strtoul(argv[1], NULL, 0); + } + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 5); @@ -37,7 +44,7 @@ int main( int argc, char *argv[] ) gtk_widget_set_double_buffered(ebox,FALSE); //ebox =gtk_button_new_with_label("lable"); - gtk_widget_set_size_request(GTK_WIDGET(ebox),30,30); + gtk_widget_set_size_request(GTK_WIDGET(ebox),600,600); gtk_container_add(GTK_CONTAINER (box1), ebox); g_signal_connect (G_OBJECT (but), "clicked", G_CALLBACK (btpress), (gpointer) ebox); @@ -54,34 +61,34 @@ int main( int argc, char *argv[] ) void btpress( GtkWidget *widget, gpointer data ) { int seq; int i,j; - timeb b1,b2,b3,b4; + struct tms b1,b2,b3,b4; char str[100]; GtkWidget *w=GTK_WIDGET(data); GdkGC *m_gc=gdk_gc_new(w->window); - ftime(&b1); + times(&b1); seq=0; - for (i=0;i<10;i++){ - for (j=0;j<100;j++) { + PangoLayout *layout = gtk_widget_create_pango_layout (widget, NULL); + PangoFontDescription *fontdesc = pango_font_description_from_string ("Helvetica"); + pango_layout_set_font_description (layout, fontdesc); + for (i=0;i<100;i++){ + for (j=0;jwindow,m_gc,i,j,layout); - pango_font_description_free (fontdesc); - g_object_unref (layout); seq++; } } + pango_font_description_free (fontdesc); + g_object_unref (layout); gdk_flush(); - ftime(&b2); + times(&b2); seq=0; - for (i=0;i<10;i++){ - for (j=0;j<100;j++) { + for (i=0;i<100;i++){ + for (j=0;jwindow), GDK_GC_XGC(m_gc), i , j, str, strlen(str)); @@ -90,11 +97,11 @@ void btpress( GtkWidget *widget, gpointe } gdk_flush(); - ftime(&b3); + times(&b3); - printf("%d %d\n",b1.time,b1.millitm); - printf("%d %d diff:%d\n",b2.time,b2.millitm,(b2.time-b1.time)*1000+b2.millitm-b1.millitm); - printf("%d %d dfff:%d\n",b3.time,b3.millitm,(b3.time-b2.time)*1000+b3.millitm-b2.millitm); + printf("Start %d\n",b1.tms_utime); + printf("diff:%d\n",b2.tms_utime - b1.tms_utime); + printf("dfff:%d\n",b3.tms_utime - b2.tms_utime); g_object_unref(G_OBJECT(m_gc)); }