diff options
author | Carl Worth <cworth@cworth.org> | 2006-06-10 09:15:31 -0700 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2006-06-10 09:15:31 -0700 |
commit | 13ba5316fbc4b9d2aac13da644f4c87069447246 (patch) | |
tree | 9ad73aab870d7b416bdea18f065f79caaeb9fbc8 /test/fallback-resolution.c | |
parent | 6ca30e108f32862948fa332b31f60fa79b566d77 (diff) | |
download | cairo-13ba5316fbc4b9d2aac13da644f4c87069447246.tar.gz |
Test PS and SVG backends in addition to PDF in test/fallback-resolution.
Diffstat (limited to 'test/fallback-resolution.c')
-rw-r--r-- | test/fallback-resolution.c | 112 |
1 files changed, 81 insertions, 31 deletions
diff --git a/test/fallback-resolution.c b/test/fallback-resolution.c index d3ab6c712..407290ec6 100644 --- a/test/fallback-resolution.c +++ b/test/fallback-resolution.c @@ -25,9 +25,16 @@ #include <stdio.h> #include <cairo.h> + #include <cairo-pdf.h> #include <cairo-pdf-test.h> +#include <cairo-ps.h> +#include <cairo-ps-test.h> + +#include <cairo-svg.h> +#include <cairo-svg-test.h> + #include "cairo-test.h" /* This test exists to test cairo_surface_set_fallback_resolution @@ -65,48 +72,91 @@ draw (cairo_t *cr, double width, double height, double ppi) cairo_restore (cr); } +#define NUM_BACKENDS 3 +typedef enum { + PDF, PS, SVG +} backend_t; +static const char *backend_filename[NUM_BACKENDS] = { + "fallback-resolution.pdf", + "fallback-resolution.ps", + "fallback-resolution.svg" +}; + int main (void) { cairo_surface_t *surface; cairo_t *cr; cairo_status_t status; - char *filename; double ppi[] = { 600., 300., 150., 75., 37.5 }; - int i; - - printf("\n"); - - filename = "fallback-resolution.pdf"; - - surface = cairo_pdf_surface_create (filename, SIZE, SIZE); + backend_t backend; + int page, num_pages; - cr = cairo_create (surface); + num_pages = sizeof (ppi) / sizeof (ppi[0]); - /* Force image fallbacks before drawing anything. */ - cairo_pdf_test_force_fallbacks (); - - for (i = 0; i < sizeof(ppi) / sizeof (ppi[0]); i++) - { - cairo_surface_set_fallback_resolution (surface, ppi[i], ppi[i]); - - draw (cr, SIZE, SIZE, ppi[i]); - - cairo_show_page (cr); - } - - status = cairo_status (cr); - - cairo_destroy (cr); - cairo_surface_destroy (surface); + printf("\n"); - if (status) { - cairo_test_log ("Failed to create pdf surface for file %s: %s\n", - filename, cairo_status_to_string (status)); - return CAIRO_TEST_FAILURE; + for (backend=0; backend < NUM_BACKENDS; backend++) { + + /* Create backend-specific surface and force image fallbacks. */ + switch (backend) { + case PDF: + surface = cairo_pdf_surface_create (backend_filename[backend], + SIZE, SIZE); + cairo_pdf_test_force_fallbacks (); + break; + case PS: + surface = cairo_ps_surface_create (backend_filename[backend], + SIZE, SIZE); + cairo_ps_test_force_fallbacks (); + break; + case SVG: + surface = cairo_svg_surface_create (backend_filename[backend], + SIZE, SIZE * num_pages); + cairo_svg_test_force_fallbacks (); + break; + } + + cr = cairo_create (surface); + + for (page = 0; page < num_pages; page++) + { + cairo_surface_set_fallback_resolution (surface, ppi[page], ppi[page]); + + draw (cr, SIZE, SIZE, ppi[page]); + + /* Backend-specific means of "advancing a page" */ + switch (backend) { + case PDF: + case PS: + cairo_show_page (cr); + break; + case SVG: + if (page < num_pages - 1) { + cairo_translate (cr, 0, SIZE); + } else { + cairo_surface_set_fallback_resolution (surface, ppi[0], ppi[0]); + cairo_show_page (cr); + } + break; + } + } + + status = cairo_status (cr); + + cairo_destroy (cr); + cairo_surface_destroy (surface); + + if (status) { + cairo_test_log ("Failed to create pdf surface for file %s: %s\n", + backend_filename[backend], + cairo_status_to_string (status)); + return CAIRO_TEST_FAILURE; + } + + printf ("fallback-resolution: Please check %s to ensure it looks correct.\n", + backend_filename[backend]); } - printf ("fallback-resolution: Please check %s to ensure it looks correct.\n", filename); - return CAIRO_TEST_SUCCESS; } |