Window.createSimilarImageSurface

Create a new image surface that is efficient to draw on the given @window.

Initially the surface contents are all 0 (transparent if contents have transparency, black otherwise.)

The @width and @height of the new surface are not affected by the scaling factor of the @window, or by the @scale argument; they are the size of the surface in device pixels. If you wish to create an image surface capable of holding the contents of @window you can use:

|[<!-- language="C" --> int scale = gdk_window_get_scale_factor (window); int width = gdk_window_get_width (window) * scale; int height = gdk_window_get_height (window) * scale;

// format is set elsewhere cairo_surface_t *surface = gdk_window_create_similar_image_surface (window, format, width, height, scale); ]|

Note that unlike cairo_surface_create_similar_image(), the new surface's device scale is set to @scale, or to the scale factor of @window if @scale is 0.

class Window
createSimilarImageSurface

Parameters

format cairo_format_t

the format for the new surface

width int

width of the new surface

height int

height of the new surface

scale int

the scale of the new surface, or 0 to use same as @window

Return Value

Type: Surface

a pointer to the newly allocated surface. The caller owns the surface and should call cairo_surface_destroy() when done with it.

This function always returns a valid pointer, but it will return a pointer to a “nil” surface if @other is already in an error state or any other error occurs.

Meta

Since

3.10