diff options
| author | infirit <[email protected]> | 2015-07-27 22:46:08 +0200 | 
|---|---|---|
| committer | infirit <[email protected]> | 2015-07-28 20:02:12 +0200 | 
| commit | 1dba07c1777dc93b8a79e99140b63a12239b57ca (patch) | |
| tree | 0a2108a4452396367ec17fc0478be2b4a8a693ac | |
| parent | e2e5bb2d5dcb2004801ee9e666df0fd7425d2bdb (diff) | |
| download | mate-notification-daemon-1dba07c1777dc93b8a79e99140b63a12239b57ca.tar.bz2 mate-notification-daemon-1dba07c1777dc93b8a79e99140b63a12239b57ca.tar.xz | |
standard: Rework cairo drawing
| -rw-r--r-- | src/themes/standard/theme.c | 80 | 
1 files changed, 41 insertions, 39 deletions
| diff --git a/src/themes/standard/theme.c b/src/themes/standard/theme.c index cc80a81..a61a0d9 100644 --- a/src/themes/standard/theme.c +++ b/src/themes/standard/theme.c @@ -480,11 +480,11 @@ static gboolean paint_window(GtkWidget* widget, cairo_t* cr, WindowData* windata  static gboolean paint_window(GtkWidget* widget, GdkEventExpose* event, WindowData* windata)  #endif  { -	cairo_t*         context; +	cairo_t*         cr2;  	cairo_surface_t* surface;  	GtkAllocation    allocation;  #if !GTK_CHECK_VERSION(3, 0, 0) -	cairo_t*         cr; +	cairo_t*         cr = gdk_cairo_create (event->window);  #endif  	gtk_widget_get_allocation(windata->win, &allocation); @@ -495,32 +495,30 @@ static gboolean paint_window(GtkWidget* widget, GdkEventExpose* event, WindowDat  			windata->height = allocation.height;  	} -	context = gdk_cairo_create(gtk_widget_get_window(widget)); - -	cairo_set_operator(context, CAIRO_OPERATOR_SOURCE); +	cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);  	gtk_widget_get_allocation(widget, &allocation); -	surface = cairo_surface_create_similar(cairo_get_target(context), CAIRO_CONTENT_COLOR_ALPHA, allocation.width, allocation.height); +	surface = cairo_surface_create_similar (cairo_get_target (cr), +						CAIRO_CONTENT_COLOR_ALPHA, +						allocation.width, +						allocation.height); -#if GTK_CHECK_VERSION (3, 0, 0) -	cairo_set_source_surface(cr, surface, 0, 0); -#else -	cr = cairo_create(surface); -#endif +	cr2 = cairo_create (surface); -	fill_background(widget, windata, cr); -	draw_border(widget, windata, cr); -	draw_stripe(widget, windata, cr); +	fill_background(widget, windata, cr2); +	draw_border(widget, windata, cr2); +	draw_stripe(widget, windata, cr2); +	cairo_fill (cr2); +	cairo_destroy (cr2); + +	cairo_set_source_surface (cr, surface, 0, 0); +	cairo_paint(cr); +	cairo_surface_destroy(surface);  #if !GTK_CHECK_VERSION (3, 0, 0)  	cairo_destroy(cr);  #endif -	cairo_set_source_surface(context, surface, 0, 0); -	cairo_paint(context); -	cairo_surface_destroy(surface); -	cairo_destroy(context); -  	return FALSE;  } @@ -939,45 +937,49 @@ static gboolean countdown_expose_cb(GtkWidget* pie, GdkEventExpose* event, Windo  #endif  {  	GtkStyle* style; -	cairo_t* context; +	cairo_t* cr2;  	cairo_surface_t* surface;  #if !GTK_CHECK_VERSION(3, 0, 0) -	cairo_t* cr; +	cairo_t* cr = gdk_cairo_create (event->window);  #endif  	style = gtk_widget_get_style(windata->win); -	context = gdk_cairo_create(GDK_WINDOW(gtk_widget_get_window(windata->pie_countdown)));  	GtkAllocation alloc;  	gtk_widget_get_allocation(pie, &alloc); -	cairo_set_operator(context, CAIRO_OPERATOR_SOURCE); -	surface = cairo_surface_create_similar(cairo_get_target(context), CAIRO_CONTENT_COLOR_ALPHA, alloc.width, alloc.height); -#if GTK_CHECK_VERSION(3, 0, 0) -	cairo_set_source_surface(cr, surface, 0, 0); -#else -	cr = cairo_create(surface); -#endif +	cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); +	surface = cairo_surface_create_similar (cairo_get_target(cr), +						CAIRO_CONTENT_COLOR_ALPHA, +						alloc.width, +						alloc.height); + +	cr2 = cairo_create (surface); -	fill_background(pie, windata, cr); +	fill_background (pie, windata, cr2);  	if (windata->timeout > 0)  	{  		gdouble pct = (gdouble) windata->remaining / (gdouble) windata->timeout; -		gdk_cairo_set_source_color(cr, &style->bg[GTK_STATE_ACTIVE]); +		gdk_cairo_set_source_color (cr2, &style->bg[GTK_STATE_ACTIVE]); -		cairo_move_to(cr, PIE_RADIUS, PIE_RADIUS); -		cairo_arc_negative(cr, PIE_RADIUS, PIE_RADIUS, PIE_RADIUS, -G_PI_2, -(pct * G_PI * 2) - G_PI_2); -		cairo_line_to(cr, PIE_RADIUS, PIE_RADIUS); -		cairo_fill(cr); +		cairo_move_to (cr2, PIE_RADIUS, PIE_RADIUS); +		cairo_arc_negative (cr2, PIE_RADIUS, PIE_RADIUS, PIE_RADIUS, -G_PI_2, -(pct * G_PI * 2) - G_PI_2); +		cairo_line_to (cr2, PIE_RADIUS, PIE_RADIUS); +		cairo_fill (cr2);  	} +	cairo_destroy(cr2); + +	cairo_save (cr); +	cairo_set_source_surface (cr, surface, 0, 0); +	cairo_paint (cr); +	cairo_restore (cr); + +	cairo_surface_destroy(surface); +  #if !GTK_CHECK_VERSION (3, 0, 0)  	cairo_destroy(cr);  #endif -	cairo_set_source_surface(context, surface, 0, 0); -	cairo_paint(context); -	cairo_surface_destroy(surface); -	cairo_destroy(context);  	return TRUE;  } | 
