summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJeong Seok Gyo <seokgyo@gmail.com>2004-10-26 03:59:36 +0200
committerJeong Seok Gyo <seokgyo@gmail.com>2004-10-26 03:59:36 +0200
commit1728d5f210edc86d4f0091bf0b5c0ef2d1c50ef2 (patch)
tree6e8a06ca459f90774a3cdb77f97fa3d9f92e3a51 /include
parent2ba731ed980d131c5b6f1f33f15227751c8207a6 (diff)
downloadmupdf-1728d5f210edc86d4f0091bf0b5c0ef2d1c50ef2.tar.xz
adding functions
Diffstat (limited to 'include')
-rw-r--r--include/mupdf.h2
-rw-r--r--include/mupdf/function.h53
2 files changed, 54 insertions, 1 deletions
diff --git a/include/mupdf.h b/include/mupdf.h
index a1633541..cc455f89 100644
--- a/include/mupdf.h
+++ b/include/mupdf.h
@@ -12,4 +12,4 @@
#include "mupdf/rsrc.h"
#include "mupdf/content.h"
#include "mupdf/page.h"
-
+#include "mupdf/function.h"
diff --git a/include/mupdf/function.h b/include/mupdf/function.h
new file mode 100644
index 00000000..483931b5
--- /dev/null
+++ b/include/mupdf/function.h
@@ -0,0 +1,53 @@
+typedef struct pdf_function_s pdf_function;
+typedef struct psobj_s psobj;
+
+struct pdf_function_s
+{
+ unsigned short type; /* 0=sample 2=exponential 3=stitching 4=postscript */
+ int m; /* number of input values */
+ int n; /* number of output values */
+ float *domain; /* even index : min value, odd index : max value */
+ float *range; /* even index : min value, odd index : max value */
+ union
+ {
+ struct {
+ unsigned short bps;
+ unsigned short order;
+ int *size; /* the num of samples in each input dimension */
+ float *encode;
+ float *decode;
+ int *samples;
+ } sa;
+ struct {
+ float n;
+ float *c0;
+ float *c1;
+ } e;
+ struct {
+ int k;
+ pdf_function **funcs;
+ float *bounds;
+ float *encode;
+ } st;
+ struct {
+ psobj *code;
+ int cap;
+ } p;
+ }u;
+};
+
+struct psobj_s
+{
+ unsigned short type;
+ union {
+ int booln; // boolean (stack only)
+ int intg; // integer (stack and code)
+ float real; // real (stack and code)
+ int op; // operator (code only)
+ int blk; // if/ifelse block pointer (code only)
+ };
+};
+
+fz_error *pdf_loadfunction(pdf_function **func, pdf_xref *xref, fz_obj *obj);
+fz_error *pdf_execfunction(pdf_function *func, float *in, int inlen, float *out, int outlen);
+void pdf_freefunc(pdf_function *func); \ No newline at end of file