diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2018-03-29 22:25:09 +0200 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2018-04-24 16:47:43 +0200 |
commit | 51b8205a513e86c62121a927a067632c1a933839 (patch) | |
tree | c2882a6c253a715bfc2ea72854c75350f0b2024b /source/pdf/pdf-interpret.c | |
parent | 67a7449fc1f186f318942b9c6b8d66d4458b7d87 (diff) | |
download | mupdf-51b8205a513e86c62121a927a067632c1a933839.tar.xz |
Remove need for namedump by using macros and preprocessor.
Add a PDF_NAME(Foo) macro that evaluates to a pdf_obj for /Foo.
Use the C preprocessor to create the enum values and string table
from one include file instead of using a separate code generator tool.
Diffstat (limited to 'source/pdf/pdf-interpret.c')
-rw-r--r-- | source/pdf/pdf-interpret.c | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/source/pdf/pdf-interpret.c b/source/pdf/pdf-interpret.c index c6833878..8f8d051f 100644 --- a/source/pdf/pdf-interpret.c +++ b/source/pdf/pdf-interpret.c @@ -155,23 +155,23 @@ pdf_process_extgstate(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, pdf_ob { pdf_obj *obj; - obj = pdf_dict_get(ctx, dict, PDF_NAME_LW); + obj = pdf_dict_get(ctx, dict, PDF_NAME(LW)); if (pdf_is_number(ctx, obj) && proc->op_w) proc->op_w(ctx, proc, pdf_to_real(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_LC); + obj = pdf_dict_get(ctx, dict, PDF_NAME(LC)); if (pdf_is_int(ctx, obj) && proc->op_J) proc->op_J(ctx, proc, fz_clampi(pdf_to_int(ctx, obj), 0, 2)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_LJ); + obj = pdf_dict_get(ctx, dict, PDF_NAME(LJ)); if (pdf_is_int(ctx, obj) && proc->op_j) proc->op_j(ctx, proc, fz_clampi(pdf_to_int(ctx, obj), 0, 2)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_ML); + obj = pdf_dict_get(ctx, dict, PDF_NAME(ML)); if (pdf_is_number(ctx, obj) && proc->op_M) proc->op_M(ctx, proc, pdf_to_real(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_D); + obj = pdf_dict_get(ctx, dict, PDF_NAME(D)); if (pdf_is_array(ctx, obj) && proc->op_d) { pdf_obj *dash_array = pdf_array_get(ctx, obj, 0); @@ -179,15 +179,15 @@ pdf_process_extgstate(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, pdf_ob proc->op_d(ctx, proc, dash_array, pdf_to_real(ctx, dash_phase)); } - obj = pdf_dict_get(ctx, dict, PDF_NAME_RI); + obj = pdf_dict_get(ctx, dict, PDF_NAME(RI)); if (pdf_is_name(ctx, obj) && proc->op_ri) proc->op_ri(ctx, proc, pdf_to_name(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_FL); + obj = pdf_dict_get(ctx, dict, PDF_NAME(FL)); if (pdf_is_number(ctx, obj) && proc->op_i) proc->op_i(ctx, proc, pdf_to_real(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_Font); + obj = pdf_dict_get(ctx, dict, PDF_NAME(Font)); if (pdf_is_array(ctx, obj) && proc->op_Tf) { pdf_obj *font_ref = pdf_array_get(ctx, obj, 0); @@ -203,53 +203,53 @@ pdf_process_extgstate(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, pdf_ob /* overprint and color management */ - obj = pdf_dict_get(ctx, dict, PDF_NAME_OP); + obj = pdf_dict_get(ctx, dict, PDF_NAME(OP)); if (pdf_is_bool(ctx, obj) && proc->op_gs_OP) proc->op_gs_OP(ctx, proc, pdf_to_bool(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_op); + obj = pdf_dict_get(ctx, dict, PDF_NAME(op)); if (pdf_is_bool(ctx, obj) && proc->op_gs_op) proc->op_gs_op(ctx, proc, pdf_to_bool(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_OPM); + obj = pdf_dict_get(ctx, dict, PDF_NAME(OPM)); if (pdf_is_int(ctx, obj) && proc->op_gs_OPM) proc->op_gs_OPM(ctx, proc, pdf_to_int(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_UseBlackPtComp); + obj = pdf_dict_get(ctx, dict, PDF_NAME(UseBlackPtComp)); if (pdf_is_name(ctx, obj) && proc->op_gs_UseBlackPtComp) proc->op_gs_UseBlackPtComp(ctx, proc, obj); /* transfer functions */ - obj = pdf_dict_get(ctx, dict, PDF_NAME_TR2); + obj = pdf_dict_get(ctx, dict, PDF_NAME(TR2)); if (pdf_is_name(ctx, obj)) - if (!pdf_name_eq(ctx, obj, PDF_NAME_Identity) && !pdf_name_eq(ctx, obj, PDF_NAME_Default)) + if (!pdf_name_eq(ctx, obj, PDF_NAME(Identity)) && !pdf_name_eq(ctx, obj, PDF_NAME(Default))) fz_warn(ctx, "ignoring transfer function"); if (!obj) /* TR is ignored in the presence of TR2 */ { - pdf_obj *tr = pdf_dict_get(ctx, dict, PDF_NAME_TR); + pdf_obj *tr = pdf_dict_get(ctx, dict, PDF_NAME(TR)); if (pdf_is_name(ctx, tr)) - if (!pdf_name_eq(ctx, tr, PDF_NAME_Identity)) + if (!pdf_name_eq(ctx, tr, PDF_NAME(Identity))) fz_warn(ctx, "ignoring transfer function"); } /* transparency state */ - obj = pdf_dict_get(ctx, dict, PDF_NAME_CA); + obj = pdf_dict_get(ctx, dict, PDF_NAME(CA)); if (pdf_is_number(ctx, obj) && proc->op_gs_CA) proc->op_gs_CA(ctx, proc, pdf_to_real(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_ca); + obj = pdf_dict_get(ctx, dict, PDF_NAME(ca)); if (pdf_is_number(ctx, obj) && proc->op_gs_ca) proc->op_gs_ca(ctx, proc, pdf_to_real(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_BM); + obj = pdf_dict_get(ctx, dict, PDF_NAME(BM)); if (pdf_is_array(ctx, obj)) obj = pdf_array_get(ctx, obj, 0); if (pdf_is_name(ctx, obj) && proc->op_gs_BM) proc->op_gs_BM(ctx, proc, pdf_to_name(ctx, obj)); - obj = pdf_dict_get(ctx, dict, PDF_NAME_SMask); + obj = pdf_dict_get(ctx, dict, PDF_NAME(SMask)); if (proc->op_gs_SMask) { if (pdf_is_dict(ctx, obj)) @@ -260,7 +260,7 @@ pdf_process_extgstate(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, pdf_ob int colorspace_n = 1; int k, luminosity; - xobj = pdf_dict_get(ctx, obj, PDF_NAME_G); + xobj = pdf_dict_get(ctx, obj, PDF_NAME(G)); colorspace = pdf_xobject_colorspace(ctx, xobj); if (colorspace) @@ -276,26 +276,26 @@ pdf_process_extgstate(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, pdf_ob softmask_bc[3] = 1.0f; fz_drop_colorspace(ctx, colorspace); - bc = pdf_dict_get(ctx, obj, PDF_NAME_BC); + bc = pdf_dict_get(ctx, obj, PDF_NAME(BC)); if (pdf_is_array(ctx, bc)) { for (k = 0; k < colorspace_n; k++) softmask_bc[k] = pdf_to_real(ctx, pdf_array_get(ctx, bc, k)); } - s = pdf_dict_get(ctx, obj, PDF_NAME_S); - if (pdf_name_eq(ctx, s, PDF_NAME_Luminosity)) + s = pdf_dict_get(ctx, obj, PDF_NAME(S)); + if (pdf_name_eq(ctx, s, PDF_NAME(Luminosity))) luminosity = 1; else luminosity = 0; - tr = pdf_dict_get(ctx, obj, PDF_NAME_TR); - if (tr && !pdf_name_eq(ctx, tr, PDF_NAME_Identity)) + tr = pdf_dict_get(ctx, obj, PDF_NAME(TR)); + if (tr && !pdf_name_eq(ctx, tr, PDF_NAME(Identity))) fz_warn(ctx, "ignoring transfer function"); proc->op_gs_SMask(ctx, proc, xobj, csi->rdb, softmask_bc, luminosity); } - else if (pdf_is_name(ctx, obj) && pdf_name_eq(ctx, obj, PDF_NAME_None)) + else if (pdf_is_name(ctx, obj) && pdf_name_eq(ctx, obj, PDF_NAME(None))) { proc->op_gs_SMask(ctx, proc, NULL, NULL, NULL, 0); } @@ -307,32 +307,32 @@ pdf_process_Do(fz_context *ctx, pdf_processor *proc, pdf_csi *csi) { pdf_obj *xres, *xobj, *subtype; - xres = pdf_dict_get(ctx, csi->rdb, PDF_NAME_XObject); + xres = pdf_dict_get(ctx, csi->rdb, PDF_NAME(XObject)); if (!xres) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot find XObject dictionary"); xobj = pdf_dict_gets(ctx, xres, csi->name); if (!xobj) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot find XObject resource '%s'", csi->name); - subtype = pdf_dict_get(ctx, xobj, PDF_NAME_Subtype); - if (pdf_name_eq(ctx, subtype, PDF_NAME_Form)) + subtype = pdf_dict_get(ctx, xobj, PDF_NAME(Subtype)); + if (pdf_name_eq(ctx, subtype, PDF_NAME(Form))) { - pdf_obj *st = pdf_dict_get(ctx, xobj, PDF_NAME_Subtype2); + pdf_obj *st = pdf_dict_get(ctx, xobj, PDF_NAME(Subtype2)); if (st) subtype = st; } if (!pdf_is_name(ctx, subtype)) fz_throw(ctx, FZ_ERROR_SYNTAX, "no XObject subtype specified"); - if (pdf_is_hidden_ocg(ctx, csi->doc->ocg, csi->rdb, proc->usage, pdf_dict_get(ctx, xobj, PDF_NAME_OC))) + if (pdf_is_hidden_ocg(ctx, csi->doc->ocg, csi->rdb, proc->usage, pdf_dict_get(ctx, xobj, PDF_NAME(OC)))) return; - if (pdf_name_eq(ctx, subtype, PDF_NAME_Form)) + if (pdf_name_eq(ctx, subtype, PDF_NAME(Form))) { if (proc->op_Do_form) proc->op_Do_form(ctx, proc, csi->name, xobj, csi->rdb); } - else if (pdf_name_eq(ctx, subtype, PDF_NAME_Image)) + else if (pdf_name_eq(ctx, subtype, PDF_NAME(Image))) { if (proc->op_Do_image) { @@ -378,7 +378,7 @@ pdf_process_CS(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, int stroke) else { pdf_obj *csres, *csobj; - csres = pdf_dict_get(ctx, csi->rdb, PDF_NAME_ColorSpace); + csres = pdf_dict_get(ctx, csi->rdb, PDF_NAME(ColorSpace)); if (!csres) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot find ColorSpace dictionary"); csobj = pdf_dict_gets(ctx, csres, csi->name); @@ -408,14 +408,14 @@ pdf_process_SC(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, int stroke) { pdf_obj *patres, *patobj, *type; - patres = pdf_dict_get(ctx, csi->rdb, PDF_NAME_Pattern); + patres = pdf_dict_get(ctx, csi->rdb, PDF_NAME(Pattern)); if (!patres) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot find Pattern dictionary"); patobj = pdf_dict_gets(ctx, patres, csi->name); if (!patobj) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot find Pattern resource '%s'", csi->name); - type = pdf_dict_get(ctx, patobj, PDF_NAME_PatternType); + type = pdf_dict_get(ctx, patobj, PDF_NAME(PatternType)); if (pdf_to_int(ctx, type) == 1) { @@ -477,7 +477,7 @@ static pdf_obj * resolve_properties(fz_context *ctx, pdf_csi *csi, pdf_obj *obj) { if (pdf_is_name(ctx, obj)) - return pdf_dict_get(ctx, pdf_dict_get(ctx, csi->rdb, PDF_NAME_Properties), obj); + return pdf_dict_get(ctx, pdf_dict_get(ctx, csi->rdb, PDF_NAME(Properties)), obj); else return obj; } @@ -590,7 +590,7 @@ pdf_process_keyword(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, fz_strea case B('g','s'): { pdf_obj *gsres, *gsobj; - gsres = pdf_dict_get(ctx, csi->rdb, PDF_NAME_ExtGState); + gsres = pdf_dict_get(ctx, csi->rdb, PDF_NAME(ExtGState)); if (!gsres) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot find ExtGState dictionary"); gsobj = pdf_dict_gets(ctx, gsres, csi->name); @@ -651,7 +651,7 @@ pdf_process_keyword(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, fz_strea { pdf_obj *fontres, *fontobj; pdf_font_desc *font; - fontres = pdf_dict_get(ctx, csi->rdb, PDF_NAME_Font); + fontres = pdf_dict_get(ctx, csi->rdb, PDF_NAME(Font)); if (!fontres) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot find Font dictionary"); fontobj = pdf_dict_gets(ctx, fontres, csi->name); @@ -743,7 +743,7 @@ pdf_process_keyword(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, fz_strea { pdf_obj *shaderes, *shadeobj; fz_shade *shade; - shaderes = pdf_dict_get(ctx, csi->rdb, PDF_NAME_Shading); + shaderes = pdf_dict_get(ctx, csi->rdb, PDF_NAME(Shading)); if (!shaderes) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot find Shading dictionary"); shadeobj = pdf_dict_gets(ctx, shaderes, csi->name); @@ -1047,7 +1047,7 @@ pdf_process_contents(fz_context *ctx, pdf_processor *proc, pdf_document *doc, pd void pdf_process_annot(fz_context *ctx, pdf_processor *proc, pdf_document *doc, pdf_page *page, pdf_annot *annot, fz_cookie *cookie) { - int flags = pdf_to_int(ctx, pdf_dict_get(ctx, annot->obj, PDF_NAME_F)); + int flags = pdf_to_int(ctx, pdf_dict_get(ctx, annot->obj, PDF_NAME(F))); if (flags & (PDF_ANNOT_IS_INVISIBLE | PDF_ANNOT_IS_HIDDEN)) return; @@ -1067,7 +1067,7 @@ pdf_process_annot(fz_context *ctx, pdf_processor *proc, pdf_document *doc, pdf_p /* TODO: NoZoom and NoRotate */ /* XXX what resources, if any, to use for this check? */ - if (pdf_is_hidden_ocg(ctx, doc->ocg, NULL, proc->usage, pdf_dict_get(ctx, annot->obj, PDF_NAME_OC))) + if (pdf_is_hidden_ocg(ctx, doc->ocg, NULL, proc->usage, pdf_dict_get(ctx, annot->obj, PDF_NAME(OC)))) return; if (proc->op_q && proc->op_cm && proc->op_Do_form && proc->op_Q && annot->ap) |