From 6e392e5e9a539bef5f608e2c1ee11ea4c1f68f2a Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Thu, 13 Dec 2012 14:12:52 +0000 Subject: Bug 693463: TR2 is defined for gstates, not for SMasks. Move the TR2 handling code. Thanks to zeniko for this. --- pdf/pdf_interpret.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'pdf') diff --git a/pdf/pdf_interpret.c b/pdf/pdf_interpret.c index 9a6f973a..e655cc87 100644 --- a/pdf/pdf_interpret.c +++ b/pdf/pdf_interpret.c @@ -1598,18 +1598,9 @@ pdf_run_extgstate(pdf_csi *csi, pdf_obj *rdb, pdf_obj *extgstate) else gstate->luminosity = 0; - tr = pdf_dict_gets(val, "TR2"); - if (tr) - { - if (strcmp(pdf_to_name(tr), "Identity") && strcmp(pdf_to_name(tr), "Default")) - fz_warn(ctx, "ignoring transfer function"); - } - else - { - tr = pdf_dict_gets(val, "TR"); - if (strcmp(pdf_to_name(tr), "Identity")) - fz_warn(ctx, "ignoring transfer function"); - } + tr = pdf_dict_gets(val, "TR"); + if (strcmp(pdf_to_name(tr), "Identity")) + fz_warn(ctx, "ignoring transfer function"); } else if (pdf_is_name(val) && !strcmp(pdf_to_name(val), "None")) { @@ -1621,9 +1612,17 @@ pdf_run_extgstate(pdf_csi *csi, pdf_obj *rdb, pdf_obj *extgstate) } } + else if (!strcmp(s, "TR2")) + { + if (strcmp(pdf_to_name(val), "Identity") && strcmp(pdf_to_name(val), "Default")) + fz_warn(ctx, "ignoring transfer function"); + } + else if (!strcmp(s, "TR")) { - if (!pdf_is_name(val) || strcmp(pdf_to_name(val), "Identity")) + /* TR is ignored in the presence of TR2 */ + pdf_obj *tr2 = pdf_dict_gets(extgstate, "TR2"); + if (!tr2 && !pdf_is_name(val) || strcmp(pdf_to_name(val), "Identity")) fz_warn(ctx, "ignoring transfer function"); } } -- cgit v1.2.3