diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/pdf/pdf-interpret.c | 19 | ||||
-rw-r--r-- | source/pdf/pdf-op-buffer.c | 8 | ||||
-rw-r--r-- | source/pdf/pdf-op-filter.c | 8 | ||||
-rw-r--r-- | source/pdf/pdf-op-run.c | 4 |
4 files changed, 21 insertions, 18 deletions
diff --git a/source/pdf/pdf-interpret.c b/source/pdf/pdf-interpret.c index 64a60e06..3a386614 100644 --- a/source/pdf/pdf-interpret.c +++ b/source/pdf/pdf-interpret.c @@ -675,10 +675,13 @@ resolve_properties(fz_context *ctx, pdf_csi *csi, pdf_obj *obj) } static void -pdf_process_BDC(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, const char *name, pdf_obj *properties) +pdf_process_BDC(fz_context *ctx, pdf_processor *proc, pdf_csi *csi) { + pdf_obj *raw = csi->obj; + pdf_obj *cooked = resolve_properties(ctx, csi, raw); + if (proc->op_BDC) - proc->op_BDC(ctx, proc, name, properties); + proc->op_BDC(ctx, proc, csi->name, raw, cooked); /* Already hidden, no need to look further */ if (proc->hidden > 0) @@ -688,18 +691,18 @@ pdf_process_BDC(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, const char * } /* We only look at OC groups here */ - if (strcmp(name, "OC")) + if (strcmp(csi->name, "OC")) return; /* No Properties array, or name not found, means visible. */ - if (!properties) + if (!cooked) return; /* Wrong type of property */ - if (!pdf_name_eq(ctx, pdf_dict_get(ctx, properties, PDF_NAME_Type), PDF_NAME_OCG)) + if (!pdf_name_eq(ctx, pdf_dict_get(ctx, cooked, PDF_NAME_Type), PDF_NAME_OCG)) return; - if (pdf_is_hidden_ocg(ctx, csi->doc->ocg, csi->rdb, proc->event, properties)) + if (pdf_is_hidden_ocg(ctx, csi->doc->ocg, csi->rdb, proc->event, cooked)) ++proc->hidden; } @@ -966,9 +969,9 @@ pdf_process_keyword(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, fz_strea /* marked content */ case B('M','P'): if (proc->op_MP) proc->op_MP(ctx, proc, csi->name); break; - case B('D','P'): if (proc->op_DP) proc->op_DP(ctx, proc, csi->name, resolve_properties(ctx, csi, csi->obj)); break; + case B('D','P'): if (proc->op_DP) proc->op_DP(ctx, proc, csi->name, csi->obj, resolve_properties(ctx, csi, csi->obj)); break; case C('B','M','C'): pdf_process_BMC(ctx, proc, csi, csi->name); break; - case C('B','D','C'): pdf_process_BDC(ctx, proc, csi, csi->name, resolve_properties(ctx, csi, csi->obj)); break; + case C('B','D','C'): pdf_process_BDC(ctx, proc, csi); break; case C('E','M','C'): pdf_process_EMC(ctx, proc, csi); break; /* compatibility */ diff --git a/source/pdf/pdf-op-buffer.c b/source/pdf/pdf-op-buffer.c index 6e79a7ee..241b096f 100644 --- a/source/pdf/pdf-op-buffer.c +++ b/source/pdf/pdf-op-buffer.c @@ -712,11 +712,11 @@ pdf_out_MP(fz_context *ctx, pdf_processor *proc, const char *tag) } static void -pdf_out_DP(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *properties) +pdf_out_DP(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *raw, pdf_obj *cooked) { fz_output *out = ((pdf_output_processor*)proc)->out; fz_printf(ctx, out, "/%s ", tag); - pdf_print_obj(ctx, out, properties, 1); + pdf_print_obj(ctx, out, raw, 1); fz_printf(ctx, out, " DP\n"); } @@ -728,11 +728,11 @@ pdf_out_BMC(fz_context *ctx, pdf_processor *proc, const char *tag) } static void -pdf_out_BDC(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *properties) +pdf_out_BDC(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *raw, pdf_obj *cooked) { fz_output *out = ((pdf_output_processor*)proc)->out; fz_printf(ctx, out, "/%s ", tag); - pdf_print_obj(ctx, out, properties, 1); + pdf_print_obj(ctx, out, raw, 1); fz_printf(ctx, out, " BDC\n"); } diff --git a/source/pdf/pdf-op-filter.c b/source/pdf/pdf-op-filter.c index 24644a37..a8496e35 100644 --- a/source/pdf/pdf-op-filter.c +++ b/source/pdf/pdf-op-filter.c @@ -1047,12 +1047,12 @@ pdf_filter_MP(fz_context *ctx, pdf_processor *proc, const char *tag) } static void -pdf_filter_DP(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *properties) +pdf_filter_DP(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *raw, pdf_obj *cooked) { pdf_filter_processor *p = (pdf_filter_processor*)proc; filter_flush(ctx, p, 0); if (p->chain->op_DP) - p->chain->op_DP(ctx, p->chain, tag, properties); + p->chain->op_DP(ctx, p->chain, tag, raw, cooked); } static void @@ -1065,12 +1065,12 @@ pdf_filter_BMC(fz_context *ctx, pdf_processor *proc, const char *tag) } static void -pdf_filter_BDC(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *properties) +pdf_filter_BDC(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *raw, pdf_obj *cooked) { pdf_filter_processor *p = (pdf_filter_processor*)proc; filter_flush(ctx, p, 0); if (p->chain->op_BDC) - p->chain->op_BDC(ctx, p->chain, tag, properties); + p->chain->op_BDC(ctx, p->chain, tag, raw, cooked); } static void diff --git a/source/pdf/pdf-op-run.c b/source/pdf/pdf-op-run.c index cb83aa8b..593afe24 100644 --- a/source/pdf/pdf-op-run.c +++ b/source/pdf/pdf-op-run.c @@ -1931,7 +1931,7 @@ static void pdf_run_MP(fz_context *ctx, pdf_processor *proc, const char *tag) { } -static void pdf_run_DP(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *properties) +static void pdf_run_DP(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *raw, pdf_obj *cooked) { } @@ -1939,7 +1939,7 @@ static void pdf_run_BMC(fz_context *ctx, pdf_processor *proc, const char *tag) { } -static void pdf_run_BDC(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *properties) +static void pdf_run_BDC(fz_context *ctx, pdf_processor *proc, const char *tag, pdf_obj *raw, pdf_obj *cooked) { } |