fn main() { let mut pixels: Vec = vec![0; 4 * 1920 * 1080]; let surface = unsafe { let ptr = cairo_sys::cairo_image_surface_create_for_data( pixels.as_mut_ptr(), cairo_sys::FORMAT_A_RGB32, 1280, 720, 4 * 1920, ); cairo::ImageSurface::from_raw_full(ptr).unwrap() }; let cr = cairo::Context::new(&surface); cr.set_antialias(cairo::Antialias::Best); cr.set_source_rgba(1.0, 0.0, 0.0, 1.0); cr.rectangle(100.0, 100.0, 640.0, 360.0); cr.fill(); let mut file = std::fs::File::create("sample.png").unwrap(); surface.write_to_png(&mut file).unwrap(); }