resize: add -n for nearest neighbour

This commit is contained in:
glenda 2015-09-23 17:52:35 +02:00
parent fa95531388
commit 2b5ab91775

View file

@ -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