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.
3.10
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:
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.