By adding a 246tNt response, Chrome uses Skia. Here is an example (Gtk + 3, cairo, skia):
g_signal_connect(window_container_, "draw", G_CALLBACK(OnWindowContainerDraw), NULL); gboolean OnWindowContainerDraw(GtkWidget* widget, cairo_t *cr) { SkBitmap bitmap; bitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100); bitmap.allocPixels(); SkDevice device(bitmap); SkCanvas canvas(&device); SkPaint paint; SkRect r; paint.setARGB(255, 255, 255, 255); r.set(10, 10, 20, 20); canvas.drawRect(r, paint); cairo_surface_t* surface = cairo_image_surface_create_for_data( (unsigned char*)bitmap.getPixels(), CAIRO_FORMAT_ARGB32, bitmap.width(), bitmap.height(), bitmap.rowBytes()); cairo_surface_mark_dirty(surface); cairo_set_source_surface(cr, surface, 0, 0); cairo_paint(cr); return FALSE; }
source share