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 Surface.createSimilarImage, the new surface's device scale is set to scale, or to the scale factor of window if scale is 0.
the format for the new surface
width of the new surface
height of the new surface
the scale of the new surface, or 0 to use same as window
a pointer to the newly allocated surface. The caller owns the surface and should call 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.