summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mupdf/pdf/object.h9
-rw-r--r--source/pdf/pdf-object.c38
2 files changed, 47 insertions, 0 deletions
diff --git a/include/mupdf/pdf/object.h b/include/mupdf/pdf/object.h
index ffe484be..dfbaf3b2 100644
--- a/include/mupdf/pdf/object.h
+++ b/include/mupdf/pdf/object.h
@@ -129,6 +129,11 @@ void pdf_dict_put_matrix(fz_context *ctx, pdf_obj *dict, pdf_obj *key, const fz_
pdf_obj *pdf_dict_put_array(fz_context *ctx, pdf_obj *dict, pdf_obj *key, int initial);
pdf_obj *pdf_dict_put_dict(fz_context *ctx, pdf_obj *dict, pdf_obj *key, int initial);
+int pdf_dict_get_bool(fz_context *ctx, pdf_obj *dict, pdf_obj *key);
+int pdf_dict_get_int(fz_context *ctx, pdf_obj *dict, pdf_obj *key);
+float pdf_dict_get_real(fz_context *ctx, pdf_obj *dict, pdf_obj *key);
+const char *pdf_dict_get_string(fz_context *ctx, pdf_obj *dict, pdf_obj *key, size_t *sizep);
+
void pdf_array_push_bool(fz_context *ctx, pdf_obj *array, int x);
void pdf_array_push_int(fz_context *ctx, pdf_obj *array, int64_t x);
void pdf_array_push_real(fz_context *ctx, pdf_obj *array, double x);
@@ -138,6 +143,10 @@ void pdf_array_push_text_string(fz_context *ctx, pdf_obj *array, const char *x);
pdf_obj *pdf_array_push_array(fz_context *ctx, pdf_obj *array, int initial);
pdf_obj *pdf_array_push_dict(fz_context *ctx, pdf_obj *array, int initial);
+int pdf_array_get_bool(fz_context *ctx, pdf_obj *array, int index);
+int pdf_array_get_int(fz_context *ctx, pdf_obj *array, int index);
+float pdf_array_get_real(fz_context *ctx, pdf_obj *array, int index);
+
/*
Recurse through the object structure setting the node's parent_num to num.
parent_num is used when a subobject is to be changed during a document edit.
diff --git a/source/pdf/pdf-object.c b/source/pdf/pdf-object.c
index 837a8033..4360ea7c 100644
--- a/source/pdf/pdf-object.c
+++ b/source/pdf/pdf-object.c
@@ -2221,3 +2221,41 @@ pdf_obj *pdf_array_push_dict(fz_context *ctx, pdf_obj *array, int initial)
pdf_array_push_drop(ctx, array, obj);
return obj;
}
+
+int pdf_dict_get_bool(fz_context *ctx, pdf_obj *dict, pdf_obj *key)
+{
+ return pdf_to_bool(ctx, pdf_dict_get(ctx, dict, key));
+}
+
+int pdf_dict_get_int(fz_context *ctx, pdf_obj *dict, pdf_obj *key)
+{
+ return pdf_to_int(ctx, pdf_dict_get(ctx, dict, key));
+}
+
+float pdf_dict_get_real(fz_context *ctx, pdf_obj *dict, pdf_obj *key)
+{
+ return pdf_to_real(ctx, pdf_dict_get(ctx, dict, key));
+}
+
+const char *pdf_dict_get_string(fz_context *ctx, pdf_obj *dict, pdf_obj *key, size_t *sizep)
+{
+ pdf_obj *val = pdf_dict_get(ctx, dict, key);
+ if (sizep)
+ *sizep = pdf_to_str_len(ctx, val);
+ return pdf_to_str_buf(ctx, val);
+}
+
+int pdf_array_get_bool(fz_context *ctx, pdf_obj *array, int index)
+{
+ return pdf_to_bool(ctx, pdf_array_get(ctx, array, index));
+}
+
+int pdf_array_get_int(fz_context *ctx, pdf_obj *array, int index)
+{
+ return pdf_to_int(ctx, pdf_array_get(ctx, array, index));
+}
+
+float pdf_array_get_real(fz_context *ctx, pdf_obj *array, int index)
+{
+ return pdf_to_real(ctx, pdf_array_get(ctx, array, index));
+}