cairo_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 200, 50);
cr = cairo_create(cairo_surface);
cairo_pattern_t *gradient;
gradient = cairo_pattern_create_linear(0, 0, 200, 0);
cairo_pattern_add_color_stop_rgb(gradient, 0.0, 1.0, 0.0, 0.0);
cairo_pattern_add_color_stop_rgb(gradient, 0.25, 0.0, 1.0, 0.0);
cairo_pattern_add_color_stop_rgb(gradient, 0.75, 0.0, 1.0, 0.0);
cairo_pattern_add_color_stop_rgb(gradient, 1.0, 1.0, 0.0, 0.0);
cairo_set_source(cr, gradient);
cairo_rectangle (cr, 0, 0, 200, 50);
cairo_fill(cr);
cairo_surface_write_to_png(cairo_surface, "result_linear_gradient.png");