Method

GdkWindowcreate_similar_image_surface

since: 3.10

Declaration [src]

cairo_surface_t*
gdk_window_create_similar_image_surface (
  GdkWindow* window,
  cairo_format_t format,
  int width,
  int height,
  int scale
)

Description [src]

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:

  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.

Available since: 3.10

Parameters

format

Type: cairo_format_t

The format for the new surface.

width

Type: int

Width of the new surface.

height

Type: int

Height of the new surface.

scale

Type: int

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

Return value

Type: cairo_surface_t

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.

The caller of the method takes ownership of the returned data, and is responsible for freeing it.