From 90803bae04906143cb650688970878af92486ef4 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Sun, 5 Dec 2010 00:34:36 +0000 Subject: Support N-d sampled functions with nearest neighbor sampling. --- mupdf/pdf_function.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/mupdf/pdf_function.c b/mupdf/pdf_function.c index 869f10d0..3e3be3f7 100644 --- a/mupdf/pdf_function.c +++ b/mupdf/pdf_function.c @@ -1105,7 +1105,7 @@ evalsamplefunc(pdf_function *func, float *in, float *out) int e0[MAXM], e1[MAXM]; float efrac[MAXM]; float x; - int i; + int i, k; /* encode input coordinates */ for (i = 0; i < func->m; i++) @@ -1182,7 +1182,20 @@ evalsamplefunc(pdf_function *func, float *in, float *out) else { - return fz_throw("sampled %d-d functions not implemented", func->m); + int idx = 0; + int scale = func->n; + float x; + + for (k = 0; k < func->m; k++) + { + idx = idx + e0[k] * scale; + scale = scale * func->u.sa.size[k]; + } + + x = func->u.sa.samples[idx + i]; + + out[i] = LERP(x, 0, 1, func->u.sa.decode[i][0], func->u.sa.decode[i][1]); + out[i] = CLAMP(out[i], func->range[i][0], func->range[i][1]); } } -- cgit v1.2.3