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.
This commit is contained in:
@ -6258,6 +6258,7 @@ gtk_border_free
|
|||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
gtk_render_arrow
|
gtk_render_arrow
|
||||||
gtk_render_background
|
gtk_render_background
|
||||||
|
gtk_render_background_get_clip
|
||||||
gtk_render_check
|
gtk_render_check
|
||||||
gtk_render_expander
|
gtk_render_expander
|
||||||
gtk_render_extension
|
gtk_render_extension
|
||||||
|
@ -282,6 +282,39 @@ gtk_render_background (GtkStyleContext *context,
|
|||||||
cairo_restore (cr);
|
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:
|
* gtk_render_frame:
|
||||||
* @context: a #GtkStyleContext
|
* @context: a #GtkStyleContext
|
||||||
|
@ -59,6 +59,15 @@ void gtk_render_background (GtkStyleContext *context,
|
|||||||
gdouble y,
|
gdouble y,
|
||||||
gdouble width,
|
gdouble width,
|
||||||
gdouble height);
|
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
|
GDK_AVAILABLE_IN_ALL
|
||||||
void gtk_render_frame (GtkStyleContext *context,
|
void gtk_render_frame (GtkStyleContext *context,
|
||||||
cairo_t *cr,
|
cairo_t *cr,
|
||||||
|
Reference in New Issue
Block a user