All pastes #37787 Raw Edit

MacSlow

public c v1 · immutable
#37787 ·published 2006-01-21 10:08 UTC
rendered paste body
#include <gdk/gdkkeysyms.h>#include <gtk/gtk.h>#include <math.h>#define WIN_WIDTH 256#define WIN_HEIGHT 256cairo_t*	 g_pCairoContext;gboolean on_key_press (GtkWidget	*	pWidget,					   GdkEventKey*	pKey,					   gpointer		userData){	if (pKey->type == GDK_KEY_PRESS)	{		switch (pKey->keyval)		{			case GDK_Escape :				gtk_main_quit ();			break;		}	}	return FALSE;}void render (int width, int height){	cairo_pattern_t* pPattern;	cairo_scale (g_pCairoContext, (double) width / 1.0f, (double) height / 1.0f);		pPattern = cairo_pattern_create_radial (0.55f,											0.55f,											0.25f,											0.5f,											1.0f,											0.525f);	cairo_pattern_add_color_stop_rgba (pPattern,									   0.0f,									   0.0f,									   0.0f,									   1.0f,									   0.811f);	cairo_pattern_add_color_stop_rgba (pPattern,									   0.64f,									   0.345f,									   0.345f,									   1.0f,									   0.317f);	cairo_pattern_add_color_stop_rgba (pPattern,									   0.84f,									   0.713f,									   0.713f,									   1.0f,									   0.137f);	cairo_pattern_add_color_stop_rgba (pPattern,										   1.0f,									   1.0f,									   1.0f,									   1.0f,									   0.0f);	cairo_pattern_set_filter (pPattern, CAIRO_FILTER_BILINEAR);	cairo_set_source (g_pCairoContext, pPattern);	cairo_arc (g_pCairoContext, 0.5f, 0.5f, 142.0f/150.0f, 0.0f, M_PI * 2.0f);	cairo_fill (g_pCairoContext);	cairo_pattern_destroy (pPattern);}static gboolean on_window_expose (GtkWidget*	 pWidget,								  GdkEventExpose* pExpose){	g_pCairoContext = gdk_cairo_create (pWidget->window);	render (WIN_WIDTH, WIN_HEIGHT);	cairo_destroy (g_pCairoContext);	return FALSE;}int main(int argc, char **argv){	GtkWidget *window;	gtk_init (&argc, &argv);	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);	gtk_window_set_resizable (GTK_WINDOW(window), FALSE);	gtk_widget_set_size_request (window, WIN_WIDTH, WIN_HEIGHT);	gtk_window_set_title (GTK_WINDOW (window), "pattern example");	gtk_widget_set_app_paintable (window, TRUE);	g_signal_connect (G_OBJECT (window),					  "destroy",					  G_CALLBACK (gtk_main_quit),					  NULL);	g_signal_connect (G_OBJECT (window),					  "key-press-event",					  G_CALLBACK (on_key_press),					  NULL);	g_signal_connect (G_OBJECT (window),					  "expose-event",					  G_CALLBACK (on_window_expose),					  NULL);	gtk_widget_show (window);	g_pCairoContext = gdk_cairo_create (window->window);	gtk_main ();	return 0;}