Commit 5fd7b85d authored by Matthias Clasen's avatar Matthias Clasen

Add a function to get affected area for background

The new function, gtk_render_background_get_clip answers the
question: what pixels are affected if I call gtk_render_background ?

The long-term goal is to have APIs that answer this question for
all rendering primitives.
parent b2eaed62
......@@ -6258,6 +6258,7 @@ gtk_border_free
<SUBSECTION>
gtk_render_arrow
gtk_render_background
gtk_render_background_get_clip
gtk_render_check
gtk_render_expander
gtk_render_extension
......
......@@ -282,6 +282,39 @@ gtk_render_background (GtkStyleContext *context,
cairo_restore (cr);
}
/**
* gtk_render_background_get_clip:
* @context: a #GtkStyleContext
* @x: X origin of the rectangle
* @y: Y origin of the rectangle
* @width: rectangle width
* @height: rectangle height
* @out_clip: (out): return location for the clip
*
* Returns the area that will be affected (i.e. drawn to) when
* calling gtk_render_background() for the given @context and
* rectangle.
*
* Since: 3.20
*/
void
gtk_render_background_get_clip (GtkStyleContext *context,
gdouble x,
gdouble y,
gdouble width,
gdouble height,
GdkRectangle *out_clip)
{
GtkBorder shadow;
_gtk_css_shadows_value_get_extents (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BOX_SHADOW), &shadow);
out_clip->x = floor (x) - shadow.left;
out_clip->y = floor (y) - shadow.top;
out_clip->width = ceil (width) + shadow.left + shadow.right;
out_clip->height = ceil (height) + shadow.top + shadow.bottom;
}
/**
* gtk_render_frame:
* @context: a #GtkStyleContext
......
......@@ -59,6 +59,15 @@ void gtk_render_background (GtkStyleContext *context,
gdouble y,
gdouble width,
gdouble height);
GDK_AVAILABLE_IN_3_20
void gtk_render_background_get_clip (GtkStyleContext *context,
gdouble x,
gdouble y,
gdouble width,
gdouble height,
GdkRectangle *out_clip);
GDK_AVAILABLE_IN_ALL
void gtk_render_frame (GtkStyleContext *context,
cairo_t *cr,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment