/* Compile with gcc `pkg-config --libs --cflags gtk+-2.0` filename.c */

#include <gtk/gtk.h>
#include <cairo.h>


void
draw_button (cairo_t *cr, GtkStyle *style, int width, int height)
{
    /* Don't go trough to the theme, but just draw something ... */

    /* Active, so that it is visible even with default theme ... */
	printf("%d\n", style->bg[GTK_STATE_ACTIVE]);
    gdk_cairo_set_source_color (cr, &style->bg[GTK_STATE_ACTIVE]);
    
    cairo_move_to (cr, 20, 0);
    cairo_arc (cr, width-20, 20, 20, -G_PI_2, 0);
    cairo_arc (cr, width-20, height-20, 20, 0, G_PI_2);
//    cairo_arc (cr, 20, height-20, 20, G_PI_2, G_PI);
//    cairo_arc (cr, 20, 20, 20, -G_PI, -G_PI_2);
    cairo_close_path (cr);
    
    cairo_fill(cr);
}


gboolean
expose_cb (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
{
    PangoLayout *layout;
    cairo_t *cr;
    
    cr = gdk_cairo_create (event->window);
    cairo_set_source_rgb (cr, 1., 1., 1.); /* white */
    cairo_paint (cr);
    
    draw_button(cr, widget->style, widget->allocation.width, widget->allocation.height);
    
    layout = gtk_widget_create_pango_layout (widget, "Hello World!");
    gdk_draw_layout (event->window, widget->style->fg_gc[GTK_STATE_ACTIVE], 20, 20, layout);
    g_object_unref (layout);
    
    cairo_destroy (cr);
    
    return FALSE;
}

int
main(int argc, char **argv)
{
    GtkWidget  *window;

    gtk_init(&argc, &argv);
    
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    /* large window */
    gtk_widget_set_size_request (window, 300, 300);
    
    gtk_widget_show (window);
    
    g_signal_connect_after (window, "expose-event", &expose_cb, NULL);
    
    gtk_main();
}

