pixman_region_overlap_t _cairo_region_contains_rectangle (cairo_region_t *region, const cairo_rectangle_int_t *rect) { pixman_box32_t pbox; pbox.x1 = rect->x; pbox.y1 = rect->y; pbox.x2 = rect->x + rect->width; pbox.y2 = rect->y + rect->height; return pixman_region32_contains_rectangle (®ion->rgn, &pbox); }
/** * cairo_region_contains_rectangle: * @region: a #cairo_region_t * @rectangle: a #cairo_rectangle_int_t * * Checks whether @rectangle is inside, outside or partially contained * in @region * * Return value: * %CAIRO_REGION_OVERLAP_IN if @rectangle is entirely inside @region, * %CAIRO_REGION_OVERLAP_OUT if @rectangle is entirely outside @region, or * %CAIRO_REGION_OVERLAP_PART if @rectangle is partially inside and partially outside @region. * * Since: 1.10 **/ cairo_region_overlap_t cairo_region_contains_rectangle (cairo_region_t *region, const cairo_rectangle_int_t *rectangle) { pixman_box32_t pbox; pixman_region_overlap_t poverlap; if (region->status) return CAIRO_REGION_OVERLAP_OUT; pbox.x1 = rectangle->x; pbox.y1 = rectangle->y; pbox.x2 = rectangle->x + rectangle->width; pbox.y2 = rectangle->y + rectangle->height; poverlap = pixman_region32_contains_rectangle (®ion->rgn, &pbox); switch (poverlap) { default: case PIXMAN_REGION_OUT: return CAIRO_REGION_OVERLAP_OUT; case PIXMAN_REGION_IN: return CAIRO_REGION_OVERLAP_IN; case PIXMAN_REGION_PART: return CAIRO_REGION_OVERLAP_PART; } }
Region::Overlap Region::contains(const Rect& rect) const { box_type_t box = { rect.x, rect.y, rect.x2(), rect.y2() }; return pixman_region32_contains_rectangle(&m_region, &box); }