summaryrefslogtreecommitdiff
path: root/test/fallback-resolution.c
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2006-06-10 09:15:31 -0700
committerCarl Worth <cworth@cworth.org>2006-06-10 09:15:31 -0700
commit13ba5316fbc4b9d2aac13da644f4c87069447246 (patch)
tree9ad73aab870d7b416bdea18f065f79caaeb9fbc8 /test/fallback-resolution.c
parent6ca30e108f32862948fa332b31f60fa79b566d77 (diff)
downloadcairo-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.c112
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;
}