cairomm 1.19.0
Public Member Functions | Static Public Member Functions | List of all members
Cairo::XcbSurface Class Reference

Creates an XCB surface that draws to the given drawable. More...

#include <cairomm/xcb_surface.h>

Inheritance diagram for Cairo::XcbSurface:
Inheritance graph
[legend]

Public Member Functions

 XcbSurface (cairo_surface_t *cobject, bool has_reference=false)
 Create a C++ wrapper for the C instance.
 
 ~XcbSurface () override
 
void set_size (int width, int height)
 Informs cairo of the new size of the XCB drawable underlying the surface.
 
void set_drawable (xcb_drawable_t drawable, int width, int height)
 Informs cairo of the new drawable and size of the XCB drawable underlying the surface.
 
- Public Member Functions inherited from Cairo::Surface
 Surface (cairo_surface_t *cobject, bool has_reference=false)
 Create a C++ wrapper for the C instance.
 
 Surface (const Surface &)=delete
 
Surfaceoperator= (const Surface &)=delete
 
virtual ~Surface ()
 
const unsigned charget_mime_data (const std::string &mime_type, unsigned long & length)
 Return mime data previously attached to surface using the specified mime type.
 
void set_mime_data (const std::string &mime_type, unsigned char *data, unsigned long length, const SlotDestroy &slot_destroy)
 Attach an image in the format mime_type to surface.
 
void unset_mime_data (const std::string &mime_type)
 Remove the data from a surface.
 
void get_font_options (FontOptions &options) const
 Retrieves the default font rendering options for the surface.
 
void finish ()
 This function finishes the surface and drops all references to external resources.
 
void flush ()
 Do any pending drawing for the surface and also restore any temporary modifications cairo has made to the surface's state.
 
void mark_dirty ()
 Tells cairo to consider the data buffer dirty.
 
void mark_dirty (int x, int y, int width, int height)
 Marks a rectangular area of the given surface dirty.
 
void set_device_offset (double x_offset, double y_offset)
 Sets an offset that is added to the device coordinates determined by the CTM when drawing to surface.
 
void get_device_offset (double &x_offset, double &y_offset) const
 Returns a previous device offset set by set_device_offset().
 
void set_device_scale (double x_scale, double y_scale)
 Sets a scale that is multiplied to the device coordinates determined by the CTM when drawing to surface.
 
void set_device_scale (double scale)
 Sets x and y scale to the same value.
 
void get_device_scale (double &x_scale, double &y_scale) const
 Returns a previous device scale set by set_device_scale().
 
double get_device_scale () const
 Returns the x and y average of a previous device scale set by set_device_scale().
 
void set_fallback_resolution (double x_pixels_per_inch, double y_pixels_per_inch)
 Set the horizontal and vertical resolution for image fallbacks.
 
void get_fallback_resolution (double &x_pixels_per_inch, double &y_pixels_per_inch) const
 This function returns the previous fallback resolution set by set_fallback_resolution(), or default fallback resolution if never set.
 
Type get_type () const
 
Content get_content () const
 This function returns the content type of surface which indicates whether the surface contains color and/or alpha information.
 
void copy_page ()
 Emits the current page for backends that support multiple pages, but doesn't clear it, so that the contents of the current page will be retained for the next page.
 
void show_page ()
 Emits and clears the current page for backends that support multiple pages.
 
bool has_show_text_glyphs () const
 Returns whether the surface supports sophisticated Context::show_text_glyphs() operations.
 
void write_to_png (const std::string &filename)
 Writes the contents of surface to a new file filename as a PNG image.
 
void write_to_png_stream (const SlotWriteFunc &write_func)
 Writes the Surface to the write function.
 
RefPtr< ImageSurfacecreate_similar_image (Format format, int width, int height)
 Create a new image surface that is as compatible as possible for uploading to and the use in conjunction with an existing surface.
 
bool supports_mime_type (const std::string &mime_type)
 Checks whether mime_type is supported by the surface.
 
RefPtr< MappedImageSurfacemap_to_image (const RectangleInt &extents)
 Returns an image surface that is the most efficient mechanism for modifying the backing store of the target surface.
 
RefPtr< MappedImageSurfacemap_to_image ()
 Returns an image surface that is the most efficient mechanism for modifying the backing store of the target surface.
 
RefPtr< Deviceget_device ()
 This function returns the device for a surface.
 
cobjectcobj ()
 Provides acces to the underlying C cairo surface.
 
const cobjectcobj () const
 Provides acces to the underlying C cairo surface.
 

Static Public Member Functions

static RefPtr< XcbSurfacecreate (xcb_connection_t * connection, xcb_drawable_t drawable, xcb_visualtype_t *visual, int width, int height)
 Creates an XCB surface that draws to the given drawable.
 
static RefPtr< XcbSurfacecreate_for_bitmap (xcb_connection_t * connection, xcb_screen_t *screen, xcb_pixmap_t bitmap, int width, int height)
 Creates an XCB surface that draws to the given bitmap.
 
static RefPtr< XcbSurfacecreate_with_xrender_format (xcb_connection_t * connection, xcb_screen_t *screen, xcb_drawable_t drawable, xcb_render_pictforminfo_t * format, int width, int height)
 Creates an XCB surface that draws to the given drawable.
 
- Static Public Member Functions inherited from Cairo::Surface
static RefPtr< Surfacecreate (const RefPtr< Surface > other, Content content, int width, int height)
 Create a new surface that is as compatible as possible with an existing surface.
 
static RefPtr< Surfacecreate (const RefPtr< Surface > & target, double x, double y, double width, double height)
 Create a new surface that is a rectangle within the target surface.
 

Additional Inherited Members

- Public Types inherited from Cairo::Surface
enum class  Type {
  IMAGE = CAIRO_SURFACE_TYPE_IMAGE ,
  PDF = CAIRO_SURFACE_TYPE_PDF ,
  PS = CAIRO_SURFACE_TYPE_PS ,
  XLIB = CAIRO_SURFACE_TYPE_XLIB ,
  XCB = CAIRO_SURFACE_TYPE_XCB ,
  GLITZ = CAIRO_SURFACE_TYPE_GLITZ ,
  QUARTZ = CAIRO_SURFACE_TYPE_QUARTZ ,
  WIN32 = CAIRO_SURFACE_TYPE_WIN32 ,
  WIN32_SURFACE = CAIRO_SURFACE_TYPE_WIN32 ,
  BEOS = CAIRO_SURFACE_TYPE_BEOS ,
  DIRECTFB = CAIRO_SURFACE_TYPE_DIRECTFB ,
  SVG = CAIRO_SURFACE_TYPE_SVG ,
  OS2 = CAIRO_SURFACE_TYPE_OS2 ,
  WIN32_PRINTING = CAIRO_SURFACE_TYPE_WIN32_PRINTING ,
  QUARTZ_IMAGE = CAIRO_SURFACE_TYPE_QUARTZ_IMAGE ,
  SCRIPT = CAIRO_SURFACE_TYPE_SCRIPT ,
  QT = CAIRO_SURFACE_TYPE_QT ,
  RECORDING = CAIRO_SURFACE_TYPE_RECORDING ,
  VG = CAIRO_SURFACE_TYPE_VG ,
  GL = CAIRO_SURFACE_TYPE_GL ,
  DRM = CAIRO_SURFACE_TYPE_DRM ,
  TEE = CAIRO_SURFACE_TYPE_TEE ,
  XML = CAIRO_SURFACE_TYPE_XML ,
  SKIA = CAIRO_SURFACE_TYPE_SKIA ,
  SUBSURFACE = CAIRO_SURFACE_TYPE_SUBSURFACE
}
 Cairo::Surface::Type is used to describe the type of a given surface. More...
 
enum class  Format {
  ARGB32 = CAIRO_FORMAT_ARGB32 ,
  RGB24 = CAIRO_FORMAT_RGB24 ,
  A8 = CAIRO_FORMAT_A8 ,
  A1 = CAIRO_FORMAT_A1 ,
  RGB16_565 = CAIRO_FORMAT_RGB16_565
}
 Cairo::Surface::Format is used to identify the memory format of image data. More...
 
typedef sigc::slot< ErrorStatus(const unsigned char *, unsigned int)> SlotWriteFunc
 For example: ErrorStatus my_write_func(unsigned char* data, unsigned int length);
 
typedef sigc::slot< ErrorStatus(unsigned char *, unsigned int)> SlotReadFunc
 This is the type of function which is called when a backend needs to read data from an input stream.
 
typedef sigc::slot< void()> SlotDestroy
 For instance, void on_destroy();.
 
typedef cairo_surface_t cobject
 The underlying C cairo surface type.
 
- Protected Attributes inherited from Cairo::Surface
cobjectm_cobject
 The underlying C cairo surface type that is wrapped by this Surface.
 

Detailed Description

Creates an XCB surface that draws to the given drawable.

The way that colors are represented in the drawable is specified by the provided visual.

Note
If drawable is a Window, then the function XcbSurface::set_size() must be called whenever the size of the window changes.

When drawable is a Window containing child windows then drawing to the created surface will be clipped by those child windows. When the created surface is used as a source, the contents of the children will be included.

Note
For this Surface to be available, cairo must have been compiled with XCB support.
Since cairomm 1.20:

Constructor & Destructor Documentation

◆ XcbSurface()

Cairo::XcbSurface::XcbSurface ( cairo_surface_t cobject,
bool  has_reference = false 
)
explicit

Create a C++ wrapper for the C instance.

This C++ instance should then be given to a RefPtr.

Parameters
cobjectThe C instance.
has_referenceWhether we already have a reference. Otherwise, the constructor will take an extra reference.
Since cairomm 1.20:

◆ ~XcbSurface()

Cairo::XcbSurface::~XcbSurface ( )
override

Member Function Documentation

◆ create()

static RefPtr< XcbSurface > Cairo::XcbSurface::create ( xcb_connection_t connection,
xcb_drawable_t  drawable,
xcb_visualtype_t visual,
int  width,
int  height 
)
static

Creates an XCB surface that draws to the given drawable.

The way that colors are represented in the drawable is specified by the provided visual.

Note
If drawable is a Window, then the function XcbSurface::set_size() must be called whenever the size of the window changes.

When drawable is a Window containing child windows then drawing to the created surface will be clipped by those child windows. When the created surface is used as a source, the contents of the children will be included.

Parameters
connectionAn XCB connection.
drawableAn XCB drawable.
visualThe visual to use for drawing to drawable. The depth of the visual must match the depth of the drawable. Currently, only TrueColor visuals are fully supported.
widthThe current width of drawable.
heightThe current height of drawable.
Exceptions
std::bad_alloc,Cairo::logic_error,std::ios_base::failure
Since cairomm 1.20:

◆ create_for_bitmap()

static RefPtr< XcbSurface > Cairo::XcbSurface::create_for_bitmap ( xcb_connection_t connection,
xcb_screen_t screen,
xcb_pixmap_t  bitmap,
int  width,
int  height 
)
static

Creates an XCB surface that draws to the given bitmap.

This will be drawn to as a Cairo::Surface::Format::A1 object.

Parameters
connectionAn XCB connection.
screenThe XCB screen associated with the bitmap.
bitmapAn XCB drawable (a Pixmap with depth 1).
widthThe current width of bitmap.
heightThe current height of bitmap.
Exceptions
std::bad_alloc,Cairo::logic_error,std::ios_base::failure
Since cairomm 1.20:

◆ create_with_xrender_format()

static RefPtr< XcbSurface > Cairo::XcbSurface::create_with_xrender_format ( xcb_connection_t connection,
xcb_screen_t screen,
xcb_drawable_t  drawable,
xcb_render_pictforminfo_t format,
int  width,
int  height 
)
static

Creates an XCB surface that draws to the given drawable.

The way that colors are represented in the drawable is specified by the provided picture format.

Note
If drawable is a Window, then the function XcbSurface::set_size() must be called whenever the size of the window changes.

When drawable is a Window containing child windows then drawing to the created surface will be clipped by those child windows. When the created surface is used as a source, the contents of the children will be included.

Parameters
connectionAn XCB connection.
screenThe XCB screen associated with the drawable.
drawableAn XCB drawable.
formatThe picture format to use for drawing to drawable. The depth of format mush match the depth of the drawable.
widthThe current width of drawable.
heightThe current height of drawable.
Exceptions
std::bad_alloc,Cairo::logic_error,std::ios_base::failure
Since cairomm 1.20:

◆ set_drawable()

void Cairo::XcbSurface::set_drawable ( xcb_drawable_t  drawable,
int  width,
int  height 
)

Informs cairo of the new drawable and size of the XCB drawable underlying the surface.

If Surface::flush() wasn't called, some pending operations might be discarded.

Throws an exception on error.

Parameters
drawableThe new drawable of the surface.
widthThe new width of the surface.
heightThe new height of the surface.
Since cairomm 1.20:

◆ set_size()

void Cairo::XcbSurface::set_size ( int  width,
int  height 
)

Informs cairo of the new size of the XCB 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 ConfigureNotify events.)

A pixmap can never change size, so it is never necessary to call this function on a surface created for a pixmap.

If Surface::flush() wasn't called, some pending operations might be discarded.

Throws an exception on error.

Parameters
widthThe new width of the surface.
heightThe new height of the surface.
Since cairomm 1.20:

The documentation for this class was generated from the following file: