[PATCH 2/2] ps (debug API): Export the ability to force fallbacks
Chris Wilson <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
We need to occasionally force fallbacks whilst testing the PostScript output, so export a debug interface to do so in order to avoid poking around inside cairo internals. References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 Signed-off-by: Chris Wilson <[email protected]> --- boilerplate/cairo-boilerplate-ps.c | 20 ++++++-------------- src/cairo-ps-surface.c | 21 +++++++++++++++++++++ src/cairo-ps.h | 5 +++++ 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/boilerplate/cairo-boilerplate-ps.c b/boilerplate/cairo-boilerplate-ps.c index 411c11e..8fc2fc9 100644 --- a/boilerplate/cairo-boilerplate-ps.c +++ b/boilerplate/cairo-boilerplate-ps.c @@ -30,9 +30,6 @@ #include <cairo-ps.h> -#include <cairo-ps-surface-private.h> -#include <cairo-paginated-surface-private.h> - #if HAVE_SIGNAL_H #include <signal.h> #endif @@ -265,23 +262,18 @@ _cairo_boilerplate_ps_cleanup (void *closure) } static void -_cairo_boilerplate_ps_force_fallbacks (cairo_surface_t *abstract_surface, +_cairo_boilerplate_ps_force_fallbacks (cairo_surface_t *surface, double x_pixels_per_inch, double y_pixels_per_inch) { - ps_target_closure_t *ptc = cairo_surface_get_user_data (abstract_surface, - &ps_closure_key); - - cairo_paginated_surface_t *paginated; - cairo_ps_surface_t *surface; + ps_target_closure_t *ptc = + cairo_surface_get_user_data (surface, &ps_closure_key); if (ptc->target) - abstract_surface = ptc->target; + surface = ptc->target; - paginated = (cairo_paginated_surface_t*) abstract_surface; - surface = (cairo_ps_surface_t*) paginated->target; - surface->force_fallbacks = TRUE; - cairo_surface_set_fallback_resolution (&paginated->base, + cairo_ps_surface_debug_force_fallbacks (surface); + cairo_surface_set_fallback_resolution (surface, x_pixels_per_inch, y_pixels_per_inch); } diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c index fae3ba3..a0dd9e2 100644 --- a/src/cairo-ps-surface.c +++ b/src/cairo-ps-surface.c @@ -1382,6 +1382,27 @@ cairo_ps_surface_set_creation_date (cairo_surface_t *abstract_surface, surface->creation_date = date; } +/** + * cairo_ps_surface_debug_force_fallbacs: + * @surface: a PostScript #cairo_surface_t + * + * This is purely a debugging interface, intended only to be used in + * conformation testing, to force the surface to contain only rasterised + * graphics and no native PostScript drawing. + * + * Since: 1.12.2 + **/ +void +cairo_ps_surface_debug_force_fallbacks (cairo_surface_t *abstract_surface) +{ + cairo_ps_surface_t *surface = NULL; + + if (! _extract_ps_surface (abstract_surface, TRUE, &surface)) + return; + + surface->force_fallbacks = TRUE; +} + /** * cairo_ps_surface_dsc_comment: diff --git a/src/cairo-ps.h b/src/cairo-ps.h index 920052b..5666ff5 100644 --- a/src/cairo-ps.h +++ b/src/cairo-ps.h @@ -112,6 +112,11 @@ cairo_ps_surface_dsc_begin_setup (cairo_surface_t *surface); cairo_public void cairo_ps_surface_dsc_begin_page_setup (cairo_surface_t *surface); +/* debug interface */ + +cairo_public void +cairo_ps_surface_debug_force_fallbacks (cairo_surface_t *abstract_surface); + CAIRO_END_DECLS #else /* CAIRO_HAS_PS_SURFACE */ -- 1.7.9.5 -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo