Changeset 2653
- Timestamp:
- 08/03/08 05:30:53 (5 years ago)
- File:
-
- 1 edited
-
libpipi/trunk/pipi/dither/floydsteinberg.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
libpipi/trunk/pipi/dither/floydsteinberg.c
r2637 r2653 45 45 { 46 46 float p, q, e; 47 int x2 = (y & 1) ? x : w - 1 - x; 48 int s = (y & 1) ? 1 : -1; 47 49 48 p = srcdata[y * w + x ];50 p = srcdata[y * w + x2]; 49 51 q = p < 0.5 ? 0. : 1.; 50 dstdata[y * w + x ] = q;52 dstdata[y * w + x2] = q; 51 53 54 /* FIXME: according to our 2008 paper, [7 4 5 0] is a better 55 * error diffusion kernel for serpentine scan. */ 52 56 e = p - q; 53 57 if(x < w - 1) 54 srcdata[y * w + x + 1] += e * .4375;58 srcdata[y * w + x2 + s] += e * .4375; 55 59 if(y < h - 1) 56 60 { 57 61 if(x > 0) 58 srcdata[(y + 1) * w + x - 1] += e * .1875;59 srcdata[(y + 1) * w + x ] += e * .3125;62 srcdata[(y + 1) * w + x2 - s] += e * .1875; 63 srcdata[(y + 1) * w + x2] += e * .3125; 60 64 if(x < w - 1) 61 srcdata[(y + 1) * w + x + 1] += e * .0625;65 srcdata[(y + 1) * w + x2 + s] += e * .0625; 62 66 } 63 67 }
Note: See TracChangeset
for help on using the changeset viewer.
