summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/pdfapp.c4
-rw-r--r--apps/xpsdraw.c16
-rw-r--r--ios/document.c4
-rw-r--r--xps/muxps.h3
-rw-r--r--xps/xps_tile.c10
5 files changed, 19 insertions, 18 deletions
diff --git a/apps/pdfapp.c b/apps/pdfapp.c
index 5f7e79dc..0f8dd7e3 100644
--- a/apps/pdfapp.c
+++ b/apps/pdfapp.c
@@ -353,9 +353,7 @@ static void pdfapp_loadpage_xps(pdfapp_t *app)
/* Create display list */
app->page_list = fz_new_display_list(app->ctx);
mdev = fz_new_list_device(app->ctx, app->page_list);
- app->xps->dev = mdev;
- xps_parse_fixed_page(app->xps, fz_identity, page);
- app->xps->dev = NULL;
+ xps_run_page(app->xps, page, mdev, fz_identity, NULL);
fz_free_device(mdev);
xps_free_page(app->xps, page);
diff --git a/apps/xpsdraw.c b/apps/xpsdraw.c
index cbf7f802..1058c390 100644
--- a/apps/xpsdraw.c
+++ b/apps/xpsdraw.c
@@ -72,14 +72,6 @@ static int isrange(char *s)
return 1;
}
-static void
-xps_run_page(xps_document *doc, xps_page *page, fz_device *dev, fz_matrix ctm)
-{
- doc->dev = dev;
- xps_parse_fixed_page(doc, ctm, page);
- doc->dev = NULL;
-}
-
static void drawpage(xps_document *doc, int pagenum)
{
xps_page *page;
@@ -100,7 +92,7 @@ static void drawpage(xps_document *doc, int pagenum)
{
list = fz_new_display_list(doc->ctx);
dev = fz_new_list_device(doc->ctx, list);
- xps_run_page(doc, page, dev, fz_identity);
+ xps_run_page(doc, page, dev, fz_identity, NULL);
fz_free_device(dev);
}
@@ -111,7 +103,7 @@ static void drawpage(xps_document *doc, int pagenum)
if (list)
fz_execute_display_list(list, dev, fz_identity, fz_infinite_bbox, NULL);
else
- xps_run_page(doc, page, dev, fz_identity);
+ xps_run_page(doc, page, dev, fz_identity, NULL);
printf("</page>\n");
fz_free_device(dev);
}
@@ -123,7 +115,7 @@ static void drawpage(xps_document *doc, int pagenum)
if (list)
fz_execute_display_list(list, dev, fz_identity, fz_infinite_bbox, NULL);
else
- xps_run_page(doc, page, dev, fz_identity);
+ xps_run_page(doc, page, dev, fz_identity, NULL);
fz_free_device(dev);
printf("[Page %d]\n", pagenum);
if (showtext > 1)
@@ -167,7 +159,7 @@ static void drawpage(xps_document *doc, int pagenum)
if (list)
fz_execute_display_list(list, dev, ctm, bbox, NULL);
else
- xps_run_page(doc, page, dev, ctm);
+ xps_run_page(doc, page, dev, ctm, NULL);
fz_free_device(dev);
if (output)
diff --git a/ios/document.c b/ios/document.c
index 066f5209..dd893362 100644
--- a/ios/document.c
+++ b/ios/document.c
@@ -153,9 +153,7 @@ draw_page(struct document *doc, int number, fz_device *dev, fz_matrix ctm, fz_co
xps_page *page = doc->xps_page;
fz_matrix page_ctm = fz_scale(72.0f / 96.0f, 72.0f / 96.0f);
ctm = fz_concat(page_ctm, ctm);
- doc->xps->dev = dev;
- xps_parse_fixed_page(doc->xps, ctm, page);
- doc->xps->dev = NULL;
+ xps_run_page(doc->xps, page, dev, ctm, cookie);
}
}
fz_catch (doc->ctx)
diff --git a/xps/muxps.h b/xps/muxps.h
index 188935c8..95b68860 100644
--- a/xps/muxps.h
+++ b/xps/muxps.h
@@ -173,6 +173,8 @@ void xps_debug_resource_dictionary(xps_resource *dict);
* Fixed page/graphics parsing.
*/
+void xps_run_page(xps_document *doc, xps_page *page, fz_device *dev, fz_matrix ctm, fz_cookie *cookie);
+
void xps_parse_fixed_page(xps_document *doc, fz_matrix ctm, xps_page *page);
void xps_parse_canvas(xps_document *doc, fz_matrix ctm, fz_rect area, char *base_uri, xps_resource *dict, xml_element *node);
void xps_parse_path(xps_document *doc, fz_matrix ctm, char *base_uri, xps_resource *dict, xml_element *node);
@@ -244,6 +246,7 @@ struct xps_document_s
float alpha;
/* Current device */
+ fz_cookie *cookie;
fz_device *dev;
};
diff --git a/xps/xps_tile.c b/xps/xps_tile.c
index 1acdd369..842e4cda 100644
--- a/xps/xps_tile.c
+++ b/xps/xps_tile.c
@@ -356,3 +356,13 @@ xps_parse_fixed_page(xps_document *doc, fz_matrix ctm, xps_page *page)
if (dict)
xps_free_resource_dictionary(doc, dict);
}
+
+void
+xps_run_page(xps_document *doc, xps_page *page, fz_device *dev, fz_matrix ctm, fz_cookie *cookie)
+{
+ doc->cookie = cookie;
+ doc->dev = dev;
+ xps_parse_fixed_page(doc, ctm, page);
+ doc->cookie = NULL;
+ doc->dev = NULL;
+}