cairomm: Cairo::XlibSurface Class Reference

cairomm 1.18.0

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.
| ~XlibSurface () override
void | set_size (int width, int height)
| Informs cairo of the new size of the X Drawable underlying the surface.
void | set_drawable (Drawable drawable, int width, int height)
| Informs cairo of a new X Drawable underlying the surface.
Drawable | get_drawable () const
| gets the Drawable object associated with this surface
const Display * | get_display () const
| Get the X Display for the underlying X Drawable.
Display * | get_display ()
| Get the X Display for the underlying X Drawable.
Screen * | get_screen ()
| Get the X Screen for the underlying X Drawable.
const Screen * | get_screen () const
| Get the X Screen for the underlying X Drawable.
Visual * | get_visual ()
| Get the X Visual for the underlying X Drawable.
const Visual * | get_visual () const
| Get the X Visual for the underlying X Drawable.
int | get_depth () const
| Get the number of bits used to represent each pixel value.
int | get_height () const
| Get the height in pixels of the X Drawable underlying the surface.
int | get_width () const
| Get the width in pixels of the X Drawable underlying the surface.
XRenderPictFormat * | get_xrender_format () const
| Gets the X Render picture format that @surface uses for rendering with the X Render extension.
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
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.
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< Device > | get_device ()
| This function returns the device for a surface.
cobject * | cobj ()
| Provides acces to the underlying C cairo surface.
const cobject * | cobj () const
| Provides acces to the underlying C cairo surface.

## 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.
static RefPtr< XlibSurface > | create (Display * dpy, Pixmap bitmap, Screen * screen, int width, int height)
| Creates an Xlib surface that draws to the given bitmap.
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.
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.
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.

## 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);`
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
cobject * | m_cobject
| The underlying C cairo surface type that is wrapped by this Surface.

## 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]

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]

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()

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