Functions
gdk_window_create_similar_surface ()
cairo_surface_t *
gdk_window_create_similar_surface (GdkWindow *window,
cairo_content_t content,
int width,
int height);
Create a new surface that is as compatible as possible with the
given window
. For example the new surface will have the same
fallback resolution and font options as window
. Generally, the new
surface will also use the same backend as window
, unless that is
not possible for some reason. The type of the returned surface may
be examined with cairo_surface_get_type().
Initially the surface contents are all 0 (transparent if contents
have transparency, black otherwise.)
Returns
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.
Since: 2.22
gdk_window_create_similar_image_surface ()
cairo_surface_t *
gdk_window_create_similar_image_surface
(GdkWindow *window,
cairo_format_t format,
int width,
int height,
int scale);
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 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.
Returns
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.
Since: 3.10
gdk_cairo_get_clip_rectangle ()
gboolean
gdk_cairo_get_clip_rectangle (cairo_t *cr,
GdkRectangle *rect);
This is a convenience function around cairo_clip_extents().
It rounds the clip extents to integer coordinates and returns
a boolean indicating if a clip area exists.
Returns
TRUE if a clip rectangle exists, FALSE if all of cr
is
clipped and all drawing can be skipped
gdk_cairo_set_source_color ()
void
gdk_cairo_set_source_color (cairo_t *cr,
const GdkColor *color);
gdk_cairo_set_source_color has been deprecated since version 3.4 and should not be used in newly-written code.
Use gdk_cairo_set_source_rgba() instead
Sets the specified GdkColor as the source color of cr
.
Since: 2.8
gdk_cairo_set_source_rgba ()
void
gdk_cairo_set_source_rgba (cairo_t *cr,
const GdkRGBA *rgba);
Sets the specified GdkRGBA as the source color of cr
.
Since: 3.0
gdk_cairo_set_source_pixbuf ()
void
gdk_cairo_set_source_pixbuf (cairo_t *cr,
const GdkPixbuf *pixbuf,
gdouble pixbuf_x,
gdouble pixbuf_y);
Sets the given pixbuf as the source pattern for cr
.
The pattern has an extend mode of CAIRO_EXTEND_NONE and is aligned
so that the origin of pixbuf
is pixbuf_x
, pixbuf_y
.
Since: 2.8
gdk_cairo_set_source_window ()
void
gdk_cairo_set_source_window (cairo_t *cr,
GdkWindow *window,
gdouble x,
gdouble y);
Sets the given window as the source pattern for cr
.
The pattern has an extend mode of CAIRO_EXTEND_NONE and is aligned
so that the origin of window
is x
, y
. The window contains all its
subwindows when rendering.
Note that the contents of window
are undefined outside of the
visible part of window
, so use this function with care.
Since: 2.24
gdk_cairo_rectangle ()
void
gdk_cairo_rectangle (cairo_t *cr,
const GdkRectangle *rectangle);
Adds the given rectangle to the current path of cr
.
Since: 2.8
gdk_cairo_region ()
void
gdk_cairo_region (cairo_t *cr,
const cairo_region_t *region);
Adds the given region to the current path of cr
.
Since: 2.8
gdk_cairo_region_create_from_surface ()
cairo_region_t *
gdk_cairo_region_create_from_surface (cairo_surface_t *surface);
Creates region that describes covers the area where the given
surface
is more than 50% opaque.
This function takes into account device offsets that might be
set with cairo_surface_set_device_offset().
gdk_cairo_surface_create_from_pixbuf ()
cairo_surface_t *
gdk_cairo_surface_create_from_pixbuf (const GdkPixbuf *pixbuf,
int scale,
GdkWindow *for_window);
Creates an image surface with the same contents as
the pixbuf.
Since: 3.10
gdk_cairo_draw_from_gl ()
void
gdk_cairo_draw_from_gl (cairo_t *cr,
GdkWindow *window,
int source,
int source_type,
int buffer_scale,
int x,
int y,
int width,
int height);
This is the main way to draw GL content in GTK+. It takes a render buffer ID
(source_type
== GL_RENDERBUFFER) or a texture id (source_type
== GL_TEXTURE)
and draws it onto cr
with an OVER operation, respecting the current clip.
The top left corner of the rectangle specified by x
, y
, width
and height
will be drawn at the current (0,0) position of the cairo_t.
This will work for *all* cairo_t, as long as window
is realized, but the
fallback implementation that reads back the pixels from the buffer may be
used in the general case. In the case of direct drawing to a window with
no special effects applied to cr
it will however use a more efficient
approach.
For GL_RENDERBUFFER the code will always fall back to software for buffers
with alpha components, so make sure you use GL_TEXTURE if using alpha.
Calling this may change the current GL context.
Since: 3.16