Beispiel #1
0
static cairo_status_t
_cairo_tee_surface_acquire_source_image (void	     *abstract_surface,
					 cairo_image_surface_t **image_out,
					 void		 **image_extra)
{
    cairo_tee_surface_t *surface = abstract_surface;
    cairo_surface_wrapper_t *slaves;
    int num_slaves, n;

    /* we prefer to use a real image surface if available */
    if (_cairo_surface_is_image (surface->master.target)) {
	return _cairo_surface_wrapper_acquire_source_image (&surface->master,
							    image_out, image_extra);
    }

    num_slaves = _cairo_array_num_elements (&surface->slaves);
    slaves = _cairo_array_index (&surface->slaves, 0);
    for (n = 0; n < num_slaves; n++) {
	if (_cairo_surface_is_image (slaves[n].target)) {
	    return _cairo_surface_wrapper_acquire_source_image (&slaves[n],
								image_out,
								image_extra);
	}
    }

    return _cairo_surface_wrapper_acquire_source_image (&surface->master,
							image_out, image_extra);
}
Beispiel #2
0
static cairo_status_t
_test_wrapping_surface_acquire_source_image (void	     *abstract_surface,
					     cairo_image_surface_t **image_out,
					     void		 **image_extra)
{
    test_wrapping_surface_t *surface = abstract_surface;

    return _cairo_surface_wrapper_acquire_source_image (&surface->wrapper,
							image_out, image_extra);
}