diff options
Diffstat (limited to 'xps/xpspage.c')
-rw-r--r-- | xps/xpspage.c | 63 |
1 files changed, 33 insertions, 30 deletions
diff --git a/xps/xpspage.c b/xps/xpspage.c index 1854b1fc..7659a1a7 100644 --- a/xps/xpspage.c +++ b/xps/xpspage.c @@ -2,10 +2,10 @@ #include "muxps.h" void -xps_parse_canvas(xps_context *ctx, fz_matrix ctm, char *base_uri, xps_resource *dict, xps_item *root) +xps_parse_canvas(xps_context *ctx, fz_matrix ctm, char *base_uri, xps_resource *dict, xml_element *root) { xps_resource *new_dict = NULL; - xps_item *node; + xml_element *node; char *opacity_mask_uri; int code; @@ -14,22 +14,22 @@ xps_parse_canvas(xps_context *ctx, fz_matrix ctm, char *base_uri, xps_resource * char *opacity_att; char *opacity_mask_att; - xps_item *transform_tag = NULL; - xps_item *clip_tag = NULL; - xps_item *opacity_mask_tag = NULL; + xml_element *transform_tag = NULL; + xml_element *clip_tag = NULL; + xml_element *opacity_mask_tag = NULL; fz_matrix transform; - transform_att = xps_att(root, "RenderTransform"); - clip_att = xps_att(root, "Clip"); - opacity_att = xps_att(root, "Opacity"); - opacity_mask_att = xps_att(root, "OpacityMask"); + transform_att = xml_att(root, "RenderTransform"); + clip_att = xml_att(root, "Clip"); + opacity_att = xml_att(root, "Opacity"); + opacity_mask_att = xml_att(root, "OpacityMask"); - for (node = xps_down(root); node; node = xps_next(node)) + for (node = xml_down(root); node; node = xml_next(node)) { - if (!strcmp(xps_tag(node), "Canvas.Resources") && xps_down(node)) + if (!strcmp(xml_tag(node), "Canvas.Resources") && xml_down(node)) { - code = xps_parse_resource_dictionary(ctx, &new_dict, base_uri, xps_down(node)); + code = xps_parse_resource_dictionary(ctx, &new_dict, base_uri, xml_down(node)); if (code) fz_catch(code, "cannot load Canvas.Resources"); else @@ -39,12 +39,12 @@ xps_parse_canvas(xps_context *ctx, fz_matrix ctm, char *base_uri, xps_resource * } } - if (!strcmp(xps_tag(node), "Canvas.RenderTransform")) - transform_tag = xps_down(node); - if (!strcmp(xps_tag(node), "Canvas.Clip")) - clip_tag = xps_down(node); - if (!strcmp(xps_tag(node), "Canvas.OpacityMask")) - opacity_mask_tag = xps_down(node); + if (!strcmp(xml_tag(node), "Canvas.RenderTransform")) + transform_tag = xml_down(node); + if (!strcmp(xml_tag(node), "Canvas.Clip")) + clip_tag = xml_down(node); + if (!strcmp(xml_tag(node), "Canvas.OpacityMask")) + opacity_mask_tag = xml_down(node); } opacity_mask_uri = base_uri; @@ -64,7 +64,7 @@ xps_parse_canvas(xps_context *ctx, fz_matrix ctm, char *base_uri, xps_resource * xps_begin_opacity(ctx, ctm, fz_infiniterect, opacity_mask_uri, dict, opacity_att, opacity_mask_tag); - for (node = xps_down(root); node; node = xps_next(node)) + for (node = xml_down(root); node; node = xml_next(node)) { xps_parse_element(ctx, ctm, base_uri, dict, node); } @@ -81,7 +81,7 @@ xps_parse_canvas(xps_context *ctx, fz_matrix ctm, char *base_uri, xps_resource * void xps_parse_fixed_page(xps_context *ctx, fz_matrix ctm, xps_page *page) { - xps_item *node; + xml_element *node; xps_resource *dict; char base_uri[1024]; char *s; @@ -97,11 +97,14 @@ xps_parse_fixed_page(xps_context *ctx, fz_matrix ctm, xps_page *page) ctx->opacity_top = 0; ctx->opacity[0] = 1; - for (node = xps_down(page->root); node; node = xps_next(node)) + if (!page->root) + return; + + for (node = xml_down(page->root); node; node = xml_next(node)) { - if (!strcmp(xps_tag(node), "FixedPage.Resources") && xps_down(node)) + if (!strcmp(xml_tag(node), "FixedPage.Resources") && xml_down(node)) { - code = xps_parse_resource_dictionary(ctx, &dict, base_uri, xps_down(node)); + code = xps_parse_resource_dictionary(ctx, &dict, base_uri, xml_down(node)); if (code) fz_catch(code, "cannot load FixedPage.Resources"); } @@ -118,7 +121,7 @@ int xps_load_fixed_page(xps_context *ctx, xps_page *page) { xps_part *part; - xps_item *root; + xml_element *root; char *width_att; char *height_att; @@ -126,20 +129,20 @@ xps_load_fixed_page(xps_context *ctx, xps_page *page) if (!part) return fz_rethrow(-1, "cannot read zip part '%s'", page->name); - root = xps_parse_xml(ctx, part->data, part->size); + root = xml_parse_document(part->data, part->size); if (!root) - return fz_rethrow(-1, "cannot parse xml"); + return fz_rethrow(-1, "cannot parse xml part '%s'", page->name); xps_free_part(ctx, part); - if (strcmp(xps_tag(root), "FixedPage")) - return fz_throw("expected FixedPage element (found %s)", xps_tag(root)); + if (strcmp(xml_tag(root), "FixedPage")) + return fz_throw("expected FixedPage element (found %s)", xml_tag(root)); - width_att = xps_att(root, "Width"); + width_att = xml_att(root, "Width"); if (!width_att) return fz_throw("FixedPage missing required attribute: Width"); - height_att = xps_att(root, "Height"); + height_att = xml_att(root, "Height"); if (!height_att) return fz_throw("FixedPage missing required attribute: Height"); |