diff options
-rw-r--r-- | include/mupdf.h | 1 | ||||
-rw-r--r-- | include/mupdf/function.h | 54 | ||||
-rw-r--r-- | include/mupdf/rsrc.h | 11 | ||||
-rw-r--r-- | mupdf/function.c | 49 |
4 files changed, 60 insertions, 55 deletions
diff --git a/include/mupdf.h b/include/mupdf.h index a7feec65..a1633541 100644 --- a/include/mupdf.h +++ b/include/mupdf.h @@ -9,7 +9,6 @@ #include "mupdf/syntax.h" #include "mupdf/xref.h" -#include "mupdf/function.h" #include "mupdf/rsrc.h" #include "mupdf/content.h" #include "mupdf/page.h" diff --git a/include/mupdf/function.h b/include/mupdf/function.h deleted file mode 100644 index 9e2caa26..00000000 --- a/include/mupdf/function.h +++ /dev/null @@ -1,54 +0,0 @@ -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_evalfunction(pdf_function *func, float *in, int inlen, float *out, int outlen); -void pdf_freefunc(pdf_function *func); - diff --git a/include/mupdf/rsrc.h b/include/mupdf/rsrc.h index 1cf5d654..20df27e7 100644 --- a/include/mupdf/rsrc.h +++ b/include/mupdf/rsrc.h @@ -14,6 +14,17 @@ fz_error *pdf_loadresources(fz_obj **rdb, pdf_xref *xref, fz_obj *orig); void *pdf_findresource(pdf_rsrc *list, fz_obj *ref); /* + * Functions + */ + + +typedef struct pdf_function_s pdf_function; + +fz_error *pdf_loadfunction(pdf_function **func, pdf_xref *xref, fz_obj *obj); +fz_error *pdf_evalfunction(pdf_function *func, float *in, int inlen, float *out, int outlen); +void pdf_freefunc(pdf_function *func); + +/* * ColorSpace */ diff --git a/mupdf/function.c b/mupdf/function.c index ee2310e0..5efb28fd 100644 --- a/mupdf/function.c +++ b/mupdf/function.c @@ -1,6 +1,55 @@ #include <fitz.h> #include <mupdf.h> +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) */ + }; +}; + #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) #define MIN_MAX(a,min,max) \ |