static const cairo_compositor_t * no_traps_compositor_get (void) { static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_traps_compositor_t compositor; if (_cairo_atomic_init_once_enter(&once)) { _cairo_traps_compositor_init (&compositor, no_fallback_compositor_get ()); compositor.acquire = acquire; compositor.release = release; compositor.set_clip_region = set_clip_region; compositor.pattern_to_surface = pattern_to_surface; compositor.draw_image_boxes = draw_image_boxes; //compositor.copy_boxes = copy_boxes; compositor.fill_boxes = fill_boxes; compositor.check_composite = check_composite; compositor.composite = composite; compositor.lerp = lerp; //compositor.check_composite_boxes = check_composite_boxes; compositor.composite_boxes = composite_boxes; //compositor.check_composite_traps = check_composite_traps; compositor.composite_traps = composite_traps; compositor.check_composite_glyphs = check_composite_glyphs; compositor.composite_glyphs = composite_glyphs; _cairo_atomic_init_once_leave(&once); } return &compositor.base; }
const cairo_compositor_t * _cairo_win32_gdi_compositor_get (void) { static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_compositor_t compositor; if (_cairo_atomic_init_once_enter(&once)) { compositor.delegate = &_cairo_fallback_compositor; compositor.paint = _cairo_win32_gdi_compositor_paint; compositor.mask = _cairo_win32_gdi_compositor_mask; compositor.fill = _cairo_win32_gdi_compositor_fill; compositor.stroke = _cairo_win32_gdi_compositor_stroke; compositor.glyphs = _cairo_win32_gdi_compositor_glyphs; _cairo_atomic_init_once_leave(&once); } return &compositor; }
static const cairo_compositor_t * no_spans_compositor_get (void) { static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_spans_compositor_t compositor; if (_cairo_atomic_init_once_enter(&once)) { _cairo_spans_compositor_init (&compositor, no_traps_compositor_get()); //compositor.acquire = acquire; //compositor.release = release; compositor.fill_boxes = fill_boxes; //compositor.check_composite_boxes = check_composite_boxes; compositor.composite_boxes = composite_boxes; //compositor.check_span_renderer = check_span_renderer; compositor.renderer_init = span_renderer_init; compositor.renderer_fini = span_renderer_fini; _cairo_atomic_init_once_leave(&once); } return &compositor.base; }