kopia lustrzana https://github.com/brendabell/knittingtools
				
				
				
			
		
			
				
	
	
		
			60 wiersze
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			60 wiersze
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
| # coding: utf8
 | |
| """
 | |
|     cairocffi.xcb
 | |
|     ~~~~~~~~~~~~~
 | |
| 
 | |
|     Bindings for XCB surface objects using xcffib.
 | |
| 
 | |
|     :copyright: Copyright 2014 by Simon Sapin
 | |
|     :license: BSD, see LICENSE for details.
 | |
| """
 | |
| from xcffib import visualtype_to_c_struct
 | |
| 
 | |
| from . import cairo, constants
 | |
| from .surfaces import Surface, SURFACE_TYPE_TO_CLASS
 | |
| 
 | |
| 
 | |
| class XCBSurface(Surface):
 | |
|     """The XCB surface is used to render cairo graphics to X Window System
 | |
|     windows and pixmaps using the XCB library.
 | |
| 
 | |
|     Creates a cairo surface that targets the given drawable (pixmap or window).
 | |
| 
 | |
|     .. note::
 | |
| 
 | |
|         This class works using objects and libraries in :mod:`xcffib`
 | |
| 
 | |
|     :param conn: The :class:`xcffib.Connection` for an open XCB connection
 | |
|     :param drawable:
 | |
|         An XID corresponding to an XCB drawable (a pixmap or a window)
 | |
|     :param visual: An :class:`xcffib.xproto.VISUALTYPE` object.
 | |
|     :param width: integer
 | |
|     :param height: integer
 | |
|     """
 | |
|     def __init__(self, conn, drawable, visual, width, height):
 | |
|         c_visual = visualtype_to_c_struct(visual)
 | |
| 
 | |
|         p = cairo.cairo_xcb_surface_create(
 | |
|             conn._conn, drawable, c_visual, width, height)
 | |
|         Surface.__init__(self, p)
 | |
| 
 | |
|     def set_size(self, width, height):
 | |
|         """
 | |
|         Informs cairo of the new size of the X Drawable underlying the surface.
 | |
|         For a surface created for a Window (rather than a Pixmap), this
 | |
|         function must be called each time the size of the window changes (for
 | |
|         a subwindow, you are normally resizing the window yourself, but for a
 | |
|         toplevel window, it is necessary to listen for
 | |
|         :class:`xcffib.xproto.ConfigureNotifyEvent`'s).
 | |
| 
 | |
|         A Pixmap can never change size, so it is never necessary to call this
 | |
|         function on a surface created for a Pixmap.
 | |
| 
 | |
|         :param width: integer
 | |
|         :param height: integer
 | |
|         """
 | |
|         cairo.cairo_xcb_surface_set_size(self._pointer, width, height)
 | |
|         self._check_status()
 | |
| 
 | |
| SURFACE_TYPE_TO_CLASS[constants.SURFACE_TYPE_XCB] = XCBSurface
 |