diff options
author | Tor Andersson <tor@ghostscript.com> | 2009-11-19 22:26:58 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2009-11-19 22:26:58 +0100 |
commit | d592309df36d2a81fbd7123cafa1a09b37137daf (patch) | |
tree | 36b4844ba9cb68c191516649c126ae6a1566c45b /fitz/filt_predict.c | |
parent | 3aec515191c29a8b70bd5e80226ecae8d09f2038 (diff) | |
download | mupdf-d592309df36d2a81fbd7123cafa1a09b37137daf.tar.xz |
Remove unused and largely untested encoding filters.
Diffstat (limited to 'fitz/filt_predict.c')
-rw-r--r-- | fitz/filt_predict.c | 90 |
1 files changed, 24 insertions, 66 deletions
diff --git a/fitz/filt_predict.c b/fitz/filt_predict.c index 29416f0b..77e03799 100644 --- a/fitz/filt_predict.c +++ b/fitz/filt_predict.c @@ -19,26 +19,23 @@ struct fz_predict_s int stride; int bpp; unsigned char *ref; - - int encode; }; fz_error -fz_newpredict(fz_filter **fp, fz_obj *params, int encode) +fz_newpredictd(fz_filter **fp, fz_obj *params) { fz_obj *obj; FZ_NEWFILTER(fz_predict, p, predict); - p->encode = encode; - p->predictor = 1; p->columns = 1; p->colors = 1; p->bpc = 8; obj = fz_dictgets(params, "Predictor"); - if (obj) p->predictor = fz_toint(obj); + if (obj) + p->predictor = fz_toint(obj); if (p->predictor != 1 && p->predictor != 2 && p->predictor != 10 && p->predictor != 11 && @@ -50,13 +47,16 @@ fz_newpredict(fz_filter **fp, fz_obj *params, int encode) } obj = fz_dictgets(params, "Columns"); - if (obj) p->columns = fz_toint(obj); + if (obj) + p->columns = fz_toint(obj); obj = fz_dictgets(params, "Colors"); - if (obj) p->colors = fz_toint(obj); + if (obj) + p->colors = fz_toint(obj); obj = fz_dictgets(params, "BitsPerComponent"); - if (obj) p->bpc = fz_toint(obj); + if (obj) + p->bpc = fz_toint(obj); p->stride = (p->bpc * p->colors * p->columns + 7) / 8; p->bpp = (p->bpc * p->colors + 7) / 8; @@ -123,13 +123,13 @@ paeth(int a, int b, int c) } static inline void -none(fz_predict *p, unsigned char *in, unsigned char *out) +fz_predictnone(fz_predict *p, unsigned char *in, unsigned char *out) { memcpy(out, in, p->stride); } static void -tiff(fz_predict *p, unsigned char *in, unsigned char *out) +fz_predicttiff(fz_predict *p, unsigned char *in, unsigned char *out) { int left[MAXC]; int i, k; @@ -142,16 +142,16 @@ tiff(fz_predict *p, unsigned char *in, unsigned char *out) for (k = 0; k < p->colors; k++) { int a = getcomponent(in, i * p->colors + k, p->bpc); - int b = p->encode ? a - left[k] : a + left[k]; + int b = a + left[k]; int c = b % (1 << p->bpc); putcomponent(out, i * p->colors + k, p->bpc, c); - left[k] = p->encode ? a : c; + left[k] = c; } } } static void -png(fz_predict *p, unsigned char *in, unsigned char *out, int predictor) +fz_predictpng(fz_predict *p, unsigned char *in, unsigned char *out, int predictor) { int upleft[MAXC], left[MAXC], i, k; @@ -161,38 +161,18 @@ png(fz_predict *p, unsigned char *in, unsigned char *out, int predictor) upleft[k] = 0; } - if (p->encode) - { - for (k = 0, i = 0; i < p->stride; k = (k + 1) % p->bpp, i ++) - { - switch (predictor) - { - case 0: out[i] = in[i]; break; - case 1: out[i] = in[i] - left[k]; break; - case 2: out[i] = in[i] - p->ref[i]; break; - case 3: out[i] = in[i] - (left[k] + p->ref[i]) / 2; break; - case 4: out[i] = in[i] - paeth(left[k], p->ref[i], upleft[k]); break; - } - left[k] = in[i]; - upleft[k] = p->ref[i]; - } - } - - else + for (k = 0, i = 0; i < p->stride; k = (k + 1) % p->bpp, i ++) { - for (k = 0, i = 0; i < p->stride; k = (k + 1) % p->bpp, i ++) + switch (predictor) { - switch (predictor) - { case 0: out[i] = in[i]; break; case 1: out[i] = in[i] + left[k]; break; case 2: out[i] = in[i] + p->ref[i]; break; case 3: out[i] = in[i] + (left[k] + p->ref[i]) / 2; break; case 4: out[i] = in[i] + paeth(left[k], p->ref[i], upleft[k]); break; - } - left[k] = out[i]; - upleft[k] = p->ref[i]; } + left[k] = out[i]; + upleft[k] = p->ref[i]; } } @@ -205,40 +185,30 @@ fz_processpredict(fz_filter *filter, fz_buffer *in, fz_buffer *out) while (1) { - if (in->rp + dec->stride + (!dec->encode && ispng) > in->wp) + if (in->rp + dec->stride + ispng > in->wp) { if (in->eof) return fz_iodone; return fz_ioneedin; } - if (out->wp + dec->stride + (dec->encode && ispng) > out->ep) + if (out->wp + dec->stride > out->ep) return fz_ioneedout; if (dec->predictor == 1) { - none(dec, in->rp, out->wp); + fz_predictnone(dec, in->rp, out->wp); } else if (dec->predictor == 2) { if (dec->bpc != 8) memset(out->wp, 0, dec->stride); - tiff(dec, in->rp, out->wp); + fz_predicttiff(dec, in->rp, out->wp); } else { - if (dec->encode) - { - predictor = dec->predictor - 10; - if (predictor < 0 || predictor > 4) - predictor = 1; - *out->wp ++ = predictor; - } - else - { - predictor = *in->rp++; - } - png(dec, in->rp, out->wp, predictor); + predictor = *in->rp++; + fz_predictpng(dec, in->rp, out->wp, predictor); } if (dec->ref) @@ -249,15 +219,3 @@ fz_processpredict(fz_filter *filter, fz_buffer *in, fz_buffer *out) } } -fz_error -fz_newpredictd(fz_filter **fp, fz_obj *params) -{ - return fz_newpredict(fp, params, 0); -} - -fz_error -fz_newpredicte(fz_filter **fp, fz_obj *params) -{ - return fz_newpredict(fp, params, 1); -} - |