diff -u -r1.2 KWQPainterCairo.cpp --- KWQPainterCairo.cpp 7 Mar 2005 06:07:58 -0000 1.2 +++ KWQPainterCairo.cpp 27 Aug 2006 21:23:46 -0000 @@ -257,7 +257,7 @@ ASSERT(data->state.brush.color().isValid()); QColor qc(data->state.brush.color()); cairo_set_fill_rule(data->cr, CAIRO_FILL_RULE_WINDING); - cairo_set_rgb_color(data->cr, + cairo_set_source_rgb(data->cr, ((double)qc.red()) / 255.0, ((double)qc.green())/ 255.0, ((double)qc.blue()) / 255.0); @@ -269,7 +269,7 @@ QColor qc(pen.color()); ASSERT(qc.isValid()); - cairo_set_rgb_color(data->cr, + cairo_set_source_rgb(data->cr, ((double)qc.red()) / 255.0, ((double)qc.green())/ 255.0, ((double)qc.blue()) / 255.0); @@ -542,7 +542,7 @@ int rowstride = gdk_pixbuf_get_rowstride (pixbuf); guchar* buffer = gdk_pixbuf_get_pixels(pixbuf); - image = cairo_surface_create_for_image((char*)buffer, CAIRO_FORMAT_ARGB32, width , height, rowstride); + image = cairo_image_surface_create_for_data(buffer, CAIRO_FORMAT_ARGB32, width , height, rowstride); return image; } @@ -578,7 +578,8 @@ cairo_save(data->cr); cairo_translate(data->cr, x, y); cairo_move_to(data->cr, sx, sy); - cairo_show_surface(data->cr, image, w, h); + cairo_set_source_surface(data->cr, image, w, h); + cairo_paint(data->cr); cairo_restore(data->cr); cairo_surface_destroy(image); @@ -857,7 +858,7 @@ void QPainter::beginTransparencyLayer(float opacity) { cairo_save(data->cr); - cairo_set_alpha(data->cr, opacity); + cairo_paint_with_alpha(data->cr, opacity); } void QPainter::endTransparencyLayer()