1 /**
2  * License:
3  * $(TABLE
4  *   $(TR $(TD cairoD wrapper/bindings)
5  *     $(TD $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)))
6  *   $(TR $(TD $(LINK2 http://cgit.freedesktop.org/cairo/tree/COPYING, _cairo))
7  *     $(TD $(LINK2 http://cgit.freedesktop.org/cairo/tree/COPYING-LGPL-2.1, LGPL 2.1) /
8  *     $(LINK2 http://cgit.freedesktop.org/cairo/plain/COPYING-MPL-1.1, MPL 1.1)))
9  * )
10  * Authors:
11  * $(TABLE
12  *   $(TR $(TD Johannes Pfau) $(TD cairoD))
13  *   $(TR $(TD $(LINK2 http://cairographics.org, _cairo team)) $(TD _cairo))
14  * )
15  */
16 /*
17  * Distributed under the Boost Software License, Version 1.0.
18  *    (See accompanying file LICENSE_1_0.txt or copy at
19  *          http://www.boost.org/LICENSE_1_0.txt)
20  */
21 module cairo.xcb;
22 
23 import std.string;
24 import std.conv;
25 
26 import cairo.cairo;
27 import cairo.c.cairo;
28 
29 static if(CAIRO_HAS_XCB_SURFACE)
30 {
31     import cairo.c.xcb;
32 
33     ///
34     public class XCBSurface : Surface
35     {
36         public:
37             /**
38              * Create a $(D XCBSurface) from a existing $(D cairo_surface_t*).
39              * XCBSurface is a garbage collected class. It will call $(D cairo_surface_destroy)
40              * when it gets collected by the GC or when $(D dispose()) is called.
41              *
42              * Warning:
43              * $(D ptr)'s reference count is not increased by this function!
44              * Adjust reference count before calling it if necessary
45              *
46              * $(RED Only use this if you know what your doing!
47              * This function should not be needed for standard cairoD usage.)
48              */
49             this(cairo_surface_t* ptr)
50             {
51                 super(ptr);
52             }
53 
54             ///
55             this(xcb_connection_t* connection, xcb_drawable_t drawable,
56                 xcb_visualtype_t* visual, int width, int height)
57             {
58                   super(cairo_xcb_surface_create(connection, drawable,
59                       visual, width, height));
60             }
61 
62             ///
63             this(xcb_connection_t* connection, xcb_screen_t* screen,
64                 xcb_pixmap_t bitmap, int width, int height)
65             {
66                   super(cairo_xcb_surface_create_for_bitmap(connection, screen,
67                       bitmap, width, height));
68             }
69 
70             ///
71             this(xcb_connection_t* connection, xcb_screen_t* screen,
72                 xcb_drawable_t drawable, xcb_render_pictforminfo_t* format,
73                 int width, int height)
74             {
75                   super(cairo_xcb_surface_create_with_xrender_format(connection,
76                       screen, drawable, format, width, height));
77             }
78 
79             ///
80             void setSize(int width, int height)
81             {
82                 cairo_xcb_surface_set_size(this.nativePointer, width, height);
83                 checkError();
84             }
85 
86             /* debug interface */
87             /* not exported, use c api*/
88     }
89 }