cairomm 1.16.2

Public Member Functions | Static Public Member Functions | List of all members
Cairo::XlibSurface Class Reference

An XlibSurface provides a way to render to the X Window System using XLib. More...

`#include <cairomm/xlib_surface.h>`

Inheritance diagram for Cairo::XlibSurface:
[legend]

## Public Member Functions
| XlibSurface (cairo_surface_t *cobject, bool has_reference=false)
| Create a C++ wrapper for the C instance. More...
| ~XlibSurface () override
void | set_size (int width, int height)
| Informs cairo of the new size of the X Drawable underlying the surface. More...
void | set_drawable (Drawable drawable, int width, int height)
| Informs cairo of a new X Drawable underlying the surface. More...
Drawable | get_drawable () const
| gets the Drawable object associated with this surface More...
const Display * | get_display () const
| Get the X Display for the underlying X Drawable. More...
Display * | get_display ()
| Get the X Display for the underlying X Drawable. More...
Screen * | get_screen ()
| Get the X Screen for the underlying X Drawable. More...
const Screen * | get_screen () const
| Get the X Screen for the underlying X Drawable. More...
Visual * | get_visual ()
| Get the X Visual for the underlying X Drawable. More...
const Visual * | get_visual () const
| Get the X Visual for the underlying X Drawable. More...
int | get_depth () const
| Get the number of bits used to represent each pixel value. More...
int | get_height () const
| Get the height in pixels of the X Drawable underlying the surface. More...
int | get_width () const
| Get the width in pixels of the X Drawable underlying the surface. More...
XRenderPictFormat * | get_xrender_format () const
| Gets the X Render picture format that @surface uses for rendering with the X Render extension. More...
Public Member Functions inherited from Cairo::Surface
| Surface (cairo_surface_t *cobject, bool has_reference=false)
| Create a C++ wrapper for the C instance. More...
| Surface (const Surface &)=delete
Surface & | operator= (const Surface &)=delete
virtual | ~Surface ()
const unsigned char * | get_mime_data (const std::string & mime_type, unsigned long & length)
| Return mime data previously attached to surface using the specified mime type. More...
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. More...
void | unset_mime_data (const std::string & mime_type)
| Remove the data from a surface. More...
void | get_font_options (FontOptions & options) const
| Retrieves the default font rendering options for the surface. More...
void | finish ()
| This function finishes the surface and drops all references to external resources. More...
void | flush ()
| Do any pending drawing for the surface and also restore any temporary modifications cairo has made to the surface's state. More...
void | mark_dirty ()
| Tells cairo to consider the data buffer dirty. More...
void | mark_dirty (int x, int y, int width, int height)
| Marks a rectangular area of the given surface dirty. More...
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. More...
void | get_device_offset (double & x_offset, double & y_offset) const
| Returns a previous device offset set by set_device_offset(). More...
void | set_fallback_resolution (double x_pixels_per_inch, double y_pixels_per_inch)
| Set the horizontal and vertical resolution for image fallbacks. More...
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. More...
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. More...
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. More...
void | show_page ()
| Emits and clears the current page for backends that support multiple pages. More...
bool | has_show_text_glyphs () const
| Returns whether the surface supports sophisticated Context::show_text_glyphs() operations. More...
void | write_to_png (const std::string & filename)
| Writes the contents of surface to a new file filename as a PNG image. More...
void | write_to_png_stream (const SlotWriteFunc & write_func)
| Writes the Surface to the write function. More...
RefPtr< Device > | get_device ()
| This function returns the device for a surface. More...
cobject * | cobj ()
| Provides acces to the underlying C cairo surface. More...
const cobject * | cobj () const
| Provides acces to the underlying C cairo surface. More...

## Static Public Member Functions
static RefPtr< XlibSurface > | create (Display * dpy, Drawable drawable, Visual * visual, int width, int height)
| Creates an Xlib surface that draws to the given drawable. More...
static RefPtr< XlibSurface > | create (Display * dpy, Pixmap bitmap, Screen * screen, int width, int height)
| Creates an Xlib surface that draws to the given bitmap. More...
static Cairo::RefPtr< Cairo::XlibSurface > | create_with_xrender_format (Display * dpy, Drawable drawable, Screen * screen, XRenderPictFormat * format, int width, int height)
| Creates an Xlib surface that draws to the given drawable. More...
Static Public Member Functions inherited from Cairo::Surface
static RefPtr< Surface > | create (const RefPtr< Surface > other, Content content, int width, int height)
| Create a new surface that is as compatible as possible with an existing surface. More...
static RefPtr< Surface > | create (const RefPtr< Surface > & target, double x, double y, double width, double height)
| Create a new surface that is a rectangle within the target surface. More...

## 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 }
| 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);` More...
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. More...
typedef sigc::slot< void()> | SlotDestroy
| For instance, void on_destroy();. More...
typedef cairo_surface_t | cobject
| The underlying C cairo surface type. More...
Protected Attributes inherited from Cairo::Surface
cobject * | m_cobject
| The underlying C cairo surface type that is wrapped by this Surface. More...

## Detailed Description

An XlibSurface provides a way to render to the X Window System using XLib.

If you want to draw to the screen within an application that uses the X Window system, you should use this Surface type.

Note
  For this surface to be availabe, cairo must have been compiled with support for XLib Surfaces

## Constructor & Destructor Documentation

## ◆ XlibSurface()

Cairo::XlibSurface::XlibSurface | ( | 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

  cobject | The C instance.
  has_reference | whether we already have a reference. Otherwise, the constructor will take an extra reference.

## ◆ ~XlibSurface()

Cairo::XlibSurface::~XlibSurface | ( |  | ) |
| override

## Member Function Documentation

## ◆ create() [1/2]

static RefPtr< XlibSurface > Cairo::XlibSurface::create | ( | Display * | dpy,
|  | Drawable | drawable,
|  | Visual * | visual,
|  | int | width,
|  | int | height
| ) |  |
| static

Creates an Xlib 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 cairo_xlib_surface_set_size must be called whenever the size of the window changes.

Parameters

  dpy | an X Display
  drawable | an X Drawable, (a Pixmap or a Window)
  visual | the 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.
  width | the current width of drawable.
  height | the current height of drawable.

Returns
  A RefPtr to the newly created surface

## ◆ create() [2/2]

static RefPtr< XlibSurface > Cairo::XlibSurface::create | ( | Display * | dpy,
|  | Pixmap | bitmap,
|  | Screen * | screen,
|  | int | width,
|  | int | height
| ) |  |
| static

Creates an Xlib surface that draws to the given bitmap.

This will be drawn to as a CAIRO_FORMAT_A1 object.

Parameters

  dpy | an X Display
  bitmap | an X Drawable, (a depth-1 Pixmap)
  screen | the X Screen associated with bitmap
  width | the current width of bitmap.
  height | the current height of bitmap.

Returns
  A RefPtr to the newly created surface

## ◆ create_with_xrender_format()

static Cairo::RefPtr< Cairo::XlibSurface > Cairo::XlibSurface::create_with_xrender_format | ( | Display * | dpy,
|  | Drawable | drawable,
|  | Screen * | screen,
|  | XRenderPictFormat * | format,
|  | int | width,
|  | int | height
| ) |  |
| static

Creates an Xlib 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 set_size() must be called whenever the size of the window changes.

Parameters

  dpy | an X Display
  drawable | an X Drawable, (a Pixmap or a Window)
  screen | the X Screen associated with @drawable
  format | the picture format to use for drawing to @drawable. The depth of @format must match the depth of the drawable.
  width | the current width of @drawable.
  height | the current height of @drawable.

Returns
  the newly created surface

## ◆ get_depth()

int Cairo::XlibSurface::get_depth | ( |  | ) | const

Get the number of bits used to represent each pixel value.

## ◆ get_display() [1/2]

Display * Cairo::XlibSurface::get_display | ( |  | ) |

Get the X Display for the underlying X Drawable.

## ◆ get_display() [2/2]

const Display * Cairo::XlibSurface::get_display | ( |  | ) | const

Get the X Display for the underlying X Drawable.

## ◆ get_drawable()

Drawable Cairo::XlibSurface::get_drawable | ( |  | ) | const

gets the Drawable object associated with this surface

## ◆ get_height()

int Cairo::XlibSurface::get_height | ( |  | ) | const

Get the height in pixels of the X Drawable underlying the surface.

## ◆ get_screen() [1/2]

Screen * Cairo::XlibSurface::get_screen | ( |  | ) |

Get the X Screen for the underlying X Drawable.

## ◆ get_screen() [2/2]

const Screen * Cairo::XlibSurface::get_screen | ( |  | ) | const

Get the X Screen for the underlying X Drawable.

## ◆ get_visual() [1/2]

Visual * Cairo::XlibSurface::get_visual | ( |  | ) |

Get the X Visual for the underlying X Drawable.

## ◆ get_visual() [2/2]

const Visual * Cairo::XlibSurface::get_visual | ( |  | ) | const

Get the X Visual for the underlying X Drawable.

## ◆ get_width()

int Cairo::XlibSurface::get_width | ( |  | ) | const

Get the width in pixels of the X Drawable underlying the surface.

## ◆ get_xrender_format()

XRenderPictFormat * Cairo::XlibSurface::get_xrender_format | ( |  | ) | const

Gets the X Render picture format that @surface uses for rendering with the X Render extension.

If the surface was created by cairo_xlib_surface_create_with_xrender_format() originally, the return value is the format passed to that constructor.

Return value: the XRenderPictFormat* associated with @surface, or NULL if the surface is not an xlib surface or if the X Render extension is not available.

Since: 1.6

## ◆ set_drawable()

void Cairo::XlibSurface::set_drawable | ( | Drawable | drawable,
|  | int | width,
|  | int | height
| ) |  |

Informs cairo of a new X Drawable underlying the surface.

The drawable must match the display, screen and format of the existing drawable or the application will get X protocol errors and will probably terminate. No checks are done by this function to ensure this compatibility.

Parameters

  drawable | the new drawable for the surface
  width | the width of the new drawable
  height | the height of the new drawable

## ◆ set_size()

void Cairo::XlibSurface::set_size | ( | int | width,
|  | int | 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 ConfigureNotify events.)

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

Parameters

  width | the new width of the surface
  height | the new height of the surface

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

- cairomm/xlib_surface.h