mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-18 09:00:34 +00:00
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;
|
|
}
|