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:
Inheritance graph
[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
 
Surfaceoperator= (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_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. More...
 
void set_device_scale (double scale)
 Sets x and y scale to the same value. More...
 
void get_device_scale (double & x_scale, double & y_scale) const
 Returns a previous device scale set by set_device_scale(). More...
 
double get_device_scale () const
 Returns the x and y average of a previous device scale set by set_device_scale(). 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< Deviceget_device ()
 This function returns the device for a surface. More...
 
cobjectcobj ()
 Provides acces to the underlying C cairo surface. More...
 
const cobjectcobj () const
 Provides acces to the underlying C cairo surface. More...
 

Static Public Member Functions

static RefPtr< XlibSurfacecreate (Display * dpy, Drawable drawable, Visual * visual, int width, int height)
 Creates an Xlib surface that draws to the given drawable. More...
 
static RefPtr< XlibSurfacecreate (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::XlibSurfacecreate_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< 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. More...
 
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. 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
}
 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); 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
cobjectm_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
cobjectThe C instance.
has_referencewhether 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
dpyan X Display
drawablean X Drawable, (a Pixmap or a Window)
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.
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
dpyan X Display
bitmapan X Drawable, (a depth-1 Pixmap)
screenthe X Screen associated with bitmap
widththe current width of bitmap.
heightthe 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
dpyan X Display
drawablean X Drawable, (a Pixmap or a Window)
screenthe X Screen associated with @drawable
formatthe picture format to use for drawing to @drawable. The depth of @format must match the depth of the drawable.
widththe current width of @drawable.
heightthe 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
drawablethe new drawable for the surface
widththe width of the new drawable
heightthe 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
widththe new width of the surface
heightthe new height of the surface

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