 967cb56275
			
		
	
	967cb56275
	
	
	
		
			
			There is no need to e.g. blur in the x-direction for the top part of a box shadow. Also, there is no need to extend the mask in the non-blurred direction. https://bugzilla.gnome.org/show_bug.cgi?id=746468
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* -*- mode: C; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
 | |
| 
 | |
| #include <gtk/gtkcairoblurprivate.h>
 | |
| 
 | |
| static void
 | |
| init_surface (cairo_t *cr)
 | |
| {
 | |
|   int w = cairo_image_surface_get_width (cairo_get_target (cr));
 | |
|   int h = cairo_image_surface_get_height (cairo_get_target (cr));
 | |
| 
 | |
|   cairo_set_source_rgb (cr, 0, 0, 0);
 | |
|   cairo_fill (cr);
 | |
| 
 | |
|   cairo_set_source_rgb (cr, 1, 1, 1);
 | |
|   cairo_arc (cr, w/2, h/2, w/2, 0, 2*G_PI);
 | |
|   cairo_fill (cr);
 | |
| }
 | |
| 
 | |
| int
 | |
| main (int argc, char **argv)
 | |
| {
 | |
|   cairo_surface_t *surface;
 | |
|   cairo_t *cr;
 | |
|   GTimer *timer;
 | |
|   double msec;
 | |
|   int i, j;
 | |
|   int size;
 | |
| 
 | |
|   timer = g_timer_new ();
 | |
| 
 | |
|   size = 2000;
 | |
| 
 | |
|   surface = cairo_image_surface_create (CAIRO_FORMAT_A8, size, size);
 | |
| 
 | |
|   cr = cairo_create (surface);
 | |
| 
 | |
|   /* We do everything three times, first two as warmup */
 | |
|   for (j = 0; j < 2; j++)
 | |
|     {
 | |
|       for (i = 1; i < 16; i++)
 | |
| 	{
 | |
| 	  init_surface (cr);
 | |
| 	  g_timer_start (timer);
 | |
| 	  _gtk_cairo_blur_surface (surface, i, GTK_BLUR_X | GTK_BLUR_Y);
 | |
| 	  msec = g_timer_elapsed (timer, NULL) * 1000;
 | |
| 	  if (j == 1)
 | |
| 	    g_print ("Radius %2d: %.2f msec, %.2f kpixels/msec:\n", i, msec, size*size/(msec*1000));
 | |
| 	}
 | |
|     }
 | |
| 
 | |
|   g_timer_destroy (timer);
 | |
| 
 | |
|   return 0;
 | |
| }
 |