Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cairo.h>
- int main (int argc, char *argv[])
- {
- float alpha=0.65;
- float alpha_circle=0.8;
- cairo_surface_t *surface;
- cairo_t* cr;
- surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 480, 270);
- cr=cairo_create(surface);
- // Draw Circle
- cairo_save(cr);
- cairo_set_source_rgba(cr, 1.0, 0.5, 0.5, 1.0);
- cairo_move_to(cr, 140.0+70.0, 117.0);
- cairo_arc(cr, 140.0, 117.0, 70.0, 0.0, 2*3.14159);
- cairo_clip(cr);
- cairo_paint_with_alpha(cr, alpha_circle);
- cairo_restore(cr);
- //Prepare rectangle
- cairo_save(cr);
- cairo_set_source_rgba(cr, 0.26, 1.0, 1.0, 1.0);
- cairo_rectangle(cr, 164.0, 114.0, 186.0, 103.0);
- cairo_clip(cr);
- // Draw the surface over itself with 1.0-alpha
- cairo_surface_t* dest=cairo_surface_reference(cairo_get_target(cr));
- cairo_surface_flush(dest);
- cairo_t *destcr=cairo_create(dest);
- cairo_set_source_surface(destcr, dest, 0, 0);
- cairo_set_operator(destcr, CAIRO_OPERATOR_SOURCE);
- cairo_paint_with_alpha(cr, 1.0-alpha);
- cairo_surface_mark_dirty(dest);
- cairo_surface_destroy(dest);
- cairo_destroy(destcr);
- // Effectively draw the retangle
- cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
- cairo_paint_with_alpha(cr, alpha);
- cairo_restore(cr);
- cairo_destroy(cr);
- cairo_surface_write_to_png(surface, "straight-cairo-full.png");
- cairo_surface_destroy(surface);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement