summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-interpret.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2018-03-29 22:25:09 +0200
committerTor Andersson <tor.andersson@artifex.com>2018-04-24 16:47:43 +0200
commit51b8205a513e86c62121a927a067632c1a933839 (patch)
treec2882a6c253a715bfc2ea72854c75350f0b2024b /source/pdf/pdf-interpret.c
parent67a7449fc1f186f318942b9c6b8d66d4458b7d87 (diff)
downloadmupdf-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.c86
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)