示例#1
0
static cairo_bool_t
composite_needs_clip (const cairo_composite_rectangles_t *composit,
		      const cairo_box_t *extents)
{
    cairo_bool_t needs_clip;

    needs_clip = ! composit->is_bounded;
    if (needs_clip)
	needs_clip = ! _cairo_clip_contains_box (composit->clip, extents);

    return needs_clip;
}
cairo_bool_t
_cairo_composite_rectangles_can_reduce_clip (cairo_composite_rectangles_t *composite,
					     cairo_clip_t *clip)
{
    cairo_rectangle_int_t extents;
    cairo_box_t box;

    if (clip == NULL)
	return TRUE;

    extents = composite->destination;
    if (composite->is_bounded & CAIRO_OPERATOR_BOUND_BY_SOURCE)
	_cairo_rectangle_intersect (&extents, &composite->source);
    if (composite->is_bounded & CAIRO_OPERATOR_BOUND_BY_MASK)
	_cairo_rectangle_intersect (&extents, &composite->mask);

    _cairo_box_from_rectangle (&box, &extents);
    return _cairo_clip_contains_box (clip, &box);
}
static cairo_bool_t
composite_needs_clip (const cairo_composite_rectangles_t *composite,
		      const cairo_box_t *extents)
{
    return !_cairo_clip_contains_box (composite->clip, extents);
}