diff options
author | glenda <glenda@PC192-168-2-10> | 2015-09-23 17:52:35 +0200 |
---|---|---|
committer | glenda <glenda@PC192-168-2-10> | 2015-09-23 17:52:35 +0200 |
commit | 2b5ab91775b97d9e53b2c92a45164703855029a2 (patch) | |
tree | 8fb08d618b8427dc2501f3cae9a70efb5959c724 | |
parent | fa95531388c81f253b2ad21c26272002463b7692 (diff) | |
download | plan9front-2b5ab91775b97d9e53b2c92a45164703855029a2.tar.xz |
resize: add -n for nearest neighbour
-rw-r--r-- | sys/src/cmd/resize.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/src/cmd/resize.c b/sys/src/cmd/resize.c index 40dbab74a..eb0235a4f 100644 --- a/sys/src/cmd/resize.c +++ b/sys/src/cmd/resize.c @@ -3,6 +3,8 @@ #include <draw.h> #include <memdraw.h> +int nflag; + static void resample(Memimage *dst, Rectangle r, Memimage *src, Rectangle sr) { @@ -29,6 +31,8 @@ resample(Memimage *dst, Rectangle r, Memimage *src, Rectangle sr) for(dp.y=0; dp.y<=dsize.y; dp.y++){ sp.y = _sp.y>>12; ty = _sp.y&0xFFF; + if(nflag) + ty = ty << 1 & 0x1000; pdst = pdst0; sp.x = sr.min.x; psrc0 = byteaddr(src, sp); @@ -36,6 +40,8 @@ resample(Memimage *dst, Rectangle r, Memimage *src, Rectangle sr) for(dp.x=0; dp.x<=dsize.x; dp.x++){ sp.x = _sp.x>>12; tx = _sp.x&0xFFF; + if(nflag) + tx = tx << 1 & 0x1000; psrc = psrc0 + sp.x*bpp; s00 = (0x1000-tx)*(0x1000-ty); s01 = tx*(0x1000-ty); @@ -109,6 +115,9 @@ main(int argc, char **argv) case 'y': ysize = getsize(EARGF(usage())); break; + case 'n': + nflag++; + break; default: usage(); }ARGEND |