Guest User

cairo example

a guest
Jul 11th, 2010
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.37 KB | None | 0 0
  1. #include <X11/Xlib.h>
  2. #include <cairo/cairo.h>
  3. #include <cairo/cairo-xlib.h>
  4.  
  5. int main ()
  6. {
  7.     Display *dpy;
  8.     Window rootwin;
  9.     Window win;
  10.     XEvent e;
  11.     int scr;
  12.     cairo_surface_t *cs;
  13.     cairo_t *cr;
  14.  
  15.     dpy = XOpenDisplay (NULL);
  16.     if (dpy == NULL) return -1;
  17.  
  18.     scr = DefaultScreen (dpy);
  19.     rootwin = RootWindow (dpy, scr);
  20.  
  21.     win = XCreateSimpleWindow (dpy, rootwin, 1, 1, 800, 600, 0, \
  22.                                BlackPixel (dpy, scr), BlackPixel (dpy, scr));
  23.  
  24.     XStoreName (dpy, win, "hello");
  25.     XSelectInput (dpy, win, ExposureMask|ButtonPressMask);
  26.     XMapWindow (dpy, win);
  27.  
  28.     cs = cairo_xlib_surface_create (dpy, win, DefaultVisual (dpy, 0), 800, 600);
  29.     cr = cairo_create (cs);
  30.  
  31.     cairo_set_line_width (cr, 3);
  32.     cairo_set_source_rgb (cr, 1, 0, 1);
  33.     cairo_rectangle (cr, 0, 0, 300, 100);
  34.     cairo_fill (cr);
  35.     cairo_set_source_rgb (cr, 0, 0, 1);
  36.     //cairo_stroke (cr);
  37.     cairo_move_to (cr, 0, 0);
  38.     cairo_line_to (cr, 800, 600);
  39.     cairo_stroke (cr);
  40.  
  41.     cairo_arc (cr, 400, 300, 30, 0, 2*3.1415);
  42.     cairo_close_path (cr);
  43.     cairo_fill (cr);
  44.  
  45.     while (1)
  46.     {
  47.         XNextEvent (dpy, &e);
  48.         if (e.type == Expose && e.xexpose.count < 1) ;
  49.         else if (e.type == ButtonPress) break;
  50.     }
  51.  
  52.     cairo_surface_destroy (cs);
  53.     XCloseDisplay (dpy);
  54.    
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment