forked from AuroraMiddleware/gtk
API: add gdk_cairo_get_clip_rectangle() convenience API
This commit is contained in:
parent
39b376681c
commit
d4f08efd57
@ -594,6 +594,7 @@ gdk_pango_context_get_for_screen
|
||||
<FILE>cairo_interaction</FILE>
|
||||
gdk_window_create_similar_surface
|
||||
gdk_cairo_create
|
||||
gdk_cairo_get_clip_rectangle
|
||||
gdk_cairo_set_source_color
|
||||
gdk_cairo_set_source_pixbuf
|
||||
gdk_cairo_set_source_window
|
||||
|
@ -288,6 +288,7 @@ gdk_visual_type_get_type G_GNUC_CONST
|
||||
#if IN_FILE(__GDK_CAIRO_C__)
|
||||
gdk_cairo_create
|
||||
gdk_cairo_reset_clip
|
||||
gdk_cairo_get_clip_rectangle
|
||||
gdk_cairo_set_source_color
|
||||
gdk_cairo_set_source_pixbuf
|
||||
gdk_cairo_set_source_window
|
||||
|
@ -89,6 +89,45 @@ gdk_cairo_reset_clip (cairo_t *cr,
|
||||
GDK_DRAWABLE_GET_CLASS (drawable)->set_cairo_clip (drawable, cr);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_cairo_get_clip_rectangle:
|
||||
* @cr: a cairo context
|
||||
* @rect: (out) (allow-none): return location for the clip, or %NULL
|
||||
*
|
||||
* 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.
|
||||
**/
|
||||
gboolean
|
||||
gdk_cairo_get_clip_rectangle (cairo_t *cr,
|
||||
GdkRectangle *rect)
|
||||
{
|
||||
double x1, y1, x2, y2;
|
||||
gboolean clip_exists;
|
||||
|
||||
cairo_clip_extents (cr, &x1, &y1, &x2, &y2);
|
||||
|
||||
clip_exists = x1 < x2 && y1 < y2;
|
||||
|
||||
if (rect)
|
||||
{
|
||||
x1 = floor (x1);
|
||||
y1 = floor (y1);
|
||||
x2 = ceil (x2);
|
||||
y2 = ceil (y2);
|
||||
|
||||
rect->x = CLAMP (x1, G_MININT, G_MAXINT);
|
||||
rect->y = CLAMP (y1, G_MININT, G_MAXINT);
|
||||
rect->width = CLAMP (x2 - x1, G_MININT, G_MAXINT);
|
||||
rect->height = CLAMP (y2 - y1, G_MININT, G_MAXINT);
|
||||
}
|
||||
|
||||
return clip_exists;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_cairo_set_source_color:
|
||||
* @cr: a #cairo_t
|
||||
|
@ -33,6 +33,8 @@ G_BEGIN_DECLS
|
||||
cairo_t *gdk_cairo_create (GdkDrawable *drawable);
|
||||
void gdk_cairo_reset_clip (cairo_t *cr,
|
||||
GdkDrawable *drawable);
|
||||
gboolean gdk_cairo_get_clip_rectangle(cairo_t *cr,
|
||||
GdkRectangle *rect);
|
||||
|
||||
void gdk_cairo_set_source_color (cairo_t *cr,
|
||||
const GdkColor *color);
|
||||
|
Loading…
Reference in New Issue
Block a user